Julia 1.14.0-alpha1 Adds Task Cancellation, Syntax Versioning in Project.toml and a SAT-Based Pkg Resolver
The first 1.14 alpha adds cancellation tokens for tasks, a Project.toml key that selects the syntax version, labeled blocks, and a new exact package resolver.
Overview
The Julia project published v1.14.0-alpha1 on October 21, 2026. The GitHub release page describes it as the “First alpha pre-release in the upcoming 1.14 release series” and points readers to the release notes for what will be new. The v1.14 release notes show changes to the language, the task runtime and the package manager. Both sources are the project’s own, and the notes are for an alpha, so the contents may change before a stable release.
Language changes
According to the release notes, a package can now choose which version of Julia’s syntax is used to parse it by setting the compat.julia or syntax.julia_version key in Project.toml. The notes say the feature will “allow non-breaking evolution of Julia syntax in future versions”.
The same notes list several other additions:
- The
@labelmacro creates labeled blocks that can be exited early withbreak name [value], andcontinue nameis supported for labeled loops. - New wrapping arithmetic operators
+%,-%and*%annotate operations that are safe to overflow. Their behavior is currently identical to the default+,-and*operators, with the notes saying a future version may offer opt-in detection of unannotated wrapping. - Primitive types with logical widths that are not a multiple of a byte can be defined, and the
sizeofof a primitive type now rounds up to a multiple of its alignment, soprimitive type Int24 24 endnow hassizeof4 rather than 3. - Subtyping of
Type{T}is changed, which the notes describe as “fixing a long-standing soundness hole”. - Support for Unicode 18.
Task cancellation and threading
The notes state that “Task cancellation is now supported, organized around cancellation tokens”. They describe Base.CancellationTokenSource as a tree-structured cancellation scope and Base.CancellationToken as its observe-and-wait view, with blocking operations such as wait, lock and sleep accepting a cancel keyword argument. @sync and Threads.@threads blocks also scope a cancellation source over their children.
In interactive sessions, the notes say, “^C now cancels the current evaluation’s cancellation scope” instead of throwing an InterruptException into whatever code happened to be running.
On scheduling, the notes say the task scheduler now avoids per-spawn wake overhead that grew with the number of threads, and that “Benchmarks show up to 1000x reduction in spawn time in such scenarios”, referring to highly oversubscribed machines. Threads.@threads also now accepts array comprehensions. Storing into a Threads.Atomic with the plain a[] = v form is deprecated in favor of @atomic a[] = v.
Package manager and tooling
Per the notes, Pkg now resolves versions “with an exact SAT-based resolver from Resolver.jl”. The previous resolver can be selected with JULIA_PKG_RESOLVER=maxsum. When requirements cannot be satisfied, the new resolver reports each conflict with the chain of compat entries behind it. A new [compat-overrides] project section lets an entry replace every compat constraint on a package.
Other Pkg items in the notes include Pkg.why printing a tree instead of every dependency path, and compressed registries cached uncompressed on disk so that, in the notes’ example, Pkg.status() goes from about 125 ms to about 19 ms. Interactive precompilation gains keyboard controls, and the TOML standard library can now capture and write back comments.
Code coverage changes default behavior: coverage now records only whether each source line ran, reporting a count of 1 for executed lines, and --code-coverage-mode=count restores execution counts. Builds now install libjulia-internal.a, a static runtime without the JIT, so that tools such as JuliaC.jl can link it with a trimmed system image into one executable.
What We Don’t Know
The sources do not give a date for a stable 1.14 release or for later pre-releases. Neither source includes independent performance measurements, and the figures above are the project’s own statements from the notes.
For the previous release line, see the Herald’s coverage of Julia 1.13 shipping as a stable release.