⥺
(U+297A,\leftarrowsubset
) and⥷
(U+2977,\leftarrowless
) may now be used as binary operators with arrow precedence. ([#45962])
- 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 morespecific 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).
- The "h bar"
ℏ
(\hslash
U+210F) character is now treated as equivalent toħ
(\hbar
U+0127).
- The
@pure
macro is now deprecated. UseBase.@assume_effects :foldable
instead ([#48682]). - The mark phase of the Garbage Collector is now multi-threaded ([#48600]).
- New option
--gcthreads
to set how many threads will be used by the Garbage Collector ([#48600]). The default is set toN/2
whereN
is the amount of worker threads (--threads
) used by Julia.
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]).
- 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]).
startswith
now supports seekableIO
streams ([#43055])- printing integral
Rational
s will skip the denominator inRational
-typed IO context (e.g. inArrays
) ([#45396])
- "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)
)
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]).
- Format specifiers now support dynamic width and precision, e.g.
%*s
and%*.*g
([#40105]).
- 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]) - When a call to
@test
fails or errors inside a function, a larger stacktrace is now printed such that the location of the test within a@testset
can be retrieved ([#49451])
code_native
and@code_native
now default to intel syntax instead of AT&T.@time_imports
now shows the timing of any module__init__()
s that are run ([#49529])