Programming language release Julia 1.8

Available Release of the programming language Julia 1.8 , combining such qualities as high performance, support for dynamic typification and built -in means for parallel programming. Julia syntax is close to Matlab with the borrowing of some elements from Ruby and Lisp. The manipulation method resembles Perl. The project code is distributed under the license mit.

key features of the language:

  • high performance: one of the key goals of the project is to achieve performance close to programs in SI. The Julia compiler is based on the developments of the LLVM project and generates an effective native machine code for many target platforms;
  • Support for various programming paradigms, including elements of object-oriented and functional programming. The standard library also provides functions for asynchronous input/output, process management, logging, profiling and packet management;
  • Dynamic typification: language does not require a clear definition of types for variables by analogy with script programming languages. The interactive mode of operation is supported;
  • optional possibility of a clear indication of types;
  • syntax, excellently suitable for numerical calculations, scientific calculations, machine learning systems and data visualization. Support for many numerical data types and means for decorating calculations.
  • The possibility of direct calling functions from libraries in the language without additional interlayers.

The main changes in Julia 1.7:

  • New language opportunities
    • Fields of a variable structure (Mutable Struct) can now be announced as constants to prevent their changes and provide the possibility of optimization.
    • Types can be added to global variables.
    • Empty N-somed massifs can be created using several points with a comma inside the square brackets, for example “[;;;]” creates an array 0 × 0 × 0.
  • Try blocks can now additionally have an ELSE unit, which is performed immediately after the main body, if no errors have been issued.
  • @inline and @noinline can be placed inside the body of a function, which allows an anonymous function to annotate.
  • @inline and @noinline can now be applied to the function on the call site or in the block to forcefully enable (or not turn on) the corresponding calls.
  • ∀, ∃ and ∄ permitted as the symbols of the identifier.
  • Added support for the specification Unicode 14.0.0.
  • Method Module (: Name, FALSE, FALSE) can be used to create a module that does not contain names, does not import Base or Core and does not contain a link to itself.
  • Changes in the language
    • The newly created Task objects (@spawn, @async, etc.) Now World_age for methods from parental TASK when creating, which allows us to optimize their execution. The previous activation version is available using the Base.invokelatest.
  • /Media reports.