Skip to content

Conversation

@KristofferC
Copy link
Member

@KristofferC KristofferC commented Oct 21, 2025

Backported PRs:

Need manual backport:

Contains multiple commits, manual intervention needed:

Non-merged PRs with backport label:

@KristofferC KristofferC added the release Release management and versioning. label Oct 21, 2025
@KristofferC KristofferC changed the title set VERSION to 1.12.1 (#59871) Backports for 1.12.2 Oct 21, 2025
@ViralBShah
Copy link
Member

Hopefully the linalg bump can make it in: #59927

@KSepetanc
Copy link

KSepetanc commented Oct 23, 2025

PR #59736 is marked here as needs manual backport, but has been marked as backported in 1.12.1. Why?

@KristofferC
Copy link
Member Author

I guess I forgot to remove the label

@KristofferC
Copy link
Member Author

Please cherry pick with -x when pushing them here.

@vtjnash
Copy link
Member

vtjnash commented Oct 24, 2025

I don't know who that is directed at, but note that #59921 is not a backport, but a v1.12-only bug

@DilumAluthge DilumAluthge added the don't squash Don't squash merge label Nov 2, 2025
KristofferC and others added 12 commits November 4, 2025 20:24
…59878)

Noticed during bug hunting of

ericphanson/LicenseCheck.jl#11 (comment)
and may cause performance degradation for interpreter-executed try
blocks or scope entry.

Co-authored-by: Dilum Aluthge <[email protected]>
(cherry picked from commit c1353ac)
This prevents a bunch of invalidations, specifically these ones in Julia
1.12 with UnsafePointers.jl (CC @cjdoris):
```julia
 inserting convert(P::Type{<:Ptr}, p::UnsafePointers.UnsafePtr) @ UnsafePointers ~/git/UnsafePointers.jl/src/UnsafePointers.jl:66 invalidated:
   mt_backedges:  1: signature Tuple{typeof(convert), Type{Ptr{Base.DataTypeLayout}}, Any} triggered MethodInstance for Base.datatype_npointers(::Type{T} where T<:(NamedTuple{names, T} where {T<:Tuple, names})) (4 children)
                  2: signature Tuple{typeof(convert), Type{Ptr{Base.DataTypeLayout}}, Any} triggered MethodInstance for Base.datatype_npointers(::Type{T} where T<:AbstractString) (4 children)
                  3: signature Tuple{typeof(convert), Type{Ptr{Base.DataTypeLayout}}, Any} triggered MethodInstance for Base.datatype_npointers(::Type{T} where T<:Tuple{Symbol, Any}) (4 children)
                  4: signature Tuple{typeof(convert), Type{Ptr{Base.DataTypeLayout}}, Any} triggered MethodInstance for Base.datatype_npointers(::Type{T} where T<:(NamedTuple{(:message, :position, :hint), _A} where _A)) (4 children)
                  5: signature Tuple{typeof(convert), Type{Ptr{Base.DataTypeLayout}}, Any} triggered MethodInstance for Base.datatype_npointers(::Type{T} where T<:(SubString{_A} where _A)) (4 children)
                  6: signature Tuple{typeof(convert), Type{Ptr{Base.DataTypeLayout}}, Any} triggered MethodInstance for Base.datatype_alignment(::Type{T} where T<:(NamedTuple{(:message, :position, :hint), _A} where _A)) (15 children)
                  7: signature Tuple{typeof(convert), Type{Ptr{Base.DataTypeLayout}}, Any} triggered MethodInstance for Base.datatype_alignment(::Type{T} where T<:(SubString{_A} where _A)) (19 children)
                  8: signature Tuple{typeof(convert), Type{Ptr{Base.DataTypeLayout}}, Any} triggered MethodInstance for Base.datatype_alignment(::Type{T} where T<:Tuple{Any, Symbol, Symbol}) (21 children)
                  9: signature Tuple{typeof(convert), Type{Ptr{Base.DataTypeLayout}}, Any} triggered MethodInstance for Base.datatype_alignment(::Type{T} where T<:Tuple{Symbol, Any}) (23 children)
                 10: signature Tuple{typeof(convert), Type{Ptr{Base.DataTypeLayout}}, Any} triggered MethodInstance for Base.datatype_alignment(::Type{T} where T<:AbstractString) (52 children)
                 11: signature Tuple{typeof(convert), Type{Ptr{Base.DataTypeLayout}}, Any} triggered MethodInstance for Base.datatype_alignment(::Type{T} where T<:(NamedTuple{names, T} where {T<:Tuple, names})) (1739 children)
```

