sort by:
Revision Author Date Message Commit Date
5e85876 Warn about mutating keys in Dict docstring. (#51171) Be clear in the `Dict` docstring that it's not in general safe to mutate keys. Cf. https://discourse.julialang.org/t/unable-to-access-value-in-dict-via-known-keys/103434. 08 September 2023, 10:18:45 UTC
de297fa remove special case for the no-op first statement in `fully_eliminated` (#51227) It looks like the special case is no longer needed. If this gets broken by future changes, I would like fix it or mark the test cases as `broken`. 08 September 2023, 06:11:21 UTC
39a5316 optimize: fix `effect_free` refinement in post-opt dataflow analysis (#51185) Currently we never refine this information though. @nanosoldier `runbenchmarks("inference", vs=":master")` 08 September 2023, 01:01:15 UTC
b3741c0 Check again if the tty is open inside the IO lock (#51222) This can cause segfaults when exiting julia. Co-authored-by: Valentin Churavy <vchuravy@users.noreply.github.com> 07 September 2023, 21:55:47 UTC
e446bba Remove references to the LegacyPassManager (#51197) We still keep references in a couple places because the objectfile emission still uses it. 07 September 2023, 21:47:50 UTC
af6e08d Include JuliaSyntax.jl from the build directory. (#51231) This ensures the source isn't modified during an out-of-tree build. Fixes https://github.com/JuliaLang/julia/issues/51230 --------- Co-authored-by: Jameson Nash <vtjnash@gmail.com> 07 September 2023, 20:02:05 UTC
eab8d6b Fix getfield codegen for tuple inputs and unknown symbol fields. (#51234) 07 September 2023, 19:36:30 UTC
8599e2f add PersistentDict based on a HAMT (#51164) The implementation is based on a [Hash Array Mapped Trie (HAMT)](https://en.wikipedia.org/wiki/Hash_array_mapped_trie) following [Bagwell (2000)](http://infoscience.epfl.ch/record/64398/files/idealhashtrees.pdf). A HAMT uses a fixed branching factor (commonly 32) together with each node being sparse. In order to search for an entry we take the hash of the key and chunk it up into blocks, with a branching factor of 32 each block is 5 bits. We use those 5 bits to calculate the index inside the node and use a bitmap within the node to keep track if an element is already set. This makes search a `log(32, n)` operation. Persistency is implemented by path-copying. When we insert/delete a value into the HAMT we copy each node along the path into a new HAMT, all other nodes are shared with the previous HAMT. A noteable implementation choice is that I didn't add a (resizeable) root table. Normally this root table is dense and uses the first `t` bits to calculate an index within. This makes large HAMT a bit cheaper since the root-table effectivly folds multiple lookup steps into one. It does hurt persistent use-cases since path-copying means that we also copy the root node/table. Importantly the HAMT itself is not immutable/persistent, the use of it as part of the `PersistentDict` is. Direct mutation of the underlying data breaks the persistentcy invariants. One could use the HAMT to implement a non-persistent dictionary (or other datastructures). As an interesting side-note we could use a related data-structure [Ctrie](http://lamp.epfl.ch/~prokopec/ctries-snapshot.pdf) to implement a concurrent lock-free dictionary. Ctrie also support `O(1)` snapshotting so we could replace the HAMT used here with a Ctrie. 07 September 2023, 17:55:25 UTC
27fa5de 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 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 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 optimizer: skip post-opt IPO analysis when effects are precise already (#51188) 06 September 2023, 12:56:36 UTC
c1153d0 Tweak tests 06 September 2023, 11:32:04 UTC
f3d50b7 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 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 [FileWatching] clarify mkpidlock docstring (#51214) 06 September 2023, 08:39:44 UTC
f066500 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 Remove unused io argument to `insert_hlines` (#51182) 06 September 2023, 05:52:36 UTC
c84324f 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 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 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 Remove unused variable from `compute_trycatch` This variable is currently always zero. 05 September 2023, 15:47:34 UTC
354c367 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 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 build: don't default to m(arch|cpu|tune)=native when cross-compiling (#51172) 05 September 2023, 14:42:39 UTC
00ca93c Put back `@inline` on unsafe_getindex (#51160) Fixup for #50467 05 September 2023, 14:05:05 UTC
fbf73f4 🤖 [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 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 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 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 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 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 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 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 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 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 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 🤖 [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 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 Add `JL_DLLIMPORT` to `small_typeof` declaration (#50892) Resolves #50714 01 September 2023, 18:46:25 UTC
631b5c3 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 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 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 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 make `code_llvm` work with OC with tuple input types (#51128) 31 August 2023, 23:37:19 UTC
69392ee make `code_llvm` work with custom lookup function (#51127) 31 August 2023, 23:35:43 UTC
36fc9ec 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 Refactor rounding (including bugfixes) and document API (#50812) 31 August 2023, 21:40:36 UTC
a3e2316 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 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 inference: teach tfunc that typeof tuples must have fixed lengths 31 August 2023, 15:44:59 UTC
8307dbf 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 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 Add a codegen option to disable use of jlplts Alternative to #51108. 31 August 2023, 07:10:20 UTC
a355403 Annotate fieldnames for default cgparams [NFC] 31 August 2023, 07:10:14 UTC
95af5a0 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 allow `code_[llvm|native]` to take custom `params::CodegenParams` (#51109) 31 August 2023, 02:19:40 UTC
c659011 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 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 Swap Base.Event to use a ThreadSynchronizer (#51093) and make some of its other fields const. 31 August 2023, 00:31:02 UTC
6f026e3 Refactor scalar range getindex (#50467) 30 August 2023, 22:06:58 UTC
fb76136 Fix edge cases where inexact conversions to UInt don't throw (#51095) 30 August 2023, 19:38:21 UTC
8a5a872 Remove spurious iostream in codegen (#51104) 30 August 2023, 18:34:01 UTC
476572f 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 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 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 Speed up `logdet` for diagonal and triangular matrices (#50950) 30 August 2023, 07:57:06 UTC
a271349 Simplify the docstring for Diagonal (#51097) 30 August 2023, 07:41:51 UTC
4e1c965 Remove size(::StructuredMatrix, d) specializations (#51083) 30 August 2023, 07:38:15 UTC
a84882e effects: taint overlay-ed method's `:nonoverlayed` effect bit (#51078) 29 August 2023, 08:11:57 UTC
8ace9c5 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 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 Fix typo in `postdominates` docstring (#51089) 28 August 2023, 20:36:56 UTC
1d56cdf minor tweaks on `Base.[@constprop|@assume_effects]` docs (#51079) 28 August 2023, 19:19:27 UTC
4d3de1a 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 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 Also print the signature of some called functions in the IR (#51024) 28 August 2023, 12:54:26 UTC
8197882 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 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 Update stable version in README.md to 1.9.3 (#51065) 27 August 2023, 03:35:07 UTC
c8ad552 🤖 [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 Fix typo in command-line-interface.md (#51055) 26 August 2023, 20:05:07 UTC
5bc558c 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 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 allow `@overlay` for methods with return type declaration (#51054) 26 August 2023, 05:06:02 UTC
7cadc6d 🤖 [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 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 add @lock doc (#50491) https://github.com/JuliaLang/julia/issues/36441 25 August 2023, 19:40:22 UTC
dcb4060 docs: manual: point to `MutableArithmetics` in the Performance tips (#50987) Updates #31342 Updates #41792 Updates #50942 25 August 2023, 19:35:43 UTC
6751bbd Update reference to distributing.md in Makefile (#51038) 25 August 2023, 19:33:18 UTC
defe187 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 🤖 [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 🤖 [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 🤖 [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 🤖 [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 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 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 improve docs for headless tracy usage (#51022) Based on seeing some confusion in slack about this. 24 August 2023, 16:18:41 UTC
8da6221 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 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
back to top