-
-
Notifications
You must be signed in to change notification settings - Fork 5.7k
Backports for 1.12.2 #59920
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Backports for 1.12.2 #59920
Conversation
|
Hopefully the linalg bump can make it in: #59927 |
|
PR #59736 is marked here as needs manual backport, but has been marked as backported in 1.12.1. Why? |
|
I guess I forgot to remove the label |
|
Please cherry pick with |
|
I don't know who that is directed at, but note that #59921 is not a backport, but a v1.12-only bug |
(cherry picked from commit a0a65e6)
…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)
(cherry picked from commit 78ba3be)
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.
Renaming happened in f9b7d27 / PR #59158 by @JeffBezanson
…59941) Co-authored-by: Erik Schnetter <[email protected]>
8d0ca62 to
d0161e4
Compare
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)
(cherry picked from commit a933cf4)
(cherry picked from commit 6f2f7f5)
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)
fe7f9d4 to
c53224f
Compare
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? |
|
Why is the |
|
It might be conflicting with 671cd64#diff-25078ad6c1e38d5b2a1a23baabf2e032f1f16d995cbdf47e95e2100e1d7786eb maybe. |
|
Also, will the new CSL dep break existing Manifests for 1.12? |
(cherry picked from commit fda084f)
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)
332e443 to
a81d1ec
Compare
|
I tried with some help from Claude with 87f5619 but didn't seem to help. |
|
Ah, it is not there. If I download the build artifact: 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. |
a81d1ec to
2c8b3b5
Compare
|
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) |
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]>
2c8b3b5 to
d9323c0
Compare
|
@nanosoldier |
|
The package evaluation job you requested has completed - possible new issues were detected. Report summary❗ Packages that crashed2 packages crashed only on the current version.
46 packages crashed on the previous version too. ✖ Packages that failed45 packages failed only on the current version.
3472 packages failed on the previous version too. ✔ Packages that passed tests36 packages passed tests only on the current version.
6145 packages passed tests on the previous version too. ➖ Packages that were skipped altogether6 packages were skipped only on the current version.
1385 packages were skipped on the previous version too. |
|
@nanosoldier |
|
The package evaluation job you requested has completed - possible new issues were detected. Report summary✖ Packages that failed18 packages failed only on the current version.
7 packages failed on the previous version too. ✔ Packages that passed tests18 packages passed tests on the previous version too. |
|
@nanosoldier JuliaRegistries/General#142382 should have fixed many of these |
|
The package evaluation job you requested has completed - possible new issues were detected. Report summary✖ Packages that failed7 packages failed only on the current version.
✔ Packages that passed tests11 packages passed tests on the previous version too. |

Backported PRs:
isfinite(::AbstractFloat)#59888DataType.layoutin some Base functions #59886pointerarith_tfuncfor Const ptr #60011Need manual backport:
abstract_eval_nonlinearized_foreigncall_name#59921collect(...)in TOML #59932Contains multiple commits, manual intervention needed:
Non-merged PRs with backport label:
Core._apply_iterate#60062