Using Cthulhu to look at the last invalidation with 1739 children showed
this:
```julia
datatype_alignment(dt::DataType) @ Base ~/.julia/juliaup/julia-1.12.1+0.x64.linux.gnu/share/julia/base/runtime_internals.jl:544
544 function datatype_alignment(dt::Type{T} where T<:(NamedTuple{names, T} where {T<:Tuple, names})::DataType)::Any
545     @_foldable_meta
546     (dt::Type{T} where T<:(NamedTuple{names, T} where {T<:Tuple, names}).layout::Any == C_NULL::Core.Const(Ptr{Nothing}(0x0000000000000000)))::Any && throw(UndefRefError()::Core.Const(UndefRefError()))
547     alignment::Any = unsafe_load(convert(Ptr{DataTypeLayout}::Type{Ptr{Base.DataTypeLayout}}, dt::Type{T} where T<:(NamedTuple{names, T} where {T<:Tuple, names}).layout::Any)::Any)::Any.alignment::Any
548     return Int::Type{Int64}(alignment::Any)::Any
549 end
```

The `.layout` field was getting inferred as `Any` which caused that
method to be invalidated when UnsafePointers.jl defined a new
`convert()` method.

Would it be possible to backport this to 1.12? UnsafePointers is a
dependency of PythonCall so it's quite widely used.

---------

Co-authored-by: Shuhei Kadowaki <[email protected]>
(cherry picked from commit 90f4289)
This change is not necessary for `NativeInterpreter` at all, but is
particularly useful for JET. For error reporting, which is the purpose
of `JETAnalyzer`, it is desirable to present error causes in a
user-understandable form even when concrete evaluation presents errors.
This requires analysis using regular abstract interpretation (constant
propagation) in general. However, to reduce false positives, the
precision that concrete evaluation brings is very important, and
completely disabling concrete evaluation is not desirable either.
Currently, `JETAnalyzer` aims to avoid this tradeoff by limiting
concrete evaluation to only some functions, but this approach does not
scale and occasionally causes problems like #59884.

This commit enables ad-hoc cancellation of concrete evaluation based on
the result of `concrete_eval_call`, allowing `JETAnalyzer` to fallback
to abstract interpretation only when concrete evaluation causes errors,
fundamentally avoiding such problems.

