swh:1:snp:a72e953ecd624a7df6e6196bbdd05851996c5e40

sort by:
Revision Author Date Message Commit Date
ad51e2b add profiling timings for LLVM passes 17 August 2023, 11:43:57 UTC
30a73de 🤖 [master] Bump the Pkg stdlib from b044bf6a2 to 08e1eb6ed (#50944) Co-authored-by: Dilum Aluthge <dilum@aluthge.com> 17 August 2023, 02:32:24 UTC
5466d3d Add note the `Task` about sticky bit (#50915) Update the docs for `Task` to mention the fact that they default to sticky. Co-authored-by: Gabriel Baraldi <baraldigabriel@gmail.com> 16 August 2023, 19:27:18 UTC
1c536dd Make cong safe in the presence of 0 (#50910) Co-authored-by: Sukera <11753998+Seelengrab@users.noreply.github.com> 16 August 2023, 15:57:17 UTC
cea3d16 timing: Check `jl_current_task` is ready before emitting timing events (#50926) We sometimes spawn imaging-dedicated threads for running LLVM that do not have `jl_current_task` setup. Since we rely on the thread-local storage stack for our built-in profiling, we will segfault if we try to emit any events on these threads. A better long-term fix is probably to setup `jl_current_task` et al on these threads so that we can track them as usual, but this avoids crashes for now. 16 August 2023, 15:03:09 UTC
90b4eed Limit type-printing in MethodError (#50809) This applies the same `...` depth-based parametric truncation to the signature in `MethodError` that we use in printing stacktraces. Fixes #50803 16 August 2023, 10:36:38 UTC
883c19b Change heap-size-hint in test processes to total memory (#50922) It seems this is causing macos to hang because the shown free memory is generally very small. xref: JuliaLang/julia#50673 16 August 2023, 01:53:22 UTC
0b190b3 Skip libraries consisting of the empty string (#50899) Co-authored-by: Gabriel Baraldi <baraldigabriel@gmail.com> Co-authored-by: Jameson Nash <vtjnash@gmail.com> 15 August 2023, 15:07:47 UTC
fd38d50 Remove unnecessary `Symbol` call [NFC] (#50916) 15 August 2023, 03:31:18 UTC
02dba6d timing: Check `jl_current_task` is ready before emitting timing events We sometimes spawn imaging-dedicated threads for running LLVM that do not have `jl_current_task` setup. Since we rely on the thread-local storage stack for our built-in profiling, we will segfault if we try to emit any events on these threads. A better long-term fix is probably to setup `jl_current_task` et al on these threads so that we can track them as usual, but this avoids crashes for now. 15 August 2023, 03:21:42 UTC
750df9f inference: permit non-direct recursion reducers (#50696) Fix #45759 Fix #46557 Fix #31485 Depends on #50694 due to a failing broadcast test without it (related to #50695) 14 August 2023, 19:47:20 UTC
90494c2 Fix Expr(:loopinfo) codegen (#50663) We used a loop-marker intrinsic because the LoopID used to be dropped by optimization passes (this seems no longer true). #50660 is an example of a miscompilation where a loop of length 1 got optimized by simplifycfg to the point where the loop-marker is now attached to the wrong back-edge. This PR drops the loop-marker and uses the LoopID metadata node directly. 14 August 2023, 15:59:20 UTC
91093fe Make ranges more robust with unsigned indexes. (#50823) Fixes #44895 14 August 2023, 14:06:51 UTC
09e8109 Remove duplicate lines in `print_stackframe` (#49751) These lines were apparently refactored into `print_module_path_file` but not removed from `print_stackframe`. Also moved the `fixup_stdlib_path` call because `file` isn't even used in the parent function. 14 August 2023, 13:25:19 UTC
7157029 Correct info about Alt+e on 1.9 HISTORY.md (#49685) The code is not executed when existing the editor: https://github.com/JuliaLang/julia/pull/46153 14 August 2023, 12:53:11 UTC
022924c small typo in code example in the llvm.md documentation (#49943) The code in the documentation returns an error: ``` ERROR: MethodError: no method matching _dump_function(::typeof(+), ::Type{Tuple{Int64, Int64}}, ::Bool, ::Bool, ::Bool, ::Bool, ::Symbol, ::Bool, ::Symbol) ``` apparently, one boolean variable was missing from the call to `InteractiveUtils._dump_function`. Adding one `false` at the end of the call should fix that. 14 August 2023, 12:52:06 UTC
b763728 Remove weird Rational dispatch and add pi functions to list (#50850) Should fix https://github.com/JuliaLang/julia/issues/48735 14 August 2023, 12:50:02 UTC
fd695a7 Add Base prefix to list_deletefirst! (#50852) I noticed this when debugging a bizarre issue, probably caused by some earlier undefined behaviour, and I haven't been able to come up with simple reproduction steps. It seems like `current_task().queue` is basically never set after `wait()`. Based on https://github.com/JuliaLang/julia/issues/32903 it seems like raising SIGINT at the right time might trigger this. In any case, if you manage to trigger it, `list_deletefirst!` will fail because it is out of scope. I double-checked this using `@eval Sockets list_deletefirst!` with Julia 1.9.2 (and there's only been one change to `Sockets` since then). 14 August 2023, 12:45:23 UTC
513336a Set -march/mcpu to native when building the runtime if no targets are set (#50031) vchuravy noted that we don't set these flags even when building locally, even though we set the sysimg to `native`. This probably doesn't make too much of a difference but it might save a couple % on from source builds. Also add the option to set `mtune` which is what GCC wants 14 August 2023, 12:43:41 UTC
95c9ddd Wait for git credential helper task (#49980) This is just something I noticed when reading the code (doesn't fix any user-facing bug that I'm aware of). It seems that [1] changed wait(t) to wait(p), which might be a typo? Without wait(t), any error thrown by t will be ignored. I've folded wait(p) into the do expression, although the helper should already be dead by the time read! returns (unless it closes stdout early for some reason). [1] https://github.com/JuliaLang/julia/commit/7577ec2f4b1674878263039982d63f854627b383 14 August 2023, 12:10:32 UTC
59604ef Changed stacktrace error message to avoid ambiguity (#50133) Made changes required by #50112 by changing "last" to "above" and fixed my previous PR #50131 not passing the tests. 14 August 2023, 12:08:17 UTC
a9116ef Update REPL.fuzzyscore to use string distance (#50412) The old heuristics were not particularly helpful. These new heuristics should be easier to reason about, since the score is between 0 and 1, and also yield much more intuitive results. Closes #49466 See #49562 Co-authored-by: TEC <git@tecosaur.net> Co-authored-by: matthieugomez <gomez.matthieu@gmail.com> 14 August 2023, 12:04:16 UTC
49a6bfe duck-type some string internals to make StringViews easier (#50426) This PR just removes the type qualifiers from some undocumented internal functions to make it a bit easier to hook in with StringViews. 14 August 2023, 12:03:37 UTC
b388d26 Base.MPFR: don't `ccall` for special value predicates (#50674) MPFR determines special values according to sentinel values of the exponent field. Although these constants are not documented (they're defined in MPFR's `src/mpfr-impl.h`), they're already used in `Base.MPFR` in the `BigFloat` inner constructor and for converting IEEE 754 FP types to `BigFloat`, so I guess it makes sense to avoid the `ccall` overhead for predicates like `iszero` and `isnan`, too. The context here is that I'm working on generic IEEE 754-`BigFloat` conversion implementations that would work without using MPFR and improve correctness (#50642) and performance, so this PR seems like the obvious prerequisite for being able to use the Julian predicates like `iszero` without calling libmpfr unnecessarily. 14 August 2023, 11:43:34 UTC
5f03a18 Fix integer overflow in `isapprox` (#50730) Ensure that `isapprox` gives correct results when comparing an integer with another integer or with a float. For comparison between integers, the fix only works when keeping default values for `rtol` and `norm`, and with `atol < 1`. It is not possible to handle the (atypical) case where `norm !== abs`, but that's OK since the user is responsible for providing a safe function. It would be possible to handle the case where `rtol > 0` or `atol >= 1`, but with complex code which would check for overflow and handle all possible corner cases; it would work only for types defined in Base and would not be extensible by packages. So I'm not sure that's worth it. At least with PR fixes the most common case. Fixes https://github.com/JuliaLang/julia/issues/50380. 14 August 2023, 11:37:10 UTC
ad0712f various minor changes to the documentation (#50879) A small contribution to an improved documentation. I've bundled a few tiny, unrelated changes together instead of submitting many PRs. Let me know if you prefer it differently or if you want any other change. Some comments: `llvmcall`: The file `test/llvmcall.jl` was mentioned. I've added a link to GitHub. However, it works only for tagged version. Improvements welcome. `@sync`: I would like to add links to `Distributed.@spawnat` and `Distributed.@distributed`, but I don't know how to do it from one package (Base) to another. I once asked about it on [Discourse](https://discourse.julialang.org/t/documentation-how-to-add-cross-references-to-functions-in-other-modules/88504), but didn't get an answer. `hasfastin`: now mentioned in the documentation 14 August 2023, 11:29:54 UTC
15b590b Docs formatting (#50049) 12 August 2023, 03:47:17 UTC
0eb13d7 Add default method for setmodifiers! (#50822) Fixes #50690 11 August 2023, 19:20:48 UTC
3838dab Fix big(1)^big(-1) (#50821) This PR gives BigInt exponentiation the same edge-case behavior as other integer exponentiation. The normal integer exponentiation checks if `x` is `1` or `-1` before erroring if the power is negative. https://github.com/JuliaLang/julia/blob/9f9e989f241fad1ae03c3920c20a93d8017a5b8f/base/intfuncs.jl#L283-L287 With this PR `big(1)^big(-1) == 1`, `big(-1)^big(-1) == -1` and `big(-1)^big(-2) == 1` --------- Co-authored-by: Sukera <11753998+Seelengrab@users.noreply.github.com> 11 August 2023, 19:19:16 UTC
eb4416b Restrict COFF to a single thread when symbol count is high (#50874) 11 August 2023, 14:15:23 UTC
2c0e1d8 Use imaging mode generated code only (#50847) 11 August 2023, 14:14:09 UTC
555cd23 Add a `threadpool` parameter to `Channel` constructor (#50858) Without this, the task created by a `Channel` will run in the threadpool of the creating task; in the REPL, this could be the interactive threadpool. On 1.8, without threadpools: ```julia % julia +1.8 -t 8 _ _ _ _(_)_ | Documentation: https://docs.julialang.org (_) | (_) (_) | _ _ _| |_ __ _ | Type "?" for help, "]?" for Pkg help. | | | | | | |/ _` | | | | |_| | | | (_| | | Version 1.8.5 (2023-01-08) _/ |\__'_|_|_|\__'_| | Official https://julialang.org/ release |__/ | julia> for _ in 1:10 Channel{Int}(1; spawn=true) do _ Core.print("threadid=$(Threads.threadid())\n") end end threadid=2 threadid=5 threadid=2 threadid=2 threadid=1 threadid=6 threadid=7 threadid=8 threadid=3 threadid=4 ``` On 1.9, with no interactive threads: ```julia % julia +1.9 -t 8 _ _ _ _(_)_ | Documentation: https://docs.julialang.org (_) | (_) (_) | _ _ _| |_ __ _ | Type "?" for help, "]?" for Pkg help. | | | | | | |/ _` | | | | |_| | | | (_| | | Version 1.9.2 (2023-07-05) _/ |\__'_|_|_|\__'_| | Official https://julialang.org/ release |__/ | julia> for _ in 1:10 Channel{Int}(1; spawn=true) do _ Core.print("threadid=$(Threads.threadid())\n") end end threadid=4 threadid=4 threadid=4 threadid=2 threadid=3 threadid=1 threadid=7 threadid=5 threadid=8 threadid=6 ``` On 1.9, with an interactive thread: ```julia % julia +1.9 -t 7,1 _ _ _ _(_)_ | Documentation: https://docs.julialang.org (_) | (_) (_) | _ _ _| |_ __ _ | Type "?" for help, "]?" for Pkg help. | | | | | | |/ _` | | | | |_| | | | (_| | | Version 1.9.2 (2023-07-05) _/ |\__'_|_|_|\__'_| | Official https://julialang.org/ release |__/ | julia> for _ in 1:10 Channel{Int}(1; spawn=true) do _ Core.print("threadid=$(Threads.threadid())\n") end end threadid=1 threadid=1 threadid=1 threadid=1 threadid=1 threadid=1 threadid=1 threadid=1 threadid=1 threadid=1 ``` With this PR, the `:default` threadpool is used instead. ```julia % julia +master -t7,1 _ _ _ _(_)_ | Documentation: https://docs.julialang.org (_) | (_) (_) | _ _ _| |_ __ _ | Type "?" for help, "]?" for Pkg help. | | | | | | |/ _` | | | | |_| | | | (_| | | Version 1.11.0-DEV.244 (2023-08-09) _/ |\__'_|_|_|\__'_| | Commit d99f2496ff* (0 days old master) |__/ | julia> for _ in 1:10 Channel{Int}(1; spawn=true) do _ Core.print("threadid=$(Threads.threadid())\n") end end threadid=7 threadid=6 threadid=7 threadid=7 threadid=6 threadid=3 threadid=5 threadid=2 threadid=4 threadid=8 ``` And, the behavior can be overridden. ```julia % julia +master -t7,1 _ _ _ _(_)_ | Documentation: https://docs.julialang.org (_) | (_) (_) | _ _ _| |_ __ _ | Type "?" for help, "]?" for Pkg help. | | | | | | |/ _` | | | | |_| | | | (_| | | Version 1.11.0-DEV.244 (2023-08-09) _/ |\__'_|_|_|\__'_| | Commit d99f2496ff* (0 days old master) |__/ | julia> for _ in 1:10 Channel{Int}(1; spawn=true, threadpool=:interactive) do _ Core.print("threadid=$(Threads.threadid())\n") end end threadid=1 threadid=1 threadid=1 threadid=1 threadid=1 threadid=1 threadid=1 threadid=1 threadid=1 threadid=1 ``` --------- Co-authored-by: Nathan Daly <NHDaly@gmail.com> 11 August 2023, 13:29:07 UTC
cda570e macOS: Don't inspect dead threadtls during exception handling. (#50871) Otherwise we may end up with the state of a dead thread, as the system IDs can alias. This can lead to an early return from the exception handler, resulting in e.g. safepoint exceptions being actually delivered to user code. --------- Co-authored-by: Jameson Nash <vtjnash@gmail.com> Co-authored-by: Cody Tapscott <topolarity@tapscott.me> 11 August 2023, 07:41:31 UTC
5db443a test: remove SparseArrays dependency from hashing test (#50751) These tests now belong in SparseArrays, since it is removed from Base. Since SparseArrays does some piracy, that can break or distort later tests. Refs #50550 10 August 2023, 21:20:39 UTC
517ad06 compiler: Rename :inst -> :stmt (#50868) As discussed in #49057, this renames the :inst field of `Instruction` to `:stmt` (`:inst` is still allowed for the moment to ease transition for out-of-tree users). I'm hoping to get through some more compiler datastructure cleanup in the 1.11 timeframe, but this is probably one of the larger ones in terms of number of lines affected. 10 August 2023, 19:12:55 UTC
cbd3c89 Avoid race conditions with recursive rm (#50842) If two processes attempt to recursively delete a directory at the same time, then we can end up in a state where the initial `isdir` is `true`, but by the time it actually deletes the directory it is already gone. e.g. - https://buildkite.com/clima/climacore-ci/builds/2460#0189d254-76a9-474b-ad25-e5b16440d629/140-142 which is triggered by https://github.com/cjdoris/PackageExtensionCompat.jl/blob/636eb5a14ddf9134d004c93f598515903af26443/src/PackageExtensionCompat.jl#L59 - https://buildkite.com/clima/climacore-ci/builds/2457#0189c7fe-8872-40c5-9106-da2e621ff55a/139-150 which is triggered by https://github.com/JuliaGPU/GPUCompiler.jl/blob/06e670657d7ceebc1845d7c9534a8352c33490de/src/rtlib.jl#L152 I've been conservative and only applied this when `force=true`, but perhaps it should apply generally? 10 August 2023, 16:25:44 UTC
2d24155 Initialize gvars with their pointer values in create_native (#50838) GPUCompiler won't have access to the runtime pointers for global variables emitted from `jl_create_native`, so we need to provide them here. 10 August 2023, 14:20:26 UTC
64c5292 Update stable version in README.md (#50866) Perhaps this may be automated using something like https://github.com/MathieuSoysal/file-updater-for-release 10 August 2023, 13:06:47 UTC
2f03072 Makes IntrusiveLinkedListSynchronized mutable to avoid allocation on poptask (#50802) Currently `poptask` is allocating every time it calls into `jl_task_get_next` due to `StickyWorkqueue` (`IntrusiveLinkedListSynchronized`) being immutable and requiring an allocation to be used as `Any` on the `ccall`. The allocations can be seen in the following snippet: ``` function work() done = 0.0 l = Threads.SpinLock() Threads.@sync for _ in 1:(Threads.nthreads() / 2) Threads.@spawn begin v = 1.0 for i in 1:(1<<33) v *= 1.0001 if i % (1 << 13) == 0 yield() end end Base.@lock_nofail l done += v end end return done end julia> @time work() 15.758794 seconds (5.03 M allocations: 153.523 MiB, 0.35% gc time) ``` Which after the change becomes: ``` julia> @time work() 15.907513 seconds (67 allocations: 4.719 KiB) ``` 10 August 2023, 11:07:57 UTC
b991397 Disallow non-index Integer types in isassigned (#50594) Extend #50587 to more general `AbstractArray`s. This is mainly to disallow `Bool` as an index in `isassigned`, as this isn't supported by `getindex`. After this ```julia julia> isassigned(rand(2,2), 1, true) ERROR: ArgumentError: invalid index: true of type Bool ``` which matches the behavior on v1.9. 10 August 2023, 09:28:14 UTC
d1759bc Add `Base.get_extension` to docs/API (#50860) The documentation of `Pkg.jl` is instructing developers to rely on the existence of this function, and there doesn't seem to be any alternative which is a part of the API that developers can use instead on to guarantee forward compatibility for the same behavior. `Base.get_extension` is [referred to explicitly](https://pkgdocs.julialang.org/v1.9/creating-packages/#Backwards-compatibility) in the `Pkg.jl` docs to conditionally use package extensions vs `Requires.jl`. The `Pkg.jl` docs suggest ```julia if !isdefined(Base, :get_extension) include("../ext/PlottingContourExt.jl") end ``` to transition from "normal dependency to extension," which will break and automatically load the extension in future versions should `Base.get_extension` go away. `Base.get_extension` is the only way (that I know of) to directly access the module associated with a package extension, which can be a useful utility as well. 10 August 2023, 08:55:45 UTC
ebae716 Subtype: bug fix for bounds with deeper covariant var (#50832) fix #50716. 10 August 2023, 00:23:14 UTC
744aa79 fix #50438, use default pool for at-threads (#50845) 09 August 2023, 20:45:28 UTC
9889caf fix #48889, bug in capturing variable declared outside `while` (#50742) 09 August 2023, 20:43:17 UTC
a889575 Clarify that you can document something before it is defined (#50728) 09 August 2023, 18:07:51 UTC
43b2c44 Highlight extra required methods for iterators (#50069) 09 August 2023, 18:00:12 UTC
440eb24 Remove non-existent `exclude_tags` kwarg from `triplet` docstring (#50656) Fixes #50389 09 August 2023, 17:53:43 UTC
5e51fbe Update dependency builds (#50826) This bumps the build numbers for stdlib and binary dependency JLLs, updates libssh2 to 1.11.0, libgit2 to 1.6.4, and objconv to 2.53. Julia's FreeBSD CI has been running on FreeBSD 13.2 for a while, but until more recently, Yggdrasil was still building FreeBSD binaries using the 12.2 sysroot. The sysroot was updated to 13.2 and I went through and rebuilt the dependencies that Julia uses. The updated build numbers correspond to these rebuilt but otherwise unchanged binaries. The actual version updates are because libssh2 in Yggdrasil was at 1.11.0 so I left it there (its [release notes](https://github.com/libssh2/libssh2/releases/tag/libssh2-1.11.0) suggest it's a safe update), libgit2 had a newer patch version available and needed to be fixed anyway since the Windows build was broken, and objconv needed its Yggdrasil build recipe fixed but Elliot's GitHub mirror of objconv was at 2.53 so I updated to use that. 09 August 2023, 16:50:37 UTC
d99f249 🤖 [master] Bump the Pkg stdlib from 2c04d5a98 to b044bf6a2 (#50851) Co-authored-by: Dilum Aluthge <dilum@aluthge.com> 09 August 2023, 03:55:01 UTC
275a2a9 Small refactorings, make imaging_mode easier to grep for (#50840) 09 August 2023, 02:26:22 UTC
626f687 Bump OpenBLAS binaries to use the new GEMM multithreading threshold (#50844) Detailed discussion and benchmarks by @oscardssmith in https://github.com/JuliaPackaging/Yggdrasil/pull/7189 09 August 2023, 01:45:48 UTC
aca081d Remove libm from versioninfo(). (#50841) We don't really use anything meaningful from libm for this to matter much. 08 August 2023, 18:42:53 UTC
153e669 Call all-underscore identifiers write-only (#50830) Followup to #45964, #46506, and https://discourse.julialang.org/t/class-of-variables/83892. The error ``` julia> println(_) ERROR: syntax: all-underscore identifier used as rvalue ``` is hard to interpret if you are not familiar with the term `rvalue`, which is not used in any other context in Julia, and as discussed previously the use here is not clearly matching the wikipedia page referred to in the documentation either. This PR does away with the term `rvalue` by changing the error to ``` ERROR: syntax: all-underscore identifiers are write-only and their values cannot be used in expressions ``` and updates the documentation accordingly. 08 August 2023, 14:40:49 UTC
c40ecd3 Test that we emit names properly in code_llvm (#50818) 08 August 2023, 03:06:44 UTC
8b8da91 Make symbols internal in jl_create_native, and only externalize them when partitioning (#50791) 08 August 2023, 01:11:56 UTC
958da95 print feature flags used for matching pkgimage (#50172) ``` julia> @ccall jl_dump_host_cpu()::Cvoid CPU: znver2 Features: sse3, pclmul, ssse3, fma, cx16, sse4.1, sse4.2, movbe, popcnt, aes, xsave, avx, f16c, rdrnd, fsgsbase, bmi, avx2, bmi2, rdseed, adx, clflushopt, clwb, sha, rdpid, sahf, lzcnt, sse4a, prfchw, mwaitx, xsaveopt, xsavec, xsaves, clzero, wbnoinvd julia> target = only(Base.current_image_targets()) znver2; flags=0; features_en=(sse3, pclmul, ssse3, fma, cx16, sse4.1, sse4.2, movbe, popcnt, aes, xsave, avx, f16c, fsgsbase, bmi, avx2, bmi2, adx, clflushopt, clwb, sha, rdpid, sahf, lzcnt, sse4a, prfchw, mwaitx, xsavec, xsaves, clzero, wbnoinvd) ``` Co-authored-by: Prem Chintalapudi <prem.chintalapudi@gmail.com> Co-authored-by: Jameson Nash <vtjnash@gmail.com> 07 August 2023, 21:48:25 UTC
8b5e3e9 add warning to `Iterators.filter` about assumptions on predicate (#50497) addresses #50440 07 August 2023, 18:40:48 UTC
9f9e989 Move `round(T::Type, x)` docstring above `round(z::Complex, ...)` docstring (#50775) 06 August 2023, 04:35:03 UTC
3e04129 fix `bit_map!` with aliasing (#50781) fixes #50780 caused by #47013. 05 August 2023, 21:10:15 UTC
117ef2e inference: continue const-prop' when concrete-eval returns non-inlineable (#50618) 05 August 2023, 03:15:02 UTC
ab94fad Add fallback if we have make a weird GC decision. (#50682) If something odd happens during GC (the PC goes to sleep) or a very big transient the heuristics might make a bad decision. What this PR implements is if we try to make our target more than double the one we had before we fallback to a more conservative method. This fixes the new issue @vtjnash found in https://github.com/JuliaLang/julia/issues/40644 for me. 05 August 2023, 00:29:42 UTC
67d600c Model :consistent for compilerbarrier (#50793) 04 August 2023, 23:19:58 UTC
2c45e3b Clarify that `trunc`/`ceil`/`floor` are allowed to round without throwing `InexactError`. (#50777) 04 August 2023, 00:35:53 UTC
f337c3d Minor refactor to image generation (#50779) 04 August 2023, 00:09:17 UTC
6dd763b re-allow non-string values in ENV `get!` (#50771) fixes #50472 03 August 2023, 20:18:56 UTC
a2f3d77 optimizer: move inlineable constants into argument position during `compact!`-ion (#50767) In code like below ```julia Base.@assume_effects :nothrow function erase_before_inlining(x, y) z = sin(y) if x return "julia" end return z end let y::Float64 length(erase_before_inlining(true, y)) end ``` the constant prop' can figure out the constant return type of `erase_before_inlining(true, y)` while it is profitable not to inline expand it since otherwise we left some `!:nothrow` callees there (xref: https://github.com/JuliaLang/julia/pull/47305). In order to workaround this problem, this commit makes `compact!`move inlineable constants into argument positions so that the such "inlineable, but safe as a whole" calls to be erased during compaction. This should give us general compile-time performance improvement too as we no longer need to expand the IR for those calls. Requires: - #50764 - #50765 - #50768 03 August 2023, 18:03:42 UTC
c03a346 Optimize PLT and jl_load_and_lookup calls (#50745) 03 August 2023, 16:40:38 UTC
881e08b Support rounding `Irrational`s (#45598) 03 August 2023, 15:50:41 UTC
b3e8bd0 ssair: `compact!` constant `PiNode` (#50768) Currently the `compact!`-ion pass fails to fold constant `PiNode` like `PiNode(0.0, Const(0.0))`. This commit fixes it up. 03 August 2023, 15:36:54 UTC
1b9eeca docs: fix wrong description (#50774) The descriptions had `i <= 5` while the code block had `i <=3`. 03 August 2023, 13:24:09 UTC
c62f4ea Add command line option for short banner (#50726) ``` o | Version 1.10.0-beta1 (2023-07-25) o o | Official https://julialang.org/ release ``` --------- Co-authored-by: Claire Foster <aka.c42f@gmail.com> 03 August 2023, 11:42:07 UTC
2a8eca3 irinterp: refine `:nothrow` only when it is not proved yet (#50764) This makes irinterp not override `:nothrow=true` that are assumed by `Base.@assume_effects`. 03 August 2023, 10:56:24 UTC
cbc72d5 test: make sure cachecompile does not combine modules in one file (#50750) 03 August 2023, 03:08:03 UTC
7d0da58 Fix log1p(z) for extremely small |z|. (#50769) If |z| is extremely small (e.g. `1e-200+5e-175im`), the expression `log(u)*z/(u-1)` (where `u` is `1 + z`) evaluates to 0, because the product `log(u)*z` is approximately `z.im*z` when |z| is very small, and that product underflows to 0. By adding parentheses so that the expression is `log(u)*(z/(u-1))`, `z/(u - 1)` is evaluated first and the underflow is avoided. 03 August 2023, 01:41:16 UTC
6b4d519 effects: fix `:nothrow` modeling of `getglobal` (#50765) 02 August 2023, 23:22:32 UTC
bea8c44 Don't partition alwaysinline functions (#50766) 02 August 2023, 21:51:31 UTC
d64d336 AbstractIntepreter: revert `invokecall` to a positional argument (#50763) In #50739, `invokecall` argument of `concrete_eval_call` was changed to a keyword argument. However, this was an unintentional change that imposes unnecessary changes to be required on packages using external `AbstractInterpreter`. This commit simply restores it to positional argument as before. 02 August 2023, 19:36:18 UTC
3eddd17 follow up "[NFC] minor refactorings on gf.c & codegen.cpp (#50645)" (#50748) This follows up commit https://github.com/JuliaLang/julia/commit/19f6926d2109df35ae51a45f587f4d61e81a1d50. As discussed in PR, the changes in gf.c were not NFC and may lead to performance problems, so should be reverted. Also added more detailed comments on the codegen.cpp change. 02 August 2023, 15:45:09 UTC
bb4929d Fix outdated usage of scrubbing for log test failures (#50759) Fixes #50755. 02 August 2023, 15:42:29 UTC
edff86a cat: remove unused promote_eltype methods that confuse inference (#50753) These cannot be reached, but they would imply this function might return Bottom, which it cannot. Fix #50550 02 August 2023, 15:41:19 UTC
202a64c 🤖 [master] Bump the Pkg stdlib from 80e64bcd3 to 2c04d5a98 (#50760) 02 August 2023, 15:33:10 UTC
3c64bc3 fix O(n^2) `length` calls in compact-ir lowering step (#50756) This can be a problem for very long function bodies. 02 August 2023, 03:34:16 UTC
33e3d9f inference: permit recursive type traits (#50694) We had a special case for Type that disallowed type trait recursion in favor of a pattern that almost never appears in code (only once in the compiler by accident where it doesn't matter). This was unnecessarily confusing and unexpected to predict what can infer, and made traits harder than necessary (such as Broadcast.ndims since 70fc3cdc11b). Fix #43296 Fix #43368 02 August 2023, 03:32:13 UTC
3708229 Add alignment to constant globals (#50738) 02 August 2023, 00:25:09 UTC
f00957b Refactor final-gc-lowering (#50741) 01 August 2023, 22:05:05 UTC
8066c29 AbstractInterpreter: add a hook to customize bestguess calculation (#50744) Currently, the code that updates `bestguess` using `ReturnNode` information includes hardcodes that relate to `Conditional` and `LimitedAccuracy`. These behaviors are actually lattice-dependent and therefore should be overloadable by `AbstractInterpreter`. Additionally, particularly in Diffractor, a clever strategy is required to update return types in a way that it takes into account information from both the original method and its rule method (xref: JuliaDiff/Diffractor.jl#202). This also requires such an overload to exist. In response to these needs, this commit introduces an implementation of a hook named `update_bestguess!`. 01 August 2023, 20:54:41 UTC
9822257 only limit types in stack traces in the REPL (#50598) fixes #50575 Co-authored-by: Shuhei Kadowaki <40514306+aviatesk@users.noreply.github.com> 01 August 2023, 19:29:33 UTC
7b587ac irinterp: fix semi-concrete evaluation of overlay methods (#50739) This commit introduces several fixes related to the overlay method and its semi-concrete evaluation. When `f` is being overlayed, semi-concrete interpretation is performed on `f`. While this isn't problematic in itself, the issue arises since there is no overlay check within concrete evaluation in the semi-concrete interpretation (`concrete_eval_invoke`), potentially leading to mis-compilation. This commit makes adjustments to allow semi-concrete interpretation for overlay methods, while preventing the concretization of overlay methods within `concrete_eval_invoke`. Note: Confirmed GPUCompiler test suite passes with this patch after https://github.com/JuliaGPU/GPUCompiler.jl/pull/488. 01 August 2023, 14:59:37 UTC
9808035 Respect linkage type in jl_merge_module (#50678) We shouldn't merge non-external definitions in `jl_merge_module`, so that we can freely emit internal globals without relying on a global counter. Depends on #50650 01 August 2023, 14:46:47 UTC
ec8df3d Print out module in more places when we abort (#50723) 31 July 2023, 19:24:34 UTC
382ba35 Support `convert(LineNumberNode, ::LineInfoNode)` (#50676) xref https://github.com/timholy/CodeTracking.jl/pull/113. It looks like that method might not even be important anymore for CodeTracking and the Revise stack, but because we have lots of packages that dive into internals, having this seems to make sense. 31 July 2023, 18:10:23 UTC
441fcb1 Merge opaque closure modules with the rest of the workqueue (#50724) This sticks the compiled opaque closure module into the `compiled_functions` list of modules that we have compiled for the particular `jl_codegen_params_t`. We probably should manage that vector in codegen_params, since it lets us see if a particular codeinst has already been compiled but not yet emitted. 31 July 2023, 17:58:04 UTC
f4cb8bc fix `CyclePadding(::DataType)` (#50719) We probably want to add a test for this code path. 31 July 2023, 16:40:41 UTC
6f0a9e5 broadcast: simplify ndims (#50695) The extra dispatch was inconsistently used, which seemed unnecessary. Also make sure T is captured as a Type parameter in the closure (fast), instead of a value (potentially slow). Very small difference measured (probably just noise): broadcast (1) | 115.68 | 0.78 | 0.7 | 4245.13 | 849.62 before broadcast (1) | 109.73 | 0.80 | 0.7 | 4243.89 | 788.25 after 31 July 2023, 16:27:18 UTC
a712455 doc: fix typo in tempname docstring (#50734) 31 July 2023, 12:02:51 UTC
21ac3c5 Allocation Profiler: Types for all allocations (#50337) Pass the types to the allocator functions. ------- Before this PR, we were missing the types for allocations in two cases: 1. allocations from codegen 2. allocations in `gc_managed_realloc_` The second one is easy: those are always used for buffers, right? For the first one: we extend the allocation functions called from codegen, to take the type as a parameter, and set the tag there. I kept the old interfaces around, since I think that they cannot be removed due to supporting legacy code? ------ An example of the generated code: ```julia %ptls_field6 = getelementptr inbounds {}**, {}*** %4, i64 2 %13 = bitcast {}*** %ptls_field6 to i8** %ptls_load78 = load i8*, i8** %13, align 8 %box = call noalias nonnull dereferenceable(32) {}* @ijl_gc_pool_alloc_typed(i8* %ptls_load78, i32 1184, i32 32, i64 4366152144) #7 ``` Fixes #43688. Fixes #45268. Co-authored-by: Valentin Churavy <vchuravy@users.noreply.github.com> 31 July 2023, 02:27:11 UTC
210c5b5 Fix rdiv of complex lhs by real factorizations (#50671) Co-authored-by: Martin Holters <martin@holters.name> 29 July 2023, 16:59:04 UTC
c664a57 Fix link in TOML docs (#50715) 29 July 2023, 16:54:58 UTC
5c69561 Attach `tanpi` docstring to method (#50689) 29 July 2023, 16:39:50 UTC
4825a0c A legendary tale of why we should make pmap default to using CachingPool (#33892) Once upon a time, there was a young julia user first getting started with parallelism. And she found it fearsomely slow. And so she did investigate, and she did illuminate upon her issue. Her closures, they were being reserialized again and again. And so this young woman, she openned an issue #16345. Lo and behold, a noble soul did come and resolve it, by making the glorious `CachingPool()` in #16808. 3 long years a later this julia user did bravely return to the world of parallism, with many battle worn scars. and once more she did face the demon that is `pmap` over closures. But to her folly, she felt no fear, for she believed the demon to be crippled and chained by the glorious `CachingPool`. Fearlessly, she threw his closure over 2GB of data into the maw of the demon `pmap`. But alas, alas indeed, she was wrong. The demon remained unbound, and it slew her, and slew her again. 100 times did it slay her for 101 items was the user iterating upon. For the glorious chains of the the `CachingPool()` remains unused, left aside in the users tool chest, forgotten. 28 July 2023, 23:57:12 UTC
back to top