27fa5de | Daniel Karrasch | 07 September 2023, 14:23:49 UTC | Introduce cholesky and qr hooks for wrapped sparse matrices (#51220) This is a follow-up to #51161. It introduces one level in the promotion pipeline which allows to call out-of-place versions of `cholesky` and `qr` for arguments whose `similar` copy yields a `SparseMatrixCSC`. | 07 September 2023, 14:23:49 UTC |
1305f40 | Kristoffer Carlsson | 07 September 2023, 09:13:32 UTC | call some Pkg functions with invokelatest for BugReporting (#51219) When Pkg is not in the sysimage, this causes world age errors. | 07 September 2023, 09:13:32 UTC |
aeae142 | Cody Tapscott | 06 September 2023, 19:02:19 UTC | slot2ssa: Fix spurious φᶜ edges (#51199) The unreachable here seems to be caused by the fact that (as of #50943) we re-use a more narrow type from Inference that correctly ignores these edges, but when inserting the `φᶜ` node in `slot2reg` we were including extra edges that never get exercised at runtime. I'm not sure _why_ this causes us to hit an unreachable, since the narrow type from inference is technically still valid (the catch block will never observe these spurious assignments at runtime), but this seems to fix the issue and anyway improves the quality of the IRCode generated by `slot2ssa`. Resolves #51159 | 06 September 2023, 19:02:19 UTC |
a5b2197 | Shuhei Kadowaki | 06 September 2023, 12:56:36 UTC | optimizer: skip post-opt IPO analysis when effects are precise already (#51188) | 06 September 2023, 12:56:36 UTC |
c1153d0 | Cody Tapscott | 06 September 2023, 11:32:04 UTC | Tweak tests | 06 September 2023, 11:32:04 UTC |
f3d50b7 | Colin Caine | 06 September 2023, 10:36:31 UTC | Fix extended help hint to give full line to enter (#51193) Before this commit, the REPL would say: Extended help is available with `??` Now it will give the full line required to display extended help: Extended help is available with `??LazyString` I believe that this was the intended function of the code that's already here, because currently the `extended_help_on` constant is never used. I've resisted the urge to pass the `line` through to `trimdocs` without a global because I don't know why @timholy did it that way to start with and because the smaller change makes this PR easier to review. | 06 September 2023, 10:36:31 UTC |
3d88550 | Gabriel Baraldi | 06 September 2023, 10:35:01 UTC | Wait for other threads to finish compiling before exiting (#51213) This avoids a crashes where we run the destructors because C++ is fun and runs destructors before thread exit. | 06 September 2023, 10:35:01 UTC |
f9d1767 | Jameson Nash | 06 September 2023, 08:39:44 UTC | [FileWatching] clarify mkpidlock docstring (#51214) | 06 September 2023, 08:39:44 UTC |
f066500 | Lilith Orion Hafner | 06 September 2023, 06:03:51 UTC | Fix typos in JuliaSyntax.mk (#51210) before ``` x@x julia % make -C deps fastcheck-JuliaSyntax make: *** No rule to make target `fastcheck-JuliaSyntax'. Stop. x@x julia % make -C deps fastcheck-JuliSyntax make: *** No rule to make target `compile-JuliSyntax', needed by `check-JuliSyntax'. Stop. ``` after ``` x@x julia % make -C deps fastcheck-JuliaSyntax make: Nothing to be done for `fastcheck-JuliaSyntax'. ``` Co-authored-by: Lilith Hafner <Lilith.Hafner@gmail.com> | 06 September 2023, 06:03:51 UTC |
14c5f3d | Lilith Orion Hafner | 06 September 2023, 05:52:36 UTC | Remove unused io argument to `insert_hlines` (#51182) | 06 September 2023, 05:52:36 UTC |
c84324f | Jakob Nybo Nissen | 05 September 2023, 19:16:26 UTC | Bugfix: Convert numbers to Int in extendedterminfo (#51195) Before, in the extendedterminfo function in terminfo.jl, if the numbers array was nonempty, the function would fail as a `UInt32` cannot be implicitly converted to the output `Int` type. Do this conversion explicitly. Closes #51190 | 05 September 2023, 19:16:26 UTC |
ba16663 | Lars Göttgens | 05 September 2023, 18:45:15 UTC | Revert "Standardize the entry-point for Julia execution (#50974)" (#51196) This reverts commit 8e14322b5aa344639dd86bf9eabb84afe831fcba. As proposed by @Seelengrab in https://github.com/JuliaLang/julia/pull/50974#issuecomment-1706641240. This is not meant to be a permanent revert of #50974, but a possibility to have working PkgEval and nightly testing for packages (https://github.com/julia-actions/julia-buildpkg `@latest` doesn't work with it) until a solution to the discussion there has been decided on. | 05 September 2023, 18:45:15 UTC |
78e0ca3 | Shuhei Kadowaki | 05 September 2023, 16:10:12 UTC | optimizer: fix the `all_rettypes_consistent` case of post-opt analysis (#51187) The case does not seem to be functional, although it looks like we never hit it currently. We should have added test cases for this, so WIP until we come up with some. | 05 September 2023, 16:10:12 UTC |
431bb81 | Cody Tapscott | 05 September 2023, 15:45:34 UTC | Remove unused variable from `compute_trycatch` This variable is currently always zero. | 05 September 2023, 15:47:34 UTC |
354c367 | Daniel Karrasch | 05 September 2023, 15:39:45 UTC | Allow SparseArrays to catch `lu(::WrappedSparseMatrix)` (#51161) Over the `AbstractMatrix` relaxation in v1.9, we missed a potential indirection for wrapped sparse matrices. Instead, by default, a `similar` copy is created (hence a sparse matrix) and then `lu!` with a pivot argument is called. Such a method, however, does not exist in SparseArrays.jl, which means that the `generic_lufact!` method gets called, which is probably really bad performance-wise, due to heavy reading and writing into the sparse matrix. This PR introduces one more level at which SparseArrays.jl (and perhaps other external packages) may interfere and redirect to their own implementations, in-place or out-of-place. | 05 September 2023, 15:39:45 UTC |
ee50411 | Cody Tapscott | 05 September 2023, 15:31:34 UTC | slot2ssa: Fix spurious φᶜ edges The unreachable here seems to be caused by the fact that (as of #50299) we re-use a more narrow type from Inference that correctly ignores these edges, but when inserting the `φᶜ` node in `slot2reg` we were including extra edges that never get exercised at runtime. I'm not sure _why_ this causes us to hit an unreachable, since the narrow type from inference is technically still valid (the catch block will never observe these spurious assignments at runtime), but this seems to fix the issue and anyway improves the quality of the IRCode generated by `slot2ssa`. Resolves #51159 | 05 September 2023, 15:36:52 UTC |
933ea1d | Benjamin Lorenz | 05 September 2023, 14:42:39 UTC | build: don't default to m(arch|cpu|tune)=native when cross-compiling (#51172) | 05 September 2023, 14:42:39 UTC |
00ca93c | Lilith Orion Hafner | 05 September 2023, 14:05:05 UTC | Put back `@inline` on unsafe_getindex (#51160) Fixup for #50467 | 05 September 2023, 14:05:05 UTC |
fbf73f4 | DilumAluthgeBot | 05 September 2023, 11:21:54 UTC | 🤖 [master] Bump the Pkg stdlib from 047734e4c to f570abd39 (#51186) Stdlib: Pkg URL: https://github.com/JuliaLang/Pkg.jl.git Stdlib branch: master Julia branch: master Old commit: 047734e4c New commit: f570abd39 Julia version: 1.11.0-DEV Pkg version: 1.11.0 Bump invoked by: @KristofferC Powered by: [BumpStdlibs.jl](https://github.com/JuliaLang/BumpStdlibs.jl) Diff: https://github.com/JuliaLang/Pkg.jl/compare/047734e4c7e2b5e99622b4803ec4ad0d49f1d1d3...f570abd39d0a6ab483e658cf65c69af59a152314 ``` $ git log --oneline 047734e4c..f570abd39 f570abd39 tweak how Pkg is loaded for precompiling when testing (#3606) d3bd38b90 sort compat entries in `pkg> compat` (#3605) 5e07cfed0 Ensure that `string(::VersionSpec)` is compatible with `semver_spec()` (#3580) 6bed7c41a Clarify handling of LOAD_PATH in docstring and REPL help (#3589) 5261b3be7 tweak test dep docs (#3574) 72b430d50 status: expand 2 symbol upgrade note to highlight *may* be upgradable (#3576) b32db473d precompile: show ext parent in output report (#3603) ``` Co-authored-by: Dilum Aluthge <dilum@aluthge.com> | 05 September 2023, 11:21:54 UTC |
fc2f997 | Shuhei Kadowaki | 05 September 2023, 08:57:09 UTC | compiler: add `show` methods for `InferenceState` and `CachedMethodTable` (#51170) Both `InferenceState` and `CachedMethodTable` contain caches to store inference results, making their default `show` methods excessively verbose. This commit introduces specialized `show` methods designed to display only the most essential information. | 05 September 2023, 08:57:09 UTC |
1829cee | Keno Fischer | 05 September 2023, 05:43:00 UTC | optimizer: Do not run if we know the function is ConstABI eligible (#51143) If we can determine that a function is sufficiently pure and returns a constant, we have special ABI that lets us throw away the code for it and just return the constant. However, we were still going through all the steps of actually computing the code, including running the optimizer on it, compressing it in preparation for caching, etc. We can just stop doing that and bypass the optimizer entirely. The actual change to do this is pretty tiny, but there's some unexpected fallout which this needs to cleanup: 1. Various tests expect code_* queries of things inferred to ConstABI to still return reasonable code. Fix this by manually emitting a ReturnNode at the end of inference if the caller is a reflection function. 2. This kinda wreaks havoc on the EscapeAnalysis tests, which work by using a side-effect of the optimizer, but a lot of the functions are ConstABI eligible, so the optimizer doesn't run any more. Fortunately, I'm in the middle of looking at overhauling EscapeAnalysis, so I'll have some chance to figure out how to change the test system to actually do this properly, rather than exfiltrating side effects. That said, since EscapeAnalysis is not in the default pipeline, I don't think we should hold the perf improvement until that is done. Benchmarked to be about 10% faster locally, but we'll see what nanosoldier thinks. --------- Co-authored-by: Shuhei Kadowaki <40514306+aviatesk@users.noreply.github.com> | 05 September 2023, 05:43:00 UTC |
8e14322 | Keno Fischer | 03 September 2023, 15:55:38 UTC | Standardize the entry-point for Julia execution (#50974) This is a bit of a straw-man proposal (though I think mergable if people agree) to standardize the execution entrypoint for Julia scripts. I think there's at least four different ways that people might run a script: - As `julia main.jl` - As a PkgCompiler sysimage, then calling the main entry point - As a PkgCompiler "app", with the magic `julia_main` function - As a StaticCompiler product with an explicit entrypoint specified on the API. The main problem I have with all of these variants is that they're all different and it's kind of a pain to move between them. Here I propose that we standardize on `Main.main(ARGS)` as the entrypoint for all scripts. Downstream from that proposal, this PR then makes the following changes: 1. If a system image has an existing `Main.main`, that is the entry point for `julia -Jsysimage.so`. 2. If not, and the sysimage has a REPL, we call REPL.main (we could handle this by defaulting `Main.main` to a weak import of `REPL.main`, but for the purpose of this PR, it's an explicit fallback. That said, I do want to emhpasize the direction of moving the REPL to be "just another app". 3. If the REPL code is called and passed a script file, the REPL executes any newly defined Main.main after loading the script file. As a result, `julia` behaves the same as if we had generated a new system image after loading `main.jl` and then running julia with that system image. The further downstream implication of this is that I'd like to get rid of the distinction between PkgCompiler apps and system images. An app is simply a system image with a `Main.main` function defined (note that currently PkgCompiler uses `julia_main` instead). --------- Co-authored-by: Martijn Visser <mgvisser@gmail.com> | 03 September 2023, 15:55:38 UTC |
0cc0dbd | Diogo Netto | 03 September 2023, 12:26:07 UTC | Metric for number of live bytes in the pool allocator (#51151) We want to study what is the degree of fragmentation we have in the pool allocator specifically. `pool_live_bytes` / `(live pages * GC_PAGE_SZ)` should provide an estimate of that. | 03 September 2023, 12:26:07 UTC |
70000ac | Keno Fischer | 03 September 2023, 02:15:42 UTC | sysimg: Allow loading a system image that is already present in memory (#51121) I've written this code probably three times at this point, but for some reason it never made it into a PR. This allows loading a system image that has already been loaded into memory. This happen when wanting to distribute a static or mostly-static binary of julia code where the system image (and optionally other libraries like libjulia, etc.) are linked directly into the main executable. It is also useful for deployment to environments that do not have (or have incomplete) support for dynamic linking (e.g. wasm or embedded). | 03 September 2023, 02:15:42 UTC |
da86735 | Jameson Nash | 03 September 2023, 02:12:28 UTC | fix debug typo in "add missing invoke edge for nospecialize targets (#51036)" (#51153) Causes `matches` to get replaced with `MethodMatch` instead, which then later will fail to match with the expected value. Fixes #51146 Co-authored-by: Dilum Aluthge <dilum@aluthge.com> | 03 September 2023, 02:12:28 UTC |
d949bb4 | Jameson Nash | 03 September 2023, 02:11:55 UTC | broadcast: use recursion rather than ntuple to map over a tuple (#51154) Inference seems to have trouble with the anonymous function version, so go back to the recursive version. Fixes #51129 Probably also fixes #50859 | 03 September 2023, 02:11:55 UTC |
6c1168a | Keno Fischer | 02 September 2023, 10:10:28 UTC | Document and clean up CodegenParams (#51140) - Add documentation to CodegenParams fields per request in #51123 - Fix compare_cgparams which hadn't been updated for recent additions - Remove unused and untested generic_context The latter was a codegen option that I added, but eventually ended up not using anywhere, so remove it for the time being. That said, I may end up in a situation where I need it again in the very near future, so I may end up eating my words here, but if I need to put it back, I'll include a test at least ;). | 02 September 2023, 10:10:28 UTC |
ec2f1d3 | Neven Sajko | 01 September 2023, 19:52:47 UTC | fix rawbigints (#51122) Using `Ptr` like that was incorrect. Among other issues, a `Ptr` doesn't own the data it points to, so hold a `String` instead. Fixes #51111 | 01 September 2023, 19:52:47 UTC |
4954af9 | Keno Fischer | 01 September 2023, 19:52:14 UTC | Make OffsetArray maximum! not as type unstable (#50447) The change in #50429 moves around some dispatch boundaries and pushes the allocations in the offsetarrays `maximum!` test over the limit. The implementation of that code is massively type unstable. Somewhat, ironically, the whole original point of that test was to test that the implementation was not type-unstable (#28941), so actually opt our OffsetArrays implementation into the interface that's supposed to guarantee that. If this PR is fine here, I'll submit the same upstream to avoid diverging the implementations too much. Co-authored-by: Jameson Nash <vtjnash@gmail.com> | 01 September 2023, 19:52:14 UTC |
a173010 | DilumAluthgeBot | 01 September 2023, 18:50:41 UTC | 🤖 [master] Bump the SparseArrays stdlib from 54f4b39 to 4e6776a (#51142) Stdlib: SparseArrays URL: https://github.com/JuliaSparse/SparseArrays.jl.git Stdlib branch: main Julia branch: master Old commit: 54f4b39 New commit: 4e6776a Julia version: 1.11.0-DEV SparseArrays version: 1.11.0 Bump invoked by: @KristofferC Powered by: [BumpStdlibs.jl](https://github.com/JuliaLang/BumpStdlibs.jl) Diff: https://github.com/JuliaSparse/SparseArrays.jl/compare/54f4b39d1cd34a908ff4fdfcd052a38fe23f6555...4e6776a825f2a26c3c580f9b77ba230a6598d7dd ``` $ git log --oneline 54f4b39..4e6776a 4e6776a faster cat performance (#432) ``` Co-authored-by: Dilum Aluthge <dilum@aluthge.com> | 01 September 2023, 18:50:41 UTC |
3527213 | Jameson Nash | 01 September 2023, 18:50:26 UTC | simplify call to promote_eltype with repeated elements (#51135) Helps to short-circuit calls to large splat calls, since those have all the same type elements. Fixes #51011 | 01 September 2023, 18:50:26 UTC |
91b8c9b | Cody Tapscott | 01 September 2023, 18:46:25 UTC | Add `JL_DLLIMPORT` to `small_typeof` declaration (#50892) Resolves #50714 | 01 September 2023, 18:46:25 UTC |
631b5c3 | Jameson Nash | 01 September 2023, 14:14:08 UTC | inference: fix bad effects for recursion (#51092) Effects are not converged, so they need to always be correct, and not a bestguess, even during recursion. This could be refined, but we don't really need to, and it might be unnecessarily costly to do so. | 01 September 2023, 14:14:08 UTC |
befe6f8 | Jameson Nash | 01 September 2023, 14:13:39 UTC | reflection: make error message clearer when using methods wrong (#51134) Not really a functional change, but just improving the error message here to be consistent with other code reflection calls here. Closes #49982 | 01 September 2023, 14:13:39 UTC |
0f4a54c | Keno Fischer | 01 September 2023, 04:29:10 UTC | Add a codegen option to disable use of jlplts (#51123) Alternative to https://github.com/JuliaLang/julia/pull/51108 with the same objectives. | 01 September 2023, 04:29:10 UTC |
7481fbe | Keno Fischer | 01 September 2023, 04:28:38 UTC | Add options to jl_dump_native (#51124) I am attempting to more or less unify the codepaths between sysimage-like binary emissions and StaticCompiler-like binary emissions (the latter currently uses a GPUCompiler-derived pipeline), with a view towards enabling things that are somewhat in the middle (may have parts, but not all of the runtime, etc.). To that end, add a parameters struct to jl_dump_native that will likely grow over time, but for now, the primary thing it controls is whether or not to emit the sysimage "metadata" section. | 01 September 2023, 04:28:38 UTC |
77439e5 | Shuhei Kadowaki | 31 August 2023, 23:37:19 UTC | make `code_llvm` work with OC with tuple input types (#51128) | 31 August 2023, 23:37:19 UTC |
69392ee | Shuhei Kadowaki | 31 August 2023, 23:35:43 UTC | make `code_llvm` work with custom lookup function (#51127) | 31 August 2023, 23:35:43 UTC |
36fc9ec | Nathan Daly | 31 August 2023, 23:07:41 UTC | Add devdocs for how to set up & run the LLVM tests locally (#51094) I had forgotten the command to install the llvm dev tools so that I could run the tests, and so I documented it this time, once I figured it out. | 31 August 2023, 23:07:41 UTC |
e0f5247 | Lilith Orion Hafner | 31 August 2023, 21:40:36 UTC | Refactor rounding (including bugfixes) and document API (#50812) | 31 August 2023, 21:40:36 UTC |
a3e2316 | Jeff Bezanson | 31 August 2023, 18:57:50 UTC | inference: type bound error due to free typevar in sparam env (#51013) Fix #50709 This issue *appears* fixed on master due to #50432, which simply removed the error. This fixes the underlying cause, which is that we sometimes return typevars in the environment from intersection that have free vars in their bounds. I think it's reasonable to just widen these aggressively, since we usually cannot do much with these kinds of unknown static parameters anyway. | 31 August 2023, 18:57:50 UTC |
15f7db8 | Jameson Nash | 28 August 2023, 20:55:48 UTC | inference: fix bad effects for recursion Effects are not converged, so they need to always be correct, and not a bestguess, even during recursion. | 31 August 2023, 15:46:01 UTC |
00c6ea7 | Jameson Nash | 30 August 2023, 21:40:17 UTC | inference: teach tfunc that typeof tuples must have fixed lengths | 31 August 2023, 15:44:59 UTC |
8307dbf | Jameson Nash | 30 August 2023, 16:23:08 UTC | improve effects of typejoin and simplify implementation of Tuple _compute_eltype - Repair definition of Core._foldable_meta - Handle Vararg better in eltype - Mark has_free_typevars ccall as total - Mark tailjoin foldable explicitly also, since it calls typejoin recursively - Handle non-constructable Tuple{:a,2} and Tuple{T} types - Prepare special code for inlining (improves generic effects too) - Only optimize typejoin in concrete eval, not needlessly generating specializations otherwise on specific types The compiler seems better able to deal with this version of _compute_eltype, and it does not seem that necessary to form the IdSet. | 31 August 2023, 15:44:59 UTC |
479743e | Elliot Saba | 31 August 2023, 15:32:56 UTC | Consistently report sysimg size limits (#51119) We used to be reporting the maximum system image size in hexadecimal, while reporting the image that was just built in decimal. This is a recipe for confusion when the size limit contains no blatantly hexadecimal characters. This PR addresses the issue by consistently printing out both values in hexadecimal (making this more obvious by prefixing the numbers with `0x`). In order to use `PRIxPTR` in both format strings, I have cast the current image size to `uintptr_t` from `intmax_t`, which should be safe in all situations. Co-authored-by: Dilum Aluthge <dilum@aluthge.com> | 31 August 2023, 15:32:56 UTC |
e118207 | Keno Fischer | 31 August 2023, 07:08:32 UTC | Add a codegen option to disable use of jlplts Alternative to #51108. | 31 August 2023, 07:10:20 UTC |
a355403 | Keno Fischer | 31 August 2023, 06:41:11 UTC | Annotate fieldnames for default cgparams [NFC] | 31 August 2023, 07:10:14 UTC |
95af5a0 | Keno Fischer | 31 August 2023, 03:12:40 UTC | Refine effects based on optimizer-derived information (#50805) The optimizer may be able to derive information that is not available to inference. For example, it may SROA a mutable value to derive additional constant information. Additionally, some effects, like :consistent are path-dependent and should ideally be scanned once all optimizations are done. Now, there is a bit of a complication that we have generally so far taken the position that the optimizer may do non-IPO-safe optimizations, although in practice we never actually implemented any. This was a sensible choice, because we weren't really doing anything with the post-optimized IR other than feeding it into codegen anyway. However, with irinterp and this change, there's now two consumers of IPO-safely optimized IR. I do still think we may at some point want to run passes that allow IPO-unsafe optimizations, but we can always add them at the end of the pipeline. With these changes, the effect analysis is a lot more precise. For example, we can now derive :consistent for these functions: ``` function f1(b) if Base.inferencebarrier(b) error() end return b end function f3(x) @fastmath sqrt(x) return x end ``` and we can derive `:nothrow` for this function: ``` function f2() if Ref(false)[] error() end return true end ``` | 31 August 2023, 03:12:40 UTC |
81b5a9e | Shuhei Kadowaki | 31 August 2023, 02:19:40 UTC | allow `code_[llvm|native]` to take custom `params::CodegenParams` (#51109) | 31 August 2023, 02:19:40 UTC |
c659011 | Cody Tapscott | 31 August 2023, 01:58:57 UTC | Workaround upstream FreeBSD issue #272992 (#51114) ELF doesn't handle WEAK symbols dynamically the way it handles them statically. Looking up overloaded WEAK symbols via a library-specific handle will often give you the empty stub (in `libc.so.7` in this case) instead of the strong implementation elsewhere (`ld-elf.so.1` here). Even after the [upstream fix](https://cgit.freebsd.org/src/commit/?id=21a52f99440c9bec7679f3b0c5c9d888901c3694), `dlsym`, `dladdr` and a ton of other symbols still have stubs with no trampoline in FreeBSD's libc: https://cgit.freebsd.org/src/tree/lib/libc/gen/dlfcn.c?id=21a52f99440c9bec7679f3b0c5c9d888901c3694 Thankfully `dl_iterate_phdr` appears to be the only function that we directly `ccall` from Julia's Libdl so we can leave this fix incomplete for now. Resolves #50846. | 31 August 2023, 01:58:57 UTC |
743ed16 | Gabriel Baraldi | 31 August 2023, 00:40:44 UTC | Make threadcall a bit more threadsafe (#51040) Threadcall currently assumes that the IO loop gets run in the same thread that spawned it. While I wish to supercede threadcall by something that uses tasks + adopt_thread. For now lets make it a better. ```julia julia> function foo() Threads.@threads for i = 1:8 ptr = @threadcall(:jl_malloc, Ptr{Cint}, (Csize_t,), sizeof(Cint)) @test ptr != C_NULL unsafe_store!(ptr, 3) @test unsafe_load(ptr) == 3 ptr = @threadcall(:jl_realloc, Ptr{Cint}, (Ptr{Cint}, Csize_t,), ptr, 2 * sizeof(Cint)) @test ptr != C_NULL unsafe_store!(ptr, 4, 2) @test unsafe_load(ptr, 1) == 3 @test unsafe_load(ptr, 2) == 4 @threadcall(:jl_free, Cvoid, (Ptr{Cint},), ptr) end end foo (generic function with 1 method) julia> foo() ``` This crashes julia currently. | 31 August 2023, 00:40:44 UTC |
e3e1f1e | Gabriel Baraldi | 31 August 2023, 00:31:02 UTC | Swap Base.Event to use a ThreadSynchronizer (#51093) and make some of its other fields const. | 31 August 2023, 00:31:02 UTC |
6f026e3 | Lilith Orion Hafner | 30 August 2023, 22:06:58 UTC | Refactor scalar range getindex (#50467) | 30 August 2023, 22:06:58 UTC |
fb76136 | Lilith Orion Hafner | 30 August 2023, 19:38:21 UTC | Fix edge cases where inexact conversions to UInt don't throw (#51095) | 30 August 2023, 19:38:21 UTC |
8a5a872 | Gabriel Baraldi | 30 August 2023, 18:34:01 UTC | Remove spurious iostream in codegen (#51104) | 30 August 2023, 18:34:01 UTC |
476572f | Jameson Nash | 30 August 2023, 18:32:23 UTC | makefile option to generate better code (#51105) Disables an "optimization" for -O2 and higher. We already set this for JIT code (NO TOUCHIE!), and we should probably set this for all other code too. It is common otherwise for stacktraces to have the wrong line number for errors. | 30 August 2023, 18:32:23 UTC |
197180d | Yi Lin | 30 August 2023, 14:03:28 UTC | Add GC write barrier in jl_reserve_excstack (#51096) `jl_push_excstack` and `jl_reserve_excstack` take an address to the field `excstack` in `jl_task_t`, and may update the field. In such a case, a GC write barrier is needed. This PR adds the missing write barrier. Note: I am not sure if this affects the correctness of Julia GC or not. This could be special cased in the GC code, as the task is always rooted. However, generally if the task is in the old generation, it does not have to be scanned even if it is a root. A write barrier is needed to make sure the GC is aware of the update. | 30 August 2023, 14:03:28 UTC |
f9792b4 | Jishnu Bhattacharya | 30 August 2023, 13:56:13 UTC | docs: simplify array creation in `sortslices` docstring (#51101) Using concatenation instead of `permutedims(reshape(...))` makes the construction easier to read and understand. | 30 August 2023, 13:56:13 UTC |
374563e | Aravindh Krishnamoorthy | 30 August 2023, 07:57:06 UTC | Speed up `logdet` for diagonal and triangular matrices (#50950) | 30 August 2023, 07:57:06 UTC |
a271349 | Jishnu Bhattacharya | 30 August 2023, 07:41:51 UTC | Simplify the docstring for Diagonal (#51097) | 30 August 2023, 07:41:51 UTC |
4e1c965 | Jishnu Bhattacharya | 30 August 2023, 07:38:15 UTC | Remove size(::StructuredMatrix, d) specializations (#51083) | 30 August 2023, 07:38:15 UTC |
a84882e | Shuhei Kadowaki | 29 August 2023, 08:11:57 UTC | effects: taint overlay-ed method's `:nonoverlayed` effect bit (#51078) | 29 August 2023, 08:11:57 UTC |
8ace9c5 | Shuhei Kadowaki | 29 August 2023, 00:49:40 UTC | reflection: fix up handling of `Core.Compile.findall` (#51081) `Core.Compiler.findall(sig, ::MethodTableView)` may return `nothing` but never returns `missing`. Also fixes up the docstring of `Core.Compiler.findsup`. | 29 August 2023, 00:49:40 UTC |
0b29986 | Cody Tapscott | 28 August 2023, 21:15:45 UTC | Always rewrite GotoIfNot with unreachable branches (#51062) This resolves a regression introduced in https://github.com/JuliaLang/julia/pull/50943#issuecomment-1694198019 That PR requires the Goto/GotoIfNot statements of the IR to correspond 1-1 (in terms of reachability) to the information we get from inference. To make that happen, we have to unconditionally re-write control flow to match the branches that inference ended up actually exploring. The problem is that we were choosing not to do this if the GotoIfNot condition seemed to be maybe-non-Boolean. Thankfully, it turns out that check is unnecessary because Inference when unwrapping conditionals does not consider "true or non-Bool" etc. If it did, we'd instead have to re-write these branches as a `typeassert; goto` to encode the reachability | 28 August 2023, 21:15:45 UTC |
8dc69aa | Zentrik | 28 August 2023, 20:36:56 UTC | Fix typo in `postdominates` docstring (#51089) | 28 August 2023, 20:36:56 UTC |
1d56cdf | Shuhei Kadowaki | 28 August 2023, 19:19:27 UTC | minor tweaks on `Base.[@constprop|@assume_effects]` docs (#51079) | 28 August 2023, 19:19:27 UTC |
4d3de1a | Cody Tapscott | 26 August 2023, 17:46:36 UTC | Always rewrite GotoIfNot with unreachable branches This resolves a regression introduced in https://github.com/JuliaLang/julia/pull/50943#issuecomment-1694198019 The problem was that we now expect the explicit CFG of the IR to correspond 1-1 in terms of reachability to the information we get from inference. That means that we have to unconditionally re-write control flow to match the branches that inference ended up actually exploring. This change also modifies Inference to update the ssaflags on GotoIfNot and GotoNode statements, so that we can be sure these `@assert`s will trip if Inference is ever made smart enough to fold Union{Const(true), Float64}-style conditions. | 28 August 2023, 17:26:09 UTC |
b4052a5 | Jishnu Bhattacharya | 28 August 2023, 15:33:19 UTC | Forward `axes` to the parent for a `Diagonal` (#50514) Given that [quite a few](https://juliahub.com/ui/Search?q=axes%5Ba-zA-Z%5C%28%5C%29%3A%5D%2BDiagonal&type=code&r=true) packages define `axes(d::Diagonal{T, CustomVector{T}})` as `ax = parent(d); (ax,ax)`, perhaps it makes sense to have this defined in `LinearAlgebra`. After this, ```julia julia> using StaticArrays, StructArrays, LinearAlgebra julia> D = Diagonal(StructArray{Complex{Int}}((SA[1,2], SA[1,2]))) 2×2 Diagonal{Complex{Int64}, StructVector{Complex{Int64}, @NamedTuple{re::SVector{2, Int64}, im::SVector{2, Int64}}, Int64}} with indices SOneTo(2)×SOneTo(2): 1+1im ⋅ ⋅ 2+2im julia> axes(D) (SOneTo(2), SOneTo(2)) ``` The static sizes are preserved. --------- Co-authored-by: Daniel Karrasch <daniel.karrasch@posteo.de> | 28 August 2023, 15:33:19 UTC |
4768d7a | Gabriel Baraldi | 28 August 2023, 12:54:26 UTC | Also print the signature of some called functions in the IR (#51024) | 28 August 2023, 12:54:26 UTC |
8197882 | Simon May | 28 August 2023, 09:29:38 UTC | Fix comment in `load_path_expand()` (#50934) When the meaning of `"@"` in `LOAD_PATH` was changed and `"@."` introduced as the new name for the previous meaning of `"@"` in 9a4ecaa4e4, a comment in `load_path_expand()` wasn’t updated to reflect this change. This left the comment being incorrect, leading to potential confusion. I hope I’m not creating more hassle than it’s worth with this super-tiny PR, but since it’s caused some confusion (e. g. https://github.com/JuliaLang/Pkg.jl/pull/3547#issuecomment-16795025350), I thought it might be worthwhile to fix it. | 28 August 2023, 09:29:38 UTC |
f24a93a | Jameson Nash | 27 August 2023, 05:08:19 UTC | inference: fix return_type_tfunc modeling of concrete functions (#51042) The `aft` parameter is a value already, so we should be checking it in the value domain, not the type domain like `tt`. That check happens to already be done (somewhat unnecessarily) earlier in the function. Fixes #40606 --------- Co-authored-by: Shuhei Kadowaki <40514306+aviatesk@users.noreply.github.com> | 27 August 2023, 05:08:19 UTC |
ca1a54a | Christian Guinard | 27 August 2023, 03:35:07 UTC | Update stable version in README.md to 1.9.3 (#51065) | 27 August 2023, 03:35:07 UTC |
c8ad552 | DilumAluthgeBot | 26 August 2023, 20:38:15 UTC | 🤖 [master] Bump the SparseArrays stdlib from 99c99b4 to 54f4b39 (#51060) Stdlib: SparseArrays URL: https://github.com/JuliaSparse/SparseArrays.jl.git Stdlib branch: main Julia branch: master Old commit: 99c99b4 New commit: 54f4b39 Julia version: 1.11.0-DEV SparseArrays version: 1.11.0 Bump invoked by: @ViralBShah Powered by: [BumpStdlibs.jl](https://github.com/JuliaLang/BumpStdlibs.jl) Diff: https://github.com/JuliaSparse/SparseArrays.jl/compare/99c99b4521eb19a7973643d1aa4d7b1e4d50a6db...54f4b39d1cd34a908ff4fdfcd052a38fe23f6555 ``` $ git log --oneline 99c99b4..54f4b39 54f4b39 Fix docs conflict when building as part of full Julia docs (#430) a64ef4f Cleanup reloaded (#426) 4e2d1e4 Respect `IOContext` while displaying a `SparseMatrixCSC` (#423) 3d1eda9 Test suite: activate a temp project if we need to install Aqua.jl during the test suite (#425) 18b7fce Merge pull request #422 from JuliaSparse/jn/cat e2c78b8 test: restore ambiguous test 68afc6e fix inference of SparseVector cat c402d09 cat: ensure vararg is more inferrable 2c4f870 Fix some broken links (#421) 36a5308 bump version (#418) ``` Co-authored-by: Dilum Aluthge <dilum@aluthge.com> | 26 August 2023, 20:38:15 UTC |
dd0ce50 | Ranlajetech | 26 August 2023, 20:05:07 UTC | Fix typo in command-line-interface.md (#51055) | 26 August 2023, 20:05:07 UTC |
5bc558c | Diogo Netto | 26 August 2023, 17:03:21 UTC | refactor GC scanning code to reflect jl_binding_t are now first class (#51035) Removes some redundant code. Credits to Eduardo for pointing this out in the GC meeting. | 26 August 2023, 17:03:21 UTC |
6097140 | Jameson Nash | 26 August 2023, 17:00:49 UTC | add missing invoke edge for nospecialize targets (#51036) We need 2 edges: one for the lookup (which uses the call signature) and one for the invoke (which uses the invoke signature). It is hard to make a small example for this, but the test case demonstrated this issue, particularly if inspected by `SnoopCompile.@snoopr`. Additionally, we can do some easy optimizations on the invoke invalidation, since in most cases we know from subtyping transativity that it is only invalid if the method callee target is actually deleted, and otherwise it cannot ever be partially replaced. Fixes: #50091 Likely introduced by #49404, so marking for v1.10 backport only | 26 August 2023, 17:00:49 UTC |
699a04a | Shuhei Kadowaki | 26 August 2023, 05:06:02 UTC | allow `@overlay` for methods with return type declaration (#51054) | 26 August 2023, 05:06:02 UTC |
7cadc6d | DilumAluthgeBot | 26 August 2023, 04:15:54 UTC | 🤖 [master] Bump the SHA stdlib from 2d1f84e to aaf2df6 (#51049) Stdlib: SHA URL: https://github.com/JuliaCrypto/SHA.jl.git Stdlib branch: master Julia branch: master Old commit: 2d1f84e New commit: aaf2df6 Julia version: 1.11.0-DEV SHA version: 0.7.0 (Does not match) Bump invoked by: @DilumAluthge Powered by: [BumpStdlibs.jl](https://github.com/JuliaLang/BumpStdlibs.jl) Diff: https://github.com/JuliaCrypto/SHA.jl/compare/2d1f84e6f8417a1a368de48318640d948b023e7a...aaf2df61ff8c3898196587a375d3cf213bd40b41 ``` $ git log --oneline 2d1f84e..aaf2df6 aaf2df6 [test] fix typo 0f70e8b [test] test `AbstractString` input 335322a [test] test branch in `digest!` 5992826 [test] Testing branch within the `HMAC_CTX` constructor 5e3a676 Protect against re-using digested context ``` Co-authored-by: Dilum Aluthge <dilum@aluthge.com> | 26 August 2023, 04:15:54 UTC |
38520e1 | Jishnu Bhattacharya | 25 August 2023, 19:45:43 UTC | Docs: add examples to `istril`/`istriu` docstrings (#49853) Also, simplify some of the examples to focus on the structure of the matrices | 25 August 2023, 19:45:43 UTC |
451de66 | xgdgsc | 25 August 2023, 19:40:22 UTC | add @lock doc (#50491) https://github.com/JuliaLang/julia/issues/36441 | 25 August 2023, 19:40:22 UTC |
dcb4060 | Neven Sajko | 25 August 2023, 19:35:43 UTC | docs: manual: point to `MutableArithmetics` in the Performance tips (#50987) Updates #31342 Updates #41792 Updates #50942 | 25 August 2023, 19:35:43 UTC |
6751bbd | Alex Hirzel | 25 August 2023, 19:33:18 UTC | Update reference to distributing.md in Makefile (#51038) | 25 August 2023, 19:33:18 UTC |
defe187 | Jeff Bezanson | 25 August 2023, 10:18:22 UTC | Revert "Optimize findall(f, ::AbstractArray{Bool}) (#42202)" (#51039) This reverts commit 4c4c94f4781da4f4109086368205db8a2f7ec7c4. (Except keeps the tests and adds a new one) fixes #46425 | 25 August 2023, 10:18:22 UTC |
be65c65 | DilumAluthgeBot | 25 August 2023, 08:36:51 UTC | 🤖 [master] Bump the Tar stdlib from ff55460 to 81888a3 (#51052) Stdlib: Tar URL: https://github.com/JuliaIO/Tar.jl.git Stdlib branch: master Julia branch: master Old commit: ff55460 New commit: 81888a3 Julia version: 1.11.0-DEV Tar version: 1.10.0 (Does not match) Bump invoked by: @DilumAluthge Powered by: [BumpStdlibs.jl](https://github.com/JuliaLang/BumpStdlibs.jl) Diff: https://github.com/JuliaIO/Tar.jl/compare/ff55460f4d329949661a33e6c8168ce6d890676c...81888a33704b233a2ad6f82f84456a1dd82c87f0 ``` $ git log --oneline ff55460..81888a3 81888a3 Correct some typos (#159) a82ddde Fix some issues found by JET (#162) 6c51ea7 Give hint about possible insufficient storage on error message (#161) 84e6571 minimize impact of invalidations due to uninferred `ctx` (#158) b0b8ec7 Merge pull request #157 from JuliaIO/dependabot/github_actions/actions/checkout-3 24bb56d Merge pull request #156 from JuliaIO/dependabot/github_actions/codecov/codecov-action-3 9f7d944 Merge pull request #155 from JuliaIO/dependabot/github_actions/actions/cache-3 d14feb4 Bump actions/checkout from 2 to 3 f149f85 Bump codecov/codecov-action from 1 to 3 ea228f2 Bump actions/cache from 1 to 3 4b54b0c Merge pull request #153 from ranocha/hr/dependabot c70adcb enable dependabot for GitHub actions cf089ab fix some sources of invalidations (#152) ``` Co-authored-by: Dilum Aluthge <dilum@aluthge.com> | 25 August 2023, 08:36:51 UTC |
ba90988 | DilumAluthgeBot | 25 August 2023, 08:35:23 UTC | 🤖 [master] Bump the Pkg stdlib from 08e1eb6ed to 047734e4c (#51048) Stdlib: Pkg URL: https://github.com/JuliaLang/Pkg.jl.git Stdlib branch: master Julia branch: master Old commit: 08e1eb6ed New commit: 047734e4c Julia version: 1.11.0-DEV Pkg version: 1.11.0 Bump invoked by: @DilumAluthge Powered by: [BumpStdlibs.jl](https://github.com/JuliaLang/BumpStdlibs.jl) Diff: https://github.com/JuliaLang/Pkg.jl/compare/08e1eb6ed2354102e22181bad5cfe04c701656c0...047734e4c7e2b5e99622b4803ec4ad0d49f1d1d3 ``` $ git log --oneline 08e1eb6ed..047734e4c 047734e4c Test suite: activate a temp project if we need to install HistoricalStdlibVersions during the test suite (#3602) ff833e9d4 Throw an error if the current Julia version (`Base.VERSION`) is incompatible with the `[compat]` entry for `julia` in the `Project.toml` file (#3526) 2c37a5907 Fix lacking `subdir` information when altering packages (#3597) 051ab5bdd Don't mutate project.deps during project write (#3591) f4d64d2c7 Update manifest entry of project for non-local manifests (#3579) ``` Co-authored-by: Dilum Aluthge <dilum@aluthge.com> | 25 August 2023, 08:35:23 UTC |
25776ab | DilumAluthgeBot | 25 August 2023, 08:34:47 UTC | 🤖 [master] Bump the NetworkOptions stdlib from f7bbeb6 to 976e51a (#51047) Stdlib: NetworkOptions URL: https://github.com/JuliaLang/NetworkOptions.jl.git Stdlib branch: master Julia branch: master Old commit: f7bbeb6 New commit: 976e51a Julia version: 1.11.0-DEV NetworkOptions version: 1.2.0 (Does not match) Bump invoked by: @DilumAluthge Powered by: [BumpStdlibs.jl](https://github.com/JuliaLang/BumpStdlibs.jl) Diff: https://github.com/JuliaLang/NetworkOptions.jl/compare/f7bbeb66f05fc651adb12758b650e8630a998fbd...976e51a48abb4e09356f1979c3cde8fbc0852e2e ``` $ git log --oneline f7bbeb6..976e51a 976e51a Use human-readable title in the docs (#30) 895aee9 Update ssh-rsa key for github.com (#29) db83efd fix an issue found by JET (#28) ``` Co-authored-by: Dilum Aluthge <dilum@aluthge.com> | 25 August 2023, 08:34:47 UTC |
5f9c7a6 | DilumAluthgeBot | 25 August 2023, 08:34:33 UTC | 🤖 [master] Bump the ArgTools stdlib from 08b11b2 to 4eccde4 (#51045) Stdlib: ArgTools URL: https://github.com/JuliaIO/ArgTools.jl.git Stdlib branch: master Julia branch: master Old commit: 08b11b2 New commit: 4eccde4 Julia version: 1.11.0-DEV ArgTools version: 1.1.1 (Does not match) Bump invoked by: @DilumAluthge Powered by: [BumpStdlibs.jl](https://github.com/JuliaLang/BumpStdlibs.jl) Diff: https://github.com/JuliaIO/ArgTools.jl/compare/08b11b2707593d4d7f92e5f1b9dba7668285ff82...4eccde45ddc27e4f7fc9094b2861c684e062adb2 ``` $ git log --oneline 08b11b2..4eccde4 4eccde4 build(deps): bump actions/checkout from 2 to 3 (#30) 6a4049d build(deps): bump codecov/codecov-action from 1 to 3 (#32) f94a0d3 build(deps): bump actions/cache from 1 to 3 (#31) cb66300 enable dependabot for GitHub actions (#29) ``` Co-authored-by: Dilum Aluthge <dilum@aluthge.com> | 25 August 2023, 08:34:33 UTC |
5e5416a | Cody Tapscott | 25 August 2023, 07:53:19 UTC | slot2ssa: remove `TypedSlot` (#50943) Dependent on https://github.com/JuliaLang/julia/pull/50924 . This removes the last remaining usage of `TypedSlot`. As a bonus, this evicts all of the "tmerge" type-iteration that was being done in slot2ssa. --------- Co-authored-by: Shuhei Kadowaki <aviatesk@gmail.com> | 25 August 2023, 07:53:19 UTC |
4ac6b05 | Gabriel Baraldi | 24 August 2023, 20:06:36 UTC | Print the stacktrace for wrong error when testing `@test_throws` (#50886) Co-authored-by: Ian Butterworth <i.r.butterworth@gmail.com> | 24 August 2023, 20:06:36 UTC |
9125889 | Cody Tapscott | 24 August 2023, 16:18:41 UTC | improve docs for headless tracy usage (#51022) Based on seeing some confusion in slack about this. | 24 August 2023, 16:18:41 UTC |
8da6221 | Shuhei Kadowaki | 24 August 2023, 13:42:38 UTC | optimizer: fold `ifelse` call with constant condition (#51015) We have had the optimization to fold `Core.ifelse` with constant condition with `early_inline_special_case`, but it can be too early as the inlining pass may produce `Core.ifelse` with constant condition. This commit adds a similar optimization within the SROA pass, which already has a bunch of other non-pure-SROA optimizations. Now we can fully optimize this kind of case: ```julia fully_eliminated(; retval=Core.Argument(2)) do x::Float64 return Core.ifelse(true, x, exp(x)) # optimized already end fully_eliminated(; retval=Core.Argument(2)) do x::Float64 return ifelse(true, x, exp(x)) # the optimization should be applied to post-inlining IR too end fully_eliminated(; retval=Core.Argument(2)) do x::Float64 return ifelse(isa(x, Float64), x, exp(x)) end ``` | 24 August 2023, 13:42:38 UTC |
777b784 | Kristoffer Carlsson | 24 August 2023, 12:33:32 UTC | fix a case of potentially use of undefined variable when handling error in distributed message processing (#51019) There is a use of `oldstate` on line 244 which has the possibility of being undefined. This bug seems to have been introduced in https://github.com/JuliaLang/julia/commit/40c622b7e66a88c05d8892222126f1d13851bc62#diff-39fa44ff86c5b38bd6b9e7f60733b25724a9efd9221ca38f776ed3f3ab01dec2. I don't have a repro for this but this PR reverts back to the situation where `oldstate` is defined at the topmost level of the catch block as it was before the offending commit. | 24 August 2023, 12:33:32 UTC |
ce8acdd | Gabriel Baraldi | 24 August 2023, 00:59:06 UTC | Implement realloc accounting correctly (#51027) This was potentially making us getting wrong results. | 24 August 2023, 00:59:06 UTC |
231ca24 | Shuhei Kadowaki | 24 August 2023, 00:49:00 UTC | define specialized `[in|all|any](x, ::Tuple)` methods with better effects (#51002) So that it can be concrete-evaluated. There are certain code patterns like: ```julia if flag::Const(::Char) in ('S', 'T', 'U') # do something else # do something else end ``` and it would be beneficial if we can cut off a dead branch by folding the call to `in`. This commit adds similar improvements for `all` and `any` as well. | 24 August 2023, 00:49:00 UTC |
f21c635 | Gabriel Baraldi | 23 August 2023, 19:59:25 UTC | Add names to write barrier lowering (#51000) | 23 August 2023, 19:59:25 UTC |
6d9c708 | Keno Fischer | 23 August 2023, 17:16:48 UTC | Fix codegen for oc arg mismatch (#51017) Fixes #51016, plus a driveby fix for `julia-debug` with external AbstractInterpreter. | 23 August 2023, 17:16:48 UTC |
eafa7ec | Gabriel Baraldi | 23 August 2023, 13:26:52 UTC | Remove iskind checks in convert_julia_type (#50998) | 23 August 2023, 13:26:52 UTC |
8d32d58 | KristofferC | 23 August 2023, 13:24:12 UTC | improve docs for headless tracy usage | 23 August 2023, 13:24:12 UTC |
525d127 | Keno Fischer | 23 August 2023, 05:21:23 UTC | codegen: Bail out early if OC has wrong argtypes Once we know something is guaranteed to throw, we just need to bail out as soon as possible, as it is generrally a bad idea to try to keep looking at the dead code. Fixes 51016. | 23 August 2023, 05:22:31 UTC |
6ea2200 | Keno Fischer | 23 August 2023, 05:21:02 UTC | Run verify_ir with proper lattice | 23 August 2023, 05:21:02 UTC |