https://github.com/JuliaLang/julia

sort by:
Revision Author Date Message Commit Date
3f0f911 better printing of types on page profiler 09 February 2024, 23:50:05 UTC
9523361 Document & expose printing of custom `AbstractTestSet` (#53215) This was previously alluded to in the docs as being possible ("just record if we're not the top-level parent"), but trying to do that didn't actually do anything because the printing in the `DefaultTestSet` ignored anything that wasn't a `Test.Result` or `Test.DefaultTestSet`. This is particularly problematic if any of the child-testsets had failures, because those failures would never be shown to a user. Co-authored-by: Sukera <Seelengrab@users.noreply.github.com> Co-authored-by: Ian Butterworth <i.r.butterworth@gmail.com> 09 February 2024, 15:18:03 UTC
65d4ce2 implement convert from NamedTuple to Tuple (#49879) See the discussion from Discourse: https://discourse.julialang.org/t/construct-tuple-containing-namedtuple-from-tuple 09 February 2024, 15:14:44 UTC
daac6a6 doc: Rephrase some text referring to `DArray` (#53244) Some parts of `distributed-computing.md` were somewhat unclear/confusing after `DArray` was moved to `DistributedArrays.jl`. 09 February 2024, 15:13:33 UTC
36b7d3b Add PGO+LTO Makefile (#45641) Adds a convenient way to enable PGO+LTO on Julia and LLVM together: 1. `cd contrib/pgo-lto` 2. `make -j$(nproc) stage1` 3. `make clean-profiles` 4. `./stage1.build/julia -O3 -e 'using Pkg; Pkg.add("LoopVectorization"); Pkg.test("LoopVectorization")'` 5. `make -j$(nproc) stage2` <details> <summary>* Output looks roughly like as follows</summary> ```c++ $ make -C contrib/pgo-lto top make: Entering directory '/dev/shm/julia/contrib/pgo-lto' llvm-profdata show --topn=50 /dev/shm/julia/contrib/pgo-lto/profiles/merged.prof | c++filt Instrumentation level: IR entry_first = 0 Total functions: 85943 Maximum function count: 7867557260 Maximum internal block count: 3468437590 Top 50 functions with the largest internal block counts: llvm::BitVector::operator|=(llvm::BitVector const&), max count = 7867557260 LateLowerGCFrame::ComputeLiveness(State&), max count = 3468437590 llvm::hashing::detail::hash_combine_recursive_helper::hash_combine_recursive_helper(), max count = 1742259834 llvm::SUnit::addPred(llvm::SDep const&, bool), max count = 511396575 llvm::LiveRange::overlaps(llvm::LiveRange const&, llvm::CoalescerPair const&, llvm::SlotIndexes const&) const, max count = 508061762 llvm::StringMapImpl::LookupBucketFor(llvm::StringRef), max count = 505682177 std::map<llvm::BasicBlock*, BBState, std::less<llvm::BasicBlock*>, std::allocator<std::pair<llvm::BasicBlock* const, BBState> > >::operator[](llvm::BasicBlock* const&), max count = 395628888 llvm::LiveRange::advanceTo(llvm::LiveRange::Segment const*, llvm::SlotIndex) const, max count = 384642728 llvm::LiveRange::isLiveAtIndexes(llvm::ArrayRef<llvm::SlotIndex>) const, max count = 380291040 llvm::PassRegistry::enumerateWith(llvm::PassRegistrationListener*), max count = 352313953 ijl_method_instance_add_backedge, max count = 349608221 llvm::SUnit::ComputeHeight(), max count = 336604330 llvm::LiveRange::advanceTo(llvm::LiveRange::Segment*, llvm::SlotIndex), max count = 331030109 llvm::SmallPtrSetImplBase::insert_imp(void const*), max count = 272966545 llvm::LiveIntervals::checkRegMaskInterference(llvm::LiveInterval&, llvm::BitVector&), max count = 257449540 LateLowerGCFrame::ComputeLiveSets(State&), max count = 252096274 /dev/shm/julia/src/jltypes.c:has_free_typevars, max count = 230879464 ijl_get_pgcstack, max count = 216953592 LateLowerGCFrame::RefineLiveSet(llvm::BitVector&, State&, std::vector<int, std::allocator<int> > const&), max count = 188013152 /dev/shm/julia/src/flisp/flisp.c:apply_cl, max count = 174863813 /dev/shm/julia/src/flisp/builtins.c:fl_memq, max count = 168621603 ``` </details> This results quite often in spectacular speedups for time to first X as it reduces the time spent in LLVM optimization passes by 25 or even 30%. Example 1: ```julia using LoopVectorization function f!(a, b) @turbo for i in eachindex(a) a[i] *= b[i] end return a end f!(rand(1), rand(1)) ``` ```console $ time ./julia -O3 lv.jl ``` Without PGO+LTO: 14.801s With PGO+LTO: 11.978s (-19%) Example 2: ```console $ time ./julia -e 'using Pkg; Pkg.test("Unitful");' ``` Without PGO+LTO: 1m47.688s With PGO+LTO: 1m35.704s (-11%) Example 3 (taken from issue #45395, which is almost only LLVM): ```console $ JULIA_LLVM_ARGS=-time-passes ./julia script-45395.jl ``` Without PGO+LTO: ``` ===-------------------------------------------------------------------------=== ... Pass execution timing report ... ===-------------------------------------------------------------------------=== Total Execution Time: 101.0130 seconds (98.6253 wall clock) ---User Time--- --System Time-- --User+System-- ---Wall Time--- --- Name --- 53.6961 ( 54.7%) 0.1050 ( 3.8%) 53.8012 ( 53.3%) 53.8045 ( 54.6%) Unroll loops 25.5423 ( 26.0%) 0.0072 ( 0.3%) 25.5495 ( 25.3%) 25.5444 ( 25.9%) Global Value Numbering 7.1995 ( 7.3%) 0.0526 ( 1.9%) 7.2521 ( 7.2%) 7.2517 ( 7.4%) Induction Variable Simplification 6.0541 ( 5.1%) 0.0098 ( 0.3%) 5.0639 ( 5.0%) 5.0561 ( 5.1%) Combine redundant instructions #2 ``` With PGO+LTO: ``` ===-------------------------------------------------------------------------=== ... Pass execution timing report ... ===-------------------------------------------------------------------------=== Total Execution Time: 72.6507 seconds (70.1337 wall clock) ---User Time--- --System Time-- --User+System-- ---Wall Time--- --- Name --- 36.0894 ( 51.7%) 0.0825 ( 2.9%) 36.1719 ( 49.8%) 36.1738 ( 51.6%) Unroll loops 16.5713 ( 23.7%) 0.0129 ( 0.5%) 16.5843 ( 22.8%) 16.5794 ( 23.6%) Global Value Numbering 5.9047 ( 8.5%) 0.0395 ( 1.4%) 5.9442 ( 8.2%) 5.9438 ( 8.5%) Induction Variable Simplification 4.7566 ( 6.8%) 0.0078 ( 0.3%) 4.7645 ( 6.6%) 4.7575 ( 6.8%) Combine redundant instructions #2 ``` Or -28% time spent in LLVM. `perf` reports show this is mostly fewer instructions and reduction in icache misses. --- Finally there's a significant reduction in binary sizes. For libLLVM.so: ``` 79M usr/lib/libLLVM-13jl.so (before) 67M usr/lib/libLLVM-13jl.so (after) ``` And it can be reduced by another 2MB with `--icf=safe` when using LLD as a linker anyways. - [x] Two out-of-source builds would be better than a single in-source build, so that it's easier to find good profile data --------- Co-authored-by: Oscar Smith <oscardssmith@gmail.com> Co-authored-by: Lilith Orion Hafner <lilithhafner@gmail.com> 09 February 2024, 14:37:01 UTC
27b31d1 Reroute algebraic functions for `Symmetric`/`Hermitian` through triangular (#52942) This ensures that only the triangular indices are accessed for strided parent matrices. Fix #52895 ```julia julia> M = Matrix{Complex{BigFloat}}(undef, 2, 2); julia> M[1,1] = M[2,2] = M[1,2] = 2; julia> H = Hermitian(M) 2×2 Hermitian{Complex{BigFloat}, Matrix{Complex{BigFloat}}}: 2.0+0.0im 2.0+0.0im 2.0-0.0im 2.0+0.0im julia> H + H # works after this 2×2 Hermitian{Complex{BigFloat}, Matrix{Complex{BigFloat}}}: 4.0+0.0im 4.0+0.0im 4.0-0.0im 4.0+0.0im ``` This also provides a speed-up in several common cases (allocations mentioned only when they differ): ```julia julia> H = Hermitian(rand(ComplexF64,1000,1000)); julia> H2 = Hermitian(rand(ComplexF64,1000,1000),:L); ``` | Operation | master | PR | | ---- | ---- | ---- | |`-H` |2.247 ms | 1.384 ms | | `real(H)` |1.544 ms |1.175 ms | |`H + H` |2.288 ms |1.978 ms | |`H + H2` |5.139 ms |3.287 ms | | `isdiag(H)` |23.042 ns (1 allocation: 16 bytes) |16.778 ns (0 allocations: 0 bytes) | I'm not entirely certain why `isdiag(H)` allocates on master, as union splitting should handle this automatically, but manually splitting the union appears to help. 09 February 2024, 10:56:32 UTC
63e95d4 Add nested precomp highlight debug (#53111) 09 February 2024, 07:34:34 UTC
e507785 Support escape expressions in @kwdef (#53230) `@kwdef` currently does not handle escaped type names and default values correctly. This makes it impossible to write a (correctly escaped) macro that internally uses `@kwdef`: ```julia julia> module M macro define_struct(name) quote @kwdef struct $(esc(name)) field::Int end end end end; julia> @macroexpand M.@define_struct(Foo) ERROR: Invalid usage of @kwdef Stacktrace: [1] error(s::String) @ Base ./error.jl:35 [2] var"@kwdef"(__source__::LineNumberNode, __module__::Module, expr::Any) @ Base ./util.jl:603 [3] #macroexpand#66 @ Base ./expr.jl:122 [inlined] [4] top-level scope @ REPL[5]:1 ``` This PR patches `@kwdef` so various types of escaping are handled correctly. Specifically, all of the following now works (see new test case [here](https://github.com/ettersi/julia/blob/adf7e20378ae7d0c3cf24a2cc3c815e560913b78/test/misc.jl#L1290-L1332)): ```julia module KwdefWithEsc const Int1 = Int const val1 = 42 macro define_struct() quote @kwdef struct $(esc(:Struct)) a b = val1 c::Int1 d::Int1 = val1 $(esc(quote e f = val2 g::Int2 h::Int2 = val2 end)) $(esc(:(i = val2))) $(esc(:(j::Int2))) $(esc(:(k::Int2 = val2))) l::$(esc(:Int2)) m::$(esc(:Int2)) = val1 n = $(esc(:val2)) o::Int1 = $(esc(:val2)) $(esc(:p)) $(esc(:q)) = val1 $(esc(:s))::Int1 $(esc(:t))::Int1 = val1 end end end end module KwdefWithEsc_TestModule using ..KwdefWithEsc const Int2 = Int const val2 = 42 KwdefWithEsc.@define_struct() end ``` --------- Co-authored-by: inky <git@wo-class.cn> 08 February 2024, 22:30:27 UTC
aba8afc Improve truecolor terminal capability detection (#53235) Terminal color detection is a fickle beast, but it should behave as expected more often with these changes. Note to self: don't go "investigating" informal terminal standards again if I value my time, or sanity. 08 February 2024, 20:35:32 UTC
dd83530 deps/csl: Use platform-dependent path separator (#52687) When building julia from source in MSYS2, you need to use `;` as a path separator, otherwise you won't be able to find the required DLLs! ## pr changes - On win, use `;` as path separator - Always search for DLLs in the `bin/` directory ### test steps Clean csl first: `make -C deps/ USE_SYSTEM_CSL=1 clean-csl` Before pr: ```sh $ make -C deps/ USE_SYSTEM_CSL=1 install-csl make: Entering directory '/d/jl/julia/deps' make: [/d/jl/julia/deps/csl.mk:59: /d/jl/julia/usr/bin/libgfortran-3.dll] Error 1 (ignored) make: [/d/jl/julia/deps/csl.mk:60: /d/jl/julia/usr/bin/libgfortran-4.dll] Error 1 (ignored) make: [/d/jl/julia/deps/csl.mk:61: /d/jl/julia/usr/bin/libgfortran-5.dll] Error 1 (ignored) make: [/d/jl/julia/deps/csl.mk:64: /d/jl/julia/usr/bin/libquadmath-0.dll] Error 1 (ignored) make: [/d/jl/julia/deps/csl.mk:65: /d/jl/julia/usr/bin/libstdc++-6.dll] Error 1 (ignored) make: [/d/jl/julia/deps/csl.mk:66: /d/jl/julia/usr/bin/libssp-0.dll] Error 1 (ignored) make: [/d/jl/julia/deps/csl.mk:67: /d/jl/julia/usr/bin/libatomic-1.dll] Error 1 (ignored) make: [/d/jl/julia/deps/csl.mk:68: /d/jl/julia/usr/bin/libgomp-1.dll] Error 1 (ignored) make: [/d/jl/julia/deps/csl.mk:75: /d/jl/julia/usr/bin/libgcc_s_seh-1.dll] Error 1 (ignored) make: [/d/jl/julia/deps/csl.mk:86: /d/jl/julia/usr/bin/libwinpthread-1.dll] Error 1 (ignored) make: Leaving directory '/d/jl/julia/deps' ``` After pr: ```sh $ make -C deps/ USE_SYSTEM_CSL=1 install-csl make: Entering directory '/d/jl/julia/deps' make: [/d/jl/julia/deps/csl.mk:59: /d/jl/julia/usr/bin/libgfortran-3.dll] Error 1 (ignored) make: [/d/jl/julia/deps/csl.mk:60: /d/jl/julia/usr/bin/libgfortran-4.dll] Error 1 (ignored) make: [/d/jl/julia/deps/csl.mk:66: /d/jl/julia/usr/bin/libssp-0.dll] Error 1 (ignored) make: Leaving directory '/d/jl/julia/deps' ``` ## Env - Win 11 - MSYS2 `STD_LIB_PATH` ``` $ uname -a MINGW64_NT-10.0-22631 A309-Y9000P 3.4.10.x86_64 2023-11-30 06:09 UTC x86_64 Msys $ make -C deps/ print-PATHSEP print-STD_LIB_PATH make: Entering directory '/d/jl/julia/deps' PATHSEP=; STD_LIB_PATH=D:/env/msys64/mingw64/bin/../bin/gcc/x86_64-w64-mingw32/13.2.0/;D:/env/msys64/mingw64/bin/../bin/gcc/;D:/env/msys64/mingw64/bin/../bin/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/x86_64-w64-mingw32/13.2.0/;D:/env/msys64/mingw64/bin/../bin/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ ;D:/env/msys64/mingw64/bin/../bin/gcc/x86_64-w64-mingw32/13.2.0/;D:/env/msys64/mingw64/bin/../bin/gcc/;D:/env/msys64/mingw64/bin/../bin/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/x86_64-w64-mingw32/13.2.0/;D:/env/msys64/mingw64/bin/../bin/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/../bin/;D:/env/msys64/mingw64/bin/../bin/gcc/x86_64-w64-mingw32/13.2.0/../../../x86_64-w64-mingw32/13.2.0/;D:/env/msys64/mingw64/bin/../bin/gcc/x86_64-w64-mingw32/13.2.0/../../../../bin/;D:/a/msys64/mingw64/bin/x86_64-w64-mingw32/13.2.0/;D:/a/msys64/mingw64/bin/../bin/;D:/env/msys64/mingw64/bin/../bin/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/;D:/env/msys64/mingw64/bin/../bin/gcc/x86_64-w64-mingw32/13.2.0/../../../;D:/a/msys64/mingw64/bin/ make: Leaving directory '/d/jl/julia/deps' ``` 08 February 2024, 18:47:15 UTC
a0989f4 Added tests for kron! for diagonal matrices (#53184) Co-authored-by: Jishnu Bhattacharya <jishnub.github@gmail.com> 08 February 2024, 16:25:54 UTC
95df060 Qualify public, unexported bindings in REPL help (#52524) Fixes #52472, which was caused by `names` being changed to also return public, unexported symbols in #50105. Note that this restores previous behavior. A case could be made to instead add the public, unexported bindings as suggestions with the appropriate qualification. Not entirely sure how to test this so I'd welcome any suggestions. --------- Co-authored-by: Jameson Nash <vtjnash@gmail.com> 08 February 2024, 16:15:15 UTC
3dadada Allow using an unexported custom `AbstractTestSet` in `@testset` (#53212) Co-authored-by: Sukera <Seelengrab@users.noreply.github.com> 08 February 2024, 12:53:28 UTC
667cdde compiler: fix the XXX test case in ssair.jl (#53245) This should live in test/compiler/inline.jl instead. 08 February 2024, 12:39:13 UTC
2b939f7 Add Debian terminfo directory default to find_terminfo_file (#51809) Without this, `Base.current_terminfo` returns `TermInfo(String[]; 0 flags, 0 numbers, 0 strings)` because it cannot find the correct terminfo files. In the regular terminal, there was basic color and formatting functionality because `$TERM`s starting with `xterm` are treated specially, but in a tmux session, where the `$TERM = tmux-256color`, there was no color at all. This also has the side-effect of enabling strikethrough and italics in the default gnome terminal emulator. The readme found in `/etc/terminfo/README` (as mentioned in `terminfo(5) "Fetching Compiled Descriptions"`) says the following: ``` /etc/terminfo/README This directory is for system-local terminfo descriptions. By default, ncurses will search ${HOME}/.terminfo first, then /etc/terminfo (this directory), then /lib/terminfo, and last not least /usr/share/terminfo. ``` I believe the manual might be different depending on the distro. 08 February 2024, 12:26:11 UTC
815cfd5 Added documentation to libdl module (#52825) Part of #52725 --------- Co-authored-by: RichieWilynnton <richiewilynton@gmail.com> Co-authored-by: Steven G. Johnson <stevenj@mit.edu> Co-authored-by: Jameson Nash <vtjnash@gmail.com> Co-authored-by: inky <git@wo-class.cn> Co-authored-by: Max Horn <max@quendi.de> 08 February 2024, 12:13:23 UTC
c1a7bb2 🤖 [master] Bump the Pkg stdlib from f3b81f1aa to 6dd0e7c9e (take 2) (#53220) Replaces https://github.com/JuliaLang/julia/pull/53216 (I can't push to that repo branch) Adds - making pkgimages for REPLExt - Fixes PkgCompletionProvider location Stdlib: Pkg URL: https://github.com/JuliaLang/Pkg.jl.git Stdlib branch: master Julia branch: master Old commit: f3b81f1aa New commit: 6dd0e7c9e Julia version: 1.11.0-DEV Pkg version: 1.11.0 Bump invoked by: @IanButterworth Powered by: [BumpStdlibs.jl](https://github.com/JuliaLang/BumpStdlibs.jl) Diff: https://github.com/JuliaLang/Pkg.jl/compare/f3b81f1aac77acf08f5d847ead29ad0a228dec67...6dd0e7c9e99d578aa5477e2c78c91a161ce4c357 ``` $ git log --oneline f3b81f1aa..6dd0e7c9e 6dd0e7c9e Revert "add test for recurring precompile" (#3779) dbf114fa9 Merge pull request #3777 from JuliaLang/kc/repl_extension a49d47981 fixup e3edf3917 avoid prompting for git creds on CI (#3778) 510454343 make the `REPL` specific code into an extension 12d2de14e make `pkgstr` independent of REPL ``` --------- Co-authored-by: Dilum Aluthge <dilum@aluthge.com> Co-authored-by: Valentin Churavy <vchuravy@users.noreply.github.com> Co-authored-by: Kristoffer Carlsson <kcarlsson89@gmail.com> Co-authored-by: Jameson Nash <vtjnash@gmail.com> 08 February 2024, 12:05:47 UTC
ebe947e Add docstring for InteractiveUtils module (#53206) Handles the `InteractiveUtils` part of https://github.com/JuliaLang/julia/issues/52725. cc @stevengj 08 February 2024, 11:57:22 UTC
e68e432 allow printing some TOML dictionaries inline by marking them with an IdSet (#53233) This was one way I came up with to "mark" what dictionaries one wants to print inline. I am not sure `IdSet` is even considered public but it seemed the most reasonable for this. 08 February 2024, 11:56:45 UTC
4c2df21 Add `Pipe` to the documentation (#53202) The reasoning is that `Pipe` is specifically documented in other functions that are part of the public API (e.g. `redirect_stdio()`), so it should be documented too. Same goes for `link_pipe!()` since it's mentioned in the `Pipe` docstring. The other function that could be documented is `open_pipe!()`, but that specifically applies to `PipeEndpoint`'s and I could imagine that we want it to be difficult to create a half-initialized `Pipe` :sweat_smile: I wrote a docstring for `link_pipe!()` based off the libuv docs: https://docs.libuv.org/en/v1.x/pipe.html#c.uv_pipe 08 February 2024, 11:55:17 UTC
b5bd10e Add `track_content` option to allow hashing of `include_dependency`s (#51798) Continuation of #49866. Fixes #52462 So far any `include_dependency` was tracked by `mtime`. A package using `include_dependency` can't be relocated without recompilation if the dependency also needs to be relocated. With `include_dependency(path, track_content=true)` the tracking works like for `include`, i.e. recompilation is only triggered when the file's content changes. In case `path` is a directory we use the string `join(readdir(path))` as content. --------- Co-authored-by: Valentin Churavy <vchuravy@users.noreply.github.com> 08 February 2024, 11:54:08 UTC
15e2af2 Added docstring for Artifacts.jl (#52913) This is a part of issue #52725. --------- Co-authored-by: Steven G. Johnson <stevenj@mit.edu> Co-authored-by: Max Horn <max@quendi.de> 08 February 2024, 11:52:35 UTC
c5ad467 Document --heap-size-hint in Command-line Interface (#50480) Almost a direct copy of the output in `julia --help`. Closes #50588 Co-authored-by: Max Horn <max@quendi.de> 08 February 2024, 11:44:55 UTC
2673c14 Clarify `==` docs for collections (#52495) Alright, here's my spitball at fixing https://github.com/JuliaLang/julia/issues/52484. This also clarifies the non-missing behaviors, and adds a reference to `all` which should be a useful breadcrumb. I don't want to say `all(x .== y)` because that has all sorts of broadcasting semantics, but we could perhaps add a comparison to `all(splat(==), zip(x, y))` or `all(map(==, x, y))`, but even those feel sketchy to reference as they may miss other properties (like array shape). --------- Co-authored-by: Jameson Nash <vtjnash@gmail.com> Co-authored-by: inky <git@wo-class.cn> Co-authored-by: Max Horn <max@quendi.de> 08 February 2024, 11:39:42 UTC
41a6e7b [LibCURL_jll] Upgrade to v8.6.0 (#53222) 08 February 2024, 10:03:05 UTC
5cb5cd8 code_warntype docs: more neutral reference to @code_warntype (#51361) fix #51358 --------- Co-authored-by: Fredrik Ekre <ekrefredrik@gmail.com> Co-authored-by: Max Horn <max@quendi.de> 08 February 2024, 09:25:36 UTC
4414599 Fix PkgId repr (#52795) Fixes #52793 ``` % ./julia --startup-file=no -E 'repr(Base.PkgId(Base.UUID("295af30f-e4ad-537b-8983-00126c2a3abe"), "Revise"))' "Base.PkgId(UUID(\"295af30f-e4ad-537b-8983-00126c2a3abe\"), \"Revise\")" ``` ``` julia> Base.PkgId(Base.UUID("295af30f-e4ad-537b-8983-00126c2a3abe"), "Revise") Revise [295af30f-e4ad-537b-8983-00126c2a3abe] ``` 08 February 2024, 09:24:39 UTC
4d0a469 SubArray: avoid invalid elimination of singleton indices (#53228) close #53209 08 February 2024, 06:22:48 UTC
2bd4cf8 Avoid allocations in views of views (#53231) Currently, views-of-views construct their re-indexed indices by slicing into the parent indices. This PR changes this to use views of the parent indices instead. This makes the operation faster and non-allocating if the `parentindices` for the original view are `Vector`s. ```julia julia> a = rand(200, 200); julia> av = view(a, collect.(axes(a))...); julia> @btime view($av, axes($av)...); 312.393 ns (4 allocations: 3.25 KiB) # master 7.354 ns (0 allocations: 0 bytes) # PR ``` Indexing into the resulting view seems equally fast in simple cases: ```julia julia> av2 = view(av, axes(av)...); julia> @btime sum($av2); 66.883 μs (0 allocations: 0 bytes) # master 66.888 μs (0 allocations: 0 bytes) # PR julia> av2 = view(av, collect.(axes(av))...); julia> @btime sum($av2); 66.886 μs (0 allocations: 0 bytes) # master 66.891 μs (0 allocations: 0 bytes) # PR ``` --------- Co-authored-by: N5N3 <2642243996@qq.com> 08 February 2024, 06:22:24 UTC
a6ce761 add docs and jldoctests for `Base.shell_split` and `Base.rstrip_shell` (#52520) These were undocumented and I have seen `Base.shell_split` used in the package ecosystem. This adds some docs for clarity although neither of these functions are part of Base's exports. --------- Co-authored-by: Jameson Nash <vtjnash@gmail.com> 08 February 2024, 04:50:19 UTC
72d3abe Fix potential instability/invalidation in dlpath (#53232) While debugging some invalidations and instabilities in code in packages I work on, one of the issues I stumbled over is this code in this `dlpath` method: ```julia function dlpath(libname::Union{AbstractString, Symbol}) handle = dlopen(libname) path = dlpath(handle) dlclose(handle) return path end ``` The `dlopen` modified in this PR can in principle return `nothing`. But there is no `dlpath` method for this. If one loads just a plain Julia, all is fine, but under certain conditions (deep in a call chain analyzed with Cthulhu.jl) it ended up not being able to prove that `path` will be a string, and only inferred it as `Any`. But if `throw_error` is set to `true` (the default, and used in the relevant code path) then `dlopen` cannot return `nothing`, it always returns a `String`. But the Julia compiler can't know that, as the exception is thrown by a C helper. So instead modify the Julia code a bit to help Julia deduce this fact by itself. 07 February 2024, 21:28:09 UTC
18df941 doc: cosmetic whitespace changes in documentation.md (#53183) 07 February 2024, 20:44:57 UTC
e2c8809 Disambiguate get_world_counter and get_inference_world (#53088) Add brief docs to `Base.get_world_counter` and add `Base.tls_wold_age`. Furthermore to disambiguate `get_world_counter` from the inference world rename the abstract interpreter accessor to `get_inference_world` 07 February 2024, 19:36:12 UTC
d24316a Fix Int8(-128) // Int8(-128) (#51944) Fixes #51731 and #51730 Also fixes one of the previously broken tests: ```julia @test_broken Rational{Int64}(UInt(1), typemin(Int32)) == Int64(1) // Int64(typemin(Int32)) ``` This PR ensures the `Rational{T}` constructor with concrete `T` will only throw if the final numerator and denominator cannot be represented by `T`, or are both zero. If the `T` in `Rational{T}` is not concrete, this PR tries to ensure the numerator and denominator are promoted to the same type. This means `-1*Rational{Integer}(-1, 0x01) == 1` doesn't throw now. A side effect of this is that `Rational{Integer}(Int8(-1), 0x01)` now throws. Also, related to <https://github.com/JuliaLang/julia/pull/25702#issuecomment-359821951>, now `divgcd` doesn't change the types of its inputs and can handle `typemin`, but it still throws a `DivideError` if both inputs are zero. 07 February 2024, 15:53:14 UTC
736eeda docs: remove outdated discussion about externally changing module bindings (#53170) As of Julia 1.9, bindings in modules can be changed directly. See https://discourse.julialang.org/t/clarify-the-documentation-about-modifying-module-variables/109668/3 07 February 2024, 15:03:21 UTC
bead1d3 fix spurious overflow for Float16(::Rational) (#52395) Fixes #52394. Also fixes `Float32` for `UInt128`, since currently `Float32((typemax(UInt128)-0x01) // typemax(UInt128))` gives `Nan32`. 07 February 2024, 14:50:51 UTC
d765ad1 Added documentation for the Markdown Macro (#52607) Co-authored-by: Jameson Nash <vtjnash@gmail.com> 07 February 2024, 13:56:14 UTC
e22db88 [deps] Do not build OpenBLAS Bfloat16 kernels in from source build (#53221) Not clear why OpenBLAS build fails, GCC 10 should be sufficient to compile the Bfloat16 kernels and [from what I can tell](https://github.com/JuliaLang/julia/issues/53172#issuecomment-1930144786) that's the compiler version used in CI, but I don't know how to verify it since this is a nightly job. If someone who knows more about the setup can chime in, that'd be great. In the meantime, disabling these kernels should fix #53172. 07 February 2024, 13:08:24 UTC
d453af8 Fix escaping of docstring in `@__DIR__` (#53225) This issue was introduced in #52442. The markdown parser had issues with the triple-quotes. Usually you can use quadruple-quotes to fix this, but this does not appear to be supported, so we escape each with backslash. Here is the corrected docstring rendered: ```julia-repl help?> @__DIR__ @__DIR__ -> String Macro to obtain the absolute path of the current directory as a string. If in a script, returns the directory of the script containing the @__DIR__ macrocall. If run from a REPL or if evaluated by julia -e <expr>, returns the current working directory. Example ≡≡≡≡≡≡≡ The example illustrates the difference in the behaviors of @__DIR__ and pwd(), by creating a simple script in a different directory than the current working one and executing both commands: julia> cd("/home/JuliaUser") # working directory julia> # create script at /home/JuliaUser/Projects open("/home/JuliaUser/Projects/test.jl","w") do io print(io, """ println("@__DIR__ = ", @__DIR__) println("pwd() = ", pwd()) """) end julia> # outputs script directory and current working directory include("/home/JuliaUser/Projects/test.jl") @__DIR__ = /home/JuliaUser/Projects pwd() = /home/JuliaUser ``` 07 February 2024, 04:53:09 UTC
41bbfb4 Add explicit mention of branch cuts to `log`, `sqrt`, `angle` docstrings (#52970) I realised that `angle` doesn't even specify that it's in -π to π. These are all pretty standard but perhaps we should be explicit. 07 February 2024, 02:39:00 UTC
0c804bd Add InteractiveUtils in doc refs to define_editor (#52927) Otherwise since `define_editor` is not exported, it's hard for the user to find what it's referring to. (Another possibility would be to export `define_editor`) 07 February 2024, 02:37:53 UTC
76b8b2a improve return type inference for `string` (#52806) Packages like URIs.jl overload `joinpath` with methods that return non-strings. This prevents good return type inference for `string` when the types of its arguments are unknown. Even if this is a URIs.jl bug, it makes sense to be defensive about this in the Julia implementation. Also note that URIs.jl is widely-used, JuliaHub says it's got in excess of a thousand (indirect) dependents. So, IMO, this is a Julia bug that we should fix: ```julia-repl julia> all(T -> T <: AbstractString, Base.return_types(string)) true julia> import URIs julia> all(T -> T <: AbstractString, Base.return_types(string)) false ``` Fixed by adding a `::String` type assertion in `base/libdl.jl`. 07 February 2024, 02:36:51 UTC
fc1c1cd Add missing artifact functions to docs output (#52698) Fixes #52688 Co-authored-by: re1san <kathareaniket47@gmail.com> 07 February 2024, 02:31:00 UTC
32687b0 Clarify the docs of @__DIR__ (#52442) The original docs start with `Expand`, which is already a concept that might not be clear to the reader. Furthermore, in this version there is an example to illustrate how this macro is different from `pwd()`. 07 February 2024, 00:59:21 UTC
101aa39 Remove allocation from PermutedDimsArray constructor (#53185) Remove allocation from PermutedDimsArray constructor by replacing `all(map(pred, ...))` with `all(pred, ...)`. 06 February 2024, 21:49:05 UTC
34f1496 rename init.c func `abspath` -> `absrealpath` (#52574) For clarification given its behavior is not the same as julia's `abspath` Related https://github.com/JuliaLang/julia/issues/52458 06 February 2024, 21:45:41 UTC
522cf3b add docstring and doctest for `Base.format_bytes` (#52976) There are many uses of this function throughout the package ecosystem. In addition, it is common to see it re-implemented. This adds some docstrings and tests for `Base.format_bytes`. 06 February 2024, 21:40:20 UTC
321cc2d add specialized `reverse` implementation for `NTuple` (#50113) This adds a specialized version of `reverse` for NTuple using a simple constructor. 1.9: ``` julia> a = tuple(rand(Int, 256)...); julia> @benchmark reverse($a) BenchmarkTools.Trial: 7099 samples with 1 evaluation. Range (min … max): 611.280 μs … 5.698 ms ┊ GC (min … max): 0.00% … 0.00% Time (median): 670.392 μs ┊ GC (median): 0.00% Time (mean ± σ): 700.950 μs ± 144.952 μs ┊ GC (mean ± σ): 1.37% ± 5.70% ▃▄██▇▆▆▆▆▄▂ ▂ ▇███████████▇▇▆▄▇█▅▅▅▃▄▁▁▁▁▃▄▄▁▁▁▃▁▃▁▁▄▃▄▅▆▅▆▆▅▅▆▇▆▆▇▇▇█▇▆▇▇▆ █ 611 μs Histogram: log(frequency) by time 1.33 ms < Memory estimate: 794.42 KiB, allocs estimate: 33663. ``` This commit: ``` julia> @benchmark reverse($a) BenchmarkTools.Trial: 10000 samples with 995 evaluations. Range (min … max): 26.252 ns … 52.545 ns ┊ GC (min … max): 0.00% … 0.00% Time (median): 26.285 ns ┊ GC (median): 0.00% Time (mean ± σ): 26.578 ns ± 0.940 ns ┊ GC (mean ± σ): 0.00% ± 0.00% █▆▂ ▁ ▁ ████▆▅▆▅▄▄▄▂▃▄███▇▆▆▆▅▆▄▅▅▆█▇▆▄▅▆▆▅▆██▅▅▅▄▅▅▄▅▄▅▅▅▄▅▃▅▂▄▄██ █ 26.3 ns Histogram: log(frequency) by time 30.2 ns < Memory estimate: 0 bytes, allocs estimate: 0. ``` 06 February 2024, 21:35:49 UTC
0c49003 Update LLVM version to 16.0.6+4 (#53195) This has a build change for enzyme, but should be NFC 06 February 2024, 18:56:33 UTC
9bafc53 Profile: add notes to `print()` docs (#53205) 06 February 2024, 18:36:53 UTC
eb82072 deps/ittapi: Update ittapi clean target (#52693) Change: - clean `libittnotify` and `libjitprofiling`, not `libopenlibm` c.f. https://github.com/JuliaLang/julia/blob/0f62824530feb9ab39c179175b3fc4702d21c552/deps/ittapi.mk#L23-L25 06 February 2024, 18:19:25 UTC
31ae775 fix typo in AnnotatedChar constructor (#53204) Found randomly when using JET for something completely different. 06 February 2024, 16:12:40 UTC
da8a441 Improved terminfo parser (#51198) This bundles up the following changes: - Rejiged TermInfo struct - Read the extended terminfo table using the same method as the non-extended table - Use signed integer types for most numeric values, as per term(5) - More robust get(::TermInfo, ...) methods - Better match the terminfo(5) "Fetching Compiled Descriptions" behaviour 06 February 2024, 16:11:32 UTC
94fd312 Add `:greedy` scheduler to `@threads` (#52096) 06 February 2024, 13:32:19 UTC
353884c Don't tell people to use Pkg to install Pkg (#53197) 06 February 2024, 13:30:35 UTC
28db6c7 AnnotatedIOBuffer: prevent despecialization of annotations list (#53155) In f117a500ca93 code modifying annotations via list comprehensions was introduced. However, when (1) there are annotations present and (2) all annotations are filtered out, this comprehension is inferred to a wider type incompatible with the AnnotatedString constructor. This can be fixed by changing the first element of the tuple to directly use the UnitRange{Int} constructor, which stops it being inferred as an Any. 05 February 2024, 22:36:10 UTC
cfcf8a0 Bump SparseArrays to use SuiteSparse 7.6.0 (#53180) This is using commits that are on a branch of SparseArrays.jl. The PR for SuiteSparse 7.6 in SparseArrays.jl - https://github.com/JuliaSparse/SparseArrays.jl/pull/502 - should be merged first. Then the commits should be updated here, and then this PR should be merged. 05 February 2024, 05:41:46 UTC
26d17a8 Remove Matrix constructor for AbstractTriangular (#53167) This seems redundant, as the fallback constructor does the same. ```julia julia> using LinearAlgebra julia> Revise.track(LinearAlgebra) julia> U = UpperTriangular(rand(4,4)) 4×4 UpperTriangular{Float64, Matrix{Float64}}: 0.798171 0.484117 0.988126 0.986837 ⋅ 0.186955 0.827882 0.600041 ⋅ ⋅ 0.344573 0.344545 ⋅ ⋅ ⋅ 0.29875 julia> Matrix(U) 4×4 Matrix{Float64}: 0.798171 0.484117 0.988126 0.986837 0.0 0.186955 0.827882 0.600041 0.0 0.0 0.344573 0.344545 0.0 0.0 0.0 0.29875 julia> @which Matrix(U) (Array{T, N} where T)(x::AbstractArray{S, N}) where {S, N} @ Core boot.jl:599 ``` 05 February 2024, 04:57:48 UTC
6defd59 Implement empty! for Channel (#53137) 05 February 2024, 02:30:50 UTC
914de06 improve error when broadcast failed due to axistype (#45922) 05 February 2024, 02:27:55 UTC
9aba4a8 try improving check_top_bit error message (#53166) Fixes #30247 @staticfloat this was your issue, so what do you think of this? I think the main problem was already solved (showing the wrong type), but I am wondering if this wording is still clearer, since it tries to align it with functions users might actually have encountered (trunc, convert, signbit) 05 February 2024, 01:17:26 UTC
d91a7fa further improve clarity of MethodError printing (#53164) Distinguish some of the cases of manually thrown MethodError by looking for a method in the specified world. Also refactor some of the kwcall handling to be closer to supporting `invoke`d calls (although it does not guaranteed to have a value for `f`, which is often required later). Fixes #36182 05 February 2024, 01:03:52 UTC
37a0e65 Do not resolve binding `Module` in Main during sysimg generation (#53162) Currently, the use of `Module` in the precompilation scripts makes the Module binding automatically resolved in Main because it is embedded in the sysimage. This prevents users from using the name Module for their own variables in Main. 05 February 2024, 01:01:31 UTC
8db1294 add atomic operators for globals, memory, and setonce (#52868) This implements `AtomicMemory`, atomic operations for globals, and the class of atomic function for setting a field or global or memory exactly once (setting undef => value). It is quite similar to an `@atomicreplace`, but where there was not a previous value. This is not needed for pointers, since it is simply calling C_NULL => pointer in that case, since there is no "undef" value that throws after load. plenty of future work still, for a later PR: - syntax lowering for `@atomic global x = y` and `@atomic closedover = y` - adding `Core.AtomicBox` for closure capture - generic functions for `atomicsetindex` & friends - macro for `@atomic x = y` and `@atomic x[] = y`, etc - design for `@atomiconce f()` 05 February 2024, 00:51:02 UTC
3d8b107 Improve printing for length and size method error (#53146) 04 February 2024, 03:58:55 UTC
6be4235 Write test result data to static location, and log (#53173) 04 February 2024, 03:53:45 UTC
47663bd Normalize indices in promote_shape error messages (#41311) Seeing implementation details like `Base.OneTo` in error messages may be confusing to some users (cf discussion in #39242, [discourse](https://discourse.julialang.org/t/promote-shape-dimension-mismatch/57529/)). This PR turns ```julia julia> ones(2, 3) + ones(3, 2) ERROR: DimensionMismatch("dimensions must match: a has dims (Base.OneTo(2), Base.OneTo(3)), b has dims (Base.OneTo(3), Base.OneTo(2)), mismatch at 1") ``` into ```julia julia> ones(2, 3) + ones(3, 2) ERROR: DimensionMismatch("dimensions must match: a has size (2, 3), b has size (3, 2), mismatch at 1") ``` Fixes #40118. (This is basically #40124, but redone because I made a mess rebasing). --------- Co-authored-by: Jameson Nash <vtjnash@gmail.com> 04 February 2024, 01:32:02 UTC
831cc14 Fix typo in BuildKite test data generation CI code (#53168) 03 February 2024, 19:48:55 UTC
6f7cfa7 Collect test results into BuildKit-compatible JSON (#53145) 03 February 2024, 15:12:52 UTC
fc06291 Improve error message for `which(fn, types)` (#47369) Error messages for `MethodError` are much more helpful in determining why the method was not successfully dispatched than simply "No unique matching method found." Fixes #47322 03 February 2024, 02:49:59 UTC
fda9321 stdlib: make dot product of Hermitian matrices real (#52318) Co-authored-by: Daniel Karrasch <daniel.karrasch@posteo.de> 03 February 2024, 01:07:49 UTC
12c5d2d Add count of lock conflicts to `@time` etc. Add `@lock_conflicts` (#52883) 02 February 2024, 23:48:54 UTC
98e4f01 Fix `size` on `GenericMemory` with non-`Int` `Integer` argument (#53161) I found this through fuzzing. The nature of the issue indicates to me that this was untested, but coverage doesn't seem to have run for the past three months so I can't check, which is why I added an explicit test. I'm not sure `arrayops.jl` is the best place for tests related to `GenericMemory`, so feel free to suggest a better one. Co-authored-by: Sukera <Seelengrab@users.noreply.github.com> 02 February 2024, 21:11:16 UTC
f2e168a Add filter(f, ::Namedtuple) (#50795) 02 February 2024, 16:59:15 UTC
d54a455 Hoist boundscheck in vector setindex for arrays (#53149) As noted by @N5N3 in https://github.com/JuliaLang/julia/issues/40962#issuecomment-1921469633, the bounds-check on the elementwise `setindex!` prevents vectorization. Explicitly performing the bounds-check and marking the `setindex!` as `@inbounds` speeds up the operation. ```julia julia> A = zeros(1000); B = rand(1000); julia> @btime $A[1:end] = @view $B[1:end]; 689.940 ns (0 allocations: 0 bytes) # master 97.629 ns (0 allocations: 0 bytes) # PR ``` 02 February 2024, 07:09:12 UTC
058b511 deps/libsuitesparse: fix source build (#53150) fix #53122 02 February 2024, 06:42:19 UTC
6e7db14 Update and load styledstrings in REPL (#51869) This has some value by itself, but mainly serves as a prerequisite for #51811, #51816, and #51829, along with two other PRs that have yet to be made. 01 February 2024, 18:19:57 UTC
f117a50 Introduce AnnotatedIOBuffer (#51807) This allows for styled content to be constructed incrementally, without resorting to repeated concatenation. It operates very similarly to IOContext, just with a special `write` method and specifically wrapping an IOBuffer. 01 February 2024, 15:38:38 UTC
c16472b Change to streaming out the heap snapshot data (#52854) This PR is to continue the work on the following PR: Prevent OOMs during heap snapshot: Change to streaming out the snapshot data (https://github.com/JuliaLang/julia/pull/51518 ) Here are the commit history: ``` * Streaming the heap snapshot! This should prevent the engine from OOMing while recording the snapshot! Now we just need to sample the files, either online, before downloading, or offline after downloading :) If we're gonna do it offline, we'll want to gzip the files before downloading them. * Allow custom filename; use original API * Support legacy heap snapshot interface. Add reassembly function. * Add tests * Apply suggestions from code review * Update src/gc-heap-snapshot.cpp * Change to always save the parts in the same directory This way you can always recover from an OOM * Fix bug in reassembler: from_node and to_node were in the wrong order * Fix correctness mistake: The edges have to be reordered according to the node order. That's the whole reason this is tricky. But i'm not sure now whether the SoAs approach is actually an optimization.... It seems like we should probably prefer to inline the Edges right into the vector, rather than having to do another random lookup into the edges table? * Debugging messed up edge array idxs * Disable log message * Write the .nodes and .edges as binary data * Remove unnecessary logging * fix merge issues * attempt to add back the orphan node checking logic ``` --------- Co-authored-by: Nathan Daly <nathan.daly@relational.ai> Co-authored-by: Nathan Daly <NHDaly@gmail.com> 01 February 2024, 14:59:17 UTC
8b88e3b delete unnecessary abstract type in `Base.Rounding` (#53093) 01 February 2024, 14:57:13 UTC
88218c6 Clarify error when arrays are too big for the system bit width (#52545) On Slack, was helping someone who encountered an "Invalid Array size" error message on a 32-bit system. The cause wasn't clear, so I had to dig around and realized that it only triggers if an array is created that is too large for the bit width of the system. So I figured it would be better to clarify that in the error message. --------- Co-authored-by: Steven G. Johnson <stevenj@mit.edu> Co-authored-by: Ian Butterworth <i.r.butterworth@gmail.com> 01 February 2024, 14:39:45 UTC
453e9d0 `typemin`, `typemax` for irrationals (#50894) Fixes #36978 01 February 2024, 14:35:22 UTC
30ccace Load StyledStrings in REPL By loading the StyledStrings stdlib in REPL, we load the privateered print/show methods for the Annotated{String,Char} types defined there. This is nice to have, because it means that styled annotated strings can be constructed in Base and elsewhere without loading the StyledStrings stdlib, but they will be displayed as intended in the REPL. 01 February 2024, 12:54:33 UTC
1552116 Update StyledStrings version This gets us two particular commits of interest: - Replace within-module eval with hygienic eval: which makes it possible to include StyledStrings in the sysimage without running into precompile errors. - Load the JULIA_*_COLOR env vars for compat: which mirrors the current behaviour to the relevant faces. 01 February 2024, 12:54:31 UTC
e7a1c7f 🤖 [master] Bump the Pkg stdlib from ba4955e2e to f3b81f1aa (#53138) Stdlib: Pkg URL: https://github.com/JuliaLang/Pkg.jl.git Stdlib branch: master Julia branch: master Old commit: ba4955e2e New commit: f3b81f1aa 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/ba4955e2e0eb64e47861d0a7d96569c05d41f1f5...f3b81f1aac77acf08f5d847ead29ad0a228dec67 ``` $ git log --oneline ba4955e2e..f3b81f1aa f3b81f1aa disable `julia_version` tests (#3773) b13bd2ddf support the "path" key in Project.toml, (#3756) 731105126 why: show more when package is both a direct and indirect dep (#3771) a83783ecb Avoid deleting existing artifacts when ignoring hashes. (#3768) b43187590 ignore tree hashes on Windows w/o symlink capability (#3764) ``` Co-authored-by: Dilum Aluthge <dilum@aluthge.com> 01 February 2024, 09:46:54 UTC
f064e1b forward `repeat(A, cts..)` to `repeat(A; kw..)` (#49830) This would mean that custom array types that seek to extend `repeat` only need to add the method `repeat(A::CustomArray; kw...)` 01 February 2024, 06:12:14 UTC
6db867b Better libuv error message for ENOENT ~ (#22647) 01 February 2024, 05:16:57 UTC
353d7b7 Define valtype(::Tuple) and keytype(::Tuple) (#49179) Same as https://github.com/JuliaLang/julia/pull/46555, but for Tuples Co-authored-by: Oscar Smith <oscardssmith@gmail.com> 01 February 2024, 02:46:09 UTC
08e3c2e Access only stored inds in `copy` for strided `AbstractTriangular` (#52907) 31 January 2024, 20:38:30 UTC
444e14e Make FDWatcher check for file descriptors equal to -1 (#52902) 31 January 2024, 20:37:53 UTC
2b9839b Use insert! not splice! for new annotations Co-authored-by: Jameson Nash <vtjnash@gmail.com> 31 January 2024, 17:54:29 UTC
39839ac Update the mention of annotated features in NEWS 31 January 2024, 17:54:29 UTC
2e6ebb9 Tests for AnnotatedIOBuffer 31 January 2024, 17:54:29 UTC
d49ba4f Writing from one AnnotatedIOBuffer to another 31 January 2024, 17:54:29 UTC
f4c5e13 Also read AnnotatedChars from an AnnotatedIOBuffer The `read(::AnnotatedIOBuffer, AnnotatedString)` method is intended as an approximate analogue to `read(::IOBuffer, String)`. In the same sense, it makes sense to define `read(::AnnotatedIOBuffer, AnnotatedChar)` as an analogue to `read(::IOBuffer, Char)`. 31 January 2024, 17:54:23 UTC
c2b441b Make AnnotatedIOBuffer reading more generic While `String` is the only concrete type for which `read(::IOBuffer, ::Type{<:AbstractString})` is defined, is is entirely conceivable that some other custom string type could define a similar `read` method. Since making reading an `AnnotatedString` from an `AnnotatedIOBuffer` more generic is as easy as replacing the hardcoded `String` with a type parameter, we may as well do so. 31 January 2024, 17:53:42 UTC
886d7a4 get_bool_env: add method with a lazy default option. Add kwarg to throw (#52950) Based on need here https://github.com/JuliaLang/Pkg.jl/pull/3764#discussion_r1456534459 31 January 2024, 17:19:45 UTC
95ae27f Try to fix incorrect documentation of `nthreads` (#53117) Since https://github.com/JuliaLang/julia/pull/49094, the docstring of `nthreads` has been incorrect. It currently states that > The threads in default have id numbers `1:nthreads(:default)`. whereas that is no longer true: ```julia julia> filter(i -> Threads.threadpool(i) == :interactive, 1:Threads.maxthreadid()) 3-element Vector{Int64}: 1 2 3 julia> filter(i -> Threads.threadpool(i) == :default, 1:Threads.maxthreadid()) 6-element Vector{Int64}: 4 5 6 7 8 9 ``` 31 January 2024, 17:10:30 UTC
8304111 Add `Base.checked_pow(x,y)` to `Base.Checked` library (#52849) Fixes #52262. Performs `^(x, y)` but throws OverflowError on overflow. Example: ```julia julia> 2^62 4611686018427387904 julia> 2^63 -9223372036854775808 julia> checked_pow(2, 63) ERROR: OverflowError: 2147483648 * 4294967296 overflowed for type Int64 ``` Co-authored-by: Jameson Nash <vtjnash@gmail.com> Co-authored-by: Shuhei Kadowaki <aviatesk@gmail.com> 31 January 2024, 16:49:59 UTC
81deb5e fix pkgimage.mk tree (#53133) Taken from https://github.com/JuliaLang/julia/pull/53111 31 January 2024, 16:01:30 UTC
back to top