Programming Language Julia Releases Version 1.7

Julia 1.7 now uses a much smaller state of the Xoshiro256 family of RNGs to put a state in every task and fork it on each task creation.

Julia recently announced the release of its latest version Julia 1.7. The new update comes with several enhancements and fixes to previous issues. Julia 1.7 now uses a much smaller state of the Xoshiro256 family of RNGs to put a state in every task and fork it on each task creation. This makes random numbers depend only on the task spawning structure of a program, and not on the parallel execution schedule.

Support for atomic access to mutable struct fields has been added to provide more efficient build blocks for working with threads via a set of @atomic macros and their corresponding generic functions. This work is based on the “Atomics Manifesto” that described how Julia envisioned threading to be a key part of the language’s future.

The REPL has long featured “paste mode”, where a user could paste in an example session, such as the ones above, directly into the REPL; it would automatically strip out the prompts, recognize user input, and generally do the right thing. This has now been extended to all of the REPL modes (pkg, shell, and help) in addition to the normal mode; it even switches modes automatically based on the prompt string in the pasted text. In case a module is missing a docstring (not uncommon, especially with small packages), help will look around in the package directory for a README file and print the one closest to the module in question. In any case, it will print the list of exported names.

Whenever a user adds a package in Julia, the package manager (Pkg) writes out a TOML file called the “manifest” with the exact version of all the dependencies of that package. In version 1.7, a change has been introduced to this manifest format so that all dependencies are instead put under a common [deps] key. This frees up the global namespace so that a julia_version entry can be added. It also opens up the possibility of adding future useful data to the manifest. The ability to read such manifests will also be backported to Julia 1.6 and thus be in Julia 1.6.2 and forward. 

This release comes with many type inference improvements. With these improvements, Julia 1.7 will more “smartly” infer types of your program and improve performance for free. Version 1.7 can propagate type constraints that can be derived from isa and === conditions inter-procedurally (i.e., across any function calls). Another remarkable improvement is more eager constant propagation. Julia 1.7 can substitute more runtime computations with pre-computed constants and eliminate dead code by resolving conditional branches at compile time. 

Julia’s new version has also added syntax to enable writing for multidimensional arrays. This new syntax makes multidimensional arrays much easier to manipulate in Julia than they were before, and it compares favourably with the creation of multidimensional arrays in other languages.

Julia v1.7 is the first release that runs on Apple Silicon for the M1 family of ARM CPUs. Planning for this feature actually started more than one year ago, shortly after Apple’s announcement of their new chips. The Julia User & Developer Survey 2021 showed that 5% of Julia users were already running it on this platform before an official stable version for it was released. 

You can download and check the new features of Julia 1.7 using the link here

More Great AIM Stories

Victor Dey
Victor is an aspiring Data Scientist & is a Master of Science in Data Science & Big Data Analytics. He is a Researcher, a Data Science Influencer and also an Ex-University Football Player. A keen learner of new developments in Data Science and Artificial Intelligence, he is committed to growing the Data Science community.

More Stories


8th April | In-person Conference | Hotel Radisson Blue, Bangalore

Organized by Analytics India Magazine

View Event >>

30th Apr | Virtual conference

Organized by Analytics India Magazine

View Event >>

Yugesh Verma
All you need to know about Graph Embeddings

Embeddings can be the subgroups of a group, similarly, in graph theory embedding of a graph can be considered as a representation of a graph on a surface, where points of that surface are made up of vertices and arcs are made up of edges

3 Ways to Join our Community

Discord Server

Stay Connected with a larger ecosystem of data science and ML Professionals

Telegram Channel

Discover special offers, top stories, upcoming events, and more.

Subscribe to our newsletter

Get the latest updates from AIM