- It is now possible to assign to bindings in another module using
setproperty!(::Module, ::Symbol, x)
. ([#44137]) - Slurping in assignments is now also allowed in non-final position. This is
handled via
Base.split_rest
. ([#42902])
- New builtins
getglobal(::Module, ::Symbol[, order])
andsetglobal!(::Module, ::Symbol, x[, order])
for reading from and writing to globals.getglobal
should now be preferred for accessing globals overgetfield
. ([#44137])
- In Linux and Windows,
--threads=auto
now tries to infer usable number of CPUs from the process affinity which is set typically in HPC and cloud environments ([#42340]). --math-mode=fast
is now a no-op ([#41638]). Users are encouraged to use the @fastmath macro instead, which has more well-defined semantics.- The
--threads
command-line option now acceptsauto|N[,auto|M]
whereM
specifies the number of interactive threads to create (auto
currently means 1) ([#42302]).
Threads.@spawn
now accepts an optional first argument::default
or:interactive
. An interactive task desires low latency and implicitly agrees to be short duration or to yield frequently. Interactive tasks will run on interactive threads, if any are specified when Julia is started ([#42302]).
Iterators.flatmap
was added ([#44792]).
- A known concurrency issue of
iterate
methods onDict
and other derived objects such askeys(::Dict)
,values(::Dict)
, andSet
is fixed. These methods ofiterate
can now be called on a dictionary or set shared by arbitrary tasks provided that there are no tasks mutating the dictionary or set ([#44534]). - Predicate function negation
!f
now returns a composed function(!) ∘ f
instead of an anonymous function ([#44752]). RoundFromZero
now works for non-BigFloat
types ([#41246]).Dict
can be now shrunk manually bysizehint!
([#45004]).@time
now separates out % time spent recompiling invalidated methods ([#45015]).@time_imports
now shows any compilation and recompilation time percentages per import ([#45064]).
- The methods
a / b
andb \ a
witha
a scalar andb
a vector, which were equivalent toa * pinv(b)
, have been removed due to the risk of confusion with elementwise division ([#44358]). - We are now wholly reliant on libblastrampoline (LBT) for calling BLAS and LAPACK. OpenBLAS is shipped by default, but building the system image with other BLAS/LAPACK libraries is not supported. Instead, it is recommended that the LBT mechanism be used for swapping BLAS/LAPACK with vendor provided ones. ([#44360])
normalize(x, p=2)
now supports any normed vector spacex
, including scalars ([#44925]).
randn
andrandexp
now work for anyAbstractFloat
type definingrand
([#44714]).
- The package environment (active project,
LOAD_PATH
,DEPOT_PATH
) are now propagated when adding local workers (e.g. withaddprocs(N::Int)
or through the--procs=N
command line flag) ([#43270]). addprocs
for local workers now accept theenv
keyword argument for passing environment variables to the workers processes. This was already supported for remote workers ([#43270]).
graphemes(s, m:n)
returns a substring of them
-th ton
-th graphemes ins
([#44266]).