Julia v1.10 Release Notes
New language features
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).
Compiler/Runtime improvements
- The
@puremacro is now deprecated. UseBase.@assume_effects :foldableinstead (#48682).
Command-line option changes
Multi-threading changes
Build system changes
New library functions
tanpiis now defined. It computes tan(πx) more accurately thantan(pi*x)(#48575).fourthroot(x)is now defined inBase.Mathand can be used to compute the fourth root ofx. It can also be accessed using the unicode character∜, which can be typed by\fourthroot<tab>(#48899).
New library features
- The
initialized=truekeyword assignment forsortperm!andpartialsortperm!is now a no-op (#47979). It previously exposed unsafe behavior (#47977). binomial(x, k)now supports non-integerx(#48124).- A
CartesianIndexis now treated as a "scalar" for broadcasting (#47044). printstylednow supports italic output (#45164).
Standard library changes
startswithnow supports seekableIOstreams (#43055)- printing integral
Rationals will skip the denominator inRational-typed IO context (e.g. inArrays) (#45396)
Package Manager
- "Package Extensions": support for loading a piece of code based on other packages being loaded in the Julia session. This has similar applications as the Requires.jl package but also supports precompilation and setting compatibility.
Pkg.precompilenow acceptstimingas a keyword argument which displays per package timing information for precompilation (e.g.Pkg.precompile(timing=true))
LinearAlgebra
AbstractQno longer subtypes toAbstractMatrix. Moreover,adjoint(Q::AbstractQ)no longer wrapsQin anAdjointtype, but instead in anAdjointQ, that itself subtypesAbstractQ. This change accounts for the fact that typicallyAbstractQinstances behave like function-based, matrix-backed linear operators, and hence don't allow for efficient indexing. Also, manyAbstractQtypes can act on vectors/matrices of different size, acting like a matrix with context-dependent size. With this change,AbstractQhas a well-defined API that is described in detail in the Julia documentation (#46196).- Adjoints and transposes of
Factorizationobjects are no longer wrapped inAdjointandTransposewrappers, respectively. Instead, they are wrapped inAdjointFactorizationandTranposeFactorizationtypes, which themselves subtypeFactorization(#46874). - New functions
hermitianpartandhermitianpart!for extracting the Hermitian (real symmetric) part of a matrix (#31836). - The
normof the adjoint or transpose of anAbstractMatrixnow returns the norm of the parent matrix by default, matching the current behaviour forAbstractVectors (#49020).
Printf
- Format specifiers now support dynamic width and precision, e.g.
%*sand%*.*g(#40105).
Profile
Random
REPL
SuiteSparse
SparseArrays
Test
- The
@test_brokenmacro (or@testwithbroken=true) now complains if the test expression returns a non-boolean value in the same way as a non-broken test. (#47804)
Dates
Distributed
Unicode
DelimitedFiles
InteractiveUtils
code_nativeand@code_nativenow default to intel syntax instead of AT&T.