NEWS.md
Julia v1.9 Release Notes
========================
New language features
---------------------
* 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])
Language changes
----------------
* New builtins `getglobal(::Module, ::Symbol[, order])` and `setglobal!(::Module, ::Symbol, x[, order])`
for reading from and writing to globals. `getglobal` should now be preferred for accessing globals over
`getfield`. ([#44137])
Compiler/Runtime improvements
-----------------------------
Command-line option changes
---------------------------
* 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]).
Multi-threading changes
-----------------------
Build system changes
--------------------
New library functions
---------------------
Library changes
---------------
* A known concurrency issue of `iterate` methods on `Dict` and other derived objects such
as `keys(::Dict)`, `values(::Dict)`, and `Set` is fixed. These methods of `iterate` 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]).
Standard library changes
------------------------
#### Package Manager
#### LinearAlgebra
* The methods `a / b` and `b \ a` with `a` a scalar and `b` a vector,
which were equivalent to `a * 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])
#### Markdown
#### Printf
#### Random
* `randn` and `randexp` now work for any `AbstractFloat` type defining `rand` ([#44714]).
#### REPL
#### SparseArrays
#### Dates
#### Downloads
#### Statistics
#### Sockets
#### Tar
#### Distributed
* The package environment (active project, `LOAD_PATH`, `DEPOT_PATH`) are now propagated
when adding *local* workers (e.g. with `addprocs(N::Int)` or through the `--procs=N`
command line flag) ([#43270]).
* `addprocs` for local workers now accept the `env` keyword argument for passing
environment variables to the workers processes. This was already supported for
remote workers ([#43270]).
#### UUIDs
#### Unicode
* `graphemes(s, m:n)` returns a substring of the `m`-th to `n`-th graphemes in `s` ([#44266]).
#### Mmap
#### DelimitedFiles
Deprecated or removed
---------------------
External dependencies
---------------------
Tooling Improvements
---------------------
<!--- generated by NEWS-update.jl: -->