Skip to content

[Do-Not-Merge] Release v1.12+RAI branch#268

Draft
NHDaly wants to merge 95 commits intorelease-1.12from
v1.12+RAI
Draft

[Do-Not-Merge] Release v1.12+RAI branch#268
NHDaly wants to merge 95 commits intorelease-1.12from
v1.12+RAI

Conversation

@NHDaly
Copy link
Member

@NHDaly NHDaly commented Dec 5, 2025

PR Description

Tracking branch for our migration to v1.12+RAI.

This PR will never be merged, but we will eventually switch to use v1.12+RAI as our main julia branch.

KristofferC and others added 30 commits December 11, 2025 14:05
It was exported in v1.7, not v1.10: JuliaLang#39588

(cherry picked from commit 1067db8)
Co-authored-by: Cody Tapscott <84105208+topolarity@users.noreply.github.com>
(cherry picked from commit 841148d)
)

This seems to be an issue at least as far back as 1.10:
```julia
$ rm -rf ~/.julia/compiled/*/SuiteSparse/
$ julia +1.10 -q
julia> using SuiteSparse
[ Info: Precompiling SuiteSparse [4607b0f0-06f3-5cda-b6b1-a6196a1729e9]
```

(cherry picked from commit d6f2a7e)
…ng#60395)

