Julia 0.6.0-rc1 new language features
github.com
github.com
* Actually being able to safely redefine methods. Julia is now much more dynamic (and correct!).
* Dot-broadcasting is absolutely amazing and way more capable in 0.6: https://julialang.org/blog/2017/01/moredots
* The `@views` macro is a very small addition but much appreciated.
IMHO I think thats the sweetspot that could have been what many scientific computing developers are looking for. Python is good but has its problems when doing scientific computing (most addressed and fixed by julia btw) but you still use python because its much better than julia for building modular applications, and you use R because its much better than julia at doing exploratative work. So in the end julia is in this limbo of having fixed most of the problems with python but not being able to be used as a replacement for python.
Thats just my opinion though. I'm sure others will disagree :)
I think the former is planned before 1.0?
If the latter, what do you think is the issue? Do you not like julia packages are separated into interface/abstract implementation and then concrete packages that can then have submodules that call each other?
Seems more modular than working around a python inheritance mess.
Well, I'd be all for making Base as small as possible since I'm not big on monolithic standard libs and think everything possible should more or less be a package which you can include on a per project level.
As for the semantics and mechanics, I'd like to have the ability to have true public/private like rust or go, so that you can have a tightly defined public api and be sure your users only have access to that. Also I'd like to see the whole thing simplified it is way more complex than it needs to be. Just have import act like a function for example it could take a module, a keyword, and a vector like this:
import MyModule, :all # import all public defs
import MyModule, [a, b, K] # use as MyModule.a, MyModule.b, MyModule.K
import MyModule, :alias, [a,b,K] # use as a, b, K
compare the above to https://docs.julialang.org/en/stable/manual/modules/ as far as I can tell the functionality is the same. Anyway those were some of the things that I didn't like about it and would have changed.You're right I might be conflating the comparison but does it matter? JavaScript is a dynamic language which allows strict access controls (although its semi-hacky to do it).
Also, when is access control by convention a good idea? Sure you can live with it as Python and Ruby devs like myself do, but compared to languages which give you stricter controls like Erlang (which is also dynamic) its pretty obviously worse when it comes to building large software systems because it weakens the guarantees you can make about your libraries and the libraries you use to build those libraries.
"People seem to be able to build large systems in both languages fairly effectively."
People can and have built large systems in assembly. That doesn't mean assembly provides the optimal means for building composable software. Why settle for something thats mediocre when you're still unstable and change it for the better?
A new package system is in the works and, afaik, should be available with Julia 1.0. Here the Julep: https://github.com/JuliaLang/Juleps/blob/master/Pkg3.md. Don't know what the current timing/state is though.
I really wish there was something like a high-performance Elixir out there... which is basically lisp with modern syntax and package management.
Every time I see breaking changes in Julia (and the improvements they engender), I get excited! :P
0.6 is the highlight of my year so far.