Julia is one of the fastest open-source computing languages for data analytics, algorithmic trading, machine learning and scientific and numeric computing applications. The language combines the ease of Python and R with the speed of C++. Recently, Julia released version 1.6.
Founded in 2015, Julia has become one of the most preferred languages among data scientists and developers. According to its developers, most releases of Julia are timed and usually not planned around specific features. However, version 1.6 is an exception since it is likely to become the next long-term support (LTS) release of Julia.
Julia developers put in a lot of time and effort to develop the latest version to ensure its durability. Also, the release of version 1.6 was tested for regressions against all the registered open-source packages. All the issues were tracked down and fixed.
Below, we have noted down the top updates and features packed in Julia version 1.6.
Eliminating needless recompilation
One of the most critical features of Julia is extensibility. Meaning, the users can add new methods to the previously defined functions and use the previously defined methods on new types. Sometimes, these new entities force this language to recompile code to account for the changes in dispatch. In version 1.6, the scheme for invalidating old code has been made more accurate and selective. The outcome is a faster version of Julia, far more resilient to method invalidation, more responsive, and agile in interactive sessions.
Compiler latency reduction
In addition to making the library code more compiler-friendly, the developers tried to speed up the compiler itself. The principal visible improvement in this version is package loading. This adds a bit of extra speed on top of the gains from addressing invalidations.
Tooling to help optimise packages for latency
The new version features new tools for compiler introspection, especially for type inference. Developers can now utilise the latest tools to profile type inference and determine how particular package implementation choices are associated with the compilation time.
Compiler & runtime improvements
All platforms can now use @executable_path within jl_load_dynamic_library(), enabling the executable-relative paths to be embedded within the executables on all the platforms.
According to its developers, a small change that should help to understand one of Julia’s quirks for newcomers is that the timing macro @time and its verbose friend @timev now report if any of the reported time has been spent on compilation. This change highlights that behaviour, serving as both a reminder and a tool for rooting out unwanted compilation effort, which is over-specialised code.
In version 1.6, the package precompilation is faster and happens before any user leaves pkg> mode. In 1.6, pkg> mode gains a heavily parallelised precompile operation auto-invoked after package actions to keep the active environment ready to load.
New library features
The new library features include:
- A new standard library TOML has been added in this version for parsing and printing TOML files.
- The redirect_* functions now accept devnull command to discard all the output redirected to it and as an empty input.
- The nextprod function of this version now accepts tuples and other array types for its first argument.
- A new standard library Downloads has been added, which replaces the old Base.download function with Downloads.download, providing cross-platform, multi-protocol, in-process download functionality implemented with libcurl.