-
-
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 1.9.0-rc2 #48935
Backports for 1.9.0-rc2 #48935
Conversation
We were accidentally dropping the effects of calls from `iterate` calls performed during abstract_iteration. This allowed calls that were not actually eligible for (semi-)concrete evaluation to go through that path anyway. This could cause incorrect results (see test), though it was usually fine, since iterate call tend to not have side effects. It was noticed however in #47688, because it forced irinterp down a path that was not meant to be reachable (resulting in a TODO error message). For good measure, let's also address this todo (since it is reachable by external absint if they want), but the missing effect propagation was the more serious bug here. (cherry picked from commit 2a0d58a)
Rather than a binary valid/not-valid, we track the exact later world that deleted it, relative to when we first assumed it may be valid. (cherry picked from commit 4c32381)
(cherry picked from commit ff5bd4b)
(cherry picked from commit 6124987)
(cherry picked from commit 015301a)
51ae29d
to
fdbba71
Compare
)" This reverts commit 09757f7.
skip checked `equal_union` by set `state[i] = 1`
…48441) * Avoid earsing `Runion` within nested `forall_exists_subtype` If `Runion.more != 0` we‘d better not erase the local `Runion` as we need it if the subtyping fails after. This commit replaces `forall_exists_subtype` with a local version. It first tries `forall_exists_subtype` and estimates the "problem scale". If subtyping fails and the scale looks small then it switches to the slow path. TODO: At present, the "problem scale" only counts the number of checked `Lunion`s. But perhaps we need a more accurate result (e.g. sum of `Runion.depth`) * Change the reversed subtyping into a local check. Make sure we don't forget the bound in `env`. (And we can fuse `local_forall_exists_subtype`) * Optimization for non-union invariant parameter.
If `y` has no free typevar. Then `x <: y` wont cause any env change. Thus there's no need to split `y`.
Allow specifying which thread pool's size to retrieve. (cherry picked from commit dc68ffc)
Now returns `threadpoolsize(pool)`. (cherry picked from commit 944dce9)
If a task is spawned with `:interactive` but there are no interactive threads, set the task's thread pool to `:default` so that we don't have to keep checking it in other places. (cherry picked from commit 38727be)
If there's only one thread in the task's preferred thread pool, use that thread's work queue. (cherry picked from commit a3a92e8)
(cherry picked from commit 55422d9)
(cherry picked from commit 4ea2d2f)
We use the specialized signature of a method for accurate analysis of whether a static parameter is constrained or not. However, it turns out that we can only use it when it doesn't contain any free type variables (which it sometimes does, e.g., when the inference entry is given a signature with a free type variable). In such cases, we should use the method signature, which, by design, never contains any free type variables.
(cherry picked from commit a3fe0a8)
) * Install 7z, lld, dsymutil to private libexec/julia directory Installing files directly into /usr/libexec pollutes the install tree and can create conflicts if other apps do the same. Instead, install them to `private_libdir`, which defaults to `$(libexecdir)/julia`. This is similar to what we do with `private_libdir`. (cherry picked from commit eb2e968)
(cherry picked from commit 3f7c046)
Apparently we never actually implemented support for invalidation detection on invoke edges, and furthermore, it had erased part of the support for regular edges. Generalize our code for detecting replacement of a method, to be used when computing replacement of an invoke edge. Fix #48802 (cherry picked from commit 386b1b6)
Since it does not compute and branch on typeof, in my measurements, this implementation is up to 10x faster! (cherry picked from commit 369660f)
(cherry picked from commit b5aa057)
(cherry picked from commit e3043a8)
@nanosoldier |
@nanosoldier |
Your benchmark job has completed - possible performance regressions were detected. A full report can be found here. |
Your package evaluation job has completed - possible new issues were detected. |
@N5N3, it seems the subtype backport fixes caused a bunch of packages to start failing. For example:
|
I‘ll take a look today. julia> S = Tuple{Type{Missing}, Missing}
Tuple{Type{Missing}, Missing}
julia> T1 = Tuple{Type{Union{Base.Missing, T}}, T} where T<:Array
Tuple{Type{Union{Missing, T}}, T} where T<:Array
julia> SubtypeToy.dump_subtype(S, T1) # <: but skip `obvious_subtype`
0
julia> T2 = Tuple{Type{Union{Base.Missing, T}}, T} where T<:Union{Array,Int}
Tuple{Type{Union{Missing, T}}, T} where T<:Union{Int64, Array}
julia> SubtypeToy.dump_subtype(S, T2)
1 Looks like |
We see Windows CI fail often here, and we don't actually need this memory--only the first thread should initialize it. (indeed, we were temporarily corrupting these data-structures in the process by reinitializing them, though that was not typically detectable.) From worker 7: Exception: EXCEPTION_ACCESS_VIOLATION at 0x7ffa26726e87 -- jl_makecontext at C:/workdir/src\win32_ucontext.c:67 From worker 7: in expression starting at C:\buildkite-agent\builds\win2k22-amdci6-6\julialang\julia-master\julia-ceffaee345\share\julia\test\ccall.jl:1066 From worker 7: jl_makecontext at C:/workdir/src\win32_ucontext.c:67 From worker 7: jl_install_thread_signal_handler at C:/workdir/src\signals-win.c:490 From worker 7: jl_init_root_task at C:/workdir/src\task.c:1568 From worker 7: ijl_adopt_thread at C:/workdir/src\threading.c:414 From worker 7: unknown function (ip: 000001d791a58969) From worker 7: uv__queue_work at /workspace/srcdir/libuv\src\threadpool.c:305 From worker 7: worker at /workspace/srcdir/libuv\src\threadpool.c:122 From worker 7: uv__thread_start at /workspace/srcdir/libuv\src/win\thread.c:111 From worker 7: beginthreadex at C:\Windows\System32\msvcrt.dll (unknown line) From worker 7: endthreadex at C:\Windows\System32\msvcrt.dll (unknown line) From worker 7: BaseThreadInitThunk at C:\Windows\System32\KERNEL32.DLL (unknown line) From worker 7: RtlUserThreadStart at C:\Windows\SYSTEM32\ntdll.dll (unknown line) From worker 7: Allocations: 352796158 (Pool: 352389694; Big: 406464); GC: 722 (cherry picked from commit 685da8f)
The dynamic linker needs to unify `llvm::Any::TypeId` across DSOs. In our case `libjulia-codegen` and `libLLVM`. See https://github.com/llvm/llvm-project/blob/2bc4c3e920ee078ef2879b00c40440e0867f0b9e/llvm/include/llvm/ADT/Any.h#L30 Fixes: #49121 (cherry picked from commit d8fa3c8)
(cherry picked from commit 2092000)
Let Base handle concatenation of arrays and numbers (cherry picked from commit e6c84a1)
(cherry picked from commit c37fc27)
* Add ITTAPI sources for offline build Co-authored-by: Milan Bouchet-Valat <nalimilan@club.fr> (cherry picked from commit 6b934f9)
(cherry picked from commit 329f92c)
Co-authored-by: Jameson Nash <vtjnash@gmail.com> (cherry picked from commit bc33c81) (cherry picked from commit 40692cca1619a06991bebabc162e531255d99ddd)
(cherry picked from commit d586b0c)
(cherry picked from commit 450c1fa)
Backported PRs:
iterate
'd calls #47846jl_write_values
#48875PartialQuickSort
#48937Vararg
methods widening with unused type variable. #48953enq_work
behavior when single-threaded #48702y::Union
when comparing with a forall var. #48603forall_exists_subtype
. #48441obviously_disjoint
for Union Types #49177ProcessChain
inopen(f, cmd, ..)
#49166Need manual backport:
Contains multiple commits, manual intervention needed:
Non-merged PRs with backport label:
ccall
symbols in internal libraries first #49010--heap-size-hint
arg handling #48050