Julia 1.10.1 – A high-level, open source and high-performance dynamic language.
Julia is a high-level, high-performance dynamic language for technical computing.
Julia in a Nutshell
Julia is fast!
Julia was designed from the beginning for high performance. Julia programs compile to efficient native code for multiple platforms via LLVM.
Dynamic
Julia is dynamically-typed, feels like a scripting language, and has good support for interactive use.
Optionally typed
Julia has a rich language of descriptive datatypes, and type declarations can be used to clarify and solidify programs.
General
Julia uses multiple dispatch as a paradigm, making it easy to express many object-oriented and functional programming patterns. It provides asynchronous I/O, debugging, logging, profiling, a package manager, and more.
Easy to use
Julia has high level syntax, making it an accessible language for programmers from any background or experience level. Browse the Julia microbenchmarks to get a feel for the language.
Open source
Julia is provided under the MIT license, free for everyone to use. All source code is publicly viewable on GitHub.
New language features
JuliaSyntax.jl is now used as the default parser, providing better diagnostics and faster parsing. Set environment variable JULIA_USE_FLISP_PARSER to 1 to switch back to the old parser if necessary (and if you find this necessary, please file an issue) (#46372).
⥺ (U+297A, leftarrowsubset) and ⥷ (U+2977, leftarrowless) may now be used as binary operators with arrow precedence (#45962).
Language changes
When a task forks a child, the parent task’s task-local RNG (random number generator) is no longer affected. The seeding of child based on the parent task also takes a more disciplined approach to collision resistance, using a design based on the SplitMix and DotMix splittable RNG schemes (#49110).
A new more-specific rule for methods resolves ambiguities containing Union{} in favor of the method defined explicitly to handle the Union{} argument. This makes it possible to define methods to explicitly handle Union{} without the ambiguities that commonly would result previously. This also lets the runtime optimize certain method lookups in a way that significantly improves load and inference times for heavily overloaded methods that dispatch on Types (such as traits and constructors). ([#49349])
The “h bar” ℏ (hslash U+210F) character is now treated as equivalent to ħ (hbar U+0127).
The @simd macro now has more limited and clearer semantics: it only enables reordering and contraction of floating-point operations, instead of turning on all “fastmath” optimizations. If you observe performance regressions due to this change, you can recover previous behavior with @fastmath @simd, if you are OK with all the optimizations enabled by the @fastmath macro (#49405).
When a method with keyword arguments is displayed in the stack trace view, the textual representation of the keyword arguments’ type is simplified using the new @Kwargs{key1::Type1, …} macro syntax (#49959).
Full list of changes available here
Version for Apple Silicon
Download Now]]>