⚠ This page is served via a proxy. Original site: https://github.com
This service does not collect credentials or authentication data.
Skip to content

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 14 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 <[email protected]>
(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)
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`.
@github-actions
Copy link

github-actions bot commented Jan 5, 2026

This PR is stale because it has been open 30 days with no activity. Comment or remove stale label, or this PR will be closed in 5 days.

@github-actions github-actions bot added the stale This pull request is inactive label Jan 5, 2026
@github-actions github-actions bot closed this Jan 11, 2026
@NHDaly NHDaly reopened this Jan 13, 2026
@NHDaly NHDaly added DO NOT MERGE This pull request cannot be merged and removed stale This pull request is inactive labels Jan 13, 2026
dkarrasch and others added 9 commits January 16, 2026 17:12
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)
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
│││││└────────────────────
```
fingolfin and others added 17 commits January 16, 2026 17:13
Calls to this method are produced by syntax lowering for simple typed
comprehensions. The current signature is ambiguous, making JET believe
that the modified method could have ended up invoking itself. Resolve
this by renaming the other methods.


These are the the warnings I am seeing while JETing a package:
```
││┌ _array_for(::Type{T}, itr::AbstractVector{T} where T<:NCRingElement, isz::Any) where T @ Base ./array.jl:673
│││┌ _array_for(::Type, itr::Base.SizeUnknown, isz::Any) @ Base ./array.jl:673
││││┌ _similar_shape(itr::Base.SizeUnknown, ::Base.HasLength) @ Base ./array.jl:657
│││││ no matching method found `length(::Base.SizeUnknown)`: length(itr::Base.SizeUnknown)
││││└────────────────────
││││┌ _similar_shape(itr::Base.SizeUnknown, ::Base.HasShape) @ Base ./array.jl:658
│││││┌ axes(A::Base.SizeUnknown) @ Base ./abstractarray.jl:98
││││││ no matching method found `size(::Base.SizeUnknown)`: size(A::Base.SizeUnknown)
│││││└────────────────────
```
and
```
││││││││┌ Base.AnnotatedString(s::String, annots::Any) @ Base ./strings/annotated.jl:107
│││││││││┌ collect(::Type{@NamedTuple{region::UnitRange{Int64}, label::Symbol, value}}, itr::Any) @ Base ./array.jl:641
││││││││││┌ _collect(::Type{@NamedTuple{…}}, itr::Any, isz::Union{Base.HasLength, Base.HasShape}) @ Base ./array.jl:643
│││││││││││┌ _array_for(::Type{@NamedTuple{region::UnitRange{Int64}, label::Symbol, value}}, itr::Base.HasLength, isz::Any) @ Base ./array.jl:673
││││││││││││┌ _similar_shape(itr::Base.HasLength, ::Base.HasLength) @ Base ./array.jl:657
│││││││││││││ no matching method found `length(::Base.HasLength)`: length(itr::Base.HasLength)
││││││││││││└────────────────────
││││││││││││┌ _similar_shape(itr::Base.HasLength, ::Base.HasShape) @ Base ./array.jl:658
│││││││││││││┌ axes(A::Base.HasLength) @ Base ./abstractarray.jl:98
││││││││││││││ no matching method found `size(::Base.HasLength)`: size(A::Base.HasLength)
│││││││││││││└────────────────────
││││││││││││┌ _array_for(::Type{@NamedTuple{region::UnitRange{Int64}, label::Symbol, value}}, itr::Base.HasLength, isz::Nothing) @ Base ./array.jl:673
│││││││││││││ no matching method found `_similar_shape(::Base.HasLength, ::Nothing)`: Base._similar_shape(itr::Base.HasLength, isz::Nothing)
││││││││││││└────────────────────
```
Prevent transparent huge pages (THP) overallocating pysical memory.

Co-authored-by: Adnan Alhomssi <[email protected]>
Prepend `[signal (X) ]thread (Y) ` to each backtrace line that is
displayed.

Co-authored-by: Diogo Netto <[email protected]>
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 <[email protected]>
Co-authored-by: Keno Fischer <[email protected]>

* 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 <[email protected]>
Co-authored-by: Jeff Bezanson <[email protected]>

---------

Co-authored-by: Valentin Churavy <[email protected]>
Co-authored-by: Keno Fischer <[email protected]>
Co-authored-by: Jameson Nash <[email protected]>
Co-authored-by: Jeff Bezanson <[email protected]>
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.