Julia, the cross-platform programming language reaches its version 1.9

julia lang

ulia is a dynamic, high-level, high-performance language for technical computing.

Few days ago the release of the new version of the programming language Julia 1.9 was announced, which combines qualities such as high performance, support for dynamic typing, and built-in tools for parallel programming. Julia's syntax is close to MATLAB, with some elements borrowed from Ruby and Lisp.

Julia stands out for being a multi-platform and multi-paradigm programming language with dynamic typing High-level, high-performance framework for generic, technical, and scientific computing, with a syntax similar to that of other similar computing environments.

Main news of Julia 1.9

In this new version of Julia 1.9 that is presented, several improvements in the runtime/compiler, since there was Significant reduction in time to first run. Package precompilation now saves the native code in "pkgimage", which means that code generated during precompilation will not need to be recompiled after loading the package. The use of pkgimages mode can be disabled with the option “–pkgimages=no”.

Another of the changes that stands out are the calls with non-type-specific arguments can now be optimized via join split for injection or static resolution, even if there are several different types of submission candidates. This can improve performance in certain situations where object types are not fully resolved statically, by statically resolving call sites "@nospecialize-d" and avoid recompilation.

Single character literals now support the same syntax as string literals; those syntax can represent invalid UTF-8 sequences, as allowed by the Char type.

In addition to that, on Linux and Windows, the option «--threads=auto» now tries to determine the available number of processors based on CPU affinity, which is a mask typically set in HPC and cloud environments.

The option has been disabled--math-mode=fast", instead of which it is recommended to use the macro "@fastmath", which has well-defined semantics, in addition to the parameter "–Threads» now has the format «car | N[,auto|M]», where M specifies the number of interactive threads to create.

Added option «--heap-size-hint=» to set the threshold after which active garbage collection begins. The size can be specified in bytes, kilobytes (1000 KB), megabytes (300 MB), or gigabytes (1,5 GB).

The "@invoke" macro introduced in version 1.7 is now exported and available for use. Besides, now use the "Core.Typeof(x)" method instead of "Any" when the type annotation for the argument "x" is omitted. This is required so that types passed as arguments are processed correctly.

Moreover, "Threads.@spawn" now has an optional first argument of ":default" or ":interactive". An interactive task requires a low latency response and is designed to be short or frequent. Interactive tasks will run on interactive threads if specified when starting Julia.

Of the other changes that stand out:

  • Negating the predicate function "!f" now returns a composite function "(!) ∘ f" instead of an anonymous function.
  • Dimension split functions now work on multiple dimensions: «eachslice”, “eachrow” and “eachcol” return an object "Slices» which allows shipping to provide more efficient methods.
  • The macro «@kwdef» has been added to the public API.
  • Fixed an issue with the order of operations in "fld1".
  • Sorting is now always stable over time (Redesigned QuickSort).
  • The default number of BLAS threads is now equal to the number of CPU threads on ARM architecture and half the number of CPU threads on other architectures.
  • Printf: Reworked error messages for malformed strings for better readability.
  • Profile: New function "Profile.take_heap_snapshot(file)" which writes a file in JSON-based ".heapsnapshot" format supported by Chrome.
  • Added support for the Unicode 15 specification.
  • Nested combinations of tuples and named character tuples can now be used as type parameters.

Finally, if you are interested in knowing more about it, you can consult the details In the following link.


Add as preferred source in Google