- All system-level I/O operations (e.g. files and sockets) are now thread-safe.
This does not include subtypes of
IO
that are entirely in-memory, such asIOBuffer
, although it specifically does includeBufferStream
. (#32309, #32174, #31981, #32421). - The global random number generator (
GLOBAL_RNG
) is now thread-safe (and thread-local) (#32407). - New experimental
Threads.@spawn
macro that runs a task on any available thread (#32600).
findfirst
,findlast
,findnext
andfindprev
now accept a character as first argument to search for that character in a string passed as the second argument (#31664).- New
findall(pattern, string)
method wherepattern
is a string or regex (#31834). istaskfailed
is now documented and exported, like its siblingsistaskdone
andistaskstarted
(#32300).RefArray
andRefValue
objects now accept indexCartesianIndex()
ingetindex
andsetindex!
([#32653])
Regex
can now be multiplied (*
) and exponentiated (^
), like strings (#23422).Cmd
interpolation (`$(x::Cmd) a b c`
where) now propagatesx
's process flags (environment, flags, working directory, etc) ifx
is the first interpolant and errors otherwise (#24353).- Zero-dimensional arrays are now consistently preserved in the return values of mathematical
functions that operate on the array(s) as a whole (and are not explicitly broadcasted across their elements).
Previously, the functions
+
,-
,*
,/
,conj
,real
andimag
returned the unwrapped element when operating over zero-dimensional arrays (#32122). IPAddr
subtypes now behave like scalars when used in broadcasting (#32133).clamp
can now handle missing values (#31066).empty
now accepts aNamedTuple
(#32534)
dlopen()
can now be invoked indo
-block syntax, similar toopen()
.
- The BLAS submodule no longer exports
dot
, which conflicts with that in LinearAlgebra (#31838). diagm
andspdiagm
now accept optionalm,n
initial arguments to specify a size (#31654).Hessenberg
factorizationsH
now support efficient shifted solves(H+µI) \ b
and determinants, and use a specialized tridiagonal factorization for Hermitian matrices. There is also a newUpperHessenberg
matrix type (#31853).
SparseMatrixCSC(m,n,colptr,rowval,nzval)
perform consistency checks for arguments:colptr
must be properly populated and lengths ofcolptr
,rowval
, andnzval
must be compatible withm
,n
, andeltype(colptr)
.sparse(I, J, V, m, n)
verifies lengths ofI
,J
,V
are equal and compatible witheltype(I)
andm
,n
.
DateTime
andTime
formatting/parsing now supports 12-hour clocks with AM/PM viaI
andp
codes, similar tostrftime
(#32308).- Fixed
repr
such that it displaysTime
as it would be entered in Julia (#32103).
getipaddrs
returns IP addresses in the order provided by libuv (#32260).getipaddr
prefers to return the firstIPv4
interface address provided by libuv (#32260).
mean
now accepts both a function argument and adims
keyword (#31576).
- Added
InetAddr
constructor fromAbstractString
, representing IP address, andInteger
, representing port number (#31459).
foldr
andmapfoldr
now work on any iterator that supportsIterators.reverse
, not just arrays (#31781).
@spawn expr
from theDistributed
standard library should be replaced with@spawnat :any expr
(#32600).
- The
ClangSA.jl
static analysis package has been imported, which makes use of the clang static analyzer to validate GC invariants in Julia's C code. The analysis may be run usingmake -C src analyzegc
.