(cherry picked from commit c6091de)
…iew` (#59915)

When packages using non-Base compilers call `Base._which`, a method
error occurs due to module context mismatch. Like other reflection
functions, the module context of `mt::Compiler.MethodTableView` needs to
be properly determined.
#59927)

Stdlib: LinearAlgebra
URL: https://github.com/JuliaLang/LinearAlgebra.jl.git
Stdlib branch: release-1.12
Julia branch: backports-release-1.12
Old commit: 24f5e21
New commit: 5567504
Julia version: 1.12.1
LinearAlgebra version: 1.12.0(Does not match)
Bump invoked by: @ViralBShah
Powered by:
[BumpStdlibs.jl](https://github.com/JuliaLang/BumpStdlibs.jl)

Diff:
JuliaLang/LinearAlgebra.jl@24f5e21...5567504

```
$ git log --oneline 24f5e21..5567504
5567504 Backports to v1.12 (#1472)
a2a4981 Overload array constructors for BunchKaufman (#1461) (#1466)
1ebc0cb Generic fallback for `fillstored!` (#1389)
```

Co-authored-by: ViralBShah <[email protected]>
…all_name` (#59921)

This prevents invalidations of `isready()` from loading Distributed on
1.12:
```julia
 inserting isready(pool::Distributed.WorkerPool) @ Distributed ~/.julia/juliaup/julia-1.12.1+0.x64.linux.gnu/share/julia/stdlib/v1.12/Distributed/src/workerpool.jl:168 invalidated:
   mt_backedges: 1: signature Tuple{typeof(isready), Any} triggered MethodInstance for (::Compiler.var"#evalargs#abstract_eval_nonlinearized_foreigncall_name##0"{Expr, Compiler.StatementState, Compiler.Future{Compiler.CallMeta}, Vector{Any}, Int64})(::Compiler.AbstractInterpreter, ::Compiler.InferenceState) (0 children)
                 2: signature Tuple{typeof(isready), Any} triggered MethodInstance for (::Compiler.var"#evalargs#abstract_eval_nonlinearized_foreigncall_name##0"{Expr, Compiler.StatementState, Compiler.Future{Compiler.CallMeta}, Vector{Any}, Int64})(::Compiler.NativeInterpreter, ::Compiler.InferenceState) (0 children)
                 3: signature Tuple{typeof(isready), Any} triggered MethodInstance for (::Compiler.var"#evalargs#abstract_eval_nonlinearized_foreigncall_name##0"{Expr, Compiler.StatementState, Compiler.Future{Compiler.CallMeta}, Vector{Any}, Int64})(::Compiler.AbstractInterpreter, ::Compiler.InferenceState) (249 children)
```

I think ideally it wouldn't use a closure at all, but I'm not familiar
enough with the code to refactor it that much. I'm making the PR against
the `release-1.12` branch because this function is deleted entirely on
master by #59165.
@DilumAluthge DilumAluthge force-pushed the backports-release-1.12 branch from 8d0ca62 to d0161e4 Compare November 5, 2025 01:24
jakobnissen and others added 8 commits November 7, 2025 19:09
Followup of #54609

(cherry picked from commit c2f42a6)
fix a bug in which parsing the digits after the decimal point of a
(date-)time like "00:00:00.12" were interpreted as "12 milliseconds"
instead of "0.12 seconds". Now, the fractional part is correctly parsed
as a fraction of a second, then correctly converted to milliseconds. As
before, only the first three digits after the decimal point are
considered.

Closes #59997

---

With a local build of this PR, the example from the above issue now
evaluates to:
```julia
julia> t2 = TOML.parse("""time = 00:00:00.2""")
Dict{String, Any} with 1 entry:
  "time" => 00:00:00.2

julia> millisecond(t2["time"])
200
```

(cherry picked from commit 906d64e)
When encountering complicated cycles within cycles, make sure to revisit
all applicable methods explicitly, since not all methods within the
cycle will necessarily change return type after resolving the cycle.
This shows up as the possibility of frames that don't get revisited
before being cached, probably just caching `Union{}` as the call type
instead. I always assumed this code was probably wrong, but didn't have
any way to construct the counter-example to have confidence that fixing
it would not cause some other side-effect. But still keep the backedge
work lazy, since we don't want to allocate unnecessarily for a rarely
used feature (recursion).

Fix #59943

(cherry picked from commit f4847bf)
fixes #60009

(cherry picked from commit 97f880a)
When errors occur, `waitall` may skip allocating Channel producers,
leading to deadlock in the subsequent loop in the event that the user
asked it to failfast (ironically). This is seen often in the failing of
the threads_exec test ever since the test was added for this call.
Simplify this to just use separate loops for the wait and the return
computation.

(cherry picked from commit e2f3178)
@KristofferC KristofferC force-pushed the backports-release-1.12 branch from fe7f9d4 to c53224f Compare November 7, 2025 18:09
@KristofferC
Copy link
Member Author

LoadError: IOError: could not spawn setenv(`7z x /private/var/tmp/agent-tempdirs/default-honeycrisp-XC9YQX9HH2.0/tmp/jl_l2pSjSpC3w-download.gz -so`)

on CI. Due to 7z bump? But why...

https://github.com/JuliaLang/Pkg.jl/blob/499e7d35565c0c8582d0d7b56bfe2109dcbac4c0/src/PlatformEngines.jl#L19-L21 should work. Any idea @nhz2?

@nhz2
Copy link
Member

nhz2 commented Nov 8, 2025

Why is the 7z not getting the full path? Shouldn't it be something like /home/nathan/.julia/juliaup/julia-1.12.1+0.x64.linux.gnu/libexec/julia/7z

@KristofferC
Copy link
Member Author

KristofferC commented Nov 8, 2025

Yes, that's what I linked. Locally it seems ok...

julia> using p7zip_jll

julia> p7zip_jll.is_available()
true

julia> using Pkg

julia> Pkg.PlatformEngines.exe7z()
setenv(`/Users/kc/julia/usr/libexec/julia/7z

Even with this PR in juliaup it seems ok. I noticed the new p7zip_jll has a CSL dependency, could that be out of date on 1.12 or something? As an experiment, I will revert the 7z bump just to see what happens.

Edit: Actually, I don't have to revert because we have a CI run on that exact commit:

image

ba1baa8

@KristofferC
Copy link
Member Author

It might be conflicting with 671cd64#diff-25078ad6c1e38d5b2a1a23baabf2e032f1f16d995cbdf47e95e2100e1d7786eb maybe.

@nhz2
Copy link
Member

nhz2 commented Nov 8, 2025

Also, will the new CSL dep break existing Manifests for 1.12?

JamesWrigley and others added 2 commits November 8, 2025 21:00
In Markdown, links are written as `[desc](URL)`, and no
space is allowed between `]` and `(`. However, Julia's
Markdown parser explicitly accepted it (not clear why).

This may break links in a few package manuals, but the fix
will be easy in each case (just remove the extra spaces).

But being more consistent with most (all??) other Markdown
implementations seems more important to me; it is very
surprising when one copies basic Markdown that works fine
elsewhere into a Julia package manual and it suddenly is
treated completely differently.

Resolves JuliaDocs/Documenter.jl#2681

(cherry picked from commit fe30573)
@KristofferC KristofferC force-pushed the backports-release-1.12 branch from 332e443 to a81d1ec Compare November 8, 2025 20:11
@KristofferC
Copy link
Member Author

I tried with some help from Claude with 87f5619 but didn't seem to help.

@KristofferC
Copy link
Member Author

KristofferC commented Nov 9, 2025

Ah, it is not there. If I download the build artifact:

~/Downloads/julia-a81d1ec833
❯ cd libexec/julia   

~/Downloads/julia-a81d1ec833/libexec/julia
❯ ls
dsymutil lld

no 7z...

I backported some more from #58344, we'll see how that goes. I built the binary dist locally and it seems to be in there now at least.

@KristofferC KristofferC force-pushed the backports-release-1.12 branch from a81d1ec to 2c8b3b5 Compare November 9, 2025 13:08
@KristofferC
Copy link
Member Author

Tangentially, the new 7-zip seems about 2x as fast as the old one, but still has nothing on zstd (timings for uncompressing the registry in gz and zstd format below)

7-zip 17.05:
  191.101 ms (7503 allocations: 239.80 MiB)
7-Zip (a) 25.01:
  95.626 ms (7019 allocations: 239.77 MiB)
zstd:
  24.648 ms (3568 allocations: 305.57 MiB)

KristofferC and others added 4 commits November 9, 2025 20:59
Bring over the p7zip_jll handling improvements from f03e9c3 ([deps] enable zstd support):
- Move p7zip binary from bindir to private_libexecdir
- Add Windows DLL handling for binary builder installs
- Simplify p7zip_jll.jl by removing LIBPATH handling
- Add P7ZIP_BUILD_OPTS variable for consistent build flags

These changes prepare for the p7zip 17.7.0 upgrade and ensure p7zip
is installed in the correct location.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
@KristofferC KristofferC force-pushed the backports-release-1.12 branch from 2c8b3b5 to d9323c0 Compare November 9, 2025 20:00
@KristofferC
Copy link
Member Author

@nanosoldier runtests()

@nanosoldier
Copy link
Collaborator

The package evaluation job you requested has completed - possible new issues were detected.
The full report is available.

Report summary

❗ Packages that crashed

2 packages crashed only on the current version.

  • The process was aborted: 1 packages
  • Invalid LLVM IR was generated: 1 packages

46 packages crashed on the previous version too.

✖ Packages that failed

45 packages failed only on the current version.

  • Illegal method overwrites during precompilation: 1 packages
  • Package has test failures: 3 packages
  • Package tests unexpectedly errored: 20 packages
  • Tests became inactive: 1 packages
  • Test duration exceeded the time limit: 20 packages

3472 packages failed on the previous version too.

✔ Packages that passed tests

36 packages passed tests only on the current version.

  • Other: 36 packages

6145 packages passed tests on the previous version too.

➖ Packages that were skipped altogether

6 packages were skipped only on the current version.

  • Package could not be installed: 6 packages

1385 packages were skipped on the previous version too.

@KristofferC
Copy link
Member Author

@nanosoldier runtests(["XAIBase", "Timestamps64", "JuliaInterpreter", "PiecewiseLinearFunctions", "FunctionOperators", "VanVleckRecursion", "C3D", "Polynomials", "BipartiteFactorGraphs", "SparseMatrixColorings", "ConstrainedShortestPaths", "Hecke", "VectorizationBase", "StatsFuns", "Andes", "SawyerEliassenSolver", "ImageMagick", "ExplainableAI", "RegressionTables", "MultiObjectiveAlgorithms", "SDiagonalizability", "CompressedSensing", "RegressionDynamicCausalModeling", "CellMetabolismBase", "CellMetabolism", "SatelliteAnalysis", "ProbabilisticParameterEstimators", "NonconvexMultistart", "SphericalFunctions", "CensoredDistributions", "SecondQuantizedAlgebra", "PowerAnalytics", "SimpleSDMPolygons", "HierarchicalEOM", "LongwaveModePropagator", "TenSolver", "SpiDy", "GeometricFlux", "GNSSReceiver", "PhysicsInformedRegression", "BoxCox", "EcoNetPostProcessing", "ReactionDiffusion"])

@nanosoldier
Copy link
Collaborator

The package evaluation job you requested has completed - possible new issues were detected.
The full report is available.

Report summary

✖ Packages that failed

18 packages failed only on the current version.

  • Package tests unexpectedly errored: 18 packages

7 packages failed on the previous version too.

✔ Packages that passed tests

18 packages passed tests on the previous version too.

@KristofferC
Copy link
Member Author

@nanosoldier runtests(["XAIBase", "SawyerEliassenSolver", "SDiagonalizability", "BipartiteFactorGraphs", "PiecewiseLinearFunctions", "VanVleckRecursion", "RegressionDynamicCausalModeling", "JuliaInterpreter", "SecondQuantizedAlgebra", "StatsFuns", "C3D", "ProbabilisticParameterEstimators", "CellMetabolismBase", "CensoredDistributions", "ExplainableAI", "ConstrainedShortestPaths", "CellMetabolism", "HierarchicalEOM"])

JuliaRegistries/General#142382 should have fixed many of these

@nanosoldier
Copy link
Collaborator

The package evaluation job you requested has completed - possible new issues were detected.
The full report is available.

Report summary

✖ Packages that failed

7 packages failed only on the current version.

  • Package tests unexpectedly errored: 7 packages

✔ Packages that passed tests

11 packages passed tests on the previous version too.

@KristofferC KristofferC merged commit bdc35b2 into release-1.12 Nov 13, 2025
8 checks passed
@KristofferC KristofferC deleted the backports-release-1.12 branch November 13, 2025 10:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

don't squash Don't squash merge release Release management and versioning.

Projects

None yet

Development

Successfully merging this pull request may close these issues.