What’s new in Julia: Version 1.0 is here

New package manager, better optimization debut in the first production release

After nearly a decade in development, Julia, an open source, dynamic language geared to numerical computing, reached its Version 1.0 production release status on August 8, 2018. The previous version was the 0.6 beta.

Julia, which vies with Python for scientific computing, is focused on speed, optional typing, and composability. Programs compile to native code via the LLVM compiler framework. Created in 2009, Julia’s syntax is geared to math; numeric types and parallelism are supported as well. The standard library has asynchronous I/O as well as process control. logging, and profiling.

What’s new in Julia Version 1.0

Version 1.0 brings greater API stability; code written for Version 1.0 will work with subsequent releases.

Other new features in Julia 1.0 include:

  • A new, better-performing package manager, Pkg, to install packages and dependencies. Private packages and package repositories are supported as well.
  • Canonical representation for missing values. Any collection type can support missing values by permitting elements to contain the predefined value missing. These union-typed collections would have been too slow in previous versions of Julia, but compiler improvements enable the language to match the speed of custom C or C++ missing data representations in other systems while offering flexibility and being more general. The ability to work with missing data is fundamental in data science and statistics.
  • Smarter optimization, including the ability to propagate constants through function calls, for better dead-code elimination.
  • The built-in string type can safely hold arbitrary data. Programs will not fail hours or days into a job because of a single stray byte of invalid Unicode.
  • A redesigned iteration protocol for easier implementation of iterables.
  • Simplification of scope rules. Constructs introducing local scopes now do so constantly regardless of whether a global binding for a name exists or not. This eliminates the “soft/hard scope” distinction and means Julia can always statically determine whether variables are local or global.
  • Named tuples, for efficient data representation and access.
  • Extension of broadcasting to custom types to implement optimized computations on GPUs and other vectorized hardware. Broadcasting allows for compactly expressing an elementwise operation over containers and scalars by annotating operators and function calls.
  • The dot operator now can be overloaded, enabling types to use the obj.property syntax for meanings other than accessing and setting struct fields.

Where to download Julia 1.0

You can download Julia 1.0 from julialang.org. Developers upgrading from Julia 0.6 or earlier versions are encouraged to first use the transitional Version 0.7 release, also available at julialang.org. The Version 0.7 release has deprecation warnings to help with the upgrade process. When code is warning-free, developers can switch to the Version 1.0 release without functional changes.

This story, "What’s new in Julia: Version 1.0 is here" was originally published by InfoWorld.