After over a year of development, the Julia community is proud to announce the release of version 0.5 of the Julia language and standard library. This release contains major language refinements and numerous standard library improvements. A long list of changes is available in the NEWS log found in our main repository, with a summary reproduced below. A separate blog post detailing some of the highlights of the new release has also been posted.
We’ll be releasing regular bugfix backports from the 0.5.x line, which is recommended for users requiring a stable language and API. Major feature work is ongoing on master for 0.6-dev.
The Julia ecosystem continues to grow, and there are now over one thousand registered packages! The third annual JuliaCon took place in Cambridge, MA in the summer of 2016, with an exciting line up of talks and keynotes. Most of them are available to view.
The major focus of this release has been the ability to write fast functional code, removing the earlier performance penalty for anonymous functions and closures. This has been achieved via each function and closure now being its own type, and the captured variables of a closure are fields of its type. All functions, including anonymous functions, are now generic and support all features.
Experimental support for multi threading.
All dimensions indexed by scalars are now dropped, whereas previously only trailing scalar dimensions would be omitted from the result. This is a major breaking changes, but has been made to make the indexing rules much more consistent.
Generator expressions now can create iterators that are computed only on demand.
Experimental support for arrays whose indexing starts from values other than 1. Standard Julia arrays are still 1-based, but external packages can implement array types with indexing from arbitrary indices.
Major simplification of the string types, unifying
String, as well as moving types and functions related to different encodings out of the standard library.
Package operations now use the
libgit2 library rather than shelling out to command line git. This makes these calls to package related functions much faster, and more reliable, especially on Windows.
And many many more changes and improvements…
Julia now runs on the ARM and Power architectures, making it possible to use it on the widest variety of hardware, from the smallest embedded machines to the largest HPC systems. Porting a language to a new architecture is never easy, so special thanks to the people who made it possible. Part of the work to create the Power port was supported by IBM, for which we are grateful.
The Julia debugger, Gallium, is now ready to use. It allows for a full, multi language debug experience, debugging Julia and C code with ease. The debugger is also integrated with Juno, the Julia IDE that is now fully featured and ready to use.