Co-authored-by: dkarrasch <26658441+dkarrasch@users.noreply.github.com>
Fix GEMM dispatch for complex-real matmul (JuliaLang#1520)
Fix JuliaLang#60152, which impacted both lowering implementations.
      `remove-argument-side-effects` assumed all `kw` arguments from a
`parameters` block had already been dumped into the argument list, which
is
     not true in some cases.  In addition:

- JuliaLowering hit a MethodError in the dumped-`kw` case regardless.
There are other issues with `kw` which I'm ignoring in this PR (see
JuliaLang#60162)

- Delete some ancient history: `&` [used to be a valid
argument](JuliaLang@a378b75#diff-5d79463faae0f7f19454c7f9888498d9f876082e258ab3efdca36a0ee64b0c87L72)
head sometime in 2012 apparently!

(cherry picked from commit 2be8847)
…port to 1.12) (JuliaLang#60385)

Manual backport of JuliaLang#60384 to `release-1.12` (there is currently no
`backports-release-1.12` branch; once there is, this PR could of course
be re-targeted to that).
Fixed `method_ir_ci` typo in the `abstract_invoke`.
Stdlib: Pkg
URL: https://github.com/JuliaLang/Pkg.jl.git
Stdlib branch: release-1.12
Julia branch: release-1.12
Old commit: 1dad5c513
New commit: b322a8ff7
Julia version: 1.12.3
Pkg version: 1.12.1 (Does not match)
Bump invoked by: @IanButterworth
Powered by:
[BumpStdlibs.jl](https://github.com/JuliaLang/BumpStdlibs.jl)

Diff:
JuliaLang/Pkg.jl@1dad5c5...b322a8f

```
$ git log --oneline 1dad5c513..b322a8ff7
b322a8ff7 Merge pull request JuliaLang#4575 from IanButterworth/ib/1.12_source_fix
358484adf Add test for project sources path preservation
2418e2512 Fix project sources path corruption during instantiate/up
```
…ng#60424)

Stdlib: LinearAlgebra
URL: https://github.com/JuliaLang/LinearAlgebra.jl.git
Stdlib branch: release-1.12
Julia branch: release-1.12
Old commit: dd3ea72
New commit: 7249e66
Julia version: 1.12.3
LinearAlgebra version: 1.12.0 (Does not match)
Bump invoked by: @dkarrasch
Powered by:
[BumpStdlibs.jl](https://github.com/JuliaLang/BumpStdlibs.jl)

Diff:
JuliaLang/LinearAlgebra.jl@dd3ea72...7249e66

```
$ git log --oneline dd3ea72..7249e66
7249e66 Backports to release 1.12.4 (JuliaLang#1527)
```
In various packages I am JETing, I see the same error being reported:

> local variable `pp` may be undefined: pp::Base.Process

This patch helps JET proof that there is no actual problem.

Would be kinda nice to see this backported to 1.12 so that if I run JET
with 1.12.4 this is not reported anymore. And of course also to 1.13.
…!` (JuliaLang#60453)

> local variable `msk_d1` may be undefined: msk_d1::UInt64

The code logic was actually right, but by transforming the code, JET can
also see it (and arguably it is now also easier for a human to see that
everything is correct)
This PR backports:
- JuliaLang#60452 
- JuliaLang#60453

to release-1.12 (i.e. 1.12.4).
…g#60457)

Stdlib: SparseArrays
URL: https://github.com/JuliaSparse/SparseArrays.jl.git
Stdlib branch: release-1.12
Julia branch: release-1.12
Old commit: 5d674dc
New commit: f81a30d
Julia version: 1.12.3
SparseArrays version: 1.12.0 (Does not match)
Bump invoked by: @dkarrasch
Powered by:
[BumpStdlibs.jl](https://github.com/JuliaLang/BumpStdlibs.jl)

Diff:
JuliaSparse/SparseArrays.jl@5d674dc...f81a30d

```
$ git log --oneline 5d674dc..f81a30d
f81a30d Backports to release 1.12 (JuliaLang#664)
392aa94 Fix generic sparse-dense multiplication (JuliaLang#663)
```
As a bonus, also change `T == BigInt` to `T === BigInt`.

Fixes this:
```
│┌ load_artifacts_toml(artifacts_toml::String) @ Artifacts /Users/julia/.julia/scratchspaces/a66863c6-20e8-4ff4-8a62-49f30b1f605e/agent-cache/default-honeycrisp-R17H3W25T9.0/build/default-honeycrisp-R17H3W25T9-0/julialang/julia-release-1-dot-12/usr/share/julia/stdlib/v1.12/Artifacts/src/Artifacts.jl:315
││┌ load_artifacts_toml(artifacts_toml::String; pkg_uuid::Nothing) @ Artifacts /Users/julia/.julia/scratchspaces/a66863c6-20e8-4ff4-8a62-49f30b1f605e/agent-cache/default-honeycrisp-R17H3W25T9.0/build/default-honeycrisp-R17H3W25T9-0/julialang/julia-release-1-dot-12/usr/share/julia/stdlib/v1.12/Artifacts/src/Artifacts.jl:317
│││┌ parse_toml(path::String) @ Artifacts /Users/julia/.julia/scratchspaces/a66863c6-20e8-4ff4-8a62-49f30b1f605e/agent-cache/default-honeycrisp-R17H3W25T9.0/build/default-honeycrisp-R17H3W25T9-0/julialang/julia-release-1-dot-12/usr/share/julia/stdlib/v1.12/Artifacts/src/Artifacts.jl:26
││││┌ parsed_toml(project_file::String) @ Base ./loading.jl:276
│││││┌ parsed_toml(project_file::String, toml_cache::Base.TOMLCache{nothing}, toml_lock::ReentrantLock) @ Base ./loading.jl:278
││││││┌ lock(f::Base.var"#parsed_toml##0#parsed_toml##1"{String, Base.TOMLCache{nothing}}, l::ReentrantLock) @ Base ./lock.jl:335
│││││││┌ (::Base.var"#parsed_toml##0#parsed_toml##1"{String, Base.TOMLCache{nothing}})() @ Base ./loading.jl:281
││││││││┌ Base.CachedTOMLDict(p::Base.TOML.Parser{nothing}, path::String) @ Base ./loading.jl:222
│││││││││┌ parse(l::Base.TOML.Parser{nothing}) @ Base.TOML ./toml_parser.jl:444
││││││││││┌ tryparse(l::Base.TOML.Parser{nothing}) @ Base.TOML ./toml_parser.jl:453
│││││││││││┌ parse_toplevel(l::Base.TOML.Parser{nothing}) @ Base.TOML ./toml_parser.jl:157
││││││││││││┌ parse_array(l::Base.TOML.Parser{nothing}) @ Base.TOML ./toml_parser.jl:719
│││││││││││││┌ getproperty(x::Nothing, f::Symbol) @ Base ./Base_compiler.jl:54
││││││││││││││ invalid builtin function call: getfield(x::Nothing, f::Symbol)
│││││││││││││└────────────────────
```
Help JET (and humans?) understand that src_file and dst_file won't be
used without being defined.

Fixes this JET report:
```
│┌ cp(src::AbstractString, dst::String) @ Base.Filesystem ./file.jl:404
││┌ cp(src::AbstractString, dst::String; force::Bool, follow_symlinks::Bool) @ Base.Filesystem ./file.jl:410
│││┌ kwcall(::@NamedTuple{force::Bool, follow_symlinks::Bool}, ::typeof(Base.Filesystem.cptree), src::String, dst::String) @ Base.Filesystem ./file.jl:366
││││┌ cptree(src::String, dst::String; force::Bool, follow_symlinks::Bool) @ Base.Filesystem ./file.jl:379
│││││┌ sendfile(src::String, dst::String) @ Base.Filesystem ./file.jl:1282
││││││ local variable `src_file` may be undefined: src_file::Base.Filesystem.File
│││││└────────────────────
│││││┌ sendfile(src::String, dst::String) @ Base.Filesystem ./file.jl:1283
││││││ local variable `src_file` may be undefined: src_file::Base.Filesystem.File
│││││└────────────────────
│││││┌ sendfile(src::String, dst::String) @ Base.Filesystem ./file.jl:1285
││││││ local variable `dst_file` may be undefined: dst_file::Base.Filesystem.File
│││││└────────────────────
│││││┌ sendfile(src::String, dst::String) @ Base.Filesystem ./file.jl:1286
││││││ local variable `dst_file` may be undefined: dst_file::Base.Filesystem.File
│││││└────────────────────
```
KristofferC and others added 29 commits January 28, 2026 15:13
…#60827)

That is, if it is called twice (e.g. because precompilation is disabled)
with identical arguments, then this should not trigger an assertion.

This should resolve oscar-system/GAP.jl#1314

(cherry picked from commit 1708d99)
During incremental compaction a forwarded NewSSAValue with a negative id
was treated like an SSAValue, producing SSAValue(-n) and tripping
`renumber_ssa2` bounds checks. Only convert NewSSAValue to SSAValue when
the id is positive, so new_new_nodes references remain valid.

Fixes JuliaLang#57827.
Found by claude-code debugging a random zygote issue:
SciML/NeuralPDE.jl#1020 (comment).

`spvals` just doesn't exist within this function. This issue has
apparently existed since Julia 1.6
)

`MustAlias` has `has_extended_unionsplit(::MustAliasLattice) === true`
so it is treated as a target for union split, but `uniontypes` does not
handle `MustAlias` specially, causing union split to fail for
`MustAlias`.

This issue is addressed by always applying `uniontypes` to the result of
`widenconst(x)`.
External custom lattice implementations could previously provide their
own `uniontypes`, but it would be cleaner interface design if they just
overload `widenconst` for their custom lattice elements so that it
returns `Union`-type.
Test suite: switch to `httpbingo.julialang`, fall back to `httpbin.julialang` on failure

(cherry picked from commit 5ab8db3)
(cherry picked from commit e4cfa46)
Bumps [julia-actions/setup-julia](https://github.com/julia-actions/setup-julia) from 2.6.0 to 2.6.1.
- [Release notes](https://github.com/julia-actions/setup-julia/releases)
- [Commits](julia-actions/setup-julia@9b79636...5c9647d)

---
updated-dependencies:
- dependency-name: julia-actions/setup-julia
  dependency-version: 2.6.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.7 to 6.0.2.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@692973e...de0fac2)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 6.0.2
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
…ctions/release-1.12/julia-actions/setup-julia-2.6.1

[release-1.12] Bump julia-actions/setup-julia from 2.6.0 to 2.6.1
…ctions/release-1.12/actions/checkout-6.0.2

[release-1.12] Bump actions/checkout from 4.1.7 to 6.0.2
Prevent transparent huge pages (THP) overallocating pysical memory.

Co-authored-by: Adnan Alhomssi <adnan.alhomssi@relational.ai>
Prepend `[signal (X) ]thread (Y) ` to each backtrace line that is
displayed.

Co-authored-by: Diogo Netto <61364108+d-netto@users.noreply.github.com>
Alternative to JuliaLang#58146.

We want to compile a subset of the possible specializations of a
function. To this end, we have a number of manually written `precompile`
statements. Creating this list is, unfortunately, error-prone, and the
list is also liable to going stale. Thus we'd like to validate each
`precompile` statement in the list.

The simple answer is, of course, to actually run the `precompile`s, and
we naturally do so, but this takes time.

We would like a relatively quick way to check the validity of a
`precompile` statement.
This is a dev-loop optimization, to allow us to check "is-precompilable"
in unit tests.

We can't use `hasmethod` as it has both false positives (too loose):
```julia
julia> hasmethod(sum, (AbstractVector,))
true

julia> precompile(sum, (AbstractVector,))
false

julia> Base.isprecompilable(sum, (AbstractVector,)) # <- this PR
false
```
and also false negatives (too strict):
```julia
julia> bar(@nospecialize(x::AbstractVector{Int})) = 42
bar (generic function with 1 method)

julia> hasmethod(bar, (AbstractVector,))
false

julia> precompile(bar, (AbstractVector,))
true

julia> Base.isprecompilable(bar, (AbstractVector,)) # <- this PR
true
```
We can't use `hasmethod && isconcretetype` as it has false negatives
(too strict):
```julia
julia> has_concrete_method(f, argtypes) = all(isconcretetype, argtypes) && hasmethod(f, argtypes)
has_concrete_method (generic function with 1 method)

julia> has_concrete_method(bar, (AbstractVector,))
false

julia> has_concrete_method(convert, (Type{Int}, Int32))
false

julia> precompile(convert, (Type{Int}, Int32))
true

julia> Base.isprecompilable(convert, (Type{Int}, Int32))  # <- this PR
true
```
`Base.isprecompilable` is essentially `precompile` without the actual
compilation.
* Preserve the scope across the exception handler (JuliaLang#60647)

We store the previous scope in the eh_state and thus hide it from GC.
This means we need to manually preserve that scope across the `try ... catch`,
instead fo the new scope that we switch to.

---------
Co-authored-by: Nathan Daly <nathan.daly@relational.ai>
Co-authored-by: Keno Fischer <keno@juliacomputing.com>

* add wb_back on all task switch paths (JuliaLang#60617)

Since this task's stack or scope field could have been modified after it
was marked by an incremental collection (and not just for copy stacks),
move the barrier back unconditionally here.

---------

Co-authored-by: Valentin Churavy <v.churavy@gmail.com>
Co-authored-by: Jeff Bezanson <jeff.bezanson@gmail.com>

---------

Co-authored-by: Valentin Churavy <v.churavy@gmail.com>
Co-authored-by: Keno Fischer <keno@juliacomputing.com>
Co-authored-by: Jameson Nash <vtjnash@gmail.com>
Co-authored-by: Jeff Bezanson <jeff.bezanson@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

DO NOT MERGE This pull request cannot be merged

Projects

None yet

Development

Successfully merging this pull request may close these issues.