-
-
Notifications
You must be signed in to change notification settings - Fork 5.5k
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 Julia 1.8.2 #46663
Backports for Julia 1.8.2 #46663
Conversation
…#46581) Added in #43415, this was too aggressive for many cases. Unlike the comment suggested, it is unneeded in many cases, so only do it when it is expected to be maximally profitable. Fixes #46492 ``` julia> @time norm(C_212) before 45.959497 seconds (81.85 M allocations: 6.976 GiB, 6.31% gc time, 100.00% compilation time) after 15.781804 seconds (20.81 M allocations: 1.294 GiB, 6.32% gc time, 100.00% compilation time) ```
Can this commit also be added: #46492 ? |
…`JuliaIO/Tar.jl` repo (not the `master` branch of the `JuliaIO/Tar.jl` repo) (#46733)
It turns out that previously we didn't concretize `invoke` callsite correctly, as we didn't take into account whether the call being concretized is `invoke`-d or not, e.g.: ``` julia> invoke_concretized2(a::Int) = a > 0 ? :int : nothing invoke_concretized2 (generic function with 1 method) julia> invoke_concretized2(a::Integer) = a > 0 ? :integer : nothing invoke_concretized2 (generic function with 2 methods) julia> let Base.Experimental.@force_compile Base.@invoke invoke_concretized2(42::Integer) end :int # this should return `:integer` instead ``` This commit fixes that up by propagating information `invoke`-d callsite to `concrete_eval_call`. Now we should be able to pass the following test cases: ```julia invoke_concretized1(a::Int) = a > 0 ? :int : nothing invoke_concretized1(a::Integer) = a > 0 ? "integer" : nothing @test Base.infer_effects((Int,)) do a @invoke invoke_concretized1(a::Integer) end |> Core.Compiler.is_foldable @test Base.return_types() do @invoke invoke_concretized1(42::Integer) end |> only === String invoke_concretized2(a::Int) = a > 0 ? :int : nothing invoke_concretized2(a::Integer) = a > 0 ? :integer : nothing @test Base.infer_effects((Int,)) do a @invoke invoke_concretized2(a::Integer) end |> Core.Compiler.is_foldable @test let Base.Experimental.@force_compile @invoke invoke_concretized2(42::Integer) end === :integer ```
For some reason `tab_unpack` gained an `@noinline` annotation as well as a conflicting `@inline`. The lack of inlining was causing performance problems, so remove both of those, since the function should be inlineable by default.
Could I ask that #45411 be backported to 1.8.2? Or at least, the parts that provide forward build compatibility with libgit2 >= 1.4.0, i.e., this part:
Currently, julia 1.8.x fails to build against recent libgit2 >= 1.4.0. In Homebrew, we have to patch it as above, and linux distros (like archlinux) do it as well. It would be nicer to actually provide this for source build. In the official builds, since the dependency is not actually upgraded, it will change nothing. But it will make unpatched source builds possible for us. |
You can open a PR with that as a commit against this branch or just post a commit SHA and I will push it here. |
This prevents some invalidations in `mightalias(A::AbstractArray, B::AbstractArray)` in abstractarray.jl when loading Static.jl. Here we specialize on the function instead of using map since `broadcasting` returns a BitArray, `map` returns a Vector{Bool}. (cherry picked from commit 31d4c22)
The way we were counting the number of bits was assigning a negative number to `0`, which could lead to a negative total number of bits. Better to just exit early in this case. Also, the estimate was slightly off because we were counting the number of leading zeros in the least significant limb, instead of the most significant. (cherry picked from commit f7b4ebe)
* improve inferrability of `NamedTuple{names}(nt::NamedTuple) where {names}` * improve inferrability of `recursive_dotcalls!(ex, args, i=1)` (cherry picked from commit 5d9807d)
This fixes a few hundred invalidations when loading Static/jl/ArrayInterface.jl. (cherry picked from commit 70bfa3f)
* improve type stability of `sort!(v::AbstractVector, lo::Integer, hi::Integer, ::InsertionSortAlg, o::Ordering)` * improve type stability of `fmt(buf, pos, arg, spec::Spec{T}) where {T <: Strings}` This fixes some invalidations when loading Static.jl. (cherry picked from commit 9b1780d)
- serialize bits values and QuoteNodes in IR encoding Using this instead of the `roots` array avoids scaling problems in functions with many constants. - move roots created by codegen to a single global table, allowing reuse of egal values and keeping method roots lists shorter (cherry picked from commit 425f6ff)
@KristofferC I have opened a PR at #46795 |
The previous regex for credential helpers included even the following credential: ``` [credential "helperselector"] selected = manager-core ``` which gets introduced by Git for Windows and fails our assumption about what a credential helper is. The commit also removes a test that mirrors what `credential_helpers` does (otherwise, we would have to maintain the same regex at two places, the definition of `credential_helpers` and the test case). Fixes #45693 (cherry picked from commit ea74208)
This fixes some invalidations when loading ChainRulesCore.jl. (cherry picked from commit e758982)
* Also merge var with unchanged bounds. The current `env` might not be valid if the var's bounds get fixed by another Unions decision. * Replace `v->var->lb` with `simple_meet` * Remove the unneeded NUll check. Co-Authored-By: Jameson Nash <vtjnash+github@gmail.com> (cherry picked from commit 6557542)
ffb3e97
to
2276c19
Compare
Includes several fixes: JuliaLang/libuv@1b2d164...3f7038d And should make read-eof notification slightly faster in some cases (rather than waiting for close notification). (cherry picked from commit fa986d9)
…46799) Sometimes `Core.Compiler.findall(::Type, ::CachedMethodTable; limit::Int)` is called with different `limit` setting (in particularity `return_type_tfunc` calls it with `limit=-1`). The query should return different results given different `limit` settings, so its cache should also have different keys per different `limit` settings. fix #46722
2276c19
to
5b365e5
Compare
(cherry picked from commit 89c4a2a)
@nanosoldier |
@nanosoldier |
(cherry picked from commit b6d2434)
Your package evaluation job has completed - possible new issues were detected. A full report can be found here. |
@nanosoldier |
Your package evaluation job has completed - no new issues were detected. A full report can be found here. |
Those results cannot be right; something was off with my @nanosoldier |
Your job failed. |
I presume the upload was too large again? cc @vtjnash |
The most significant of these regressions seems real:
|
Any idea where the extra time is coming from? |
Your package evaluation job has completed - possible new issues were detected. A full report can be found here. |
Hmm, maybe this is a false alarm. Even on 1.8.1 that benchmark sometimes takes 19-20us, but in some sessions (i.e. it's consistent until you restart |
@nanosoldier |
Your package evaluation job has completed - no new issues were detected. A full report can be found here. |
Backported PRs:
#define _GNU_SOURCE
comes first #46183open
from Static.jl #46551prod(::Array{BigInt})
#46667lt(p::Perm, a::Integer, b::Integer)
#46732process_overrides(artifact_dict::Dict, pkk_uuid::Base.UUID)
#46661@noinline
fromtab_unpack
#46767tail/front(::NamedTuple)
#46762Create Buildbot Statuses
): removetester_macos64
from the list #44918Create Buildbot Statuses
): removetester_linux32
from the list #45047mapreduce
onAdjOrTrans
#46605limit::Int
as a caching key ofCachedMethodTable
#46799Non-merged PRs with backport label: