Julia programming has quickly gained traction in the data science community due to numerous advantages such as speed and usability over Python and other prominent programming languages. And in a continuous effort, Julia Computing has further improved the Julia programming language and released its latest version — 1.5 — earlier this week.
The release of Julia 1.5 has a lot of significant advancements like struct layout and allocation optimizations, multithreading API stabilization and improvements, per-module optimization levels, other latency improvements, implicit keyword argument values, the return of “soft scope” in the REPL, faster random numbers, automated rr-based bug reports, among others.
Julia programming language’s update doesn’t usually aim at specific features but follows timed releases. However, this time around, there are major features updates that one must know.
One of the most relevant updates is the ‘struct layout and allocation optimizations.’ According to Julia Computing, this was a long-desired optimization that significantly reduced heap allocations. As Julia programming language has both mutable and immutable objects that enable flexibility to programmers in using objects according to their requirement, handling immutable objects has significant limitations.
When an immutable object is pointed to a heap-allocated mutable object, it would need to be heap-allocated too. To address this challenge, Jameson Nash enhanced the compiler’s performance as it would now track multiple roots inside object fields. This simplified the use of immutable objects irrespective of the type of object it is pointing to.
Threading was introduced in v0.5 for enabling parallelism to increase performance. Over the last couple of releases, the threading was added with safety and new features. One of the major use cases was the multithreaded CSV parsing, which provides an edge to Julia programming language from other data science-friendly languages.
After being labeled as ‘experimental’ for years, it has been moved to a stable category with newer updates: improved safety for top-level expressions (type definition, global assignments, modules), improvements to task switch performance, and more.
Julia programming language uses -O2 optimization, which is similar to -O2 in GCC or clang. Although this method is effective while setting up benchmarks, for some plotting and non-inner-loop support tasks, -O2 is not the ideal optimization as it delays the process. Consequently, Julia programming language introduced -O1 optimization level that can be used to provide level hints in each module.
While there are other updates like default package manager and faster random number generation, we listed the most important enhancements. However, you can read more here.