Julia v1.10 Release Notes ======================== New language features --------------------- Language changes ---------------- Compiler/Runtime improvements ----------------------------- * The `@pure` macro is now deprecated. Use `Base.@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 than `tan(pi*x)` ([#48575]). New library features -------------------- * The `initialized=true` keyword assignment for `sortperm!` and `partialsortperm!` is now a no-op ([#47979]). It previously exposed unsafe behavior ([#47977]). * `binomial(x, k)` now supports non-integer `x` ([#48124]). * A `CartesianIndex` is now treated as a "scalar" for broadcasting ([#47044]). * `printstyled` now supports italic output ([#45164]). Standard library changes ------------------------ * `startswith` now supports seekable `IO` streams ([#43055]) #### 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 accepts `timing` as a keyword argument which displays per package timing information for precompilation (e.g. `Pkg.precompile(timing=true)`) #### LinearAlgebra * `AbstractQ` no longer subtypes to `AbstractMatrix`. Moreover, `adjoint(Q::AbstractQ)` no longer wraps `Q` in an `Adjoint` type, but instead in an `AdjointQ`, that itself subtypes `AbstractQ`. This change accounts for the fact that typically `AbstractQ` instances behave like function-based, matrix-backed linear operators, and hence don't allow for efficient indexing. Also, many `AbstractQ` 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](https://docs.julialang.org/en/v1/stdlib/LinearAlgebra/#man-linalg-abstractq) ([#46196]). * Adjoints and transposes of `Factorization` objects are no longer wrapped in `Adjoint` and `Transpose` wrappers, respectively. Instead, they are wrapped in `AdjointFactorization` and `TranposeFactorization` types, which themselves subtype `Factorization` ([#46874]). * New functions `hermitianpart` and `hermitianpart!` for extracting the Hermitian (real symmetric) part of a matrix ([#31836]). #### 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` with `broken=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. Deprecated or removed --------------------- External dependencies --------------------- Tooling Improvements --------------------