Skip to content

Increase thread test coverage #58177

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

Open
wants to merge 542 commits into
base: master
Choose a base branch
from

Conversation

rachelmhawkins
Copy link

No description provided.

fatteneder and others added 30 commits July 23, 2024 16:48
…uliaLang#54965)

By changing the default to `true` we make it easier to build relocatable
packages from already existing ones when 1.11 lands.

This keyword was just added during 1.11, so its not yet too late to
change its default.

(cherry picked from commit 6cf3a05)
This now allows the user to load any number of copies of a module, and
uses the combination of the environment, explicitly loaded modules, and
the requirements of the precompile caches to determine the meaning of a
name and which files need to be loaded. Note however that package
extensions continue to primarily only apply to the explicitly loaded
modules, although they may get loaded incidentally as the dependency of
another package, they won't get defined for every pair of combinations
of triggering modules.

Fixes JuliaLang#53983

(cherry picked from commit a1a2ac6)
This fixes a couple unconventional issues people encountered and were
able to report as bugs against JuliaLang#54739

Note that due to several bugs in REPLExt itself
(JuliaLang#54889,
JuliaLang#54888), loading the extension
may still crash julia in some circumstances, but that is now a Pkg bug,
and no longer the fault of the loading code.

(cherry picked from commit a7fa1e7)
More followup to fix issues with require. There was an accidental
variable reuse (build_id) that caused it to be unable to load cache
files in many cases. There was also missing check for a dependency
already being loaded, resulting in trying to load it twice. Finally, the
start_loading code may drop the require_lock, but the surrounding code
was not prepared for that. Now integrate the necessary checks into
start_loading, instead of needing to duplicate them before and
afterwards.

Fixes JuliaLang#53983
Fixes JuliaLang#54940
Closes JuliaLang#55064

(cherry picked from commit fba928d)
Ensures that adding or examining the methods of Type{Union{}} in the
method table returns the correct results.

Fixes JuliaLang#55187

(cherry picked from commit d68befd)
… for OpaqueClosure methods (JuliaLang#55072) (JuliaLang#55225)

These Methods cannot be looked up via their type signature, so they are
incompatible with the `precompile(...)` mechanism.
Backported PRs:
- [x] JuliaLang#54201 <!-- Fix generic triangular solves with empty matrices -->
- [x] JuliaLang#54358 <!-- Create `jl_clear_coverage_data` to dynamically reset
coverage -->
- [x] JuliaLang#54908 <!-- LazyString in interpolated error messages in
threadingconstructs -->
- [x] JuliaLang#54952 <!-- LAPACK: Avoid repr call in `chkvalidparam` -->
- [x] JuliaLang#54898 <!-- fix concurrent module loading return value -->
- [x] JuliaLang#55082 <!-- Add fast method for copyto!(::Memory, ::Memory) -->
- [x] JuliaLang#55084 <!-- Use triple quotes in TOML.print when string contains
newline -->
- [x] JuliaLang#55141 <!-- Update the aarch64 devdocs to reflect the current
state of its support -->
- [x] JuliaLang#54955 <!-- don't throw EOFError from sleep -->
- [x] JuliaLang#54871 <!-- Make warn missed transformations pass optional -->
- [x] JuliaLang#55178 <!-- Compat for `Base.@nospecializeinfer` -->
- [x] JuliaLang#55197 <!-- compat notice for a[begin] indexing -->
- [x] JuliaLang#54917 <!-- Fix potential underrun with annotation merging -->
- [x] JuliaLang#55209 <!-- correction to compat notice for a[begin] -->
- [x] JuliaLang#55203 <!-- document mutable struct const fields -->
- [x] JuliaLang#54791 <!-- Bump libblastrampoline to v5.10.1 -->
- [x] JuliaLang#54950 <!-- SuiteSparse: Bump version -->
- [x] JuliaLang#54956 <!-- Fix accidental early evaluation of imported `using`
binding -->
- [x] JuliaLang#54996 <!-- inference: add missing `MustAlias` widening in
`_getfield_tfunc` -->
- [x] JuliaLang#55070 <!-- LinearAlgebra: LazyString in error messages for
Diagonal/Bidiagonal -->
- [x] JuliaLang#54574 <!-- Make ScopedValues public -->
- [x] JuliaLang#54739 <!-- finish implementation of upgradable stdlibs -->
- [x] JuliaLang#54965 <!-- RFC: Make `include_dependency(path;
track_content=true)` the default -->
- [x] JuliaLang#53286 <!-- Raise an error when using `include_dependency` with
non-existent file or directory -->
- [x] JuliaLang#55066 <!-- fix loading of repeated/concurrent modules -->
- [x] JuliaLang#52694 <!-- Reinstate similar for AbstractQ for backward
compatibility -->
- [x] JuliaLang#55218 <!-- Artifacts: use a different way of getting the UUID of
a module -->
- [x] JuliaLang#54891 <!-- JuliaLang#54739-related fixes for loading stdlibs -->
- [x] JuliaLang#55072 <!-- trace-compile: don't generate `precompile` statements
for OpaqueClosure methods -->
- [x] JuliaLang#55188 <!-- Make Core.TypeofUnion use the type method table -->

Need manual backport:
- [ ] JuliaLang#55052 <!-- Fix `(l/r)mul!` with `Diagonal`/`Bidiagonal` -->


Contains multiple commits, manual intervention needed:

Non-merged PRs with backport label:
- [ ] JuliaLang#55169 <!-- `propertynames` for SVD respects private argument -->
- [ ] JuliaLang#55148 <!-- Random: Mark unexported public symbols as public -->
- [ ] JuliaLang#55017 <!-- TOML: Make `Dates` a type parameter -->
- [ ] JuliaLang#55013 <!-- [docs] change docstring to match code -->
- [ ] JuliaLang#54919 <!-- Fix annotated join with non-concrete eltype iters -->
- [ ] JuliaLang#54457 <!-- Make `String(::Memory)` copy -->
- [ ] JuliaLang#53957 <!-- tweak how filtering is done for what packages should
be precompiled -->
- [ ] JuliaLang#51479 <!-- prevent code loading from lookin in the versioned
environment when building Julia -->
- [ ] JuliaLang#50813 <!-- More doctests for Sockets and capitalization fix -->
- [ ] JuliaLang#50157 <!-- improve docs for `@inbounds` and
`Base.@propagate_inbounds` -->
- [ ] JuliaLang#41244 <!-- Fix shell `cd` error when working dir has been deleted
-->
I think this tool is there mainly to see what's taking so long, so
timing information is helpful.

(cherry picked from commit f2558c4)
As raised in
<JuliaLang/StyledStrings.jl#57 (comment)>,
when the eltype of an iterator is non-concrete, `_isannotated` will
return false. To properly check such cases, we need to see if any of the
elements of the iterator are annotated.

This is a bit of an interesting case, since:
- Most of the time it shouldn't be hit, we can reasonably expect most
iterables to infer as producing concrete types
- The eltype of the iterator is (generally) known at compile-time, and
so in any case other than the ambiguous non-concrete one, this check
remains able to be done at compile-time.

With this change, join always preserves annotations. The compromise made
is that iterators with non-concrete eltypes can result in join inferring
a union return type (i.e. type instability with non-concrete iterators),
but that doesn't seem too bad to me (I don't see how we could be
completely type stable without concrete types here).

(cherry picked from commit 462d7f4)
The docstring of `LinearAlgebra.reflectorApply!` is incorrect. It says
the function is applying `(I - τ*[1; x] * [1; x]')*A`, but in reality it
is applying `(I - conj(τ)*[1; x[2:end]]*[1; x[2:end]]')*A`. You can
check that by looking at the code, or running for example
```julia
using LinearAlgebra
T=ComplexF64;d=5;
τ=randn(T);x=randn(T,d);A=randn(T,d,d);
(I - conj(τ)*[1; x[2:end]]*[1; x[2:end]]')*A
LinearAlgebra.reflectorApply!(x,τ,A)
```

(cherry picked from commit 1ece299)
This will allow us to resolve the `Dates` at compile-time eventually. It
also fixes `TOML.Parser()` to return Dates types again.

(cherry picked from commit 0ffbae8)
`stack` does not require that the inner iterator defines `axes`, but the
code to assemble an error message assumed this.

Found here:
https://discourse.julialang.org/t/reduce-hcat-is-type-unstable/112800/3

(cherry picked from commit ae483c3)
Changes made:
- Use 0 for the thread ID to ensure it's always valid. The function
expects `0 <= tid < jl_n_threads` so 1 is incorrect if `jl_n_threads` is
1.
- After retrieving the affinity mask with `jl_getaffinity`, pass that
same mask back to `jl_setaffinity`. This ensures that the mask is always
valid. Using a mask of all ones results in `EINVAL` on FreeBSD. Based on
the discussion in JuliaLang#53402, this change may also fix Windows, so I've
tried reenabling it here.
- To check whether `jl_getaffinity` actually did something, we can check
that the mask is no longer all zeros after the call.

Fixes JuliaLang#54817

(cherry picked from commit 8a7e23d)
…Lang#55299)

This PR reverts the optimization from
748149e (part of JuliaLang#48167), while
keeping the fix for merging occurs_inv/occurs_cov, as that optimzation
makes no sense especially when typevar occurs both inside and outside
the inner intersection.

Close JuliaLang#55206

(cherry picked from commit fb6b790)
…#55302)

It can be very helpful, when struggling with LBT forwarding, to see what
functions were actually forwarded to a new library. This utility
function makes it easy to query which functions are forwarded to that
library.

(cherry picked from commit e0f2e29)
The following symbols:
`seed!, default_rng, Sampler, SamplerType, SamplerTrivial,
SamplerSimple` Are documented in the Julia documentation and unexported,
but not marked as public.

Co-authored-by: Max Horn <[email protected]>
(cherry picked from commit c66513f)
In 1.10 we have

```jl
julia> isleapyear(Year(1992))
false
```

which is semantically incorrect because `Year(1992)` is a duration (1992
years), not an instant. This PR restricts the currently unrestricted
argument to integers.

(cherry picked from commit fdecc59)
This includes support to properly forward MKL v2024's ILP64 CBLAS
symbols, which fixes this [Enzyme
issue](EnzymeAD/Enzyme.jl#1683)

(cherry picked from commit 602b582)
…5310)

Addresses the `Matrix` cases from
https://github.com/JuliaLang/julia/issues/55296. This restores the
behavior to match that on v1.10, and preserves the structure of the
matrix on scaling by `NaN`. This behavior is consistent with the
strong-zero behavior for other structured matrix types, and the scaling
may be seen to be occurring in the vector space corresponding to the
filled elements.

After this,
```julia
julia> UpperTriangular(rand(2,2)) * NaN
2×2 UpperTriangular{Float64, Matrix{Float64}}:
 NaN    NaN
    ⋅   NaN
```
cc. @mikmoore

(cherry picked from commit 0ef8a91)
giordano and others added 29 commits November 11, 2024 12:48
currentlu this route is mentioned in docs
https://docs.julialang.org/en/v1/stdlib/Profile/#Triggered-During-Execution
but missing from the module docstring, this should help users who have
little idea how to "send a kernel signal to a process" to get started

---------

Co-authored-by: Ian Butterworth <[email protected]>
(cherry picked from commit 9af0dea)
If we expect this to be a public API
(https://github.com/timholy/Revise.jl for some reason is trying to
access this state), we should lock around it for consistency with the
other similar functions.

Needed for timholy/Revise.jl#856

(cherry picked from commit 4cdd864)
…to 2420351 (JuliaLang#56608)

Stdlib: SparseArrays
URL: https://github.com/JuliaSparse/SparseArrays.jl.git
Stdlib branch: release-1.11
Julia branch: backports-release-1.11
Old commit: cb602d7
New commit: 2420351
Julia version: 1.11.1
SparseArrays version: 1.11.0(Does not match)
Bump invoked by: @dkarrasch
Powered by:
[BumpStdlibs.jl](https://github.com/JuliaLang/BumpStdlibs.jl)

Diff:
JuliaSparse/SparseArrays.jl@cb602d7...2420351

```
$ git log --oneline cb602d7..2420351
2420351 Allow for duplicate docstrings in linalg docs (JuliaLang#584)
0a1c886 Merge pull request JuliaLang#571 from JuliaSparse/backports-release-1.11
298f5e1 Break recursion (JuliaLang#579)
7bc65ab Update CI
fcc6102 Do not use nested dissection by default. (JuliaLang#550)
8534357 Update ci.yml: run CI and docs on v1.11
66d65fd Change default QR tolerance to match SPQR (JuliaLang#557)
8a48327 test: Don't use GPL module when Base.USE_GPL_LIBS=false (JuliaLang#535)
8dd8300 SparseMatrixCSC constructor with a Tuple of Integers (JuliaLang#523)
aa66624 doc: move solvers doc to `src\solvers.md` (JuliaLang#576)
8a85fbe Inline sparse-times-dense in-place multiplication
```

Co-authored-by: Dilum Aluthge <[email protected]>
…ies (JuliaLang#56624)

This is a slimmed-down version of JuliaLang#55910, without any of the
re-factoring. This improves the parallelism of the pre-compile job and
fixes a correctness bug, where unconditionally injecting a dependency
after its parent could be in conflict with dependencies in between
triggers, causing false extension cycles.

Without this fix, adding `AMDGPU.jl` and `Tracker.jl` reports a false
cycle on 1.11
Backported PRs:
- [x] JuliaLang#55886 <!-- irrationals: restrict assume effects annotations to
known types -->
- [x] JuliaLang#55867 <!-- update `hash` doc string: `widen` not required any
more -->
- [x] JuliaLang#56084 <!-- slightly improve inference in precompilation code -->
- [x] JuliaLang#56088 <!-- make `Base.ANSIIterator` have a concrete field -->
- [x] JuliaLang#54093 <!-- Fix `JULIA_CPU_TARGET` being propagated to workers
precompiling stdlib pkgimages -->
- [x] JuliaLang#56165 <!-- Fix markdown list in installation.md -->
- [x] JuliaLang#56148 <!-- Make loading work when stdlib deps are missing in the
manifest -->
- [x] JuliaLang#56174 <!-- Fix implicit `convert(String, ...)` in several places
-->
- [x] JuliaLang#56159 <!-- Add invalidation barriers for `displaysize` and
`implicit_typeinfo` -->
- [x] JuliaLang#56089 <!-- Call `MulAddMul` instead of multiplication in
_generic_matmatmul! -->
- [x] JuliaLang#56195 <!-- Include default user depot when JULIA_DEPOT_PATH has
leading empty entry -->
- [x] JuliaLang#56215 <!-- [REPL] fix lock ordering mistake in load_pkg -->
- [x] JuliaLang#56251 <!-- REPL: run repl hint generation for modeswitch chars
when not switching -->
- [x] JuliaLang#56092 <!-- stream: fix reading LibuvStream into array -->
- [x] JuliaLang#55870 <!-- fix infinite recursion in `promote_type` for
`Irrational` -->
- [x] JuliaLang#56227 <!-- Do not call `rand` during sysimage precompilation -->
- [x] JuliaLang#55741 <!-- Change annotations to use a NamedTuple -->
- [x] JuliaLang#56149 <!-- Specialize adding/subtracting mixed
Upper/LowerTriangular -->
- [x] JuliaLang#56214 <!-- fix precompile process flags -->
- [x] JuliaLang#54471
- [x] JuliaLang#55622
- [x] JuliaLang#55704
- [x] JuliaLang#55764
Prevents calling this method from triggering undefined behavior in C

(cherry picked from commit b6eeef2)
…ns independent of what packages are in the sysimage (JuliaLang#52841)" (JuliaLang#56658)

This is a backport of JuliaLang#56234

It reverts commit 08d229f (and
backports ad1dc39, which was included
in the revert PR).
Backported PRs:
- [x] JuliaLang#56595 <!-- fix precompile(::MethodInstance) ccall signature -->
- [x] JuliaLang#56234 <!-- Revert "Extensions: make loading of extensions
independent of what packages are in the sysimage (JuliaLang#52841) -->
…and more informative (JuliaLang#56621) (JuliaLang#56677)

Was e.g.
```
┌ Warning: Circular dependency detected. Precompilation will be skipped for:
│   Base.PkgId(Base.UUID("eb0c05c4-6780-5852-a67e-5d31d2970b9a"), "ArrayInterfaceTrackerExt")
│   Base.PkgId(Base.UUID("f517fe37-dbe3-4b94-8317-1923a5111588"), "Polyester")
│   Base.PkgId(Base.UUID("0d7ed370-da01-4f52-bd93-41d350b8b718"), "StaticArrayInterface")
│   Base.PkgId(Base.UUID("6a4ca0a5-0e36-4168-a932-d9be78d558f1"), "AcceleratedKernels")
│   Base.PkgId(Base.UUID("244f68ed-b92b-5712-87ae-6c617c41e16a"), "NNlibAMDGPUExt")
│   Base.PkgId(Base.UUID("06b0261c-7a9b-5753-9bdf-fd6840237b4a"), "StaticArrayInterfaceStaticArraysExt")
│   Base.PkgId(Base.UUID("21141c5a-9bdb-4563-92ae-f87d6854732e"), "AMDGPU")
│   Base.PkgId(Base.UUID("9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c"), "Tracker")
└ @ Base.Precompilation precompilation.jl:511
```
Now
![Screenshot 2024-11-21 at 11 20

50 PM](https://github.com/user-attachments/assets/6939d834-90c3-4d87-baa9-cf6a4931ca03)

Co-authored-by: Ian Butterworth <[email protected]>
…n extensions (JuliaLang#56666) (JuliaLang#56676)

It is possible for an extension `ExtAB` to be loadable by one of its
triggers, e.g. if `A` loads `B`. However, this loading is not supposed
to happen during pre-compilation of `A`.

Getting this wrong means disagreeing with the scheduled pre-compile jobs
(`A` is not scheduled to depend on or generate a cache file for `ExtAB`
but accidentally attempts both) and leads to confusing errors about
missing cache files.

We used to cover up this bad behavior w/ an erroneous cycle warning
(fixed by JuliaLang#55910), but now we need to be sure this works.
@adienes
Copy link
Member

adienes commented Apr 21, 2025

hi!

it looks like these PRs are built on the 1.11 backports branch which would be why the diffs look humongous --- I recommend a rebase against the current tip of master. and then, if applicable, they can be backported to 1.11 (and 1.12) separately

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.