Julia 1.3 offers experimental approach to multi-threading

The team behind the Julia programming language has tied up a neat parcel of new language features and library changes and released the result as version 1.3 into the data science community.

Language-wise Julia finally permits the addition of methods to an abstract type and contains a syntax for printing and parsing non-standard variable names. The latter follows the pattern of var”#str#”. It was introduced as a way to print hidden symbols, and directly write identifiers that are common in languages like R but would need a workaround in Julia.

As announced earlier this year, the language is going to be fitted with composable multi-thread parallelism. A first iteration on multi-threading can be found in the form of the experimental Thread.@spawn macro that runs a task on any available thread. The new keyword argument Channel(f::Function, spawn=true) is matching this behaviour and can be used to schedule the created tasks on any available thread. 

Along with these changes, the Julia team also simplified the Channel constructor and made system-level I/O operations and the global random number generator thread-safe.

Julia 1.3 learned to support Unicode 12.1, which adds a character for the current Japanese era. It also includes an implementation that allows the use of bold and double-struck digits as identifiers to for example match algebraic notations.

Meanwhile, the standard library now comes with a findall(pattern, string) method to find regular expressions or strings within a string, and a count(pattern, string) to extract the number of things findall would match. The library also allows the multiplication and exponentiation of regular expressions and preservers zero-dimensional arrays in the return values of certain mathematical functions.

A complete list of changes can be found in the Julia repository, where the language is offered under the MIT license. Julia was introduced to the public in 2012 and has since gained traction in the context of scientific computing and numerical analysis. 

The language also made it into the top six languages used in machine learning related GitHub projects in 2018. It might however take a while for it to become a household name – simply because Python and C++ do a pretty good job for now and devs might need a strong incentive to turn away from popular libraries and learn a language completely new to them.