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
@pure
macro is now deprecated. UseBase.@assume_effects :foldable
instead (#48682).
Command-line option changes
Multi-threading changes
Build system changes
New library functions
tanpi
is now defined. It computes tan(πx) more accurately thantan(pi*x)
(#48575).fourthroot(x)
is now defined inBase.Math
and 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=true
keyword assignment forsortperm!
andpartialsortperm!
is now a no-op (#47979). It previously exposed unsafe behavior (#47977). binomial(x, k)
now supports non-integerx
(#48124).- A
CartesianIndex
is now treated as a "scalar" for broadcasting (#47044). printstyled
now supports italic output (#45164).
Standard library changes
startswith
now supports seekableIO
streams (#43055)- printing integral
Rational
s 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.precompile
now acceptstiming
as a keyword argument which displays per package timing information for precompilation (e.g.Pkg.precompile(timing=true)
)
LinearAlgebra
AbstractQ
no longer subtypes toAbstractMatrix
. Moreover,adjoint(Q::AbstractQ)
no longer wrapsQ
in anAdjoint
type, but instead in anAdjointQ
, that itself subtypesAbstractQ
. This change accounts for the fact that typicallyAbstractQ
instances behave like function-based, matrix-backed linear operators, and hence don't allow for efficient indexing. Also, manyAbstractQ
types can act on vectors/matrices of different size, acting like a matrix with context-dependent size. With this change,AbstractQ
has a well-defined API that is described in detail in the Julia documentation (#46196).- Adjoints and transposes of
Factorization
objects are no longer wrapped inAdjoint
andTranspose
wrappers, respectively. Instead, they are wrapped inAdjointFactorization
andTranposeFactorization
types, which themselves subtypeFactorization
(#46874). - New functions
hermitianpart
andhermitianpart!
for extracting the Hermitian (real symmetric) part of a matrix (#31836). - The
norm
of the adjoint or transpose of anAbstractMatrix
now returns the norm of the parent matrix by default, matching the current behaviour forAbstractVector
s (#49020).
Printf
- Format specifiers now support dynamic width and precision, e.g.
%*s
and%*.*g
(#40105).
Profile
Random
REPL
SuiteSparse
SparseArrays
Test
- The
@test_broken
macro (or@test
withbroken=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_native
and@code_native
now default to intel syntax instead of AT&T.