05384ce | gbaraldi | 30 August 2024, 13:24:58 UTC | Initialize world counter in adopted threads root task | 30 August 2024, 13:24:58 UTC |
4b4bf13 | Gabriel Baraldi | 30 August 2024, 10:48:39 UTC | Merge branch 'master' into gb/io-loop-thread | 30 August 2024, 10:48:39 UTC |
fdc1090 | Jishnu Bhattacharya | 30 August 2024, 03:15:42 UTC | Specialize newindex for StructuredMatrix broadcasting (#55626) This provides most of the benefits seen in https://github.com/JuliaLang/julia/pull/55604. The simpler implementation appears to help with branch-prediction in inferring the zero elements of the structured matrices. The improved performance as a consequence: ```julia julia> using LinearAlgebra julia> U = UpperTriangular(rand(3000,3000)); D = Diagonal(rand(size(U,1))); julia> @btime $U .+ $D; 23.405 ms (3 allocations: 68.66 MiB) # nightly 15.266 ms (3 allocations: 68.66 MiB) # This PR ``` --------- Co-authored-by: Matt Bauman <mbauman@juliahub.com> | 30 August 2024, 03:15:42 UTC |
da3468c | Jameson Nash | 29 August 2024, 18:45:01 UTC | add pending state back to jl_thread_suspend_and_get_state-machine (#55622) Fixes an issue with #55500, where signals may abruptly abort the process as they observe it is still processing the resume SIGUSR2 message and are not able to wait for that processing to end before setting the new message to exit. | 29 August 2024, 18:45:01 UTC |
e921dc8 | Jameson Nash | 29 August 2024, 18:12:40 UTC | Revert "Don't expose guard pages to malloc_stack API consumers" (#55555) Reverts JuliaLang/julia#54591 This cause the runtime to misbehave and crash, since all of the consumers of this information in the runtime assumed that the guard pages are accounted for correctly as part of the reserved allocation. Nothing in the runtime ever promised that it is valid to access the pages beyond the current redzone (indeed, ASAN would forbid it as well). | 29 August 2024, 18:12:40 UTC |
7ea8a9a | Keno Fischer | 29 August 2024, 17:21:22 UTC | Refactor `Binding` data structures in preparation for partition (#54788) This is a re-worked extraction of #54654, adjusted to support the new semantics arrived at over the course of that thread. Note that this is the data-structure change only. The semantics in this PR still match current master to the greatest extent possible. The core idea here is to split `Binding` in two: A new `Binding` with minimal data and a `BindingPartition` that holds all data that is world-age partitioned. In the present PR, these are always in 1:1 correspondednce, but after #54654, there will be multiple `BindingPartition`s for every `Binding`. Essentially the `owner` and `ty` fields have been merged into a new `restriction` field of `BindingPartition`, which may also hold the value of a constant (consistent with the final semantics reached in #54654). The non-partitioned binding->value field is now used exclusively for non-constant globals. The disambiguation for how to interpret the `restriction` field happens via flags. `->imported` grew to 2 bits and can now be one of `NONE`/`IMPLICIT`/ `EXPLICIT`/`GUARD`. `GUARD` corresponds to the old `b->owner == NULL` case. `NONE` corresponds to the old `b->owner == b` case, while IMPLICIT/EXPLICIT correspond to `b->owner != b` and the old `imported` flag. Other than that, the behavior of the flags is unchanged. Additionally, fields are provided for `min_world`/`max_world`/`next`, but these are unused in this PR and prepratory only. | 29 August 2024, 17:21:22 UTC |
b5af119 | Jishnu Bhattacharya | 29 August 2024, 15:13:47 UTC | Fix algebra for block SymTridiagonal matrices (#55383) Currently, algebra between a `SymTridiagonal` and another structured matrix uses the bands of the `SymTridiagonal` directly to compute the result. However, this may lead to incorrect results for block matrices, where the elements are symmetrized or transposed. This PR resolves such issues by introducing some internal functions that apply the transforms before the addition/subtraction or equality check is carried out. Fixes issues like ```julia julia> using LinearAlgebra, StaticArrays julia> m = SMatrix{2,2}(1:4); julia> S = SymTridiagonal(fill(m,4), fill(m,3)) 4×4 SymTridiagonal{SMatrix{2, 2, Int64, 4}, Vector{SMatrix{2, 2, Int64, 4}}}: [1 3; 3 4] [1 3; 2 4] ⋅ ⋅ [1 2; 3 4] [1 3; 3 4] [1 3; 2 4] ⋅ ⋅ [1 2; 3 4] [1 3; 3 4] [1 3; 2 4] ⋅ ⋅ [1 2; 3 4] [1 3; 3 4] julia> D = Diagonal(fill(m,4)) 4×4 Diagonal{SMatrix{2, 2, Int64, 4}, Vector{SMatrix{2, 2, Int64, 4}}}: [1 3; 2 4] ⋅ ⋅ ⋅ ⋅ [1 3; 2 4] ⋅ ⋅ ⋅ ⋅ [1 3; 2 4] ⋅ ⋅ ⋅ ⋅ [1 3; 2 4] julia> S + D 4×4 SymTridiagonal{SMatrix{2, 2, Int64, 4}, Vector{SMatrix{2, 2, Int64, 4}}}: [2 6; 6 8] [1 3; 2 4] ⋅ ⋅ [1 2; 3 4] [2 6; 6 8] [1 3; 2 4] ⋅ ⋅ [1 2; 3 4] [2 6; 6 8] [1 3; 2 4] ⋅ ⋅ [1 2; 3 4] [2 6; 6 8] julia> S[1] + D[1] 2×2 SMatrix{2, 2, Int64, 4} with indices SOneTo(2)×SOneTo(2): 2 6 5 8 julia> S[1] + D[1] == (S + D)[1] false ``` With this PR, ```julia julia> S + D 4×4 Tridiagonal{SMatrix{2, 2, Int64, 4}, Vector{SMatrix{2, 2, Int64, 4}}}: [2 6; 5 8] [1 3; 2 4] ⋅ ⋅ [1 2; 3 4] [2 6; 5 8] [1 3; 2 4] ⋅ ⋅ [1 2; 3 4] [2 6; 5 8] [1 3; 2 4] ⋅ ⋅ [1 2; 3 4] [2 6; 5 8] julia> S[1] + D[1] == (S + D)[1] true ``` This would also make https://github.com/JuliaLang/julia/pull/50423 simpler. | 29 August 2024, 15:13:47 UTC |
19ac316 | Jishnu Bhattacharya | 29 August 2024, 14:30:25 UTC | Indexing in diag for structured matrices (#55610) This would support a wider range of types, and won't be limited to ones that support `zero(T)`. The following would work after this: ```julia julia> D = Diagonal(fill([1 2; 3 4], 4)) 4×4 Diagonal{Matrix{Int64}, Vector{Matrix{Int64}}}: [1 2; 3 4] ⋅ ⋅ ⋅ ⋅ [1 2; 3 4] ⋅ ⋅ ⋅ ⋅ [1 2; 3 4] ⋅ ⋅ ⋅ ⋅ [1 2; 3 4] julia> diag(D,2) 2-element Vector{Matrix{Int64}}: [0 0; 0 0] [0 0; 0 0] ``` Performance in the common case seems unaffected (the variation is probably noise): ```julia julia> D = Diagonal(rand(1000)); julia> @btime diag($D, 2); 543.836 ns (3 allocations: 7.88 KiB) # nightly 429.551 ns (3 allocations: 7.88 KiB) # This PR ``` --------- Co-authored-by: Daniel Karrasch <daniel.karrasch@posteo.de> | 29 August 2024, 14:30:25 UTC |
4f1af7f | Cody Tapscott | 29 August 2024, 13:59:19 UTC | Allow opting out of `PartialOpaque` support via `Expr(:opaque_closure, ...)` (#55068) This can be useful for when an OpaqueClosure is desired, e.g., as an invalidation barrier or when you know it passes through an inference barrier naturally (in my case, a mutable type). This is intentionally left undocumented for now. | 29 August 2024, 13:59:19 UTC |
cebfd7b | DilumAluthgeBot | 29 August 2024, 09:34:00 UTC | 🤖 [master] Bump the Downloads stdlib from a9d274f to 1061ecc (#55614) | 29 August 2024, 09:34:00 UTC |
ac0161a | Shuhei Kadowaki | 29 August 2024, 06:51:21 UTC | optimizer: don't insert `:throw_undef_if_not` for defined slots (#55600) As an application of JuliaLang/julia#55545, this commit avoids the insertion of `:throw_undef_if_not` nodes when the defined-ness of a slot is guaranteed by abstract interpretation. ```julia julia> function isdefined_nothrow(c, x) local val if c val = x end if @isdefined val return val end return zero(Int) end; julia> @code_typed isdefined_nothrow(true, 42) ``` ```diff diff --git a/old b/new index c4980a5c9c..3d1d6d30f0 100644 --- a/old +++ b/new @@ -4,7 +4,6 @@ CodeInfo( 3 ┄ %3 = φ (#2 => x, #1 => #undef)::Int64 │ %4 = φ (#2 => true, #1 => false)::Bool └── goto #5 if not %4 -4 ─ $(Expr(:throw_undef_if_not, :val, :(%4)))::Any -└── return %3 +4 ─ return %3 5 ─ return 0 ) => Int64 ``` | 29 August 2024, 06:51:21 UTC |
950a87f | DilumAluthgeBot | 29 August 2024, 05:44:49 UTC | 🤖 [master] Bump the Pkg stdlib from d1d2fc986 to 43e7849ce (#55618) Stdlib: Pkg URL: https://github.com/JuliaLang/Pkg.jl.git Stdlib branch: master Julia branch: master Old commit: d1d2fc986 New commit: 43e7849ce Julia version: 1.12.0-DEV Pkg version: 1.12.0 Bump invoked by: @IanButterworth Powered by: [BumpStdlibs.jl](https://github.com/JuliaLang/BumpStdlibs.jl) Diff: https://github.com/JuliaLang/Pkg.jl/compare/d1d2fc986e7249909b450979acc4d359aacfc88e...43e7849ce37545493d0da3226cd7449f5f88563e ``` $ git log --oneline d1d2fc986..43e7849ce 43e7849ce make some test_logs match any because of new Downloads debugs (#4007) 8b2c0f329 Better error messages if artifact rename fails (#3827) ``` Co-authored-by: Dilum Aluthge <dilum@aluthge.com> | 29 August 2024, 05:44:49 UTC |
a732dc3 | Piotrek Żygieło | 29 August 2024, 02:49:55 UTC | Synchronize arg name with description and --help (#55619) Co-authored-by: Piotrek Żygieło <pzygielo@users.noreply.github.com> | 29 August 2024, 02:49:55 UTC |
2ce69ea | Keno Fischer | 29 August 2024, 02:45:34 UTC | Make jl_static_show_func_sig more robust (#55620) Fixes a crash in existing compiler tests when build with debug symbols. More generally, this function is used for C-side debugging so should be robust to unexpected data. (In this particular case the signature in question was a plain `Tuple{Any}` from the opaque closure test). | 29 August 2024, 02:45:34 UTC |
378f192 | Cody Tapscott | 28 August 2024, 15:58:17 UTC | precompile: Ensure CI has inference results available for `jl_create_native` (#55528) `jl_emit_codeinst` expects inference results to be available, so `jl_ci_cache_lookup` needs to provide a CI that has them. I noticed this because it was causing missing code when, e.g., compiling `NetworkOptions.__init__` using `--trim` (#55047). Unfortunately `jl_emit_codeinst` failures are silently ignored (they just leave the LLVM module empty), so it was easy to miss that the looked-up CIs sometimes fail to compile. | 28 August 2024, 15:58:17 UTC |
ec2d696 | Katharine Hyatt | 28 August 2024, 12:33:17 UTC | Test more UTF-8 characters in transcode (#55580) Previous test just covered 2-byte UTF8. This one should hit more branches for ASCII and 3-byte UTF-8. | 28 August 2024, 12:33:17 UTC |
6440292 | Jishnu Bhattacharya | 28 August 2024, 08:35:58 UTC | Fast bounds-check for CartesianIndex ranges (#55596) `StepRangeLen{<:CartesianIndex}` indices have been supported since v1.11, but bounds-checking for such indices currently falls back to iterating over the entire range. This PR adds a quick `checkindex` for such ranges. The performance improvement as a consequence: ```julia julia> D = Diagonal(1:10_000); julia> @btime checkbounds($D, diagind($D, IndexCartesian())); 6.697 μs (0 allocations: 0 bytes) # nightly, O(n) 4.044 ns (0 allocations: 0 bytes) # This PR, O(1) ``` | 28 August 2024, 08:35:58 UTC |
d882d62 | Gabriel Baraldi | 28 August 2024, 07:22:55 UTC | Use native tls model in macos for better performance (#55576) Macos has a native tls implementation in clang since at least clang 3.7 which much older than what we require so lets enable it for some small performance gains. We may want to turn on the ifunc optimization that's there as well but I haven't tested it and it's only in clang 18 and up so it would be off for most since Apple clang is 16 on their latest beta https://github.com/llvm/llvm-project/pull/73687 | 28 August 2024, 07:22:55 UTC |
878f621 | Jishnu Bhattacharya | 28 August 2024, 07:11:45 UTC | Convert triangular inv test comparison to isapprox (#55609) The failing test was noticed in https://github.com/JuliaLang/julia/pull/55607. The comparison will only hold approximately in general, as the inverses are computed differently. | 28 August 2024, 07:11:45 UTC |
16697f3 | Elliot Saba | 27 August 2024, 20:49:19 UTC | Downgrade patchelf to v0.17.2 (#55602) This should fix https://github.com/JuliaLang/julia/issues/55423 | 27 August 2024, 20:49:19 UTC |
688811d | Jameson Nash | 27 August 2024, 18:15:14 UTC | re-enable profiling stack switch test (#55553) Removes the warning on platforms where CFI_NORETURN appears likely to be sufficient alone for this to work (from observation in gdb/lldb) and re-enables the test on all platforms so we can see if more work here is needed at all (e.g. similar annotations in jl_setjmp/jl_longjmp). Refs #43124 | 27 August 2024, 18:15:14 UTC |
d5bbcc5 | Gabriel Baraldi | 27 August 2024, 18:00:55 UTC | Initialize threadpools correctly during sysimg build (#55567) I made a mistake with which threadpool was which. | 27 August 2024, 18:00:55 UTC |
f457a75 | Keno Fischer | 27 August 2024, 16:25:52 UTC | Try to remove likely-unused codepath in codegen for :method (#55532) This codepath is odd. It derives a method name from the slotname metadata and then does an implicit assignment to that slot. Worse, as the comment indicates, the codepath is missing from the interpreter, which will crash if it were to ever encounter such a piece of code. I suspect this pattern is unused - I accidentally broke it badly in (the as of yet unmerged PR) #54788 and neither tests nor pkgeval noticed. So let's try removing it on master. If it turns out something does depend on it, we can go the opposite way and implement it properly in all the places that look at :method. | 27 August 2024, 16:25:52 UTC |
78b0b74 | Shuhei Kadowaki | 27 August 2024, 12:29:03 UTC | inference: refine slot undef info within `then` branch of `@isdefined` (#55545) By adding some information to `Conditional`, it is possible to improve the `undef` information of `slot` within the `then` branch of `@isdefined slot`. As a result, it's now possible to prove the `:nothrow`-ness in cases like: ```julia @test Base.infer_effects((Bool,Int)) do c, x local val if c val = x end if @isdefined val return val end return zero(Int) end |> Core.Compiler.is_nothrow ``` | 27 August 2024, 12:29:03 UTC |
733b3f5 | Gabriel Baraldi | 26 August 2024, 22:27:17 UTC | Fix cong implementation to be properly random and not just cycling. (#55509) This was found by @IanButterworth. It unfortunately has a small performance regression due to actually using all the rng bits | 26 August 2024, 22:27:17 UTC |
6477530 | Jameson Nash | 25 August 2024, 23:39:29 UTC | prevent stackoverflow of stat/lstat (#55554) Gives a better error message if joinpath does not change types (which will cause stat/lstat to resolve to the same method and crash). Fixes #50890 | 25 August 2024, 23:39:29 UTC |
03451ff | Katharine Hyatt | 25 August 2024, 22:06:09 UTC | Small missing AnnotatedString/Char tests (#55582) Just a few things that coverage shows aren't hit yet | 25 August 2024, 22:06:09 UTC |
383c8ef | Kiran Pamnany | 25 August 2024, 16:02:34 UTC | Redact object data in heap snapshots, with option to opt-out (#55326) The contents of strings can contain user data which may be proprietary and emitting them in the heap snapshot makes the heap snapshot a potential vulnerability rather than a useful debugging artifact. There are likely other tweaks necessary to make heap snapshots "safe", but this is one less. --------- Co-authored-by: Nathan Daly <NHDaly@gmail.com> Co-authored-by: Ian Butterworth <i.r.butterworth@gmail.com> | 25 August 2024, 16:02:34 UTC |
0c8641a | Gabriel Baraldi | 25 August 2024, 13:21:58 UTC | Empty out loaded_precompiles dict instead of asserting it's empty. (#55564) This dict will contain things if we load a package image during precompilation | 25 August 2024, 13:21:58 UTC |
adb323f | Neven Sajko | 25 August 2024, 10:41:21 UTC | include the `[]` doc string into the docs (#55400) | 25 August 2024, 10:41:21 UTC |
638a049 | Jishnu Bhattacharya | 25 August 2024, 09:04:36 UTC | Quick return for empty arrays in bidiagonal matrix multiplications (#55414) | 25 August 2024, 09:04:36 UTC |
eb5587d | Jishnu Bhattacharya | 25 August 2024, 03:35:57 UTC | Fix self-recursion in generic triangular (l/r)mul! (#55547) This fixes a stack-overflow in the following: ```julia julia> using LinearAlgebra julia> struct MyTriangularWithoutLRMul{T, A<:LinearAlgebra.AbstractTriangular{T}} <: LinearAlgebra.AbstractTriangular{T} data :: A end julia> Base.size(A::MyTriangularWithoutLRMul) = size(A.data) julia> Base.getindex(A::MyTriangularWithoutLRMul, i::Int, j::Int) = A.data[i,j] julia> M = MyTriangularWithoutLRMul(UpperTriangular(rand(4,4))); julia> A = rand(4,4); julia> lmul!(M, A) Warning: detected a stack overflow; program state may be corrupted, so further execution might be unreliable. ERROR: StackOverflowError: Stacktrace: [1] unsafe_copyto! @ ./genericmemory.jl:122 [inlined] [2] _copyto_impl! @ ./array.jl:308 [inlined] [3] copyto! @ ./array.jl:299 [inlined] [4] copyto! @ ./array.jl:322 [inlined] [5] _trimul!(C::Matrix{Float64}, A::MyTriangularWithoutLRMul{Float64, UpperTriangular{Float64, Matrix{Float64}}}, B::Matrix{Float64}) @ LinearAlgebra ~/.julia/juliaup/julia-nightly/share/julia/stdlib/v1.12/LinearAlgebra/src/triangular.jl:961 [6] lmul!(A::MyTriangularWithoutLRMul{Float64, UpperTriangular{Float64, Matrix{Float64}}}, B::Matrix{Float64}) @ LinearAlgebra ~/.julia/juliaup/julia-nightly/share/julia/stdlib/v1.12/LinearAlgebra/src/triangular.jl:982--- the above 2 lines are repeated 39990 more times --- ``` This is done by rerouting the generic `lmul!`/`rmul!` methods to those for `UpperTriangular` or `LowerTriangular`, depending on which triangular half is populated. A similar issue with `ldiv!`/`rdiv!` is also resolved. | 25 August 2024, 03:35:57 UTC |
083bd8f | Devansh | 24 August 2024, 08:13:40 UTC | added cholesky of cholesky (#55559) Currently, if you have a cholesky matrix, you cannot call `cholesky` on it again: ``` using LinearAlgebra N = 10 A = randn(N, N) P = Symmetric(A * A' + I) C = cholesky(P) CC = cholesky(C) # this line throws an error ``` This small PR provides the fix. --------- Co-authored-by: Jeff Bezanson <jeff.bezanson@gmail.com> | 24 August 2024, 08:13:40 UTC |
eaa2edd | Mosè Giordano | 24 August 2024, 06:47:20 UTC | Add tests for alignment of `Int128`/`UInt128` (#55565) | 24 August 2024, 06:47:20 UTC |
94c9d0a | Neven Sajko | 24 August 2024, 02:57:44 UTC | document `fourthroot` (#55560) Updates #19529 | 24 August 2024, 02:57:44 UTC |
5c1cfb3 | Mosè Giordano | 23 August 2024, 20:25:07 UTC | [Profile] Replace `SIGTERM` with `SIGQUIT` (#55566) The `SIGQUIT` signal is handled specially in CI and automatically uploads failure information artifacts, which may be helpful to debug failures. --------- Co-authored-by: Jameson Nash <vtjnash@gmail.com> | 23 August 2024, 20:25:07 UTC |
3d20a92 | Jishnu Bhattacharya | 23 August 2024, 07:25:46 UTC | Fix indexing in _mapreducedim for OffsetArrays (#55506) The destination array was being indexed incorrectly if it had offset indices. This led to the following on nightly: ```julia julia> using OffsetArrays julia> r = 5:100; julia> a = OffsetVector(r, 2); julia> sum(a, dims=1) 1-element OffsetArray(::Vector{Int64}, 3:3) with eltype Int64 with indices 3:3: 0 julia> sum(a) 5040 ``` The indexing was marked `@inbounds`, so this was not throwing an error. This PR also follows #55329 and only marks the indexing operations as `@inbounds`, omitting the function calls. --------- Co-authored-by: Matt Bauman <mbauman@juliahub.com> | 23 August 2024, 07:25:46 UTC |
0c64283 | Shuhei Kadowaki | 23 August 2024, 04:31:54 UTC | better implementations for `unionlen`/`uniontypes` (#55561) - unify the dispatch targets - removed unnecessary `_uniontypes(::MustAlias)` method | 23 August 2024, 04:31:54 UTC |
6866b11 | Jishnu Bhattacharya | 22 August 2024, 21:51:44 UTC | LinearAlgebra: return destination in `setindex!` (#55544) Currently, in LinearAlgebra, `setindex!` occasionally returns the value, and at other times the destination array (or its parent). This PR consistently returns the destination in `setindex!`, which matches the behavior for `Array`s. Note that this does not change the behavior of `A[i,j] = v`, which still returns `v`. This only changes `setindex!`. | 22 August 2024, 21:51:44 UTC |
6d7f4a2 | Jishnu Bhattacharya | 22 August 2024, 17:38:37 UTC | Use `===` to compare with `nothing` in tests (#55563) This follows the generally recommended style, and updates instances of `a == nothing` to `a === nothing` in tests, and similarly for the `!=` comparison. | 22 August 2024, 17:38:37 UTC |
58c7186 | Shuhei Kadowaki | 22 August 2024, 02:53:59 UTC | inference: propagate partially initialized mutable structs more (#55533) | 22 August 2024, 02:53:59 UTC |
54142b7 | Shuhei Kadowaki | 21 August 2024, 13:13:39 UTC | effects: minor fixes for the effects system correctness (#55536) This commit implements several fixes related to the correctness of the effect system. The most significant change addresses an issue where post-opt analysis was not correctly propagating the taints of `:noub` and `:nortcall` of `:foreigncall` expressions, which could lead to incorrect effect bits. Additionally, adjustments have been made to the values of effects used in various worst-case scenarios. | 21 August 2024, 13:13:39 UTC |
86cba99 | Jishnu Bhattacharya | 21 August 2024, 01:46:39 UTC | Remove specialized vector-matrix multiplication methods (#55538) The specialized methods for `TransposeAbsMat` and `AdjointAbsMat` seem unnecessary, as these are also `AbstractMatrix`es, and are treated identically. I've also added a `require_one_based_indexing` check on the vector to avoid accepting `OffsetArray`s. | 21 August 2024, 01:46:39 UTC |
7d341ea | Lilith Orion Hafner | 20 August 2024, 22:20:16 UTC | Update display style of `n` in `invmod(n)` dosctring. (#55539) From https://github.com/JuliaLang/julia/pull/55531#discussion_r1722585738 | 20 August 2024, 22:20:16 UTC |
a2b1b4e | Jameson Nash | 20 August 2024, 20:42:30 UTC | Reduce size of Task object (#55515) Move the registers onto the stack, so that they only are present when the Task is actually switched out, saving memory when the Task is not running yet or already finished. It makes this mostly just a huge renaming job. On Linux x86_64 this reduces it from 376 bytes to 184 bytes. Has some additional advantages too, such as copy_stack tasks (e.g. with always_copy_stacks) can migrate to other threads before starting if they are not sticky. Also fixes a variable that got mixed up by #54639 and caused always_copy_stacks to abort, since the stack limits were wrong. Also now fixes https://github.com/JuliaLang/julia/issues/43124, though I am not quite confident enough in it to re-enable that test right now. | 20 August 2024, 20:42:30 UTC |
7b8dd90 | Jameson Nash | 20 August 2024, 20:07:06 UTC | inference: represent callers_in_cycle with view slices of a stack instead of separate lists (#55364) Inspired by Tarjan's SCC, this changes the recursion representation to use a single list instead of a linked-list + merged array of cycles. | 20 August 2024, 20:07:06 UTC |
f2f76d8 | Gabriel Baraldi | 20 August 2024, 17:39:55 UTC | Mark the _state field as atomic and move to proper atomics instead of llvmcall (#55502) | 20 August 2024, 17:39:55 UTC |
31d413e | Nathan Boyer | 20 August 2024, 17:31:31 UTC | Explain `walkdir` docstring second example. (#55541) This is a follow-up documentation PR to #55476. I believe the second example in the `walkdir` docstring is still unintuitive since the result changes each time. I attempted a simple explanation, but I don't really know what I'm talking about. Hopefully someone else can explain what is happening better. Some additional discussion in [this Discourse post](https://discourse.julialang.org/t/find-all-files-named-findthis-csv-in-nested-subfolders-of-rootfolder/118096). --------- Co-authored-by: Lilith Orion Hafner <lilithhafner@gmail.com> | 20 August 2024, 17:31:31 UTC |
f107c6b | Gabriel Baraldi | 20 August 2024, 13:37:15 UTC | Make test GC safe | 20 August 2024, 13:37:15 UTC |
9650510 | Shuhei Kadowaki | 20 August 2024, 02:58:22 UTC | inference: model partially initialized structs with `PartialStruct` (#55297) There is still room for improvement in the accuracy of `getfield` and `isdefined` for structs with uninitialized fields. This commit aims to enhance the accuracy of struct field defined-ness by propagating such struct as `PartialStruct` in cases where fields that might be uninitialized are confirmed to be defined. Specifically, the improvements are made in the following situations: 1. when a `:new` expression receives arguments greater than the minimum number of initialized fields. 2. when new information about the initialized fields of `x` can be obtained in the `then` branch of `if isdefined(x, :f)`. Combined with the existing optimizations, these improvements enable DCE in scenarios such as: ```julia julia> @noinline broadcast_noescape1(a) = (broadcast(identity, a); nothing); julia> @allocated broadcast_noescape1(Ref("x")) 16 # master 0 # this PR ``` One important point to note is that, as revealed in JuliaLang/julia#48999, fields and globals can revert to `undef` during precompilation. This commit does not affect globals. Furthermore, even for fields, the refinements made by 1. and 2. are propagated along with data-flow, and field defined-ness information is only used when fields are confirmed to be initialized. Therefore, the same issues as JuliaLang/julia#48999 will not occur by this commit. | 20 August 2024, 02:58:22 UTC |
d4bd540 | Jameson Nash | 20 August 2024, 01:57:48 UTC | make jl_thread_suspend_and_get_state safe (#55500) Fixes async safety, thread safety, FreeBSD safety. | 20 August 2024, 01:57:48 UTC |
a218e82 | Jameson Nash | 20 August 2024, 01:57:38 UTC | handle Type{Union{}} like typeof(Union{}) more (#55508) We could try to make them both pointers (by setting mayinlinealloc=false on Core.TypeofBottom), but let's try to make them both equivalent representations of the typeof Union{} as a singleton value. Fixes #55208 | 20 August 2024, 01:57:38 UTC |
bec4702 | Nathan Boyer | 19 August 2024, 22:05:42 UTC | Improve `walkdir` docstring (#55476) I was not able to understand how to use `walkdir` with the current docstring. It was not clear to me that `root` changes each iteration. I thought `root` would stay fixed to the input and `dirs` would iterate. | 19 August 2024, 22:05:42 UTC |
4a229bc | Ken Williams | 19 August 2024, 22:02:09 UTC | Add behavior for even values to docs for new invmod(n, T) functions (#55531) As discussed in https://discourse.julialang.org/t/the-new-invmod-n-t-function-and-even-arguments/118377 | 19 August 2024, 22:02:09 UTC |
2313260 | Jameson Nash | 19 August 2024, 20:30:10 UTC | atomics: fix setonce runtime intrinsic (#55530) | 19 August 2024, 20:30:10 UTC |
62e7705 | Elliot Saba | 19 August 2024, 19:10:29 UTC | Set `.jl` sources as read-only during installation (#55524) This sets all `.jl` files in `$(prefix)/base` and `$(prefix)/test` to have `0444` permissions, to better match how `Pkg` installs packages (and sets them to be read-only). Fixes https://github.com/JuliaLang/juliaup/issues/865 --------- Co-authored-by: Mosè Giordano <765740+giordano@users.noreply.github.com> | 19 August 2024, 19:10:29 UTC |
26a234f | Gabriel Baraldi | 19 August 2024, 17:26:54 UTC | Initialize task lock in adopt thread | 19 August 2024, 17:26:54 UTC |
ea9d1c2 | Gabriel Baraldi | 19 August 2024, 16:17:44 UTC | Fix external IO loop thead interaction and add function to Base.Experimental to facilitate it's use. Also add a test. | 19 August 2024, 16:17:44 UTC |
39eaa3c | Katharine Hyatt | 19 August 2024, 15:38:52 UTC | Add test for upper/lower/titlecase and fix missing import (#55443) | 19 August 2024, 15:38:52 UTC |
fc7b40e | Sebastian Pfitzner | 19 August 2024, 14:35:41 UTC | Add JULIA_PKG_GC_AUTO to docs (#51583) | 19 August 2024, 14:35:41 UTC |
d17b5ac | Jishnu Bhattacharya | 19 August 2024, 14:00:17 UTC | Faster trace for `StridedMatrix`es (#55523) This PR generalizes the `tr(::Matrix)` method to accept `StridedMatrix` types. As a consequence: ```julia julia> A = rand(1000,1000); julia> V = view(A, axes(A)...); julia> @btime tr($V); 1.990 μs (3 allocations: 7.88 KiB) # nightly v"1.12.0-DEV.1063" 999.455 ns (0 allocations: 0 bytes) # this PR ``` | 19 August 2024, 14:00:17 UTC |
9738bc7 | Jishnu Bhattacharya | 19 August 2024, 13:59:44 UTC | Fix tr for Symmetric/Hermitian block matrices (#55522) Since `Symmetric` and `Hermitian` symmetrize the diagonal elements of the parent, we can't forward `tr` to the parent unless it is already symmetric. This limits the existing `tr` methods to matrices of `Number`s, which is the common use-case. `tr` for `Symmetric` block matrices would now use the fallback implementation that explicitly computes the `diag`. This resolves the following discrepancy: ```julia julia> S = Symmetric(fill([1 2; 3 4], 3, 3)) 3×3 Symmetric{AbstractMatrix, Matrix{Matrix{Int64}}}: [1 2; 2 4] [1 2; 3 4] [1 2; 3 4] [1 3; 2 4] [1 2; 2 4] [1 2; 3 4] [1 3; 2 4] [1 3; 2 4] [1 2; 2 4] julia> tr(S) 2×2 Matrix{Int64}: 3 6 9 12 julia> sum(diag(S)) 2×2 Symmetric{Int64, Matrix{Int64}}: 3 6 6 12 ``` | 19 August 2024, 13:59:44 UTC |
306cee7 | matthias314 | 18 August 2024, 11:32:11 UTC | remove redundant `print` method for `Splat` (#55494) also a related bugfix by Jameson Nash <vtjnash@gmail.com> | 18 August 2024, 11:32:11 UTC |
dff0f55 | Jishnu Bhattacharya | 18 August 2024, 04:20:06 UTC | Avoid using zero for the eltype in `tr(::Matrix)` (#55519) This lets us compute the `tr` for `Matrix`es where the `eltype` does not have a zero, but we may sum over the diagonal. E.g. the following works after this: ```julia julia> M = fill([1 2; 3 4], 2, 2) 2×2 Matrix{Matrix{Int64}}: [1 2; 3 4] [1 2; 3 4] [1 2; 3 4] [1 2; 3 4] julia> tr(M) 2×2 Matrix{Int64}: 2 4 6 8 ``` Also, using linear indexing over Cartesian appears to provide a slight speed-up for small to mid-sized matrices: ```julia julia> A = rand(1000,1000); julia> @btime tr($A); 1.796 μs (0 allocations: 0 bytes) # nightly 1.524 μs (0 allocations: 0 bytes) # This PR ``` | 18 August 2024, 04:20:06 UTC |
4aa9dfa | Katharine Hyatt | 17 August 2024, 21:25:11 UTC | Some small tests for transcode (#55436) This logic appears to be [uncovered](https://app.codecov.io/gh/JuliaLang/julia/blob/master/base%2Fstrings%2Fcstring.jl#L232) although it does have a doctest! Running the tests locally managed to trigger these functions. | 17 August 2024, 21:25:11 UTC |
faa6095 | Tim Besard | 17 August 2024, 15:00:26 UTC | Demote(B)Float16 pass: only keep enabled for PPC. (#55486) LLVM should handle this properly now for everything but PPC (where BFoat16 isn't supported anyway). | 17 August 2024, 15:00:26 UTC |
8a19b74 | Jishnu Bhattacharya | 17 August 2024, 13:45:58 UTC | Update symmetric docstring to reflect the type of uplo (#55504) This brings the docstring closer to the actual implementation. In particular, following the current docstring and defining ```julia symmetric(::MyMatrix, uplo=:U) ``` leads to a method ambiguity, as `LinearAlgebra` defines `symmetric(::AbstractMatrix, uplo::Symbol=:U)`. | 17 August 2024, 13:45:58 UTC |
0a26e90 | Ian Butterworth | 16 August 2024, 19:58:30 UTC | update precompile progress bar to match Pkg (#55512) | 16 August 2024, 19:58:30 UTC |
f2fc2d9 | DilumAluthgeBot | 16 August 2024, 19:58:08 UTC | 🤖 [master] Bump the Pkg stdlib from 7aef1f044 to d1d2fc986 (#55511) | 16 August 2024, 19:58:08 UTC |
5a633b7 | Gabriel Baraldi | 16 August 2024, 18:30:48 UTC | Fix fast getptls ccall lowering. (#55507) | 16 August 2024, 18:30:48 UTC |
ddecfe7 | Jeff Bezanson | 16 August 2024, 18:14:36 UTC | fix overlapping definitions of `Base.active_module` and `REPL.active_module` (#55316) also avoid calling `active_module` from low-level printing functions fix #54888 | 16 August 2024, 18:14:36 UTC |
5230d27 | Mark Kittisopikul | 16 August 2024, 07:33:22 UTC | Fix push! for OffsetVectors, add tests for push! and append! on AbstractVector (#55480) Per https://github.com/JuliaLang/julia/pull/55470#discussion_r1714000529, the `push!(::AbstractArray, ...)` array implementation assumed one-based indexing and did not account for an `OffsetVector` scenario. Here we add tests for `push!(::AbstractArray, ...)` and `append(::AbstractArray, ...)` including using `@invoke` to test the effect on `OffsetVector`. cc: @fredrikekre | 16 August 2024, 07:33:22 UTC |
6916eb7 | Zentrik | 15 August 2024, 23:07:21 UTC | Use same toolchain throughout pgo+bolt build (#55460) Also, I added the pgo flags to the `finish_stage2` target in case they are or become useful there. | 15 August 2024, 23:07:21 UTC |
015c2cb | Mosè Giordano | 15 August 2024, 22:37:48 UTC | [OpenBLAS_jll] Upgrade to new build to fix bug in threads buffers (#55496) | 15 August 2024, 22:37:48 UTC |
67c1723 | Jameson Nash | 15 August 2024, 12:57:26 UTC | handle async termination better (#55440) Fixes #55235 Disables the assertion failure in the scheduler, so that we are more likely to be able to report the underlying failure and run atexit handlers successfully. This should clean up some of the error messages that occur on timeout. ``` julia> sleep(5) ^\ [89829] signal 3: Quit: 3 in expression starting at REPL[1]:1 kevent at /usr/lib/system/libsystem_kernel.dylib (unknown line) unknown function (ip: 0x0) Allocations: 830502 (Pool: 830353; Big: 149); GC: 1 Quit: 3 ``` | 15 August 2024, 12:57:26 UTC |
b4ebb00 | Jameson Nash | 15 August 2024, 11:34:30 UTC | build: add missing dependencies for expmap (#55492) I was confused why https://github.com/JuliaLang/julia/issues/49121 was re-occuring locally, until I noticed this file was not getting rebuilt. | 15 August 2024, 11:34:30 UTC |
e1aefeb | Lilith Orion Hafner | 15 August 2024, 02:23:43 UTC | Do not load `ScopedValues` with `using` (#55452) Stop loading `ScopedValues` with `using` so folks use `ScopedValues.with` or `using ScopedValues` rather than `Base.with`. Implements https://github.com/JuliaLang/julia/pull/55095#issuecomment-2272334437 ~Have to bump the StyledStrings stdlib to include https://github.com/JuliaLang/StyledStrings.jl/pull/80~ Done --------- Co-authored-by: Dilum Aluthge <dilum@aluthge.com> | 15 August 2024, 02:23:43 UTC |
c7309d0 | Jameson Nash | 14 August 2024, 21:05:05 UTC | subtyping: fast path for lhs union and rhs typevar (#55413) Fixes #55230 | 14 August 2024, 21:05:05 UTC |
2a4e2b1 | Jameson Nash | 14 August 2024, 15:34:06 UTC | fix Event to use normal Condition variable (#55441) ThreadSynchronizer is only for things that are very trivial, as there are a lot of things they are forbidden from doing (such as waiting for a Task to set it). Happened to notice while reviewing https://github.com/JuliaLang/julia/pull/55439#pullrequestreview-2231026949 that this was still using the pre-v1.2 style lock, which makes this mostly useless in v1.4+ | 14 August 2024, 15:34:06 UTC |
b7aa5e3 | Oscar Smith | 13 August 2024, 15:46:04 UTC | simplify complex atanh and remove singularity perturbation (#55268) fixes https://github.com/JuliaLang/julia/issues/55266, and use `inv(z)` rather than `1/z` and use `muladd` in a couple places. --------- Co-authored-by: Mosè Giordano <giordano@users.noreply.github.com> | 13 August 2024, 15:46:04 UTC |
881be64 | matthias314 | 13 August 2024, 14:45:19 UTC | fix hierarchy level of "API reference" in `Dates` documentation (#55483) Currently, "API reference" is at the same level as "Dates" although it is a subsection of it. This looks particularly weird in the PDF version of the manual: Section 67 is "Dates" and Section 68 is "API reference". Note that I didn't change the nesting level of the subsection "Constants" at the end of the file. As a result, it is now at the same level as "Dates and Time Types" and "Dates Functions". Before it was a subsection of the latter, which appears wrong to me. | 13 August 2024, 14:45:19 UTC |
5eda597 | Kristoffer Carlsson | 13 August 2024, 14:44:41 UTC | make the previous active module in the REPL a non-global (#55418) The intent of the active module seems to have been for it to be REPL specific but this global kind of breaks that. Co-authored-by: KristofferC <kristoffer.carlsson@juliacomputing.com> | 13 August 2024, 14:44:41 UTC |
96fd25a | DilumAluthgeBot | 13 August 2024, 03:07:40 UTC | 🤖 [master] Bump the JuliaSyntaxHighlighting stdlib from 04b2323 to b89dd99 (#55474) Stdlib: JuliaSyntaxHighlighting URL: https://github.com/julialang/JuliaSyntaxHighlighting.jl.git Stdlib branch: main Julia branch: master Old commit: 04b2323 New commit: b89dd99 Julia version: 1.12.0-DEV JuliaSyntaxHighlighting version: 1.12.0 Bump invoked by: @tecosaur Powered by: [BumpStdlibs.jl](https://github.com/JuliaLang/BumpStdlibs.jl) Diff: https://github.com/julialang/JuliaSyntaxHighlighting.jl/compare/04b2323c41f6422464c838fe9045700e9ee75e95...b89dd99db56700c47434df6106b6c6afd1c9ed01 ``` $ git log --oneline 04b2323..b89dd99 b89dd99 Actually use the syntax_errors argument fee6aa5 Use a mutable type instead of ref fields ``` Co-authored-by: Dilum Aluthge <dilum@aluthge.com> | 13 August 2024, 03:07:40 UTC |
ac425a5 | Viral B. Shah | 12 August 2024, 19:01:03 UTC | Bump SparseArrays for SuiteSparse 7.8.0 (#55472) | 12 August 2024, 19:01:03 UTC |
a23aee8 | DilumAluthgeBot | 12 August 2024, 16:20:03 UTC | 🤖 [master] Bump the StyledStrings stdlib from d7496d2 to f6035eb (#55461) Stdlib: StyledStrings URL: https://github.com/JuliaLang/StyledStrings.jl.git Stdlib branch: main Julia branch: master Old commit: d7496d2 New commit: f6035eb Julia version: 1.12.0-DEV StyledStrings version: 1.11.0(Does not match) Bump invoked by: @LilithHafner Powered by: [BumpStdlibs.jl](https://github.com/JuliaLang/BumpStdlibs.jl) Diff: https://github.com/JuliaLang/StyledStrings.jl/compare/d7496d24d3f05536bce6a7eb4cd8ca05a75c02aa...f6035eb97b516862b16e36cab2ecc6ea8adc3d7c ``` $ git log --oneline d7496d2..f6035eb f6035eb Replace accidental Int64s with Ints 4fcd8bb Use const fields in parser State instead of refs 35a3cdf Load user-customisations lazily 9802b6c Load ScopedValues symbols from their source 9b9cf71 Use branches when choosing how to merge face attrs eada2dc Avoid needlessly creating a new Face in get calls c647af9 Avoid boxing mergedface by making it toplevel a117008 Avoid creating strings for ansi_4bit_color_code 6863348 Improve type inference of face merging f588218 Quick fix for 4d04102adf0d (Optimised SimpleColor) 4d04102 Optimise creation of a SimpleColor from a UInt32 6d3f44d Actually overload Base's escape_string 58507e5 Fully qualify method overloads, avoid importing fc686f3 Explicitly test eachregion c417262 Refactor eachregion to be O(n log n) not O(n^2) f7af623 Use concrete refs in macro parser state struct 41b2446 Check for underline term capability flag 987f776 Treat printing as more than a nothing-return write 43fb018 Add types to some comprehensions d3aa7e1 Improve inference with a function over a closure 6901610 Mention the importance of semantic names in docs 0be209b Better hint at the package capabilities in readme 37b9e4b Load no faces.toml when the DEPOT_PATH is empty ``` Co-authored-by: Dilum Aluthge <dilum@aluthge.com> | 12 August 2024, 16:20:03 UTC |
cf4c30a | Mark Kittisopikul | 12 August 2024, 13:10:03 UTC | Add push! implementation for AbstractArray depending only on resize! (#55470) Fix #55459 In Julia 1.10, `push!` and `append!` would be functional for `AbstractVector` implementations if `resize!` and `setindex!` were defined. As of #51903 by @vtjnash as in Julia 1.11.0-rc2, `append!` now depends on an implementation of `sizehint!` and `push!`. Since `push!` also depends on `append!`, a stack overflow situation can easily be created. To avoid this, this pull request defines the following * Add generic versions of `push!(a::AbstractVector, x)` which do not depend on `append!` * Add default implementation of `sizehint!` that is a no-op The implementation of `push!(a::AbstractVector, x)` is a generic version based on the implementation of `push!(a::Vector, x)` without depending on internals. # Example for SimpleArray Consider the `SimpleArray` example from test/abstractarray.jl: ```julia mutable struct SimpleArray{T} <: AbstractVector{T} els::Vector{T} end Base.size(sa::SimpleArray) = size(sa.els) Base.getindex(sa::SimpleArray, idx...) = getindex(sa.els, idx...) Base.setindex!(sa::SimpleArray, v, idx...) = setindex!(sa.els, v, idx...) Base.resize!(sa::SimpleArray, n) = resize!(sa.els, n) Base.copy(sa::SimpleArray) = SimpleArray(copy(sa.els)) ``` Note that `setindex!` and `resize!` are implemented for `SimpleArray`. ## Julia 1.10.4: push! is functional On Julia 1.10.4, `push!` has a functional implementation for `SimpleArray` ```julia-repl julia> push!(SimpleArray{Int}(zeros(Int,5)), 6) 6-element SimpleArray{Int64}: 0 0 0 0 0 6 ``` ## Julia 1.11.0-rc2 and nightly: push! requires sizehint! and is prone to stack overflow Before this pull request, on Julia 1.11.0-rc2 and nightly, `push!` fails for want of `sizehint!`. ```julia-repl julia> push!(SimpleArray{Int}(zeros(Int,5)), 6) ERROR: MethodError: no method matching sizehint!(::SimpleArray{Int64}, ::Int64) The function `sizehint!` exists, but no method is defined for this combination of argument types. ... ``` After implementing `sizehint!`, `push!` still fails with a stack overflow. ```julia-repl julia> Base.sizehint!(a::SimpleArray, x) = a julia> push!(SimpleArray{Int}(zeros(Int, 5)), 6) Warning: detected a stack overflow; program state may be corrupted, so further execution might be unreliable. ERROR: StackOverflowError: Stacktrace: [1] _append! @ ./array.jl:1344 [inlined] [2] append! @ ./array.jl:1335 [inlined] [3] push!(a::SimpleArray{Int64}, iter::Int64) @ Base ./array.jl:1336 --- the above 3 lines are repeated 79982 more times --- [239950] _append! @ ./array.jl:1344 [inlined] [239951] append! @ ./array.jl:1335 [inlined] ``` This is because the new implementation of `append!` depends on `push!`. ## After this pull request, push! is functional. After this pull request, there is a functional `push!` for `SimpleArray` again as in Julia 1.10.4: ```julia-repl julia> push!(SimpleArray{Int}(zeros(Int, 5), 6) 6-element SimpleArray{Int64}: 0 0 0 0 0 6 ``` | 12 August 2024, 13:10:03 UTC |
c907192 | DilumAluthgeBot | 12 August 2024, 10:51:19 UTC | 🤖 [master] Bump the SparseArrays stdlib from e61663a to 55976a6 (#55469) Stdlib: SparseArrays URL: https://github.com/JuliaSparse/SparseArrays.jl.git Stdlib branch: main Julia branch: master Old commit: e61663a New commit: 55976a6 Julia version: 1.12.0-DEV SparseArrays version: 1.12.0 Bump invoked by: @ViralBShah Powered by: [BumpStdlibs.jl](https://github.com/JuliaLang/BumpStdlibs.jl) Diff: https://github.com/JuliaSparse/SparseArrays.jl/compare/e61663ad0a79a48906b0b12d53506e731a614ab8...55976a6e4f883a32e3d3658af50c49879b98fce0 ``` $ git log --oneline e61663a..55976a6 55976a6 Keep sparse solvers docs as before (#552) 95fd7ff Missing space in error message (#554) b8a13ef implement in-place `ldiv!` for Cholesky factorization (#547) 1527014 Do not use nested dissection by default. (#550) ``` Co-authored-by: Dilum Aluthge <dilum@aluthge.com> | 12 August 2024, 10:51:19 UTC |
9d222b8 | Mosè Giordano | 12 August 2024, 01:13:05 UTC | [OpenBLAS_jll] Upgrade to v0.3.28 (#55462) Memo to self: * update version number in `stdlib/OpenBLAS_jll/Project.toml` * update version number and sha in `deps/openblas.version` * refresh checksums with `make -f contrib/refresh_checksums.mk -j openblas` See the [release notes of v0.3.28](https://github.com/OpenMathLib/OpenBLAS/releases/tag/v0.3.28). | 12 August 2024, 01:13:05 UTC |
a3859ed | DilumAluthgeBot | 12 August 2024, 01:11:26 UTC | 🤖 [master] Bump the JuliaSyntaxHighlighting stdlib from a463611 to 04b2323 (#55464) Stdlib: JuliaSyntaxHighlighting URL: https://github.com/julialang/JuliaSyntaxHighlighting.jl.git Stdlib branch: main Julia branch: master Old commit: a463611 New commit: 04b2323 Julia version: 1.12.0-DEV JuliaSyntaxHighlighting version: 1.12.0 Bump invoked by: @tecosaur Powered by: [BumpStdlibs.jl](https://github.com/JuliaLang/BumpStdlibs.jl) Diff: https://github.com/julialang/JuliaSyntaxHighlighting.jl/compare/a463611e715c9ec546ac8463c38b6890d892e0c8...04b2323c41f6422464c838fe9045700e9ee75e95 ``` $ git log --oneline a463611..04b2323 04b2323 Support a syntax_errors keyword argument 3fba08b Use concrete refs in paren state struct ``` Co-authored-by: Dilum Aluthge <dilum@aluthge.com> | 12 August 2024, 01:11:26 UTC |
d302272 | Ian Butterworth | 11 August 2024, 14:13:56 UTC | precompilepkgs: Handle when the terminal is very short (#55445) Fixes https://github.com/JuliaLang/Pkg.jl/issues/3935 1.10 counterpart https://github.com/JuliaLang/Pkg.jl/pull/3988 | 11 August 2024, 14:13:56 UTC |
2e1235e | Haakon Ludvig Langeland Ervik | 10 August 2024, 22:35:20 UTC | Update asyncmap docs to clarify order of outputs (#54974) | 10 August 2024, 22:35:20 UTC |
7e809b0 | Jameson Nash | 10 August 2024, 04:31:37 UTC | compiler: apply more accurate effects to return_type_tfunc (#55338) In extreme cases, the compiler could mark this function for concrete-eval, even though that is illegal unless the compiler has first deleted this instruction. Otherwise the attempt to concrete-eval will re-run the function repeatedly until it hits a StackOverflow. Workaround to fix #55147 @aviatesk You might know how to solve this even better, using post-optimization effect refinements? Since we should actually only apply the refinement of terminates=false => terminates=true (and thus allowing concrete eval) if the optimization occurs, and not just in inference thinks the optimization would be legal. --------- Co-authored-by: Shuhei Kadowaki <aviatesk@gmail.com> | 10 August 2024, 04:31:37 UTC |
86231ce | Jishnu Bhattacharya | 09 August 2024, 19:20:42 UTC | LinearAlgebra: round-trippable 2-argument show for `Tridiagonal`/`SymTridiagonal` (#55415) This makes the displayed form of a `Tridiaognal` and a `SymTridiagonal` valid constructors. ```julia julia> T = Tridiagonal(1:3, 1:4, 1:3) 4×4 Tridiagonal{Int64, UnitRange{Int64}}: 1 1 ⋅ ⋅ 1 2 2 ⋅ ⋅ 2 3 3 ⋅ ⋅ 3 4 julia> show(T) Tridiagonal(1:3, 1:4, 1:3) julia> S = SymTridiagonal(1:4, 1:3) 4×4 SymTridiagonal{Int64, UnitRange{Int64}}: 1 1 ⋅ ⋅ 1 2 2 ⋅ ⋅ 2 3 3 ⋅ ⋅ 3 4 julia> show(S) SymTridiagonal(1:4, 1:3) ``` Displaying the bands has several advantages: firstly, it's briefer than printing the full array, and secondly, it displays the special structure in the bands, if any. E.g.: ```julia julia> T = Tridiagonal(spzeros(3), spzeros(4), spzeros(3)); julia> show(T) Tridiagonal(sparsevec(Int64[], Float64[], 3), sparsevec(Int64[], Float64[], 4), sparsevec(Int64[], Float64[], 3)) ``` It's clear from the displayed form that `T` has sparse bands. A special handling for `SymTridiagonal` matrices is necessary, as the diagonal band is symmetrized. This means: ```julia julia> using StaticArrays julia> m = SMatrix{2,2}(1:4); julia> S = SymTridiagonal(fill(m,3), fill(m,2)) 3×3 SymTridiagonal{SMatrix{2, 2, Int64, 4}, Vector{SMatrix{2, 2, Int64, 4}}}: [1 3; 3 4] [1 3; 2 4] ⋅ [1 2; 3 4] [1 3; 3 4] [1 3; 2 4] ⋅ [1 2; 3 4] [1 3; 3 4] julia> show(S) SymTridiagonal(SMatrix{2, 2, Int64, 4}[[1 3; 3 4], [1 3; 3 4], [1 3; 3 4]], SMatrix{2, 2, Int64, 4}[[1 3; 2 4], [1 3; 2 4]]) ``` The displayed values correspond to the symmetrized band, and not the actual input arguments. I think displaying the symmetrized elements makes more sense here, as this matches the form in the 3-argument `show`. | 09 August 2024, 19:20:42 UTC |
7ec39e7 | Ian Butterworth | 09 August 2024, 17:50:58 UTC | fix swallowing internal errors in precompilepkgs (#55432) Testing: - with a package error ``` (SimpleLooper) pkg> precompile Precompiling all packages... ✗ SimpleLooper 0 dependencies successfully precompiled in 2 seconds ERROR: The following 1 direct dependency failed to precompile: SimpleLooper Failed to precompile SimpleLooper [ff33fe5b-d8e3-4cbd-8bd9-3d2408ff8cab] to "/Users/ian/.julia/compiled/v1.12/SimpleLooper/jl_PQArnH". ERROR: LoadError: Stacktrace: [1] error() @ Base ./error.jl:53 ``` - with interrupt ``` (SimpleLooper) pkg> precompile Precompiling all packages... ^C Interrupted: Exiting precompilation... ◒ SimpleLooper 1 dependency had output during precompilation: ┌ SimpleLooper │ [57879] signal 2: Interrupt: 2 │ in expression starting at /Users/ian/Documents/GitHub/SimpleLooper.jl/src/SimpleLooper.jl:2 └ ``` - an internal error simulated in the same scope that https://github.com/JuliaLang/Pkg.jl/issues/3984 was failing to throw from ``` JULIA stdlib/release.image Unhandled Task ERROR: Stacktrace: [1] error() @ Base ./error.jl:53 [2] (::Base.Precompilation.var"#27#65"{Bool, Bool, Vector{Task}, Dict{Tuple{Base.PkgId, Pair{Cmd, Base.CacheFlags}}, String}, Dict{Tuple{Base.PkgId, Pair{Cmd, Base.CacheFlags}}, String}, Base.Event, Base.Event, ReentrantLock, Vector{Tuple{Base.PkgId, Pair{Cmd, Base.CacheFlags}}}, Dict{Tuple{Base.PkgId, Pair{Cmd, Base.CacheFlags}}, String}, Vector{Tuple{Base.PkgId, Pair{Cmd, Base.CacheFlags}}}, Int64, Vector{Base.PkgId}, Dict{Tuple{Base.PkgId, Pair{Cmd, Base.CacheFlags}}, Bool}, Dict{Tuple{Base.PkgId, Pair{Cmd, Base.CacheFlags}}, Base.Event}, Dict{Tuple{Base.PkgId, Pair{Cmd, Base.CacheFlags}}, Bool}, Vector{Base.PkgId}, Dict{Base.PkgId, String}, Dict{Tuple{Base.PkgId, UInt128, String, String}, Bool}, Base.Precompilation.var"#color_string#38"{Bool}, Bool, Base.Semaphore, Bool, String, Vector{String}, Vector{Base.PkgId}, Base.PkgId, Base.CacheFlags, Cmd, Pair{Cmd, Base.CacheFlags}, Tuple{Base.PkgId, Pair{Cmd, Base.CacheFlags}}})() @ Base.Precompilation ./precompilation.jl:819 ``` | 09 August 2024, 17:50:58 UTC |
18340a3 | Ian Butterworth | 09 August 2024, 17:47:20 UTC | `stale_cachefile`: handle if the expected cache file is missing (#55419) Part of fixing https://github.com/JuliaLang/Pkg.jl/issues/3984 | 09 August 2024, 17:47:20 UTC |
c3d0d67 | Shuhei Kadowaki | 09 August 2024, 15:33:43 UTC | inference: follow up #49260, remove no longer necessary functions (#55430) | 09 August 2024, 15:33:43 UTC |
2727e36 | Gabriel Baraldi | 09 August 2024, 13:59:51 UTC | Remove deprecated non string API for LLVM pass pipeline and parse all options (#55407) This technically removes the option for Oz in julia but it doesn't actually do what one wants. This removes an API currently used by Enzyme.jl and AllocCheck.jl but given that LLVM.jl doesn't support this API anymore that seems fine. @wsmoses @maleadt Do we want the replacement for this (a function that parses the PipelineConfig struct) to live in LLVM.jl or GPUCompiler.jl ? | 09 August 2024, 13:59:51 UTC |
3db1d19 | Kristoffer Carlsson | 09 August 2024, 11:08:23 UTC | add missing clamp function for IOBuffer (#55424) The `clamp` function was defined in Base.Math, but required to be in Base now, so move it to intfuncs with other similar functions Fixes #55279 | 09 August 2024, 11:08:23 UTC |
ac9558c | Jameson Nash | 09 August 2024, 11:07:31 UTC | codegen: move undef freeze before promotion point (#55428) Fixes #55396 | 09 August 2024, 11:07:31 UTC |
e7e8768 | Alex Arslan | 08 August 2024, 23:44:30 UTC | Vendor the terminfo database for use with base/terminfo.jl (#55411) This adds the `terminfo` database to `deps/`, providing a better user experience on systems that don't have `terminfo` on the system by default. The database is built using BinaryBuilder but is not actually platform-specific (it's built for `AnyPlatform`) and as such, this fetches the artifact directly rather than adding a new JLL to stdlib, and it requires no compilation. A build flag, `WITH_TERMINFO`, is added here and assumed true by default, allowing users to set `WITH_TERMINFO=0` in Make.user to avoid bundling `terminfo` should they want to do so. The lookup policy for `terminfo` entries is still compliant with what's described in `terminfo(5)`; the bundled directory is taken to be the first "compiled in" location, i.e. prepended to `@TERMINFO_DIRS@`. This allows any user settings that exist locally, such as custom entries or locations, to take precedence. Fixes #55274 Co-authored-by: Mosè Giordano <giordano@users.noreply.github.com> | 08 August 2024, 23:44:30 UTC |