https://github.com/JuliaLang/julia

sort by:
Revision Author Date Message Commit Date
e4ec80f [REPLCompletions] async tab/hint completion REPL utilizes inference for smarter completions, but since its inference engine is independent from the native cache and issues like #52763 in `REPLInterpreter`'s inference, sometimes delays can be noticeable during tab/hint-completion, and REPL can even freeze in the worst cases. To address this, the commit allows tab/hint-completion to run asynchronously on a `:default` thread. This approach removes delays in multi-threaded process and prevents REPL hang in extreme cases like #52763. In detail, for tab-completion, completion task simply runs on a separate thread since completion itself does not block anything. For hint-completion however, considering that a stuttering display of hints can be bothersome, when the completion task doesn't conclude within 0.01 sec, we cancel the hint-completion to keep the input in the REPL smooth. There are still some points left open for discussion: - Is it better to allocate a separate thread specifically for REPL completion? I'm not sure if this is even possible though. - Should we make this an optional feature, considering the concern some users might have about reduced thread resources? - For situations where completion hangs or is slow, like in #52763, canceling the completion task to release resources would be ideal. However, my understanding is that there's no safe method to cancel a task, is it correct? - At present, this commit `Threads.@spawn`s at a relatively high level in the completion pipeline. But it might be more effective to `Threads.@spawn` closer to the point where inference is actually invoked, such as in `complete_line` or `repl_eval_ex`. 11 January 2024, 08:56:13 UTC
73cdfd8 Code validation and IR verification improvements (#52844) 11 January 2024, 08:43:57 UTC
0f7b598 BinaryPlatforms: prevent creating an identical regex every time a `Platform` is parsed (#52829) Pkg likes to call `HostPlatform()` a bit too often for its own good which shows up in some profiles. This makes `HostPlatform()` go from 250 us to 150 us with a quite trivial code change so should be fairly uncontroversial. (Pkg should probably also be fixed, alt. `HostPlatform` should be cached in Base.) 10 January 2024, 20:11:41 UTC
2afc20c Disambiguate mul! for matvec and matmat through indirection (#52837) This forwards `mul!` for matrix-matrix and matrix-vector multiplications to the internal `_mul!`, which is then specialized for the various array types. With this, packages would not encounter any method ambiguity when they define ```julia mul!(::AbstractMatrix, ::MyMatrix, ::AbstractMatrix, alpha::Number, beta::Number) ``` This should reduce the number of methods that packages need to define to work around ambiguities with `LinearAlgebra`. There was already an existing internal function named `_mul!`, but the new methods don't clash with the existing ones, and since both sets of methods usually forward structured multiplications to specialized functions, it's fitting for them to have the same name. 10 January 2024, 16:38:49 UTC
124ce94 Add indirection to inplace matrix scaling (#52840) 10 January 2024, 14:48:28 UTC
bf13a56 Remove 3-term mul! methods involving AbstractTriangular (#52826) The multiplication can be handled by the 5-term methods, and constant propagation should eliminate the branch. This should reduce some potential method ambiguities. 10 January 2024, 04:38:04 UTC
8e4221f Bump Julia to LLVM 16 (#51720) Current Status: - [x] Self test of Julia-GCChecker :: `MissingRoots.c` - [x] ASAN: `error: <unknown>:0: Cannot represent a difference across sections` - [x] x86_64-apple-darwin fails in ranges - [x] llvmpasses --------- Co-authored-by: Gabriel Baraldi <baraldigabriel@gmail.com> Co-authored-by: Prem Chintalapudi <prem.chintalapudi@gmail.com> Co-authored-by: Jameson Nash <vtjnash@gmail.com> Co-authored-by: Tim Besard <tim.besard@gmail.com> 10 January 2024, 02:47:02 UTC
dceeafe InteractiveUtils: avoid side-effect compilation in first `@time_imports` print (#52832) 10 January 2024, 01:06:42 UTC
b4d857b [RFC:] Docstring for Unicode module (#52761) Part of #52725. Thank you --------- Signed-off-by: 11happy <soni5happy@gmail.com> 09 January 2024, 18:47:39 UTC
c0c676b compiler: eliminate `Core.Compiler.` qualifier (#52790) To avoid symbol name clashes, this commit defines and uses `partialorder(𝕃::AbstractLattice) = ⊑(𝕃)`. While I have a preference for a 2-arg binary operator for lattice operations, it's currently coexisting with a 3-arg version, suggesting that a unification might be beneficial. 09 January 2024, 15:07:05 UTC
4b64203 add an error hint for min/max on an iterable (#52716) Inspired by the discussion in https://discourse.julialang.org/t/max-of-a-vector/108294/15 ```julia julia> max([1,2,3]) ERROR: MethodError: no method matching max(::Vector{Int64}) Finding the maximum element of an iterable is performed with `maximum`. .... ``` 09 January 2024, 13:01:44 UTC
17280b2 Widen eltype in complex hermitian tridiagonal eigen (#52802) Close #52801 by widening the `eltype` appropriately. 09 January 2024, 04:11:45 UTC
bd3eab6 static-show: improve accuracy of some printings (#52799) - Show strings with escaping, rather than trying to output the text unmodified. - Show symbols with the same formatting as Strings - Avoid accidentally defining a broken Core.show method for NamedTuple 09 January 2024, 00:57:52 UTC
486f434 Do not let `public` unexport names (#52814) 08 January 2024, 21:32:34 UTC
b354ce7 reset mark queue indices at the end of GC (#52780) Should allow us to access fewer pages on the circular buffers owned by these work-stealing queues. 08 January 2024, 14:29:29 UTC
5643c60 fix type-stability bugs in Ryu code (#52781) Fixes #52749. 08 January 2024, 13:38:11 UTC
cc156d9 Improve type stability in Artifacts code (#52759) This was in an attempt to fix https://github.com/JuliaLang/julia/issues/52711 which ultimately proved unsuccessful. This might however still be useful in other scenarios. ``` using JET report_opt(Tuple{typeof(Artifacts._artifact_str), Module, String, Base.SubString{String}, String, Base.Dict{String, Any}, Base.SHA1, Base.BinaryPlatforms.Platform, Any}; target_modules=[Artifacts]) ``` is quite a bit cleaner with this. 08 January 2024, 13:20:03 UTC
b7c24ed use a Dict instead of an IdDict for caching of the `cwstring` for Windows env variables (#52758) Should fix https://github.com/JuliaLang/julia/issues/52711. My analysis of the invalidation is as follows: We added code to cache the conversion to `cwstring` in env handling on Windows (https://github.com/JuliaLang/julia/pull/51371): ```julia const env_dict = IdDict{String, Vector{UInt16}}() function memoized_env_lookup(str::AbstractString) ... env_dict[str] = cwstring(str) ... end function access_env(onError::Function, str::AbstractString) var = memoized_env_lookup(str) ... end ``` Since `IdDict` has `@nospecialize` on `setindex!` we compile this method: ```julia setindex!(::IdDict{String, Vector{UInt16}}, ::Any, ::Any) ``` which has an edge to: ```julia convert(Type{Vector{Int64}}, Any}) ``` But then StaticArrays comes along and adds a method ```julia convert(::Type{Array{T, N}}, ::StaticArray) ``` which invalidates the `setindex!` (due to the edge to `convert`) which invalidates the whole env handling on Windows which causes 4k other methods downstream to be invalidated, in particular, the artifact string macro which causes a significant delay in the next jll package you load after loading StaticArrays. There should be no performance penalty to this since strings already does a hash for their `objectid`. 08 January 2024, 13:17:47 UTC
1701009 REPL: make context switch global typed (#52800) Followup https://github.com/JuliaLang/julia/pull/52670 08 January 2024, 12:12:26 UTC
0afa354 🤖 [master] Bump the SparseArrays stdlib from f890a1e to 63459e5 (#52792) Stdlib: SparseArrays URL: https://github.com/JuliaSparse/SparseArrays.jl.git Stdlib branch: main Julia branch: master Old commit: f890a1e New commit: 63459e5 Julia version: 1.11.0-DEV SparseArrays version: 1.11.0 Bump invoked by: @dkarrasch Powered by: [BumpStdlibs.jl](https://github.com/JuliaLang/BumpStdlibs.jl) Diff: https://github.com/JuliaSparse/SparseArrays.jl/compare/f890a1e13fc04c295cec48a9b08b76c6e1a7039a...63459e5ee9e361dbe7cf260030a7407a1f241430 ``` $ git log --oneline f890a1e..63459e5 63459e5 Reduce allocation of dense arrays on-the-fly in linalg tests (#485) c73d6e3 Reduce number of `*` methods by adopting `matprod_dest` (#484) ``` Co-authored-by: Dilum Aluthge <dilum@aluthge.com> 08 January 2024, 08:39:52 UTC
55113b5 Allow `include()` and `include_dependency()` files to resolve to different depots (#52750) Fixes #52161 #52161 is an awkward use of the relocation feature in the sense that it attempts to load the `include()` and `include_dependency` files of a pkg from two separate depots. The problem there is that the value with which we replace the `@depot` tag for both `include()` and `include_dependency()` files is determined by trying to relocate only the `include()` files. We then end up not finding the `include_dependency()` files. Solution: @staticfloat noted that the pkg slugs in depot paths like `@depot/packages/Foo/1a2b3c/src/Foo.jl` are already enough to (weakly) content-address a depot. This means that we should be able to load any `include()` file of a pkg from any `depot` that contains a precompile cache, provided the hashes match. The same logic can be extended to `include_dependency()` files, which this PR does. Note that we continue to use only one file from the `include()` files to determine the depot which we use to relocate all `include()` files. [this behavior is kept from master] But for `include_dependency()` files we allow each file to resolve to a different depot. This way the MWE given in #52161 should be extendable to two README files being located in two different pkgs that lie in two different depots. --- Side note: #49866 started with explicitly verifying that all `include()` files come from the same depot. In #52346 this was already relaxed to pick the first depot for which any `include()` file can be resolved to. This works, because if any other file might be missing from that depot then this is caught in `stalecache()`. 08 January 2024, 06:59:46 UTC
8dc2c30 Preserve eltype in converting `Symmetric` to `Matrix` (#52738) This allows cases where the `eltype` differs from that of the parent: ```julia julia> M = [UpperTriangular([1 2; 3 4]) for i in 1:2, j in 1:2] 2×2 Matrix{UpperTriangular{Int64, Matrix{Int64}}}: [1 2; 0 4] [1 2; 0 4] [1 2; 0 4] [1 2; 0 4] julia> H = Hermitian(M) 2×2 Hermitian{AbstractMatrix, Matrix{UpperTriangular{Int64, Matrix{Int64}}}}: [1 2; 2 4] [1 2; 0 4] [1 0; 2 4] [1 2; 2 4] julia> Array(H) 2×2 Matrix{AbstractMatrix}: [1 2; 2 4] [1 2; 0 4] [1 0; 2 4] [1 2; 2 4] ``` This conversion throws an error at present on master. 08 January 2024, 03:01:08 UTC
d07de16 improve AbstractPipe docs and IOContext handling as an AbstractPipe (#52768) Following some complains that `AbstractPipe` did not mention the functions that comprise its API, I have updated that and some other related details of its subtypes. 1. Mention the expected API surface for AbstractPipe 2. Expand the docs for Pipe as well 3. And add better support for explicit type parameters to IOContext. This gives more options to users, such as creating an explicitly dynamic `IOContext{IO}(io)` to avoid excess specialization. Any explicitly set parameter should now be inherited by future `IOContext` constructions around it, rather than always directly adopting the `typeof(io.io)` type instead as the new parameter. 08 January 2024, 01:18:55 UTC
edd2223 Revert "Warn if an already loaded package is attempted to be loaded from a different path" (#52794) 08 January 2024, 00:32:07 UTC
1d3dd85 Use `ismissing(x)` instead of `x === missing` (#44407) This is more generic and will allow packages to define custom `missing`-like types allowing to distinguish several kinds of missing values like in e.g. Stata and SAS (see https://github.com/nalimilan/TypedMissings.jl). This should have no performance impact now thanks to #38905. 07 January 2024, 22:06:46 UTC
05992e7 Enable rational division with uniform scaling (#52785) 07 January 2024, 18:33:27 UTC
9bf84d4 REPL: make alt-m on an empty prompt go to previous module (#52670) 07 January 2024, 15:22:16 UTC
5cd61ec Switch `already_warned_path_change_pkgs` to `Set{PkgId}()` (#52789) 07 January 2024, 12:39:21 UTC
e2b31cd Guard against `nothing` appearing from `load_package()` (#52788) 07 January 2024, 04:20:50 UTC
c63c3b0 Update performance-tips.md with JET.jl instead of Traceur.jl (#52786) Switch this tip from Traceur to JET as Traceur is no longer maintained. 07 January 2024, 01:36:37 UTC
bac95cc inference: thread lattice through memoryop type check (#52773) We would probably need to backport similar changes to 1.10 too. xref: aviatesk/JET.jl#589 07 January 2024, 01:36:15 UTC
8fe383f Reland "Generalize broadcast!(f, ::BitVector) optimization to `BitArray`." (#52736) (#52776) Reland "Generalize broadcast!(f, ::BitVector) optimization to `BitArray`." (#52736) 07 January 2024, 01:28:52 UTC
ea085ea Disambiguate structured and abstract matrix multiplication (#52464) Co-authored-by: Daniel Karrasch <Daniel.Karrasch@posteo.de> 06 January 2024, 21:13:22 UTC
0cb5a0e Fix `MethodError` when warning about a toplevel module (#52782) 06 January 2024, 19:11:28 UTC
c827094 Fix variable naming confusion in `warn_if_already_loaded_different()` (#52778) 06 January 2024, 18:07:26 UTC
ecb668b RFC: Methods for `eigen` on complex hermitian tridiagonal matrices (#49546) Co-authored-by: Daniel Karrasch <daniel.karrasch@posteo.de> Co-authored-by: Steven G. Johnson <stevenj@mit.edu> 06 January 2024, 16:27:19 UTC
dd7f1f8 use `Integer` during broadcast when possible. 06 January 2024, 16:18:20 UTC
513d013 [Markdown] added doc string for @md_str string literal (#52606) This PR addresses #51168 . I guess this PR wants to have the labels doc & markdown . --------- Co-authored-by: Steven G. Johnson <stevenj@mit.edu> Co-authored-by: Jameson Nash <vtjnash@gmail.com> Co-authored-by: Steven G. Johnson <stevenj@alum.mit.edu> 06 January 2024, 14:53:54 UTC
c5dcf4f [SuiteSparse_jll] Update to v7.4.0 (#52577) Usual memo to self for the update: * change version number in `stdlib/SuiteSparse_jll/Project.toml` * refresh checksums in `deps/checksums/suitesparse` with `make -f contrib/refresh_checksums.mk -j libsuitesparse`. Note: this will also delete the files `deps/checksums/SuiteSparse-*.tar.gz/*`, but those refer to the stdlib which is the julia wrapper around the binary dependency, those files have to be restored manually, I don't know how to make the makefile behave nicely. You will also have to remove the lines `SuiteSparse-*.tar.gz/md5/*` added to the file `deps/checksums/suitesparse`, they are wrong for the same reason * update version numbers in `deps/libsuitesparse.version`. Judging by the changes in https://github.com/JuliaPackaging/Yggdrasil/pull/7596 we don't need to touch the manual build system. I have no idea whether SuiteSparse retains API/ABI compatibility within the same major version, I surely hope so because I won't have the strength to try and fix large compatibility errors. 06 January 2024, 14:12:24 UTC
ae6af52 Revert "Revert "Generalize `broadcast!(f, ::BitVector)` optimization to `BitArray`." (#52775)" This reverts commit 11bb62b079aa95eac59deed4184be539563e15df. 06 January 2024, 11:49:47 UTC
11bb62b Revert "Generalize `broadcast!(f, ::BitVector)` optimization to `BitArray`." (#52775) This broke many packages on PkgEval. 06 January 2024, 11:43:09 UTC
f18cc43 [doc] Fix format string of `printf` in `@ccall` example (#52770) The format string of the `@ccall` example for `printf` had a `%d` specifier but the argument passed was `"5"::Cstring`, which is also inconsistent with the corresponding `ccall` example. 06 January 2024, 11:07:40 UTC
b682592 [OpenBLAS] Ugrade to v0.3.26 (#52762) Memo to self: * update version number in `stdlib/OpenBLAS_jll/Project.toml` * update version number and sha in `deps/openblas.version` * refresh checksums with `make -f contrib/refresh_checksums.mk -j openblas` In the [release notes of v0.3.26](https://github.com/OpenMathLib/OpenBLAS/releases/tag/v0.3.26) one of the more interesting point is perhaps > included support for Apple M1 and newer targets in DYNAMIC_ARCH builds Quoting from https://github.com/JuliaPackaging/Yggdrasil/pull/7911#issuecomment-1878884892 > Some quick benchmarks on M1: with OpenBLAS 0.3.25: > ```julia > julia> using LinearAlgebra, BenchmarkTools > > julia> peakflops() > 1.7049262964078418e11 > > julia> x = randn(1_000); y = randn(size(x)); > > julia> @btime dot($x, $y); > 402.705 ns (0 allocations: 0 bytes) > ``` > with OpenBLAS v0.3.26: > ```julia > julia> using LinearAlgebra, BenchmarkTools > > julia> peakflops() > 1.8042546290642157e11 > > julia> x = randn(1_000); y = randn(size(x)); > > julia> @btime dot($x, $y); > 143.777 ns (0 allocations: 0 bytes) > ``` > Up to OpenBLAS v0.3.25 you can get similar performance on Apple Silicon by exporting the environment variable > ```sh > OPENBLAS_CORETYPE=NEOVERSEN1 > ``` 06 January 2024, 08:41:27 UTC
9aaa8c7 Use `jl_types_egal` in `equiv_field_types` (#52748) Fixes #52686 Fixes https://github.com/timholy/Revise.jl/issues/770 --------- Co-authored-by: Jameson Nash <vtjnash@gmail.com> Co-authored-by: Kristoffer Carlsson <kcarlsson89@gmail.com> Co-authored-by: Shuhei Kadowaki <40514306+aviatesk@users.noreply.github.com> 06 January 2024, 06:09:43 UTC
ae5880a EscapeAnalysis.jl: Correct grammar in comment (#52764) 06 January 2024, 03:37:14 UTC
103e50a also enable gc_assert_parent_validity on GC_VERIFY (#52767) Keeping this functionality untested on CI increases the chance of it rotting. 06 January 2024, 01:37:37 UTC
c94b1a3 staticdata: handle cycles in datatypes (#52752) Handle any sort of cycle encountered in the datatype super fields by always deferring that field until later and setting a deferred mechanism for updating the field only after the supertype is ready. Fix #52660 05 January 2024, 20:42:40 UTC
c9bc2ff loading: fix finding bundled stdlibs even if they are e.g. devved in an environment higher in the load path (#52637) I noticed this when seeing some weird precompile issues when I had SparseArrays devved in my main environment but it was with the standard stdlib format in the current environment: ``` (NearestNeighbors) pkg> st -m Project NearestNeighbors v0.4.15 Status `~/JuliaPkgs/NearestNeighbors.jl/Manifest.toml` ... [2f01184e] SparseArrays v1.10.0 ... ``` But even so, `locate_package` claims that the path to SparseArrays is the one in the main environment: ``` julia> pkg = Base.PkgId(Base.UUID("2f01184e-e22b-5df5-ae63-d93ebab69eaf"), "SparseArrays") SparseArrays [2f01184e-e22b-5df5-ae63-d93ebab69eaf] julia> Base.locate_package(pkg) "/home/kc/JuliaPkgs/SparseArrays.jl/src/SparseArrays.jl" ``` This correctly fixes it so that packages without a `git-tree-sha1` (and without a `path`) are resolved to the stdlib path. 05 January 2024, 15:45:09 UTC
f01898c Fix printing of `InexactError` for `Inf16` arg and similar (#52491) Resolves https://github.com/JuliaLang/julia/issues/51087 Closes https://github.com/JuliaLang/julia/pull/51163 Use `show` as pointed out in https://github.com/JuliaLang/julia/pull/51163#discussion_r1328682832. 05 January 2024, 13:02:33 UTC
f68d7f8 [Markdown] Docstring for html and latex functions (#52733) Part of #52725 05 January 2024, 12:58:06 UTC
67e6127 remove very old error hint from using `.data` field on a String (#52737) This field was removed 7 years ago. I think it is fine to not special case it any longer. 05 January 2024, 10:38:31 UTC
3a02053 Fix quotes in the docstring of `copytrito!` (#52718) 05 January 2024, 08:27:55 UTC
50788cd Generalize `broadcast!(f, ::BitVector)` optimization to `BitArray`. (#52736) Follows #32048. This PR fully avoids the allocation thus make nd logical broadcast better scaled for small inputs. --------- Co-authored-by: Matt Bauman <mbauman@gmail.com> 05 January 2024, 08:11:45 UTC
316cc4a remove outdated handling of `:static_parameter` (#52732) After #51970, `Expr(:static_parameter, i::Int)` is now consistently outlined during the lowering, so there's no longer a need for `abstract_eval_value_expr` to handle this expression. This update removes the outdated handling, clarifying where we need to handle the expression. 05 January 2024, 01:59:58 UTC
31a9f13 Properly rename EnterNode scope after code coverage insertion (#52720) Fixes #52672 and changes the emission path to move the error to the point of corruption instead of the point of first use. 05 January 2024, 01:59:49 UTC
38b8156 expand Docs.undocumented_names to include all public symbols (#52743) Expands the semantics of `Docs.undocumented_names` to include all public symbols, as described in https://github.com/JuliaLang/julia/pull/52413#issuecomment-1876266678 cc @jariji, @LilithHafner --------- Co-authored-by: Lilith Orion Hafner <lilithhafner@gmail.com> 04 January 2024, 21:44:38 UTC
6934379 remove method file names with `--strip-metadata` (#52722) These should not appear in binaries when this option is specified. 04 January 2024, 21:03:29 UTC
5a28cf5 add doxygen for exported functions in jlapi.c (#52324) This adds some brief doxygen-formatted docstrings to jlapi.c. The objective of this PR is to set doxygen docstrings as the documentation method for Julia's C code, and allow for further development of reference material for the use of Julia through the C API. These docstrings are immediately useful for consumption by C/C++ development extensions such as tooltips. In the future these can be useful to generate a cohesive API reference, though this is a separate concern involving the build system. 04 January 2024, 17:35:27 UTC
ec686c3 inference: Guard TypeVar special case against vararg (#52721) Fix #52613 by making the TypeVar special case in inference check for vararg first. There's nothing the special case can really do with vararg anyway, so fall back to the ordinary abstract call handling. 04 January 2024, 15:51:49 UTC
f9b27b3 Print type signature for what was inferring whenever an internal error is thrown (#52695) 04 January 2024, 11:14:51 UTC
0f6c72c Replace most occurances of http with https when the https url is valid (#52566) This should be minor and mostly NFC. 03 January 2024, 21:48:50 UTC
d97ab8a sroa: Fix small logic bug (#52717) This fixes #52703, which happened when a function had a foldable, try-catch-with-scope inside an ordinary try/catch. The fix is to simply ignore the ordinary try/catch and treat it as a regular fallthrough terminator. 03 January 2024, 21:17:26 UTC
3a3af82 Fix whitespace in README.md (#52714) Fixup for #52691, fixes the whitespace CI check. cc @inkydragon, @ViralBShah 03 January 2024, 15:29:42 UTC
ca0a266 Test BracketedSort on fully pathological inputs (#52653) 03 January 2024, 13:34:38 UTC
792a35b Show Numbers compactly when typeinfo is a Union with Nothing or Missing (#48822) 03 January 2024, 13:23:38 UTC
fb8d7f1 README: minor polish (#52691) changes - move `write_base_cache.jl` to `contrib/` `generate_precompile.jl` is also placed there - In section "Source Code Organization", add `etc/`, remove `usr/` `usr/` appears only at build time. - Some minor polish --------- Co-authored-by: Viral B. Shah <ViralBShah@users.noreply.github.com> 03 January 2024, 07:21:39 UTC
0ea2b56 🤖 [master] Bump the SparseArrays stdlib from f154de2 to feb54ee (#52706) Stdlib: SparseArrays URL: https://github.com/JuliaSparse/SparseArrays.jl.git Stdlib branch: main Julia branch: master Old commit: f154de2 New commit: feb54ee Julia version: 1.11.0-DEV SparseArrays version: 1.11.0 Bump invoked by: @giordano Powered by: [BumpStdlibs.jl](https://github.com/JuliaLang/BumpStdlibs.jl) Diff: https://github.com/JuliaSparse/SparseArrays.jl/compare/f154de2b6801ec8d5afaf58b73b830c8e71013c3...feb54ee5e49008bd157227099cafe604a67c36fb ``` $ git log --oneline f154de2..feb54ee feb54ee fix typo ("ArguementError") (#479) 8308232 Extend sparse kron to adjortrans of dense matrices (#474) 951837f Simplify calling Aqua (#473) ``` Co-authored-by: Dilum Aluthge <dilum@aluthge.com> Co-authored-by: Viral B. Shah <ViralBShah@users.noreply.github.com> 03 January 2024, 07:09:38 UTC
3279a1f THIRDPARTY: Consider `base/` and `stdlib/` as standard libraries (#52692) Changes: - Consider `base/` and `stdlib/` as standard libraries - Add optional dep: `LibTracyClient` - Add license for tools, and update link - Update spdx.json 03 January 2024, 05:08:48 UTC
2d0aeca Fix precompile reason print when nothing (#52701) 02 January 2024, 23:00:26 UTC
972f55f Mention `@lock` in `lock(f, l)` docstring (#52357) Follow up to: https://github.com/JuliaLang/julia/issues/36441. Makes this macro much easier to learn about if you're just viewing the docstrings. 02 January 2024, 19:04:46 UTC
1dfd2a6 syntax: properly linearize type-for-closure code (#52497) The (core svec) calls are not supposed to be nested like this now. We would rarely attempt to infer this, which makes it hard to notice, but we should try to be correct. 02 January 2024, 19:04:17 UTC
567754c update latest stable version in README (#52699) 02 January 2024, 14:32:56 UTC
acddc62 Fix docs for Sockets.getaddrinfo() (#52538) Previously only the two-argument method was documented, which stated that the default type to be returned was IPv4. But that hasn't been true since 2ab654ce5b (#36029), so now both methods are documented and corrected. I believe this fixes #40306. 02 January 2024, 12:04:53 UTC
0d9c0d9 Add 3-argument div and rem in doc (#52662) Resolves #52624 02 January 2024, 12:00:53 UTC
0f62824 Profile: Improve module docstring (#52678) ![Screenshot 2023-12-30 at 7 24 10 PM](https://github.com/JuliaLang/julia/assets/1694067/a7c78943-5e4a-475c-864c-3b0005305471) 02 January 2024, 01:58:53 UTC
7baa577 Add `@create_log_macro` for making custom styled logging macros (#52196) 02 January 2024, 01:57:03 UTC
1b183b9 Add Docs.undocumented_names (#52413) Fixes #51174 --------- Co-authored-by: Steven G. Johnson <stevenj@alum.mit.edu> Co-authored-by: Steven G. Johnson <stevenj@mit.edu> 31 December 2023, 01:32:59 UTC
89cae45 Optimized arithmetic methods for strided triangular matrices (#52571) This uses broadcasting for operations like `A::UpperTriangular + B::UpperTriangular` in case the parents are `StridedMatrix`es. Looping only over the triangular part is usually faster for large matrices, where presumably memory is the bottleneck. Some performance comparisons, using ```julia julia> U = UpperTriangular(rand(1000,1000)); julia> U1 = UnitUpperTriangular(rand(size(U)...)); ``` | Operation | master | PR | | --------------- | ---------- | ----- | |`-U` |`1.011 ms (3 allocations: 7.63 MiB)` |`559.680 μs (3 allocations: 7.63 MiB)` | |`U + U`/`U - U` |`971.740 μs (3 allocations: 7.63 MiB)` | `560.063 μs (3 allocations: 7.63 MiB)` | |`U + U1`/`U - U1` |`3.014 ms (9 allocations: 22.89 MiB)` | `944.772 μs (3 allocations: 7.63 MiB)` | |`U1 + U1` |`4.509 ms (12 allocations: 30.52 MiB)` | `1.687 ms (3 allocations: 7.63 MiB)` | |`U1 - U1` |`3.357 ms (9 allocations: 22.89 MiB)` | `1.763 ms (3 allocations: 7.63 MiB)` | I've retained the existing methods as fallback, in case there's current code that works without broadcasting. 30 December 2023, 17:08:45 UTC
fe0db7d heap snapshot: add gc roots and gc finalist roots to fix unrooted nodes (#52618) 30 December 2023, 14:46:53 UTC
2091058 Fix :noshift construction of an empty SubString (#51923) 30 December 2023, 12:20:28 UTC
9deee46 Bunch-Kaufman factorization support for generic number types and inertia computations (#51487) ### Introduction This PR adds a generic implementation of the Bunch-Kaufman factorization in native Julia code, and a generic implementation of a inertia calculation function. Right now Julia only support the Bunch-Kaufman factorization for `Float32`, `Float64` and their complex variants. This is because the factorization is handled by LAPACK, which only supports these types. To extend support to generic number types, I translated the LAPACK implementation to native Julia code, and the code performs the factorization in-place. I also included the function `inertia` that computes the number of positive, negative, and zero eigenvalues of an $n \times n$ Bunch-Kaufman factorized matrix in $\mathcal{O}(n)$ time. ### Changes - `bunchkaufman` and `bunchkaufman!` now work for any `AbstractFloat`, `Rational` and their complex variants. Behavior for previously supported types is not changed (LAPACK is used when possible). `bunchakaufman!` does not support `Integer` types, as in general the factorization lies in the arithmetic closure of the number type (the rationals for the integers). On the other hand, `bunchakaufman` supports `Integer` types, by making an internal conversion to `Rational{BigInt}`. - `ldiv!` for a `BunchKaufman` factorization has extended support for generic number types with type stability. - Previously, Julia extracted the diagonal factor of an $n \times n$ `BunchKaufman` object by making a copy of the matrix and then calling a LAPACK function (`dsyconvf`, `csyconvf`, etc., depending on the number type). This function also computes the triangular factor, so it runs in $\mathcal{O}(n^2)$ time. Now Julia uses a native implementation of the LAPACK function with small modifications, so it computes the diagonal factor in $\mathcal{O}(n)$ time, without making a new copy of the matrix. - Added the function `inertia` that computes the number of positive, negative and zero eigenvalues of the diagonal factor of an $n \times n$ `BunchKaufman` object, in case that the matrix is real symmetric or Hermitian. For complex symmetric matrices, `inertia` only computes the number of zero eigenvalues of the diagonal factor. `inertia` runs in $\mathcal{O}(n)$ time and only uses arithmetic and real absolute value operations. Therefore, `inertia` can be used for matrices of any generic number type, including `Rational`. In particular, for rational matrices the output of `inertia` is exact (unless a positive tolerance is specified). - Unit tests of the `BunchKaufman` library has been adapted to handle low precision number types (approximate comparisons with tolerance `sqrt(eps(Float64))` do not make sense when the floating point type is `Float16`, for example). The test-set now also runs on the following types: `Float16, Complex{Float16}, BigFloat, Complex{BigFloat}, Complex{Int}, BigInt, Complex{BigInt}, Rational{BigInt}, Complex{Rational{BigInt}}`. Unit tests for the `inertia` function have been added too. 30 December 2023, 10:58:31 UTC
3f4cfc6 [dSFMT_jll] Upgrade to v2.2.5 (#52667) Usual memo to self: * update version number in `stdlib/dSFMT_jll/Project.toml` * refresh checksums with `make -f contrib/refresh_checksums.mk -j dsfmt` * update version number in `deps/checksums/dsfmt` 30 December 2023, 09:04:07 UTC
2b2f534 minor fix in malloc terminology used in docs (#52665) 29 December 2023, 23:37:46 UTC
e8f8968 Added Tests for Permute function in combinatorics.jl (#52648) Signed-off-by: happy <happy@Ubunutt.myguest.virtualbox.org> Co-authored-by: happy <happy@Ubunutt.myguest.virtualbox.org> 29 December 2023, 05:33:19 UTC
ad3769e `Base`: make `Tuple(::Pair)` type-stable (#52650) Fixes #52636 28 December 2023, 21:50:59 UTC
90ae544 fix typo in NEWS (#52652) Typo from #52461. 28 December 2023, 19:18:07 UTC
e96c13a update nthreads info in versioninfo (#52423) Fixes https://github.com/JuliaLang/julia/issues/52404 @nilshg I opted to make it one line as it fits. ``` julia> versioninfo() Julia Version 1.11.0-DEV.1011 Commit bb7091c6f2* (2023-12-04 14:58 UTC) Platform Info: OS: macOS (arm64-apple-darwin23.0.0) CPU: 10 × Apple M2 Pro WORD_SIZE: 64 LLVM: libLLVM-15.0.7 (ORCJIT, apple-m1) Threads: 1 default, 0 interactive, 1 GC (on 6 virtual cores) Environment: JULIA_EDITOR = code ``` 28 December 2023, 12:42:28 UTC
26d0460 Show more info on why package precompilation was needed (#52619) 28 December 2023, 07:52:18 UTC
e6e572e Temporarily remove failing sorting tests (#52643) Tracked by issue #52642 28 December 2023, 01:50:02 UTC
e7e8b89 update --gcthreads section in command line options (#52645) Make these consistent with what's shown by `julia --help`. Fixes https://github.com/JuliaLang/www.julialang.org/issues/1997. 27 December 2023, 18:59:53 UTC
66e9410 Add a fully typed Diagonal constructor from `AbstractMatrix`es (#52487) The following works after this PR: ```julia julia> oftype(Diagonal(Float32[1,2]), [1 0; 0 2]) 2×2 Diagonal{Float32, Vector{Float32}}: 1.0 ⋅ ⋅ 2.0 ``` This changes the behavior of the constructor to copy the diagonal, so now ```julia julia> D = Diagonal([1,2]); julia> typeof(D)(D).diag === D.diag false ``` whereas this used to be `true` previously. This probably doesn't matter much, as in most non-trivial cases it'd be copied anyway, and this conversion is unusual in the trivial case. --------- Co-authored-by: Daniel Karrasch <daniel.karrasch@posteo.de> 27 December 2023, 06:36:28 UTC
b4eefd0 Default uplo in symmetric/hermitian (#52605) This makes the function signatures match the respective docstrings, as well as that of `Symmetric/Hermitian`. 27 December 2023, 06:36:08 UTC
713560b Specialize axes for structured matrices (#52480) On master ```julia julia> S = SMatrix{4,4}(1:16); julia> A = StructArray{Complex{Int}}((S,S)); julia> axes(Symmetric(A)) (Base.OneTo(4), Base.OneTo(4)) ``` The static axes are lost. After this, ```julia julia> axes(Symmetric(A)) (SOneTo(4), SOneTo(4)) ``` Similarly, I've added methods for other structured matrix types. These help with other cases like infinite arrays. --------- Co-authored-by: Matt Bauman <mbauman@juliahub.com> 25 December 2023, 12:55:56 UTC
933a83a Fix inconsistant logical index behavior (#45869) 1. If we use `BitArray`/`Array{Bool}` to index, `to_indices` has an optimiztion for linear-iteratable case. But the corresponding check is not correct. IIUC, this optimization is legal only when the Boolen array is the only index provided. The first commit fix it and widen this optimization to all Boolen array. Before this PR ```julia julia> A = rand(2,3,4); I = rand(Bool,3,4); julia> A[1,I] == A[1,view(I,:,:)] ERROR: BoundsError: attempt to access 2×3×4 Array{Float64, 3} at index [1, 3×4 Matrix{Bool}] ``` After ```julia julia> A = rand(2,3,4); I = rand(Bool,3,4); julia> A[1,I] == A[1,view(I,:,:)] true ``` 2. On master, if the index/array has singleton trailing dimension, boundcheck of logical index show different behavior depending on the number of indexes provided. If there's only one index variable, singleton dimension wil not be ignored. The second commit fix it. (close #45867) --------- Co-authored-by: Matt Bauman <mbauman@gmail.com> 25 December 2023, 12:54:47 UTC
4e4c0e5 simplification in `permutedims!` (#52623) `strides_1` was never used, and the `@nexprs` that creates `strides_i` can be replaced with `@ntuple`. Fixes #52615, credit: ararslan. 25 December 2023, 12:53:09 UTC
ef549ae Don't access parent of triangular matrix in powm (#52583) Since the values stored in the parent corresponding to the structural zeros of a tridiagonal matrix aren't well-defined, using it in `ldiv!` is a footgun that may lead to heisenbugs (one seen in https://buildkite.com/julialang/julia-master/builds/31285#018c7cc7-6c77-41ac-a01b-1c7d14cb1b15). This PR changes it to using the tridiagonal matrix directly in `ldiv!`, which should lead to predictable results, and be bug-free. The failing tests for #52571 pass locally with this change. 25 December 2023, 12:51:49 UTC
b51b809 Warn if an already loaded package is attempted to be loaded from a different path (#44329) 23 December 2023, 21:10:19 UTC
52ff558 cfg_simplify: Add one more check to avoid merging :leave terminator (#52621) In #52608, I made `:leave` a proper terminator (we already considered it as such during CFG construction, we just didn't maintain that property in the optimizer). As part of this, I adjusted one place in cfg_simplify to avoid merging blocks that end with non-trivial terminators (previously only EnterNode was considered). Turns out there's another one, so fix that as well. 23 December 2023, 15:03:47 UTC
0b5cf42 lowering: Optimize lowering of tryfinally with trivial finally block (#52593) This optimizes the lowering of a tryfinally block with empty finally block to instead use the try/catch lowering, where the catch block is given as simply `rethrow()`. This is equivalent semantically to try/finally in this case, but the code structure is a lot simpler with fewer basic blocks and without the auxiliary slot for tracking the finally slot. The motivation here is to help the compiler optimize better when using the `@with` macro, which has an empty `finally` block (but uses the scope argument of 'tryfinally). The only problem with this is that it violates the lowering assumptions I made in https://github.com/JuliaLang/julia/pull/52527, so we'll probably need to fix that first. 23 December 2023, 12:35:12 UTC
5111208 [LibCURL_jll] Update to v8.5.0 (#52611) 23 December 2023, 06:49:04 UTC
back to top