Skip to content

Latest commit

 

History

History
161 lines (110 loc) · 6.91 KB

NEWS.md

File metadata and controls

161 lines (110 loc) · 6.91 KB

Julia v1.10 Release Notes

New language features

  • JuliaSyntax.jl is now used as the default parser, providing better diagnostics and faster parsing. Set environment variable JULIA_USE_NEW_PARSER to 0 to switch back to the old parser if necessary (and if you find this necessary, please file an issue) ([#46372]).
  • (U+297A, \leftarrowsubset) and (U+2977, \leftarrowless) may now be used as binary operators with arrow precedence. ([#45962])

Language changes

  • 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 more-specific 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 @simd macro now has a more limited and clearer semantics, it only enables reordering and contraction of floating-point operations, instead of turning on all "fastmath" optimizations. If you observe performance regressions due to this change, you can recover previous behavior with @fastmath @simd, if you are OK with all the optimizations enabled by the @fastmath macro. ([#49405])
  • When a method with keyword arguments is displayed in the stack trace view, the textual representation of the keyword arguments' types is simplified using the new @Kwargs{key1::Type1, ...} macro syntax ([#49959]).

Compiler/Runtime improvements

  • The @pure macro is now deprecated. Use Base.@assume_effects :foldable instead ([#48682]).
  • The mark phase of the Garbage Collector is now multi-threaded ([#48600]).
  • JITLink is enabled by default on Linux aarch64 when Julia is linked to LLVM 15 or later versions ([#49745]). This should resolve many segmentation faults previously observed on this platform.

Command-line option changes

  • New option --gcthreads to set how many threads will be used by the Garbage Collector ([#48600]). The default is set to N/2 where N is the amount of worker threads (--threads) used by Julia.

Multi-threading changes

Build system changes

New library functions

  • tanpi is now defined. It computes tan(πx) more accurately than tan(pi*x) ([#48575]).
  • fourthroot(x) is now defined in Base.Math and can be used to compute the fourth root of x. It can also be accessed using the unicode character , which can be typed by \fourthroot<tab> ([#48899]).
  • Libc.memmove, Libc.memset, and Libc.memcpy are now defined, whose functionality matches that of their respective C calls.

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]).
  • parent and parentindices support SubStrings

Standard library changes

  • startswith now supports seekable IO streams ([#43055])
  • printing integral Rationals will skip the denominator in Rational-typed IO context (e.g. in Arrays) ([#45396])

Package Manager

  • 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 ([#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]).
  • The norm of the adjoint or transpose of an AbstractMatrix now returns the norm of the parent matrix by default, matching the current behaviour for AbstractVectors ([#49020]).
  • eigen(A, B) and eigvals(A, B), where one of A or B is symmetric or Hermitian, are now fully supported ([#49533])
  • eigvals/eigen(A, cholesky(B)) now computes the generalized eigenvalues (eigen: and eigenvectors) of A and B via Cholesky decomposition for positive definite B. Note: The second argument is the output of cholesky.

Printf

  • Format specifiers now support dynamic width and precision, e.g. %*s and %*.*g ([#40105]).

Profile

Random

REPL

  • When stack traces are printed, the printed depth of types in function signatures will be limited to avoid overly verbose output ([#49795]).

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])
  • 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])

Dates

Distributed

Unicode

DelimitedFiles

InteractiveUtils

  • 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])

Deprecated or removed

External dependencies

Tooling Improvements