7e390bc | d-netto | 14 March 2024, 18:46:44 UTC | analyzegc fix | 21 March 2024, 17:21:56 UTC |
c4523c6 | d-netto | 14 March 2024, 18:20:20 UTC | canonicalize names of nested lambdas as well | 21 March 2024, 17:21:56 UTC |
9db10c7 | d-netto | 13 March 2024, 04:01:14 UTC | implemented per-module counter table | 21 March 2024, 17:21:56 UTC |
9569465 | d-netto | 13 March 2024, 03:16:22 UTC | more progress on maintaing a stack of parsed methods | 21 March 2024, 17:21:56 UTC |
4871d42 | d-netto | 13 March 2024, 01:56:10 UTC | progress on maintaing a stack of parsed methods | 21 March 2024, 17:21:56 UTC |
f7b53ac | d-netto | 12 March 2024, 22:30:19 UTC | tweak module_counter to contain module name information as well | 21 March 2024, 17:21:56 UTC |
09400e4 | Tim Besard | 21 March 2024, 12:10:08 UTC | Switch LLVM codegen of Ptr{T} to an actual pointer type. (#53687) This PR switches our code generation for `Ptr{T}` from `i64` to an actual LLVM pointer type (`ptr` when using opaque pointers, an untyped `i8*` otherwise). The main motivation is to simplify `llvmcall` usage (doing away with the `inttoptr`/`ptrtoint` conversions), and also make it possible to simply use `ccall` to call intrinsics with `Ptr`-valued arguments (where we currently always need `llvmcall` for converting to an actual pointer). Changing codegen like this is a breaking change for `llvmcall` users, but I've added backwards compatibility and a deprecation warning. Before: ```llvm julia> @code_llvm pointer([]) define i64 @julia_pointer_1542(ptr noundef nonnull align 8 dereferenceable(24) %"x::Array") #0 { top: ; ┌ @ pointer.jl:65 within `cconvert` %0 = load ptr, ptr %"x::Array", align 8 ; └ ; ┌ @ pointer.jl:90 within `unsafe_convert` ; │┌ @ pointer.jl:30 within `convert` %bitcast_coercion = ptrtoint ptr %0 to i64 ret i64 %bitcast_coercion ; └└ } ``` After: ```llvm julia> @code_llvm pointer([]) define ptr @julia_pointer_3880(ptr noundef nonnull align 8 dereferenceable(24) %"x::Array") #0 { top: ; ┌ @ pointer.jl:65 within `cconvert` %0 = load ptr, ptr %"x::Array", align 8 ; └ ; ┌ @ pointer.jl:90 within `unsafe_convert` ; │┌ @ pointer.jl:30 within `convert` ret ptr %0 ; └└ } ``` This also simplifies "real code", e.g., when `ccall` converts an Array to a pointer, resulting in some more optimization opportunities. | 21 March 2024, 12:10:08 UTC |
8e8b533 | Shuhei Kadowaki | 21 March 2024, 03:14:52 UTC | minor followups on recent `CodeInstance` refactors (#53581) - ~~simplifies the signature of `transform_result_for_cache`~~ - ~~make `jl_uncompress_ir` take `MethodInstance` instead of `CodeInstance` and simplifies the inlining algorithm~~ - renames of `codeinst::CodeInstace` objects - removal of dead code | 21 March 2024, 03:14:52 UTC |
72b1c9e | Lasse Peters | 21 March 2024, 02:55:02 UTC | Document LazyString in performance tips (#53779) Does what it says. Doc-changes only. Recent motivating example: https://github.com/FluxML/Flux.jl/issues/2399 | 21 March 2024, 02:55:02 UTC |
55afecc | John M. Kuhn | 20 March 2024, 22:10:23 UTC | Printf: don't zero pad Inf or NaN (#53785) We currently have ``` julia> @sprintf("%07f", -Inf) "-000Inf" julia> @sprintf("%07f", NaN) "0000NaN" ``` With this PR ``` julia> @sprintf("%07f", -Inf) " -Inf" julia> @sprintf("%07f", NaN) " NaN" ``` which is the same as Julia 1.5.4 and agrees with the C standard. | 20 March 2024, 22:10:23 UTC |
a30feec | gitboy16 | 20 March 2024, 22:07:33 UTC | Update LICENSE.md - update copyright years (#53758) | 20 March 2024, 22:07:33 UTC |
bc7ba3d | Keno Fischer | 20 March 2024, 06:35:46 UTC | compiler: Refactor `concrete_eval_invoke` (#53771) This passes slightly more information into this function (the full `inst` rather than just the `stmt`) in order to allow external absint to access additional fields (the flags and the info) if necessary to make concrete evaluation decisions. It also splits out the actual concrete evaluation from the part that just maps the `inst` to a CodeInstance. | 20 March 2024, 06:35:46 UTC |
e0bb95a | Jeff Bezanson | 20 March 2024, 00:38:51 UTC | small changes to make Base more statically compileable (#53778) This makes it easier to fully-statically-type Base and init methods. The changes are from gb/small-image2. | 20 March 2024, 00:38:51 UTC |
cc27a7b | Max Horn | 20 March 2024, 00:36:10 UTC | Add two missing whitespaces to error messages (#53782) | 20 March 2024, 00:36:10 UTC |
1c2b9ad | Keno Fischer | 20 March 2024, 00:09:27 UTC | compileall: Print error on failure (#53770) This test appears to be failing intermittently on aarch64 darwin, so stop suppressing any errors that might be happening. | 20 March 2024, 00:09:27 UTC |
5c891de | Kiran Pamnany | 19 March 2024, 14:39:25 UTC | Remove some duplicates from emitted compilation traces (#53774) When multiple threads concurrently attempt to compile the same method, `--trace-compile` could emit duplicate `precompile` statements. This small tweak eliminates one source of these duplicates. | 19 March 2024, 14:39:25 UTC |
9df47f2 | Shuhei Kadowaki | 19 March 2024, 11:10:11 UTC | post-opt: add more test cases for `visit_conditional_successors` (#53642) This commit fixes the first problem that was found while digging into JuliaLang/julia#53613. It turns out that the post-domtree constructed from regular `IRCode` doesn't work for visiting conditional successors for post-opt analysis in cases like: ```julia julia> let code = Any[ # block 1 GotoIfNot(Argument(2), 3), # block 2 ReturnNode(Argument(3)), # block 3 (we should visit this block) Expr(:call, throw, "potential throw"), ReturnNode(), # unreachable ] ir = make_ircode(code; slottypes=Any[Any,Bool,Bool]) visited = BitSet() @test !Core.Compiler.visit_conditional_successors(CC.LazyPostDomtree(ir), ir, #=bb=#1) do succ::Int push!(visited, succ) return false end @test 2 ∉ visited @test 3 ∈ visited end Test Failed at REPL[14]:16 Expression: 2 ∉ visited Evaluated: 2 ∉ BitSet([2]) ``` This might mean that we need to fix on the `postdominates` end, but for now, this commit tries to get around it by using the augmented post domtree in `visit_conditional_successors`. Since the augmented post domtree is enforced to have a single return, we can keep using the current `postdominates` to fix the issue. However, this commit isn't enough to fix the NeuralNetworkReachability segfault as reported in #53613, and we need to tackle the second issue reported there too (https://github.com/JuliaLang/julia/issues/53613#issuecomment-1983243419). | 19 March 2024, 11:10:11 UTC |
2775c9a | Cody Tapscott | 19 March 2024, 08:20:16 UTC | Fix handling of virtual exit node in `PostDomTree` (#53739) This is an alternative to https://github.com/JuliaLang/julia/pull/53642 The `dom_edges()` for an exit block in the CFG are empty when computing the PostDomTree so the loop below this may not actually run. In that case, the right semidominator is the ancestor from the DFSTree, which is the "virtual" -1 block. This resolves half of the issue in https://github.com/JuliaLang/julia/issues/53613: ```julia julia> let code = Any[ # block 1 GotoIfNot(Argument(2), 3), # block 2 ReturnNode(Argument(3)), # block 3 (we should visit this block) Expr(:call, throw, "potential throw"), ReturnNode(), # unreachable ] ir = make_ircode(code; slottypes=Any[Any,Bool,Bool]) visited = BitSet() @test !Core.Compiler.visit_conditional_successors(CC.LazyPostDomtree(ir), ir, #=bb=#1) do succ::Int push!(visited, succ) return false end @test 2 ∈ visited @test 3 ∈ visited end Test Passed ``` This needs some tests (esp. since I don't think we have any DomTree tests at all right now), but otherwise should be good to go. | 19 March 2024, 08:20:16 UTC |
8f76c69 | Shuhei Kadowaki | 19 March 2024, 05:42:23 UTC | minor refactoring on `find_method_matches` (#53741) So that it can be tested in isolation easier. | 19 March 2024, 05:42:23 UTC |
8e67f99 | Jeff Bezanson | 18 March 2024, 21:08:32 UTC | fix functional assert statements (#53737) We currently never remove asserts but I still think this is not a good practice. | 18 March 2024, 21:08:32 UTC |
a9611ce | Ian Butterworth | 18 March 2024, 11:20:55 UTC | precompilepkgs: fix error path & adjust messaging (#53772) Fixes issues with the handling of errored dependencies | 18 March 2024, 11:20:55 UTC |
1d532f4 | Florian | 17 March 2024, 15:05:53 UTC | remove dllexport `jl_arraylen` which no longer exists (#53765) | 17 March 2024, 15:05:53 UTC |
0b1587c | Jishnu Bhattacharya | 17 March 2024, 13:01:25 UTC | Add an IndexStyle example to the diagind docstring (#53757) Also, simplifies the docstring by splitting the usage into two lines. | 17 March 2024, 13:01:25 UTC |
912460b | Jeff Fessler | 15 March 2024, 04:46:03 UTC | Use Julian way `≥(0)` in `findall` docs (#53740) I'm pretty sure the manual advises against `x -> x >= 0` :) | 15 March 2024, 04:46:03 UTC |
67cdb9b | Gabriel Baraldi | 15 March 2024, 02:17:44 UTC | Enable analyzegc checks for try catch and fix found issues (#53527) This PR also makes a successful `JL_TRY` not do so much work + fixes clang not finding the sdk when running those tests in macos. Fixes https://github.com/JuliaLang/julia/issues/ Co-authored-by: Cody Tapscott <84105208+topolarity@users.noreply.github.com> Co-authored-by: Jameson Nash <vtjnash@gmail.com> | 15 March 2024, 02:17:44 UTC |
3c4af03 | Shuhei Kadowaki | 15 March 2024, 00:43:19 UTC | enhance the effectiveness of the test cases introduced in #53300 (#53478) While experimenting with precompilation for external absints on builds just after #53300 was merged, I found that the test case for `CustomAbstractInterpreterCaching2.jl` fails if the test case for `CustomAbstractInterpreterCaching1.jl` isn't run in the same session beforehand. That is probably because of the previous lack of support for proper `CodeInstance` caching. To address this, I've changed the tests to run in separate processes in this commit. Note that it appears that a recent refactor concerning `CodeInstance` might have resolved this issue, so the new test cases runs successfully on master. However, I suspect the fix hasn't been applied to v1.11 yet, we would need more research. | 15 March 2024, 00:43:19 UTC |
b730d33 | Shuhei Kadowaki | 15 March 2024, 00:39:56 UTC | inlining: bail out unless `match.spec_types <: match.method.sig` (#53720) As Jameson pointed out in the link below, while the union-split handles cases when there are uncovered matches, sometimes the expected condition `spec_types <: method.sig` that the union-split algorithm relies on isn't met in such cases, which caused issues like #52644. This commit fixes the problem by adding explicit checks for such cases. Note that this is based on #52092. The extra handling for single method match unmatched static parameters based on `only_method` that was removed in JuliaLang/#52092 has been ineffective and would otherwise cause problematic inlining on this PR. We'll likely need to come back to this later and figure out a safe and effective way to deal with such cases in the future when the handling for either case turns out to be necessary. - closes #52644 - xref: <https://github.com/JuliaLang/julia/pull/53600#pullrequestreview-1917272781> | 15 March 2024, 00:39:56 UTC |
0f04b33 | Gabriel Baraldi | 14 March 2024, 19:30:40 UTC | Default to the medium code model in x86 linux (#53391) This shouldn't have any cost on smaller images because the only thing that gets put into ldata is the system image data, which is only reference via `dlsym`. This allows for images larger than 2gb (tested by putting a 2gb array in the base image) I did not test how this might be handled in other platforms (Windows doesn't support it). | 14 March 2024, 19:30:40 UTC |
a910f04 | Jameson Nash | 14 March 2024, 14:52:20 UTC | Fix some issues with precompilation with threads on (#53697) This doesn't fix all issues, but should make some of them more correct than before. These fixes may also enable exiting julia with threads running safer in the future. | 14 March 2024, 14:52:20 UTC |
cb47b01 | Gabriel Baraldi | 14 March 2024, 14:51:10 UTC | codegen: change tbaa of ptr_phi to tbaa_value (#53655) Fixes https://github.com/JuliaLang/julia/issues/53612 | 14 March 2024, 14:51:10 UTC |
c4ab0d4 | Ian Butterworth | 14 March 2024, 14:23:58 UTC | Increase build precompilation (#53682) - Bake precompilepkgs into the sysimage - Enable compilation in stdlib JLLs @staticfloat I guess this is ok now we have pkgimages? - Add some hardcoded precompiles encountered locally - Disable a problematic llvm test, with a note With this there's no compilation loading Pkg in interactive mode ``` % ./julia --trace-compile=stderr --start=no -q julia> ] (@v1.12) pkg> ``` Before ``` % time julia +nightly --start=no --trace-compile=stderr -q -e "using Pkg" precompile(Tuple{typeof(Base.setindex!), Base.Dict{Symbol, Union{Nothing, Bool, Int64, String}}, Int64, Symbol}) precompile(Tuple{typeof(Base.haskey), Base.Dict{String, Any}, String}) precompile(Tuple{typeof(MbedTLS_jll.__init__)}) precompile(Tuple{typeof(LibSSH2_jll.__init__)}) precompile(Tuple{typeof(LibGit2_jll.__init__)}) precompile(Tuple{typeof(nghttp2_jll.__init__)}) precompile(Tuple{typeof(LibCURL_jll.__init__)}) precompile(Tuple{typeof(MozillaCACerts_jll.__init__)}) precompile(Tuple{typeof(Base.Filesystem.normpath), String, String, Vararg{String}}) precompile(Tuple{typeof(p7zip_jll.__init__)}) precompile(Tuple{typeof(p7zip_jll.init_p7zip_path)}) precompile(Tuple{typeof(Base.append!), Array{String, 1}, Array{String, 1}}) precompile(Tuple{typeof(Base.join), Array{String, 1}, Char}) julia +nightly --start=no --trace-compile=stderr -q -e "using Pkg" 1.48s user 0.40s system 206% cpu 0.910 total ``` PR ``` % time ./julia --start=no --trace-compile=stderr -q -e "using Pkg" ./julia --start=no --trace-compile=stderr -q -e "using Pkg" 1.62s user 0.13s system 402% cpu 0.433 total ``` | 14 March 2024, 14:23:58 UTC |
b507330 | Jishnu Bhattacharya | 14 March 2024, 14:04:50 UTC | Remove specialized IndexStyle method for SubArray (#53726) The fallback method `IndexStyle(::Type{<:AbstractArray})` does the same, so this is unnecessary. | 14 March 2024, 14:04:50 UTC |
8287943 | Jishnu Bhattacharya | 14 March 2024, 14:03:01 UTC | Remove specialized view method for `OneTo` arguments (#53725) This seems unnecessary, as the fallback method on line 221 does the same. | 14 March 2024, 14:03:01 UTC |
5023ee2 | Shuhei Kadowaki | 14 March 2024, 11:15:40 UTC | replace `REPL.TerminalMenus.terminal` with type stable function (#53704) | 14 March 2024, 11:15:40 UTC |
612393c | Cody Tapscott | 14 March 2024, 11:01:22 UTC | Avoid macro-expand recursion into `Expr(:toplevel, ...)` (#53515) Here's an example output from macroexpand: ``` Expr head: Symbol thunk args: Array{Any}((1,)) 1: Core.CodeInfo code: Array{Any}((2,)) 1: Expr head: Symbol toplevel args: Array{Any}((17,)) 1: Expr head: Symbol hygienic-scope args: Array{Any}((3,)) 1: LineNumberNode 2: Module Base.Enums 3: LineNumberNode 2: Expr head: Symbol hygienic-scope args: Array{Any}((3,)) 1: Expr 2: Module Base.Enums 3: LineNumberNode 3: Expr head: Symbol hygienic-scope args: Array{Any}((3,)) 1: LineNumberNode 2: Module Base.Enums 3: LineNumberNode 4: Expr head: Symbol hygienic-scope args: Array{Any}((3,)) 1: Expr 2: Module Base.Enums 3: LineNumberNode ... ``` Currently fails during bootstrap with: ``` LoadError("sysimg.jl", 3, LoadError("Base.jl", 542, ErrorException("cannot document the following expression:\n\n#= mpfr.jl:65 =# @enum MPFRRoundingMode begin\n #= mpfr.jl:66 =#\n MPFRRoundNearest\n #= mpfr.jl:67 =#\n MPFRRoundToZero\n #= mpfr.jl:68 =#\n MPFRRoundUp\n #= mpfr.jl:69 =#\n MPFRRoundDown\n #= mpfr.jl:70 =#\n MPFRRoundFromZero\n #= mpfr.jl:71 =#\n MPFRRoundFaithful\n end\n\n'@enum' not documentable. See 'Base.@__doc__' docs for details.\n"))) ``` Perhaps we can do better than wrapping each `Expr(:toplevel, ...)` arg individually, or I should be filtering out the LineNumberNodes? --------- Co-authored-by: Keno Fischer <keno@juliacomputing.com> Co-authored-by: Keno Fischer <keno@juliahub.com> | 14 March 2024, 11:01:22 UTC |
f24364a | Keno Fischer | 14 March 2024, 08:07:25 UTC | Don't recurse lowering symbol renaming through `Expr(:toplevel)` (#53730) Fixes #53729. | 14 March 2024, 08:07:25 UTC |
48e89db | Diogo Netto | 13 March 2024, 22:06:55 UTC | bump number of GC threads to the number of compute threads (as opposed to half of it) (#53608) The GC scheduler seems to have matured enough for us to do this. | 13 March 2024, 22:06:55 UTC |
2e876fc | Shuhei Kadowaki | 13 March 2024, 16:23:57 UTC | inlining: remove ineffective handling for unmatched params (#52092) The deleted branch was added in #45062, although it had not been tested. I tried the following diff to find cases optimized by that, but I just found the handling proved to be in vain in all cases I tried. ```diff diff --git a/base/compiler/ssair/inlining.jl b/base/compiler/ssair/inlining.jl index 318b21b09b..7e42a65aa4 100644 --- a/base/compiler/ssair/inlining.jl +++ b/base/compiler/ssair/inlining.jl @@ -1473,6 +1473,14 @@ function compute_inlining_cases(@nospecialize(info::CallInfo), flag::UInt32, sig handle_any_const_result!(cases, result, match, argtypes, info, flag, state; allow_abstract=true, allow_typevars=true) fully_covered = handled_all_cases = match.fully_covers + if length(cases) == 1 && fully_covered + println("first case: ", only_method) + elseif length(cases) == 1 + atype = argtypes_to_type(sig.argtypes) + if atype isa DataType && cases[1].sig isa DataType + println("second case: ", only_method) + end + end elseif !handled_all_cases # if we've not seen all candidates, union split is valid only for dispatch tuples filter!(case::InliningCase->isdispatchtuple(case.sig), cases) ``` | 13 March 2024, 16:23:57 UTC |
3d34f11 | N5N3 | 13 March 2024, 15:52:05 UTC | typeintersect: fix potential free `TypeVar` caused by chained inner var. (#53675) Noticed when working on 02f27c24929ab2561bcb21d3f58c1d313ae5d6e8. The substitution and re-sorting of inner vars are incomplete on master. This commit re-organized the code by: 1. Flatten the inner vars into a reversed list and handling them just like vars in norm bindings. 2. Then perform a global re-sorting on all vars. 3. After that, the inner vars get frozen and dependent bounds are refreshed. | 13 March 2024, 15:52:05 UTC |
8d31f33 | Florian | 13 March 2024, 09:04:08 UTC | Move `isexecutable, isreadable, iswritable` to `filesystem.jl` (#53699) This PR migrates the methods `isexecutable, isreadable, iswritable` from `Sys` to `Base`, but also generates an alias in `Sys` for backwards compatibility. Furthermore, `iswriteable` is renamed to `iswritable` in order to match the already existing `Base.iswritable` method. Suggested in https://github.com/JuliaLang/julia/pull/53320#issuecomment-1989217973. | 13 March 2024, 09:04:08 UTC |
9ae7eab | Keno Fischer | 13 March 2024, 07:31:51 UTC | Implement proper macro scope resolution for generator/for (#53674) I'm not super familiar with this code, but it appears to me that these need to be treated as equivalent to implicit let blocks for the purposes of macro hygiene, so add appropriate logic to the macroexpander. Fixes #53673. | 13 March 2024, 07:31:51 UTC |
b1dd26a | Diogo Netto | 13 March 2024, 05:09:25 UTC | remove duplicate definition of is_anonfn_typename (#53711) They seem to be doing the same thing. Centralize the definition in a single place. | 13 March 2024, 05:09:25 UTC |
7613c69 | Cameron Bieganek | 12 March 2024, 20:24:51 UTC | Make some improvements to the Scoped Values documentation. (#53628) Fixes #53471. One thing to note, I changed the signature in the `with` docstring from this: ```julia with(f, (var::ScopedValue{T} => val::T)...) ``` to this: ```julia with(f, (var::ScopedValue{T} => val)...) ``` ...since the original signature in the docstring was too strict. I also added this sentence to the docstring: ```julia `val` will be converted to type `T`. ``` I added a couple tests that verify the conversion behavior. | 12 March 2024, 20:24:51 UTC |
df28bf7 | Jameson Nash | 12 March 2024, 18:30:20 UTC | use afoldl instead of tail recursion for tuples (#53665) It is easy to accidentally call these functions (they are used by vcat, which is syntax) with very long lists of values, causing inference to crash and take a long time. The `afoldl` function can handle that very well however, while naive recursion did not. Fixes #53585 | 12 March 2024, 18:30:20 UTC |
2a72d65 | DilumAluthgeBot | 12 March 2024, 13:47:06 UTC | 🤖 [master] Bump the Pkg stdlib from e0821116e to 6859d6857 (#53703) Stdlib: Pkg URL: https://github.com/JuliaLang/Pkg.jl.git Stdlib branch: master Julia branch: master Old commit: e0821116e New commit: 6859d6857 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/e0821116e9f4364a2b37a77183e93d055a111f4d...6859d68579e7970daf00720901cf487563dca0da ``` $ git log --oneline e0821116e..6859d6857 6859d6857 precompile: update kwargs (#3838) 4d73d60aa move threads assignment after precompilation (#3840) 28bbbd46f remove line about changing UUID to dev in readme (#3837) ``` Co-authored-by: Dilum Aluthge <dilum@aluthge.com> | 12 March 2024, 13:47:06 UTC |
7eb5cb8 | Shuhei Kadowaki | 12 March 2024, 11:57:25 UTC | set `slot_syms` for methods of OCs constructed via `Core.OpaqueClosure` (#53650) Previously `oc` constructed via `Core.OpaqueClosure` does not set `oc.source.slot_syms` set, which caused segfaults either when trying to `show` `oc.source` or if invocation of `oc(...)` threw an error. This commit fixes that by making sure `oc.source.slot_syms` is set for `oc` created with `jl_new_opaque_closure_from_code_info`. | 12 March 2024, 11:57:25 UTC |
22602a2 | Jishnu Bhattacharya | 12 March 2024, 10:28:37 UTC | Slightly improve grammar in precompilation info text (#53700) Uses the singular "configuration" if `length(configs) == 1`, instead of the current "configurations" | 12 March 2024, 10:28:37 UTC |
0b95caf | Keno Fischer | 12 March 2024, 10:21:38 UTC | Fix `--compile=all` mode after CodeInstance refactor (#53421) This codepath does not have tests, so it wasn't quite correct. Hopefully this fixes it. | 12 March 2024, 10:21:38 UTC |
8e7751c | Jishnu Bhattacharya | 12 March 2024, 08:48:04 UTC | propagate_inbounds to inline in indexing CartesianIndices{0} (#53701) There's no indexing call in this method which an `@inbounds` may be propagated to. | 12 March 2024, 08:48:04 UTC |
2c81e5d | Jishnu Bhattacharya | 12 March 2024, 02:05:27 UTC | Linalg: remove unnecessary matprod_dest specializations (#53620) These methods are not necessary, as the fallback methods for `StructuredArrays` on line 577 and 578 do the same. | 12 March 2024, 02:05:27 UTC |
dcd1fb2 | Jishnu Bhattacharya | 12 March 2024, 02:04:25 UTC | LAPACK: validate input parameters to throw informative errors (#53631) This PR validates the input parameters to the Julia LAPACK wrappers, so that the error messages are more informative. On nightly ```julia julia> using LinearAlgebra julia> LAPACK.geev!('X', 'X', rand(2,2)) ** On entry to DGEEV parameter number 1 had an illegal value ERROR: ArgumentError: invalid argument #1 to LAPACK call ``` This PR ```julia julia> using LinearAlgebra julia> LAPACK.geev!('X', 'X', rand(2,2)) ERROR: ArgumentError: argument #1: jobvl must be one of ('N', 'V'), but 'X' was passed ``` Secondly, moved certain allocations (e.g. in `geevx`) below the validation checks, so that these only happen for valid parameter values. Thirdly, added `require_one_based_indexing` checks to functions where these were missing. | 12 March 2024, 02:04:25 UTC |
dcfad21 | Kenta Murata | 11 March 2024, 23:45:00 UTC | Add throw option in wait(::Task) (#53685) As we discussed with @vtjnash in PR #53341, it might be useful to introduce the `throw` option in the `wait` function for `Task`. If `throw=false` is specified, `wait` behaves like `_wait`; it prevents throwing a `TaskFailedException`. | 11 March 2024, 23:45:00 UTC |
a4783b0 | gbaraldi | 11 March 2024, 22:25:27 UTC | Also don't increment it for gc threads | 11 March 2024, 22:25:27 UTC |
2d24401 | gbaraldi | 11 March 2024, 21:51:26 UTC | Don't double increment nrunning when starting threads | 11 March 2024, 21:51:26 UTC |
a0cee55 | Oscar Smith | 11 March 2024, 21:13:44 UTC | add check for invalid state in `_growend!` slow-path (#53513) This only triggers in cases where the user has done something pretty bad (e.g. modified the size incorrectly, or calling `push!` from multiple threads on the same vector without a lock). I'm very unsure if `ConcurrencyViolationError` is the right error to throw here, but I think most of the time, that is going to be the cause. This check is in the slow path because adding extra checks here is basically free (since it will run rarely, and will be batched with O(n) work to copy everything over). | 11 March 2024, 21:13:44 UTC |
5fc1662 | Mosè Giordano | 11 March 2024, 20:54:46 UTC | Fix warning about comparison of integer expressions of different signedness (#53658) | 11 March 2024, 20:54:46 UTC |
f9e08f7 | Jeff Bezanson | 11 March 2024, 19:09:12 UTC | fix #52025, re-allow all implicit pointer casts in cconvert for Array (#53659) fix #52025 | 11 March 2024, 19:09:12 UTC |
6f143ea | Jameson Nash | 11 March 2024, 16:54:11 UTC | invert linetable representation (#52415) Previously, our linetables (similar to LLVM) represented line information as a linked list from callee via inlined_at up to the original information. This requires many copies of this information to be created. Instead we can take advantage of the necessary existence of the line table from the child to flip this chain of information and instead make each statement be a table describing (for each IR instruction): `(current line number, (index into edges, index into edges statements))` plus a table of all edges, plus a table with the original line numbers from the parser, plus the file name. This is all packed into the struct struct DebugInfo def::Union{Method,MethodInstance,Symbol} linetable::Union{Nothing,DebugInfo} edges::SimpleVector{DebugInfo} codelocs::String end Which is described in doc/src/devdocs/ast.md for what each field means and look at stacktraces.jl or compiler/ssair/show.jl to look at how to decode and interpret this information. For the sysimage, this saves several megabytes (about 113 MB -> 110 MB) and about 5% of the stdlib pkgimages (294 MB -> 279 MB). It also now happens to have the full type information for the inlined functions. Now if you create an `IRShow.DILineInfoPrinter` with `showtypes=true`, it can print that information when printing IR. ``` julia> @eval Base.IRShow DILineInfoPrinter(debuginfo, def) = DILineInfoPrinter(debuginfo, def, true) DILineInfoPrinter (generic function with 2 methods) julia> (@code_typed 1 + 1.0)[1] CodeInfo( @ promotion.jl:425 within `+` ┌ invoke MethodInstance for promote(::Int64, ::Float64) │ @ promotion.jl:396 within `promote` │┌ invoke MethodInstance for Base._promote(::Int64, ::Float64) ││ @ promotion.jl:373 within `_promote` ││┌ invoke MethodInstance for convert(::Type{Float64}, ::Int64) │││ @ number.jl:7 within `convert` │││┌ invoke MethodInstance for Float64(::Int64) ││││ @ float.jl:221 within `Float64` 1 ─││││ %1 = Base.sitofp(Float64, x)::Float64 │ └└└└ │ ┌ invoke MethodInstance for +(::Float64, ::Float64) │ │ @ float.jl:460 within `+` │ │ %2 = Base.add_float(%1, y)::Float64 │ └ └── return %2 ) ``` | 11 March 2024, 16:54:11 UTC |
8413b97 | Kenta Murata | 11 March 2024, 15:35:31 UTC | Add waitany and waitall functions to wait multiple tasks at once (#53341) This adds two functions: `waitany` and `waitall`, as discussed in the issue #53226. These functions wait for multiple tasks at once. The `waitany` function blocks until one task finishes. The `waitall` function blocks until all tasks finish. Co-authored-by: Shuhei Kadowaki <aviatesk@gmail.com> Co-authored-by: Jameson Nash <vtjnash@gmail.com> | 11 March 2024, 15:35:31 UTC |
f882c00 | Jishnu Bhattacharya | 11 March 2024, 14:15:30 UTC | Linalg: matprod_dest for Diagonal and adjvec (#53611) | 11 March 2024, 14:15:30 UTC |
2978a64 | Jameson Nash | 11 March 2024, 12:28:49 UTC | [REPL] fix incorrectly cleared line after completions accepted (#53662) The hint must be cleared before the screen state is reset, otherwise the state after reset may not be compatible with being able to clear it. Fixes #52264 | 11 March 2024, 12:28:49 UTC |
60d4b7b | Jameson Nash | 11 March 2024, 12:28:24 UTC | add isassigned methods for reinterpretarray (#53663) Fixes #52925 Refs #51760 | 11 March 2024, 12:28:24 UTC |
57efee1 | Keno Fischer | 11 March 2024, 10:56:59 UTC | Correct `@NamedTuple` printing for non-identitifer keys (#53689) Before: ``` julia> typeof((;:var"#"=>1)) @NamedTuple{#::Int64} julia> @NamedTuple{#::Int64} ERROR: ParseError: # Error @ REPL[47]:2:2 @NamedTuple{#::Int64} #└ ── Expected `}` Stacktrace: [1] top-level scope @ none:1 ``` After: ``` julia> typeof((;:var"#"=>1)) @NamedTuple{var"#"::Int64} julia> @NamedTuple{var"#"::Int64} @NamedTuple{var"#"::Int64} ``` | 11 March 2024, 10:56:59 UTC |
1ba83f0 | Jishnu Bhattacharya | 11 March 2024, 06:50:16 UTC | LinAlg: fzeropreserving unit triangular broadcast preserves structure (#53648) On master ```julia julia> UU = UnitUpperTriangular(reshape([1:9;],3,3)) 3×3 UnitUpperTriangular{Int64, Matrix{Int64}}: 1 4 7 ⋅ 1 8 ⋅ ⋅ 1 julia> UU .* 2 3×3 Matrix{Int64}: 2 8 14 0 2 16 0 0 2 ``` This PR ```julia julia> UU .* 2 3×3 UpperTriangular{Int64, Matrix{Int64}}: 2 8 14 ⋅ 2 16 ⋅ ⋅ 2 ``` This also improves performance, as the `materialize` skips the structured zeros. ```julia julia> UU = UnitUpperTriangular(rand(100, 100)); julia> @btime $UU .* 2; 12.788 μs (3 allocations: 78.20 KiB) # master 7.821 μs (3 allocations: 78.20 KiB) # PR ``` | 11 March 2024, 06:50:16 UTC |
6e3044d | Jishnu Bhattacharya | 11 March 2024, 06:14:28 UTC | Fix linear indexing for ReshapedArray if the parent has offset axes (#41232) This PR fixes ```julia julia> r = reshape(Base.IdentityUnitRange(3:4), 2, 1) 2×1 reshape(::Base.IdentityUnitRange{UnitRange{Int64}}, 2, 1) with eltype Int64: 3 4 julia> collect(r) == r false julia> collect(r) 2×1 Matrix{Int64}: 3258125826116431922 3688512103538242609 ``` After this PR, ```julia julia> collect(r) 2×1 Matrix{Int64}: 3 4 ``` | 11 March 2024, 06:14:28 UTC |
26b3b5f | Ian Butterworth | 10 March 2024, 22:34:55 UTC | move precompile workload back from Base (#53679) | 10 March 2024, 22:34:55 UTC |
ccdf89e | Tim Holy | 10 March 2024, 21:15:20 UTC | Noteworthy differences: `exp.(A)` vs `exp(A)` (#53686) | 10 March 2024, 21:15:20 UTC |
30450c3 | Jeff Bezanson | 10 March 2024, 18:58:14 UTC | add error for inconsistent public/export declarations (#53664) Co-authored-by: Ian Butterworth <i.r.butterworth@gmail.com> Co-authored-by: Lilith Orion Hafner <lilithhafner@gmail.com> | 10 March 2024, 18:58:14 UTC |
5c7d244 | Gabriel Baraldi | 09 March 2024, 22:22:20 UTC | Bump CSL to 1.1.1 to fix libgomp bug (#53643) Resolves https://github.com/JuliaLang/julia/issues/53363 | 09 March 2024, 22:22:20 UTC |
39f141d | Jameson Nash | 09 March 2024, 18:41:47 UTC | increase max atomic size to 16 on 64-bit platforms (#42268) | 09 March 2024, 18:41:47 UTC |
e9c84c8 | Jameson Nash | 09 March 2024, 18:40:54 UTC | permit NamedTuple{<:Any, Union{}} to be created (#53516) | 09 March 2024, 18:40:54 UTC |
fc6c618 | Frames White | 09 March 2024, 18:36:14 UTC | Handle zero on arrays of unions of number types and missings (#53602) | 09 March 2024, 18:36:14 UTC |
c705a25 | Steven G. Johnson | 09 March 2024, 15:42:22 UTC | document exact BigInt determinants (#53579) New users are commonly surprised that determinants of integer matrices give an approximate floating-point answer (#40128), and are unaware that an exact algorithm is implemented for `BigInt` matrices (#40868). This PR comments on both of these facts in the `det` documentation. (At some point, we may want to mark `LinearAlgebra.det_bareiss` as `public`, and document it, but that can be done in a future PR.) | 09 March 2024, 15:42:22 UTC |
0d029ea | Ian Butterworth | 09 March 2024, 14:58:25 UTC | Load Pkg if not already to reinstate missing package add prompt (#52125) | 09 March 2024, 14:58:25 UTC |
6f8ba49 | Jishnu Bhattacharya | 09 March 2024, 13:51:03 UTC | Add methods to index identityUnitRange/Slice with another IdentityUnitRange (#41224) Adding these methods lets `OffsetArrays` define `getindex(::AbstractUnitRange, ::IdentityUnitRange)` without ambiguities. This is in the domain of sanctioned type-piracy, as the result is an offset range in general and cannot be represented correctly using `Base` types. Re: https://github.com/JuliaArrays/OffsetArrays.jl/pull/244 cc: @johnnychen94 Edit: this also fixes an indexing bug in `IdentityUntiRange`: master ```julia julia> r = Base.IdentityUnitRange(-3:3) Base.IdentityUnitRange(-3:3) julia> r[2] 2 julia> r[big(2)] -2 ``` Co-authored-by: jishnub <jishnub@users.noreply.github.com> | 09 March 2024, 13:51:03 UTC |
18a2e70 | Keno Fischer | 09 March 2024, 13:28:55 UTC | Fix bootstrap Base precompile in cross compile configuration (#53671) | 09 March 2024, 13:28:55 UTC |
53048b2 | Jishnu Bhattacharya | 09 March 2024, 10:44:25 UTC | Linalg: Reduce allocations in triangular tests (#53634) Reuses a pre-allocated matrix in tests to avoid allocating a fresh matrix in every call. | 09 March 2024, 10:44:25 UTC |
ed1d6a0 | Jameson Nash | 09 March 2024, 04:23:38 UTC | some fixes for precompile with threads Not sure what I was thinking before here. | 09 March 2024, 04:23:47 UTC |
bb35dc9 | Diogo Netto | 08 March 2024, 21:44:48 UTC | optimize remset marking (#52476) Tag the lowest bit of a pointer to indicate it's in the remset and enqueue objects in the remset for later processing when GC threads have woken up, instead of sequentially marking them all at once. In principle, this should allow for more parallelism in the mark phase, though I didn't benchmark it yet. | 08 March 2024, 21:44:48 UTC |
e618369 | Kristoffer Carlsson | 08 March 2024, 16:02:54 UTC | precompilepkgs: package in boths deps and weakdeps are in fact only weak (#53649) Missed when porting from Pkg. Fixes https://github.com/JuliaLang/Pkg.jl/issues/3834. | 08 March 2024, 16:02:54 UTC |
78351b5 | Ian Butterworth | 08 March 2024, 15:21:33 UTC | Use Base parallel precompilation to build stdlibs (#53598) Follow-on from https://github.com/JuliaLang/julia/pull/53403 This extends `Base.Precompilation.precompilepkgs` to take a list of configurations to precompile each package with, while parallelizing across all packages and configurations, and uses it to build the stdlib pkgimages. It simplifies the stdlib pkgimage build process but is (currently) dependent on having an accurately resolved Manifest.toml (Project.toml included to make the manifest easier to make). Any new/removed stdlibs or changes their dependencies will require updating the Manifest.toml. It's a bit chicken and egg, but should be manageable with manual editing of the Manifest.toml. In terms of speed improvement: MacOS aarch64 CI runner 6m19s before, 5m19 with this Note that CI builds will show the basic print with timing of each package, whereas local build will be the tidier fancy print without timings. Co-authored-by: Valentin Churavy <vchuravy@users.noreply.github.com> | 08 March 2024, 15:21:33 UTC |
a998082 | DilumAluthgeBot | 08 March 2024, 15:11:22 UTC | 🤖 [master] Bump the Pkg stdlib from 56c379045 to e0821116e (#53654) Stdlib: Pkg URL: https://github.com/JuliaLang/Pkg.jl.git Stdlib branch: master Julia branch: master Old commit: 56c379045 New commit: e0821116e 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/56c379045c8cf876b365c284a5b442f2dc9fc8af...e0821116e9f4364a2b37a77183e93d055a111f4d ``` $ git log --oneline 56c379045..e0821116e e0821116e re-enable Pkg precompilation (#3835) a2b8729ea Update version on master to 1.12 (#3832) ``` Co-authored-by: Dilum Aluthge <dilum@aluthge.com> | 08 March 2024, 15:11:22 UTC |
4dcf357 | Keno Fischer | 08 March 2024, 06:26:43 UTC | inference: Don't confuse frames in different interpreters (#53627) Diffractor's abstract interpreter sometimes needs to do side queries using the native interpreter. These are pushed onto the regular inference callstack in anticipation of a future where compiler plugins may want to recurse from the native interpreter back into the Diffractor abstract interpreter. However, this introduced a subtle challenge: When the native interpreter is looking at a frame that is currently on the inference stack, it would treat them as the same, incorrectly merging inference across the two abstract interpreters (which have different semantics and may not be confused). The caches for the two abstract interpreters were already different, so once things are inferred, there's no problem (likely because things were already inferred on the native interpreter), but if not, this could cause subtle and hard to debug problems. | 08 March 2024, 06:26:43 UTC |
321fb2c | Keno Fischer | 08 March 2024, 06:26:10 UTC | sroa: Fix incorrect scope counting (#53630) Sroa was incorrectly assuming that every :leave leaves exactly one scope. In reality, it leaves as many scopes as the corresponding :leave references. Fix that to fix #53521. | 08 March 2024, 06:26:10 UTC |
fa90883 | DilumAluthgeBot | 08 March 2024, 03:31:27 UTC | 🤖 [master] Bump the Pkg stdlib from e7d740ac8 to 56c379045 (#53637) Stdlib: Pkg URL: https://github.com/JuliaLang/Pkg.jl.git Stdlib branch: master Julia branch: master Old commit: e7d740ac8 New commit: 56c379045 Julia version: 1.12.0-DEV Pkg version: 1.11.0(Does not match) Bump invoked by: @KristofferC Powered by: [BumpStdlibs.jl](https://github.com/JuliaLang/BumpStdlibs.jl) Diff: https://github.com/JuliaLang/Pkg.jl/compare/e7d740ac82fa4c289bb58f9acb6e60eebb6d8a8e...56c379045c8cf876b365c284a5b442f2dc9fc8af ``` $ git log --oneline e7d740ac8..56c379045 56c379045 make `delayed_delete_dir` usage a bit more backwards compatible (#3830) 5a68d7953 restore unwrap UnstableIO in precompile (#3831) ``` Co-authored-by: Dilum Aluthge <dilum@aluthge.com> | 08 March 2024, 03:31:27 UTC |
f6504e4 | Shuhei Kadowaki | 08 March 2024, 00:42:49 UTC | add `construct_[post]domtree(::[IRCode|CFG])` interfaces (#53638) We currently have `construct_[post]domtree(::Vector{BasicBlock})` only. The higher level interfaces are often convenient. | 08 March 2024, 00:42:49 UTC |
d45581c | Shuhei Kadowaki | 07 March 2024, 16:15:35 UTC | inlining: use method match signature for union-spliting (#53600) In cases where the results of constant inference, like concrete-eval, are used for union-split inlining, `isa`-blocks are generated using the `result.edge.specTypes` stored within each `result`. However, it's been found that the `edge` returned by abstract interpretation may have been widened by the new `@nospecializeinfer`, which can result in invalid union-splitting. To address this problem, this commit tweaks the inlining algorithm so that it performs union-split inlining using the original signatures that abstract interpretation used for union-split inference, by using `match::MethodMatch`. - fixes #53590 | 07 March 2024, 16:15:35 UTC |
a182880 | Frames White | 07 March 2024, 15:09:12 UTC | use isempty in tests (#53617) This was not being used as it didn't have fancy printing when it failed. But that was fixed in https://github.com/JuliaLang/julia/pull/30721 so we can do this now | 07 March 2024, 15:09:12 UTC |
cf5f163 | Phillip Alday | 07 March 2024, 15:07:59 UTC | typo fix in scoped values docs (#53629) | 07 March 2024, 15:07:59 UTC |
56f1c8a | N5N3 | 06 March 2024, 21:55:49 UTC | typeintersect: fix `UnionAll` unaliasing bug caused by innervars. (#53553) typeintersect: fix `UnionAll` unaliasing bug caused by innervars. | 06 March 2024, 21:55:49 UTC |
6335386 | Valentin Churavy | 06 March 2024, 15:04:22 UTC | Unexport with, at_with, and ScopedValue from Base (#53004) fixes #52535 --------- Co-authored-by: Kristoffer Carlsson <kcarlsson89@gmail.com> | 06 March 2024, 15:04:22 UTC |
02f27c2 | N5N3 | 02 March 2024, 07:29:18 UTC | typeintersect: more organized innervar wrapping | 06 March 2024, 14:11:04 UTC |
a556af2 | N5N3 | 02 March 2024, 05:27:21 UTC | typeintersect: fuse `unalias_unionall` And ensures all innervar get checked. | 06 March 2024, 11:59:14 UTC |
90d84d4 | Shuhei Kadowaki | 06 March 2024, 00:32:31 UTC | cleanups on `src_inlining_policy` (#53599) - fixed the check with `src_inlining_policy` in typeinfer.jl - removed the `SemiConcreteResult` handling, which is no longer needed | 06 March 2024, 00:32:31 UTC |
fb71a5d | DilumAluthgeBot | 05 March 2024, 21:32:17 UTC | 🤖 [master] Bump the Pkg stdlib from 48eea8dbd to e7d740ac8 (#53610) Stdlib: Pkg URL: https://github.com/JuliaLang/Pkg.jl.git Stdlib branch: master Julia branch: master Old commit: 48eea8dbd New commit: e7d740ac8 Julia version: 1.12.0-DEV Pkg version: 1.11.0(Does not match) Bump invoked by: @KristofferC Powered by: [BumpStdlibs.jl](https://github.com/JuliaLang/BumpStdlibs.jl) Diff: https://github.com/JuliaLang/Pkg.jl/compare/48eea8dbd7b651cdc932b909c1b718bb9c3f94f4...e7d740ac82fa4c289bb58f9acb6e60eebb6d8a8e ``` $ git log --oneline 48eea8dbd..e7d740ac8 e7d740ac8 move to using Base parallel precompile (#3820) d1f91fd37 fix relative paths in test project for `[sources]` (#3825) 5c73d7f3c Support a `[sources]` section in Project.toml for specifying paths and repo locations for dependencies (#3783) 0d9aa51a9 do not use UnstableIO for subprocess (in e.g. Pkg.test) (#3823) ``` Co-authored-by: Dilum Aluthge <dilum@aluthge.com> | 05 March 2024, 21:32:17 UTC |
427da5c | Kristoffer Carlsson | 05 March 2024, 17:23:08 UTC | fix error path in `precompilepkgs` (#53606) this was accidentally left when porting this from Pkg.jl | 05 March 2024, 17:23:08 UTC |
58291db | Jameson Nash | 05 March 2024, 15:00:15 UTC | codegen: optimize const fields of mutable objects (#53484) For example, we seek to eliminate the gc frame from this function, as observed here: ```julia julia> code_llvm((BitSet,), raw=true) do x; r = x.bits; GC.safepoint(); @inbounds r[1]; end ; Function Signature: var"https://github.com/JuliaLang/julia/issues/3"(Base.BitSet) ; @ REPL[1]:1 within `https://github.com/JuliaLang/julia/issues/3` define swiftcc i64 @"julia_#3_494"(ptr nonnull swiftself %pgcstack, ptr noundef nonnull align 8 dereferenceable(16) %"x::BitSet") #0 !dbg !5 { top: call void @llvm.dbg.declare(metadata ptr %"x::BitSet", metadata !21, metadata !DIExpression()), !dbg !22 %ptls_field = getelementptr inbounds ptr, ptr %pgcstack, i64 2 %ptls_load = load ptr, ptr %ptls_field, align 8, !tbaa !23 %0 = getelementptr inbounds ptr, ptr %ptls_load, i64 2 %safepoint = load ptr, ptr %0, align 8, !tbaa !27 fence syncscope("singlethread") seq_cst %1 = load volatile i64, ptr %safepoint, align 8, !dbg !22 fence syncscope("singlethread") seq_cst ; ┌ @ Base.jl:49 within `getproperty` %"x::BitSet.bits" = load atomic ptr, ptr %"x::BitSet" unordered, align 8, !dbg !29, !tbaa !27, !alias.scope !33, !noalias !36, !nonnull !11, !dereferenceable !41, !align !42 ; └ ; ┌ @ gcutils.jl:253 within `safepoint` %ptls_load4 = load ptr, ptr %ptls_field, align 8, !dbg !43, !tbaa !23 %2 = getelementptr inbounds ptr, ptr %ptls_load4, i64 2, !dbg !43 %safepoint5 = load ptr, ptr %2, align 8, !dbg !43, !tbaa !27 fence syncscope("singlethread") seq_cst, !dbg !43 %3 = load volatile i64, ptr %safepoint5, align 8, !dbg !43 fence syncscope("singlethread") seq_cst, !dbg !43 ; └ ; ┌ @ essentials.jl:892 within `getindex` %4 = load ptr, ptr %"x::BitSet.bits", align 8, !dbg !46, !tbaa !49, !alias.scope !52, !noalias !53 %5 = load i64, ptr %4, align 8, !dbg !46, !tbaa !54, !alias.scope !57, !noalias !58 ret i64 %5, !dbg !46 ; └ } ``` | 05 March 2024, 15:00:15 UTC |
3df016d | Eric Hanson | 05 March 2024, 13:49:02 UTC | Semver: specify VersionNumber's follow v2-rc2 specifically (#53538) Since v2 has changed from v2-rc2 by saying build numbers MUST not be taken into account in precedence. I don't think changing VersionNumber's ordering in a minor release of Julia is acceptable, but since the semver landing page is now v2 rather than v2-rc2, we should update the link. closes https://github.com/JuliaLang/julia/issues/53502 | 05 March 2024, 13:49:02 UTC |
b50344f | inky | 05 March 2024, 10:00:14 UTC | build: remove extra .a file (#53596) fix #53569 | 05 March 2024, 10:00:14 UTC |
d3ee213 | Kristoffer Carlsson | 05 March 2024, 09:59:32 UTC | add back `unsafe_convert` to pointer for arrays (#53589) This caused a pretty big breakage in the ecosystem (~50 packages) and is according to Jameson "Too breaking for no necessary reason". So let's add it back. --------- Co-authored-by: Jameson Nash <vtjnash@gmail.com> | 05 March 2024, 09:59:32 UTC |