Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Comparison of branch: master+RAI #47

Closed
wants to merge 126 commits into from
Closed

Comparison of branch: master+RAI #47

wants to merge 126 commits into from

Commits on Mar 19, 2024

  1. minor refactoring on find_method_matches (JuliaLang#53741)

    So that it can be tested in isolation easier.
    aviatesk authored Mar 19, 2024
    Configuration menu
    Copy the full SHA
    8f76c69 View commit details
    Browse the repository at this point in the history
  2. Fix handling of virtual exit node in PostDomTree (JuliaLang#53739)

    This is an alternative to JuliaLang#53642
    
    The `dom_edges()` for an exit block in the CFG are empty when computing
    the PostDomTree so the loop below this may not actually run. In that
    case, the right semidominator is the ancestor from the DFSTree, which is
    the "virtual" -1 block.
    
    This resolves half of the issue in
    JuliaLang#53613:
    ```julia
    julia> let code = Any[
                   # block 1
                   GotoIfNot(Argument(2), 3),
                   # block 2
                   ReturnNode(Argument(3)),
                   # block 3 (we should visit this block)
                   Expr(:call, throw, "potential throw"),
                   ReturnNode(), # unreachable
               ]
               ir = make_ircode(code; slottypes=Any[Any,Bool,Bool])
               visited = BitSet()
               @test !Core.Compiler.visit_conditional_successors(CC.LazyPostDomtree(ir), ir, #=bb=#1) do succ::Int
                   push!(visited, succ)
                   return false
               end
               @test 2 ∈ visited
               @test 3 ∈ visited
           end
    Test Passed
    ```
    
    This needs some tests (esp. since I don't think we have any DomTree
    tests at all right now), but otherwise should be good to go.
    topolarity authored Mar 19, 2024
    Configuration menu
    Copy the full SHA
    2775c9a View commit details
    Browse the repository at this point in the history
  3. post-opt: add more test cases for visit_conditional_successors (Jul…

    …iaLang#53642)
    
    This commit fixes the first problem that was found while digging into
    JuliaLang#53613. It turns out that the post-domtree constructed
    from regular `IRCode` doesn't work for visiting conditional successors
    for post-opt analysis in cases like:
    ```julia
    julia> let code = Any[
                   # block 1
                   GotoIfNot(Argument(2), 3),
                   # block 2
                   ReturnNode(Argument(3)),
                   # block 3 (we should visit this block)
                   Expr(:call, throw, "potential throw"),
                   ReturnNode(), # unreachable
               ]
               ir = make_ircode(code; slottypes=Any[Any,Bool,Bool])
               visited = BitSet()
               @test !Core.Compiler.visit_conditional_successors(CC.LazyPostDomtree(ir), ir, #=bb=#1) do succ::Int
                   push!(visited, succ)
                   return false
               end
               @test 2 ∉ visited
               @test 3 ∈ visited
           end
    Test Failed at REPL[14]:16
      Expression: 2 ∉ visited
       Evaluated: 2 ∉ BitSet([2])
    ```
    
    This might mean that we need to fix on the `postdominates` end, but for
    now, this commit tries to get around it by using the augmented post
    domtree in `visit_conditional_successors`. Since the augmented post
    domtree is enforced to have a single return, we can keep using the
    current `postdominates` to fix the issue.
    
    However, this commit isn't enough to fix the NeuralNetworkReachability
    segfault as reported in JuliaLang#53613, and we need to tackle the second issue
    reported there too
    (JuliaLang#53613 (comment)).
    aviatesk authored Mar 19, 2024
    Configuration menu
    Copy the full SHA
    9df47f2 View commit details
    Browse the repository at this point in the history
  4. Remove some duplicates from emitted compilation traces (JuliaLang#53774)

    When multiple threads concurrently attempt to compile the same method,
    `--trace-compile` could emit duplicate `precompile` statements. This
    small tweak eliminates one source of these duplicates.
    kpamnany authored Mar 19, 2024
    Configuration menu
    Copy the full SHA
    5c891de View commit details
    Browse the repository at this point in the history

Commits on Mar 20, 2024

  1. compileall: Print error on failure (JuliaLang#53770)

    This test appears to be failing intermittently on aarch64 darwin, so
    stop suppressing any errors that might be happening.
    Keno authored Mar 20, 2024
    Configuration menu
    Copy the full SHA
    1c2b9ad View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    cc27a7b View commit details
    Browse the repository at this point in the history
  3. small changes to make Base more statically compileable (JuliaLang#53778)

    This makes it easier to fully-statically-type Base and init methods.
    The changes are from gb/small-image2.
    JeffBezanson authored Mar 20, 2024
    Configuration menu
    Copy the full SHA
    e0bb95a View commit details
    Browse the repository at this point in the history
  4. compiler: Refactor concrete_eval_invoke (JuliaLang#53771)

    This passes slightly more information into this function (the full
    `inst` rather than just the `stmt`) in order to allow external absint to
    access additional fields (the flags and the info) if necessary to make
    concrete evaluation decisions. It also splits out the actual concrete
    evaluation from the part that just maps the `inst` to a CodeInstance.
    Keno authored Mar 20, 2024
    Configuration menu
    Copy the full SHA
    bc7ba3d View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    a30feec View commit details
    Browse the repository at this point in the history
  6. Printf: don't zero pad Inf or NaN (JuliaLang#53785)

    We currently have
    ```
    julia> @sprintf("%07f", -Inf)
    "-000Inf"
    
    julia> @sprintf("%07f", NaN)
    "0000NaN"
    ```
    
    With this PR
    ```
    julia> @sprintf("%07f", -Inf)
    "   -Inf"
    
    julia> @sprintf("%07f", NaN)
    "    NaN"
    ```
    which is the same as Julia 1.5.4 and agrees with the C standard.
    jmkuhn authored Mar 20, 2024
    Configuration menu
    Copy the full SHA
    55afecc View commit details
    Browse the repository at this point in the history

Commits on Mar 21, 2024

  1. Document LazyString in performance tips (JuliaLang#53779)

    Does what it says. Doc-changes only.
    
    Recent motivating example: FluxML/Flux.jl#2399
    lassepe authored Mar 21, 2024
    Configuration menu
    Copy the full SHA
    72b1c9e View commit details
    Browse the repository at this point in the history
  2. minor followups on recent CodeInstance refactors (JuliaLang#53581)

    - ~~simplifies the signature of `transform_result_for_cache`~~
    - ~~make `jl_uncompress_ir` take `MethodInstance` instead of
    `CodeInstance`
      and simplifies the inlining algorithm~~
    - renames of `codeinst::CodeInstace` objects
    - removal of dead code
    aviatesk authored Mar 21, 2024
    Configuration menu
    Copy the full SHA
    8e8b533 View commit details
    Browse the repository at this point in the history
  3. Switch LLVM codegen of Ptr{T} to an actual pointer type. (JuliaLang#5…

    …3687)
    
    This PR switches our code generation for `Ptr{T}` from `i64` to an
    actual LLVM pointer type (`ptr` when using opaque pointers, an untyped
    `i8*` otherwise). The main motivation is to simplify `llvmcall` usage
    (doing away with the `inttoptr`/`ptrtoint` conversions), and also make
    it possible to simply use `ccall` to call intrinsics with `Ptr`-valued
    arguments (where we currently always need `llvmcall` for converting to
    an actual pointer).
    
    Changing codegen like this is a breaking change for `llvmcall` users,
    but I've added backwards compatibility and a deprecation warning.
    
    Before:
    
    ```llvm
    julia> @code_llvm pointer([])
    define i64 @julia_pointer_1542(ptr noundef nonnull align 8 dereferenceable(24) %"x::Array") #0 {
    top:
    ; ┌ @ pointer.jl:65 within `cconvert`
       %0 = load ptr, ptr %"x::Array", align 8
    ; └
    ; ┌ @ pointer.jl:90 within `unsafe_convert`
    ; │┌ @ pointer.jl:30 within `convert`
        %bitcast_coercion = ptrtoint ptr %0 to i64
        ret i64 %bitcast_coercion
    ; └└
    }
    ```
    
    After:
    
    ```llvm
    julia> @code_llvm pointer([])
    define ptr @julia_pointer_3880(ptr noundef nonnull align 8 dereferenceable(24) %"x::Array") #0 {
    top:
    ; ┌ @ pointer.jl:65 within `cconvert`
       %0 = load ptr, ptr %"x::Array", align 8
    ; └
    ; ┌ @ pointer.jl:90 within `unsafe_convert`
    ; │┌ @ pointer.jl:30 within `convert`
        ret ptr %0
    ; └└
    }
    ```
    
    This also simplifies "real code", e.g., when `ccall` converts an Array
    to a pointer, resulting in some more optimization opportunities.
    maleadt authored Mar 21, 2024
    Configuration menu
    Copy the full SHA
    09400e4 View commit details
    Browse the repository at this point in the history

Commits on Mar 22, 2024

  1. Add missing GC_POP() in emit_cfunction (JuliaLang#53809)

    ~~Apparently somewhere in codegen inside `emit_codeinst`some piece of
    code is relying on the implicit try catch gcstack restoring. I haven't
    got the analyzer working on that file yet (it has hundreds of issues and
    it doesn't like C++ code that much + the file is tens of thousands of
    lines after includes so it struggles).~~
    
    This fixes the compileall segfault in apple-aarch64 ci.
    JuliaLang#53811
    gbaraldi authored Mar 22, 2024
    Configuration menu
    Copy the full SHA
    52fc796 View commit details
    Browse the repository at this point in the history
  2. Remove fl_julia_current_{file, line} (JuliaLang#53797)

    These flisp accessor functions make use of the `jl_filename` and
    `jl_lineno` globals. I was looking at removing these globals for
    unrelated reasons, when I saw that one of the primary uses was in these
    flisp accessor, which appear entirely unnecessary. They are only used to
    provide a default for an error message, but the place that puts the
    error message into a list to return to julia does actually already have
    access to this information, so there's no need for these to look at the
    globals.
    
    While we're at it, also add a test for this code path, which was
    otherwise unexercised in our test suite.
    Keno authored Mar 22, 2024
    Configuration menu
    Copy the full SHA
    6c22dfd View commit details
    Browse the repository at this point in the history
  3. Use jl_filename/jl_lineno less (JuliaLang#53799)

    I don't like `jl_filename`/`jl_lineno`. They are weird internal state,
    and they are also not thread safe, so if different threads are evaling
    different things at the same time, line numbers can get confused.
    
    This PR changes the core function `jl_toplevel_eval_flex` to keep track
    of its current file/line context on the stack, so at least there is no
    confusion within one call to this function.
    
    With this PR and JuliaLang#53797, the global `jl_filename`/`jl_lineno` are used
    for three purposes:
    
    1. To initialize the filename/lineno used by lowering from `Core.eval`.
    2. To give binding deprecation warnings.
    3. For `jl_critical_error`.
    4. By humans in the debugger.
    
    I think 3 and 4 are fine, they are exceptional cases. Case 2, I think
    could be changed to plumb through locations explicitly,
     but it's a bit annoying, so I didn't tackle it here.
    Case 1, I think can probably just be changed to consistently initialize,
    and if you want a proper line number, you need to put it in there
    explicitly.
    However, I didn't change that in this PR, because I think it could be
    slightly
     breaking, so should be pkgeval'd.
    Keno authored Mar 22, 2024
    Configuration menu
    Copy the full SHA
    9145571 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    3e37e17 View commit details
    Browse the repository at this point in the history
  5. precompilepkgs: simplify custom config printing if only one (JuliaLan…

    …g#53805)
    
    Currently it's a bit excessive in the `Pkg.test` precompile job
    
    ![Screenshot 2024-03-20 at 12 04
    03 PM](https://github.com/JuliaLang/julia/assets/1694067/7600f0b8-6e4b-43b2-9c42-c8d5d16b8d57)
    
    
    This PR
    ```
    Precompiling project for configuration --code-coverage=none --color=yes --check-bounds=yes --warn-overwrite=yes --depwarn=yes --inline=yes --startup-file=no --track-allocation=none...
        354.9 ms  ✓ RFFT
      1 dependency successfully precompiled in 1 seconds. 38 already precompiled.
    ```
    
    Pkg could also just set the non-default flags to minimize the list.
    IanButterworth authored Mar 22, 2024
    Configuration menu
    Copy the full SHA
    9291845 View commit details
    Browse the repository at this point in the history
  6. Revert "small changes to make Base more statically compileable" (Juli…

    …aLang#53808)
    
    Reverts JuliaLang#53778 which appears to have introduced a windows
    failure
    
    See
    JuliaLang#53778 (comment)
    IanButterworth authored Mar 22, 2024
    Configuration menu
    Copy the full SHA
    d68a04e View commit details
    Browse the repository at this point in the history

Commits on Mar 23, 2024

  1. Configuration menu
    Copy the full SHA
    5ed51d3 View commit details
    Browse the repository at this point in the history
  2. reland "small changes to make Base more statically compileable (Julia…

    …Lang#53778)" (JuliaLang#53820)
    
    This makes it easier to fully-statically-type Base and init methods. The
    changes are from gb/small-image2.
    JeffBezanson authored Mar 23, 2024
    Configuration menu
    Copy the full SHA
    6172020 View commit details
    Browse the repository at this point in the history
  3. REPL: Expand macros before looking for using statements (JuliaLang#…

    …53821)
    
    Currently, in order to give the nice prompt for missing packages, we
    look for any `using`/`import` statements in the AST before evaluation.
    However, this misses any `using` statements introduced by macros:
    
    ```
    julia> using Pkg
    
    julia> using BenchmarkTools
     │ Package BenchmarkTools not found, but a package named BenchmarkTools is
     │ available from a registry.
     │ Install package?
     │   (@v1.11) pkg> add BenchmarkTools
     └ (y/n/o) [y]: n
    ERROR: ArgumentError: Package BenchmarkTools not found in current path.
    - Run `import Pkg; Pkg.add("BenchmarkTools")` to install the BenchmarkTools package.
    Stacktrace:
     [1] macro expansion
       @ Base ./loading.jl:1781 [inlined]
     [2] macro expansion
       @ Base ./lock.jl:267 [inlined]
     [3] __require(into::Module, mod::Symbol)
       @ Base ./loading.jl:1762
     [4] #invoke_in_world#3
       @ Base ./essentials.jl:963 [inlined]
     [5] invoke_in_world
       @ Base ./essentials.jl:960 [inlined]
     [6] require(into::Module, mod::Symbol)
       @ Base ./loading.jl:1755
    
    julia> macro foo()
           :(using BenchmarkTools)
           end
    @foo (macro with 1 method)
    
    julia> @foo
    ERROR: ArgumentError: Package BenchmarkTools not found in current path.
    - Run `import Pkg; Pkg.add("BenchmarkTools")` to install the BenchmarkTools package.
    Stacktrace:
     [1] macro expansion
       @ Base ./loading.jl:1781 [inlined]
     [2] macro expansion
       @ Base ./lock.jl:267 [inlined]
     [3] __require(into::Module, mod::Symbol)
       @ Base ./loading.jl:1762
     [4] #invoke_in_world#3
       @ Base ./essentials.jl:963 [inlined]
     [5] invoke_in_world
       @ Base ./essentials.jl:960 [inlined]
     [6] require(into::Module, mod::Symbol)
       @ Base ./loading.jl:1755
     [7] top-level scope
       @ REPL[4]:1
    ```
    
    Generally, it doesn't matter, but embedded DSLs may want to do this kind
    of thing, so we might as well try to support it.
    Keno authored Mar 23, 2024
    Configuration menu
    Copy the full SHA
    63e365f View commit details
    Browse the repository at this point in the history
  4. Add docstring for Base.Sort.SMALL_ALGORITHM (JuliaLang#53807)

    Co-authored-by: Lilith Orion Hafner <lilithhafner@gmail.com>
    Co-authored-by: Steven G. Johnson <stevenj@mit.edu>
    3 people authored Mar 23, 2024
    Configuration menu
    Copy the full SHA
    243f67d View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    9bd7343 View commit details
    Browse the repository at this point in the history
  6. add code loading + precompilation support for workspaces (JuliaLang#5…

    …3653)
    
    This is similar to workspaces in cargo where multiple projects share a
    manifest https://doc.rust-lang.org/book/ch14-03-cargo-workspaces.html
    and upon resolving the dependencies and compat of all projects in the
    workspace is adhered to.
    
    The idea is to use this for e.g. test, doc environments where you want
    to "overlay" a dependency graph on top of a base one.
    
    The code change in Base adds support for the code loading and precompilation part of this, those changes are:
    
    - Finding the manifest from any active project in the workspace
    - Merge preferences among projects in a workspace.
    - Allowing one to pass `manifest=true` to `precompilepkgs` to compile every package in the manifest.
    - The effect of giving no packages to `precompilepkgs` was changed from compiling all packages in the manifest to only those in the active project (which is equivalent in case of no workspace being used but different when it is used).
    KristofferC authored Mar 23, 2024
    Configuration menu
    Copy the full SHA
    4a2c593 View commit details
    Browse the repository at this point in the history

Commits on Mar 25, 2024

  1. create phantom task for GC threads (JuliaLang#53815)

    A common idiom used throughout the codebase is to get a pointer to
    thread-local-state through `jl_current_task->ptls`.
    
    Create a phantom task for GC threads so that we can make use of this
    idiom when running in the GC threads as well.
    
    Idea originally suggested by @vchuravy, bugs are mine.
    d-netto authored Mar 25, 2024
    Configuration menu
    Copy the full SHA
    9636ef7 View commit details
    Browse the repository at this point in the history
  2. Add Xoshiro reference to Random module docstring (JuliaLang#53784)

    Since currently `Xoshiro` is a default random number generator I propose
    to add it to the docstring of `Random` module.
    bkamins authored Mar 25, 2024
    Configuration menu
    Copy the full SHA
    944f180 View commit details
    Browse the repository at this point in the history
  3. update MPFR to 4.2.1 (JuliaLang#53837)

    MPFR 4.2.1 was released on 22 August 2023.
    It contains bugfixes.
    fxcoudert authored Mar 25, 2024
    Configuration menu
    Copy the full SHA
    61caaa8 View commit details
    Browse the repository at this point in the history

Commits on Mar 26, 2024

  1. Configuration menu
    Copy the full SHA
    cd523fe View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    324e353 View commit details
    Browse the repository at this point in the history
  3. update PCRE2 to 10.43.0 (JuliaLang#53838)

    Released on 16 February 2024. Among the changes is support for Unicode
    15.0.0
    fxcoudert authored Mar 26, 2024
    Configuration menu
    Copy the full SHA
    bf9079a View commit details
    Browse the repository at this point in the history
  4. Update zlib to 1.3.1 (JuliaLang#53841)

    Released January 22, 2024
    fxcoudert authored Mar 26, 2024
    Configuration menu
    Copy the full SHA
    018152f View commit details
    Browse the repository at this point in the history
  5. lowering: Don't bother rewrapping bare linenumbers in hygienic-scope (J…

    …uliaLang#53850)
    
    JuliaInterpreter tries to do some very questionable pre-lowering
    introspection to find line numbers, but doesn't properly handle hygienic
    scope. That should be fixed, but as I was about to put in a hack there,
    I figured we might as well not bother re-wrapping bare LineNumberNodes
    in hygienic scopes. They just get discarded again immediately anyway. No
    functional change in that this is semantically equivalent to what we had
    before, just with a slightly more compact lowering result and additional
    JuliaInterpreter test passing.
    Keno authored Mar 26, 2024
    Configuration menu
    Copy the full SHA
    4607d53 View commit details
    Browse the repository at this point in the history
  6. 🤖 [master] Bump the Pkg stdlib from 6859d6857 to 162634c56 (JuliaLang…

    …#53846)
    
    Stdlib: Pkg
    URL: https://github.com/JuliaLang/Pkg.jl.git
    Stdlib branch: master
    Julia branch: master
    Old commit: 6859d6857
    New commit: 162634c56
    Julia version: 1.12.0-DEV
    Pkg version: 1.12.0
    Bump invoked by: @KristofferC
    Powered by:
    [BumpStdlibs.jl](https://github.com/JuliaLang/BumpStdlibs.jl)
    
    Diff:
    JuliaLang/Pkg.jl@6859d68...162634c
    
    ```
    $ git log --oneline 6859d6857..162634c56
    162634c56 Add workspace feature (JuliaLang#3841)
    a4ec712eb Remove outdated UUID instructions (JuliaLang#3855)
    9c6356fa9 collect e.g. weak deps from project even if it is not a package (JuliaLang#3852)
    ```
    
    Co-authored-by: Dilum Aluthge <dilum@aluthge.com>
    DilumAluthgeBot and DilumAluthge authored Mar 26, 2024
    Configuration menu
    Copy the full SHA
    86a697c View commit details
    Browse the repository at this point in the history
  7. Update libgit2 to 1.8.0 (JuliaLang#53840)

    According to the release notes, three breaking (ABI) changes are handled
    here:
    
    - `GIT_CONFIG_LEVEL_WORKTREE` constant (and modification to value of
    `GIT_CONFIG_LEVEL_APP`)
    - `git_config_entry` structure
    - `git_push_options` structure
    
    https://github.com/libgit2/libgit2/releases/tag/v1.8.0
    fxcoudert authored Mar 26, 2024
    Configuration menu
    Copy the full SHA
    64de065 View commit details
    Browse the repository at this point in the history
  8. precompilepkgs: don't confuse single package in project with requesti…

    …ng single package (JuliaLang#53865)
    
    Followup to JuliaLang#53653
    Separate from JuliaLang#53862 because this one is just broken on master
    
    Without this if you precompile a project with a single dep it thought
    the user was calling `precompile Dep` or `using Dep` so went into live
    print mode, which is confusing.
    IanButterworth authored Mar 26, 2024
    Configuration menu
    Copy the full SHA
    653c0ae View commit details
    Browse the repository at this point in the history

Commits on Mar 27, 2024

  1. Configuration menu
    Copy the full SHA
    fc2d3af View commit details
    Browse the repository at this point in the history
  2. chore: fix some comments (JuliaLang#53861)

    Signed-off-by: crazeteam <lilujing@outlook.com>
    crazeteam authored Mar 27, 2024
    Configuration menu
    Copy the full SHA
    d4d34b9 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    6737a1d View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    f413b01 View commit details
    Browse the repository at this point in the history
  5. Harmonize and add docs for --math-mode (JuliaLang#53818)

    The behavior was changed and the CLI doc was removed
    in JuliaLang#41638, though we current still allow users to
    selectively use the `@fastmath` macro.
    This adds back the CLI docs and makes a minor
    clarification about behavior.
    
    Co-authored-by: Matt Bauman <mbauman@juliahub.com>
    sjkelly and mbauman authored Mar 27, 2024
    Configuration menu
    Copy the full SHA
    7a62dff View commit details
    Browse the repository at this point in the history
  6. Print more info when backtrace test fails (JuliaLang#53874)

    This test fails intermittently on win32. Let's try to print some more
    info in that case to see if we can find out anything.
    Keno authored Mar 27, 2024
    Configuration menu
    Copy the full SHA
    a3616a8 View commit details
    Browse the repository at this point in the history
  7. inference: Fix handling of :throw_undef_if_not (JuliaLang#53875)

    This stmt type doesn't usually get introduced until IR conversion, but
    we do allow it in inference (to allow it to be emitted by packages like
    Diffractor). However, we didn't have a test for it, so the code path
    grew a bug. Fix that and also allow this as a frontend form, so it can
    be tested without resorting to generated functions.
    Keno authored Mar 27, 2024
    Configuration menu
    Copy the full SHA
    0e2409a View commit details
    Browse the repository at this point in the history
  8. Configuration menu
    Copy the full SHA
    bb3b09d View commit details
    Browse the repository at this point in the history
  9. Configuration menu
    Copy the full SHA
    f4866b7 View commit details
    Browse the repository at this point in the history
  10. opaque_closure: Lookup optimized oc source inside code instance (Juli…

    …aLang#53878)
    
    This is an alternative to JuliaLang#53852. I don't think it's semantically legal
    to put optimized source into the :source field of a method, but it
    should be fine to just look it up from the CodeInstance. That said, this
    is a bit of an unusual configuration. In particular it wasn't even
    reachable with the surface APIs, which assumed that inferred IR was
    always supposed to be compiled.
    Keno authored Mar 27, 2024
    Configuration menu
    Copy the full SHA
    4ee1022 View commit details
    Browse the repository at this point in the history

Commits on Mar 28, 2024

  1. inference: Fix correctness and ensure termination in the presence of …

    …PhiNodes (JuliaLang#53876)
    
    There's two related, but distinct, issues here:
    1. We were not using `tmerge` for merging SSA results inside loops,
    which could cause infinite looping. In the absence of PhiNodes, things
    usually have to go through a slot to be able to make the round trip,
    which would usually put a PhiNode on the path, but it's possible there
    may be other ways to smuggle things around (e.g. through exception
    handling).
    
    2. We were not properly accounting for the fact that PhiNode uses do not
    need to be linearly ordered in the same BB, so we were getting the type
    of the testcase here incorrect by failing to re-schedule the PhiNode.
    
    The first of these shows up in the Diffractor test suite, the second was
    found by writing the test case.
    Keno authored Mar 28, 2024
    Configuration menu
    Copy the full SHA
    e07c0f1 View commit details
    Browse the repository at this point in the history
  2. RNG reproducibility discussion - rm confusing ref to MenneTwister (Ju…

    …liaLang#53879)
    
    There was an odd phrase "in particular if `MersenneTwister` is used" in
    the reproducibility discussion, which made it seem like the discussion
    was specific to `MersenneTwister` (which we don't even use by default
    anymore). I just deleted this clause.
    stevengj authored Mar 28, 2024
    Configuration menu
    Copy the full SHA
    2a944fa View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    6f51966 View commit details
    Browse the repository at this point in the history
  4. optimize: Delete incoming unreachable edges from PhiNode (JuliaLang#5…

    …3877)
    
    Incoming IR very rarely contains PhiNodes, but we do allow it to make
    things easier on downstream packages like Diffractor that want to
    generate the same code structures in both typed and untyped mode.
    However, this does of course mean that once inference is finished, any
    PhiNodes in the original source must be adjusted to maintain IRCode
    invariants. One particular important invariant here is that the edges
    list in a PhiNode must match the predecessor list, so in particular if a
    predecessor becomes unreachable during inference, we must filter that
    edge before passing it on to the optimizer.
    
    ---------
    
    Co-authored-by: Shuhei Kadowaki <aviatesk@gmail.com>
    Keno and aviatesk authored Mar 28, 2024
    Configuration menu
    Copy the full SHA
    89d59a9 View commit details
    Browse the repository at this point in the history
  5. Consistently format Julia in the docstring for Base.DEPOT_PATH (Julia…

    …Lang#53873)
    
    It is unclear what `Julia` exactly means in this docstring, but the two
    occurences of the word have different formatting. The guidelines say
    > in docstrings refer to the language as "Julia" and the executable as
    "`julia`".
    
    Given that we are not talking about the executable here, I removed the
    backticks.
    Sbozzolo authored Mar 28, 2024
    Configuration menu
    Copy the full SHA
    3530c8f View commit details
    Browse the repository at this point in the history
  6. Utilize bitshifts correctly in signals-mach.c when storing/reading th…

    …e previous GC state (JuliaLang#53868)
    
    I have not succeed in writing a test for this, but this was found on a
    CI hang together with @Keno and @vtjnash.
    
    In essence if we hit a safepoint while GC_SAFE things can go wrong
    <img width="748" alt="image"
    src="https://github.com/JuliaLang/julia/assets/28694980/7d8170ee-11ab-43de-9bb1-9219aa5a2d80">
    gbaraldi authored Mar 28, 2024
    Configuration menu
    Copy the full SHA
    1e50a99 View commit details
    Browse the repository at this point in the history
  7. use flisp cprimitives for lowering large longs (JuliaLang#53860)

    This addresses the previous limitation to `Base.literal_pow`, where it
    would only apply to literals between $\pm2\^{61}$ (or 29).
    mbauman authored Mar 28, 2024
    Configuration menu
    Copy the full SHA
    b18d2cc View commit details
    Browse the repository at this point in the history

Commits on Mar 29, 2024

  1. Configuration menu
    Copy the full SHA
    a3438d0 View commit details
    Browse the repository at this point in the history
  2. fix typos in codegen.cpp (JuliaLang#53888)

    Not sure why this typo didn't mess up the CI, but it looks like a clear
    problem, let's correct it. I'd appreciate any idea on how to exercise
    this change.
    
    - fixes JuliaDebug/JuliaInterpreter.jl#621
    aviatesk authored Mar 29, 2024
    Configuration menu
    Copy the full SHA
    11517f2 View commit details
    Browse the repository at this point in the history
  3. Revert change to checksum for llvm-julia (JuliaLang#53870)

    Should fix JuliaLang#53399. I think this is the correct fix.
    Makes it so you can build Julia with `USE_BINARYBUILDER=0`.
    Zentrik authored Mar 29, 2024
    Configuration menu
    Copy the full SHA
    b2e8eb2 View commit details
    Browse the repository at this point in the history
  4. fix relocatable upgrades test (JuliaLang#53889)

    Fixes JuliaLang#53885
    
    Not the first time MacOS serving tempdir via a symlink has caused
    obscure issues..
    IanButterworth authored Mar 29, 2024
    Configuration menu
    Copy the full SHA
    09b356f View commit details
    Browse the repository at this point in the history
  5. add initial support for OpenBSD (JuliaLang#53633)

    These commits add initial support of OpenBSD in julia.
    
    It isn't strictly enough to make julia runable on OpenBSD (see JuliaLang#53632),
    but it covers the larger part.
    
    ---------
    
    Co-authored-by: Max Horn <max@quendi.de>
    Co-authored-by: Oscar Smith <oscardssmith@gmail.com>
    3 people authored Mar 29, 2024
    Configuration menu
    Copy the full SHA
    e26d140 View commit details
    Browse the repository at this point in the history
  6. curl: fix RPATH to find nghttp2 and libssh2 (JuliaLang#53894)

    Fixes JuliaLang#48820
    
    I think this is the proper fix, and there might be a configure option to
    curl or nghttp2 to set it, but I haven't been found it. So we'll do it
    that way.
    fxcoudert authored Mar 29, 2024
    Configuration menu
    Copy the full SHA
    d10a0fb View commit details
    Browse the repository at this point in the history

Commits on Mar 30, 2024

  1. Configuration menu
    Copy the full SHA
    24ff6f4 View commit details
    Browse the repository at this point in the history
  2. curl: remove patch (JuliaLang#53892)

    This upstream patch needs to be removed because in latest curl, it's
    already applied. This currently prevents a build from source. (And I am
    wondering why that was not caught?)
    fxcoudert authored Mar 30, 2024
    Configuration menu
    Copy the full SHA
    313f933 View commit details
    Browse the repository at this point in the history

Commits on Mar 31, 2024

  1. Copy for CartesianIndices/LinearIndices need not materialize (Jul…

    …iaLang#53901)
    
    Currently,
    ```julia
    julia> C = CartesianIndices((1:2, 1:2))
    CartesianIndices((1:2, 1:2))
    
    julia> copy(C)
    2×2 Matrix{CartesianIndex{2}}:
     CartesianIndex(1, 1)  CartesianIndex(1, 2)
     CartesianIndex(2, 1)  CartesianIndex(2, 2)
    ```
    However, seeing that a `CartesianIndices` is equivalent to an n-D range,
    there doesn't seem to be a need to materialize the result. This PR also
    ensures that `copy(C)` returns the same type as `C`.
    
    After this PR:
    ```julia
    julia> C = CartesianIndices((1:2, 1:2))
    CartesianIndices((1:2, 1:2))
    
    julia> copy(C)
    CartesianIndices((1:2, 1:2))
    ```
    Also, a similar change for `LinearIndices` is added.
    jishnub authored Mar 31, 2024
    Configuration menu
    Copy the full SHA
    a3f710e View commit details
    Browse the repository at this point in the history

Commits on Apr 1, 2024

  1. Add Base.isrelocatable(pkg) (JuliaLang#53906)

    This PR adds a utility function `isrelocatable(pkg)` that can be used to
    check if `pkg` is already precompiled and if the associated cachefile is
    relocatable.
    
    The reason to implicitly perform the `isprecompiled` check is that the
    exact same computation needs to be done to find the right `.ji`.
    
    A `pkg` is said to be relocatable if
    1. all `include()` paths are relocatable (they start with `@depot`),
    2. all `include_dependency()` paths are relocatable (they start with
    `@depot` and `track_content=true` was used to include them).
    fatteneder authored Apr 1, 2024
    Configuration menu
    Copy the full SHA
    e9d25ca View commit details
    Browse the repository at this point in the history
  2. Fix calling LLVM_SIZE on windows (JuliaLang#53902)

    Per
    JuliaCI/julia-buildkite#224 (comment),
    the path needs to be updated so that `llvm-size` can find `libLLVM.dll`.
    Zentrik authored Apr 1, 2024
    Configuration menu
    Copy the full SHA
    657ce04 View commit details
    Browse the repository at this point in the history
  3. optimizer: allow multiple inlining again (JuliaLang#53911)

    Before JuliaLang#52415 we could do multiple rounds of inlining on
    IR that had already been inlined, but this was no longer possible. By
    removing the assertion that was introduced in JuliaLang#52415,
    this commit makes it possible to do multi-inlining once more. Note that
    to fully solve this, though, we need to enhance `ir_inline_linetable!`
    so it can add new linetables to an inner linetable that's already been
    inlined. This commit notes that enhancement as something we need to do
    later, leaving it with a TODO comment.
    aviatesk authored Apr 1, 2024
    Configuration menu
    Copy the full SHA
    1fedcab View commit details
    Browse the repository at this point in the history
  4. More emoji completions! 🫠 (JuliaLang#53913)

    Happy April fools day! 🪿 Let's celebrate with a very important PR 🩵
    
    This PR updates the REPL completion list with all the fun new emoji from
    unicode 15.1! This makes Julia ready for the up-and-coming programmzers
    who want the latest trends in emoji coding! 🫶🫶 Fresh new emoji for fresh
    new ideas! 🫶🫶
    
    Some of the new emoji include:
    - `\:biting_lip:` 🫦 for when the IO code gets *spicy*
    - `\:beans:` 🫘 beanssss
    - `\:mirror_ball:` 🪩 for parties!
    - `\:playground_slide:` 🛝 for really fun code :)
    
    Thanks to @oxinabox for the future-proof script!
    
    Enjoy!!
    fonsp authored Apr 1, 2024
    Configuration menu
    Copy the full SHA
    0ac60b7 View commit details
    Browse the repository at this point in the history

Commits on Apr 2, 2024

  1. documentation followup for "invert linetable representation (JuliaLan…

    …g#52415)" (JuliaLang#53781)
    
    - fix up added documents: eb05b4f
    - ~~set up a specific type to capture the 3-set data of `codelocs`:
    6afde4b~~ (moved to a separate PR)
    aviatesk authored Apr 2, 2024
    Configuration menu
    Copy the full SHA
    718b988 View commit details
    Browse the repository at this point in the history
  2. Avoid repeated precompilation when loading from non-relocatable cache…

    …files (JuliaLang#53905)
    
    Fixes
    JuliaLang#53859 (comment),
    which was actually fixed before in
    JuliaLang#52346, but
    JuliaLang#52750 undid that fix.
    
    This PR does not directly address JuliaLang#53859, because I can not reproduce it
    atm.
    
    ---
    
    The `@depot` resolution logic for `include()` files is adjusted as
    follows:
    
    1. (new behavior) If the cache is not relocatable because of an absolute
    path, we ignore that path for the depot search. Recompilation will be
    triggered by `stale_cachefile()` if that absolute path does not exist.
    Previously this caused any `@depot` tags to be not resolved and so
    trigger recompilation.
    2. (new behavior) If we can't find a depot for a relocatable path, we
    still replace it with the depot we found from other files. Recompilation
    will be triggered by `stale_cachefile()` because the resolved path does
    not exist.
    3. (this behavior is kept) We require that relocatable paths all resolve
    to the same depot.
    4. (new behavior) We no longer use the first matching depot for
    replacement, but instead we explicitly check that all resolve to the
    same depot. This has two reasons:
    - We want to scan all source files anyways in order to provide logs for
    1. and 2. above, so the check is free.
    - It is possible that a depot might be missing source files. Assume that
    we have two depots on `DEPOT_PATH`, `depot_complete` and
    `depot_incomplete`.
    If `DEPOT_PATH=["depot_complete","depot_incomplete"]` then no
    recompilation shall happen, because `depot_complete` will be picked.
    If `DEPOT_PATH=["depot_incomplete","depot_complete"]` we trigger
    recompilation and hopefully a meaningful error about missing files is
    thrown. If we were to just select the first depot we find, then whether
    recompilation happens would depend on whether the first relocatable file
    resolves to `depot_complete` or `depot_incomplete`.
    fatteneder authored Apr 2, 2024
    Configuration menu
    Copy the full SHA
    d8d3842 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    e99627f View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    b70e1ae View commit details
    Browse the repository at this point in the history
  5. Buildkite Test Analytics: fix failure_expanded

    The `failure_expanded` attribute of a test result is an _array_ of
    objects, not a single object.
    
    I believe this is to support the possibility of multiple failure reasons
    in a single test case, although I'm not sure if that's used anywhere.
    
    https://buildkite.com/docs/test-analytics/importing-json#json-test-results-data-reference-test-result-objects
    pda committed Apr 2, 2024
    Configuration menu
    Copy the full SHA
    1256e3e View commit details
    Browse the repository at this point in the history

Commits on Apr 3, 2024

  1. note that REPL doesn't show "nothing" values (JuliaLang#53930)

    It seemed worth documenting that display of `nothing` is suppressed by
    the REPL (and similar environments, e.g. IJulia).
    stevengj authored Apr 3, 2024
    Configuration menu
    Copy the full SHA
    94f887b View commit details
    Browse the repository at this point in the history
  2. minor followups on the linetable changes (JuliaLang#53921)

    - remove unnecessary `Core.` accessors to `DebugInfo` within
    `Core.Compiler`
    - improve the type of `DebugInfoStream`'s `edges` field
    aviatesk authored Apr 3, 2024
    Configuration menu
    Copy the full SHA
    854170a View commit details
    Browse the repository at this point in the history
  3. oc: code_typed support for optimized opaque closures (JuliaLang#53929)

    Reflection version of JuliaLang#53878.
    
    ---------
    
    Co-authored-by: Shuhei Kadowaki <40514306+aviatesk@users.noreply.github.com>
    Co-authored-by: Shuhei Kadowaki <aviatesk@gmail.com>
    3 people authored Apr 3, 2024
    Configuration menu
    Copy the full SHA
    a69aa30 View commit details
    Browse the repository at this point in the history
  4. fix typo in comment (JuliaLang#53936)

    Signed-off-by: crazehang <zhangrenzhong@outlook.com>
    crazehang authored Apr 3, 2024
    Configuration menu
    Copy the full SHA
    c749147 View commit details
    Browse the repository at this point in the history
  5. make @fastmath mirror how lowering applies literal_pow (JuliaLang#53819)

    The expressions `a^x` and `@fastmath a^x` are now producing equivalent
    results (apart from floating point accuracy) in the case of literal
    integer `x`.
    The logic in the `fastmath` macro, trying to mimic the behaviour of the
    compiler is fixed.
    
    Fixes JuliaLang#53817
    
    ---------
    
    Co-authored-by: Oscar Smith <oscardssmith@gmail.com>
    KlausC and oscardssmith authored Apr 3, 2024
    Configuration menu
    Copy the full SHA
    d7dc9a8 View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    12c9391 View commit details
    Browse the repository at this point in the history
  7. fix macros @which, @edit, @functionloc, @less for `literal_po…

    …w` case. (JuliaLang#53713)
    
    The macros `@which`, `@edit`, `@functionloc`, `@less` from `InteractiveUtils`, if
    applied to the case of literal powers, like `a^12` or `2^-1` used to direct the
    user to function `^`, while the compiler generates code for `Base.literal_pow`.
    
    Now the user is shown the code the compiler generates.
    
    Fixes JuliaLang#53691
    Fixes JuliaLang#43337
    Fixes JuliaLang#21014
    
    Co-authored-by: Matt Bauman <mbauman@juliahub.com>
    KlausC and mbauman authored Apr 3, 2024
    Configuration menu
    Copy the full SHA
    286e339 View commit details
    Browse the repository at this point in the history

Commits on Apr 4, 2024

  1. Use copyto! in converting Diagonal/Bidiagonal/Tridiagonal to …

    …`Matrix` (JuliaLang#53912)
    
    With this, we may convert a structured matrix to `Matrix` even if its
    `eltype` doesn't support `zero(T)`, as long as we may index into the
    matrix and the elements have `zero` defined for themselves. This makes
    the following work:
    ```julia
    julia> D = Diagonal(fill(Diagonal([1,3]), 2))
    2×2 Diagonal{Diagonal{Int64, Vector{Int64}}, Vector{Diagonal{Int64, Vector{Int64}}}}:
     [1 0; 0 3]      ⋅     
         ⋅       [1 0; 0 3]
    
    julia> Matrix{eltype(D)}(D)
    2×2 Matrix{Diagonal{Int64, Vector{Int64}}}:
     [1 0; 0 3]  [0 0; 0 0]
     [0 0; 0 0]  [1 0; 0 3]
    ```
    We also may materialize partly initialized matrices:
    ```julia
    julia> D = Diagonal(Vector{BigInt}(undef, 2))
    2×2 Diagonal{BigInt, Vector{BigInt}}:
     #undef    ⋅
       ⋅     #undef
    
    julia> Matrix{eltype(D)}(D)
    2×2 Matrix{BigInt}:
     #undef    0
       0     #undef
    ```
    
    The performance seems identical for numeric matrices.
    jishnub authored Apr 4, 2024
    Configuration menu
    Copy the full SHA
    19919b7 View commit details
    Browse the repository at this point in the history
  2. Add zero for Base.TwicePrecision (JuliaLang#53787)

    Since `zero` exists for a `TwicePrecision` type, it makes sense for a
    method to exist for an instance as well.
    Fixes JuliaLang#52713, which was a regression from v1.9.1. After this, the
    following may be displayed without errors:
    ```julia
    julia> r = 1.0*(1:5) .+ im
    1.0 + 1.0im:Base.TwicePrecision{Float64}(1.0, 0.0):5.0 + 1.0im
    ```
    However, in this case, the step is a `Base.TwicePrecision`, which seems
    to be an implementation detail that's leaking out, although addressing
    this may be a separate PR.
    jishnub authored Apr 4, 2024
    Configuration menu
    Copy the full SHA
    cb4e107 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    0cd3164 View commit details
    Browse the repository at this point in the history
  4. Fixes for allowing :throw_undef_if_not on the frontend (JuliaLang#5…

    …3944)
    
    JuliaLang#53875 allowed
    `:throw_undef_if_not` as a frontend form.
    
    However, the `UndefVarError` being tested is thrown because the first
    argument is resolved to a global ref:
    
    ```julia
    julia> @eval function has_tuin()
               $(Expr(:throw_undef_if_not, :x, false))
           end
    has_tuin (generic function with 1 method)
    
    julia> @code_lowered has_tuin() # master
    CodeInfo(
    1 ─ %1 = $(Expr(:throw_undef_if_not, :(Main.x), false))
    └──      return %1
    )
    
    julia> @code_lowered has_tuin() # this pr
    CodeInfo(
    1 ─ %1 = $(Expr(:throw_undef_if_not, :x, false))
    └──      return %1
    )
    ```
    
    This change skips this global ref resolution for the first argument and
    fixes a typo which would throw an error in case of non-const second
    argument.
    Pangoraw authored Apr 4, 2024
    Configuration menu
    Copy the full SHA
    19fffe1 View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    c371e4c View commit details
    Browse the repository at this point in the history
  6. Buildkite Test Analytics: fix failure_expanded (JuliaLang#53706)

    This pull request changes `failure_expanded` from `Dict{String, Any}` to
    `Vector{Dict{String, Any}}` to fix a JSON schema issue in the [Bootleg
    JSON
    writer](https://github.com/JuliaLang/julia/blob/7eb5cb89fb938a1dc67efa3861b25562767a7bbe/test/buildkitetestjson.jl#L13)
    🏴‍☠️ which is responsible for producing JSON test results for [Buildkite
    Test Analytics](https://buildkite.com/test-analytics).
    
    The [`failure_expanded` attribute of a test
    result](https://buildkite.com/docs/test-analytics/importing-json#json-test-results-data-reference-test-result-objects)
    is a JSON array of objects, rather than a single object. I believe this
    is to support the possibility of multiple failure reasons in a single
    test case, although I'm not sure if that's used anywhere.
    
    I believe the associated uploads (batches of up to 5,000 results) are
    currently getting a successful HTTP 202 Accepted response, but the
    response body will contain an error for each test case that had a
    non-array `failure_expanded`, meaning those test cases will be dropped:
    
    ```http
    HTTP/1.1 202 Accepted
    Content-Type: application/json; charset=utf-8
    Date: Tue, 12 Mar 2024 13:11:46 GMT
    X-Request-Id: a35322f6-9990-4b8e-8895-d62bd6e10935
    
    {
      "id": "55ac3b92-…",
      "run_id": "bfa6de98-…",
      "queued": 4998,
      "skipped": 2,
      "errors": [
        "Validation failed: Failure expanded must be an Array",
        "Validation failed: Failure expanded must be an Array"
      ],
      "run_url": "http://buildkite.com/…"
    }
    ```
    
    Rather than make the Buildkite API more permissive, I figured I'd come
    and fix it upstream, and write my first few tiny lines of Julia while
    I'm at it 😁
    
    I've verified that the adjusted JSON output it accepted by our ingestion
    system.
    
    ---
    
    For verification, I added an error to an arbitrarily selected test
    (because [workers don't return information about passing/broken tests,
    only errors or
    failure](https://github.com/JuliaLang/julia/blob/7eb5cb89fb938a1dc67efa3861b25562767a7bbe/test/runtests.jl#L363-L365)):
    
    ```patch
    diff --git a/test/char.jl b/test/char.jl
    index 1d3579013a..582423e8a3 100644
    --- a/test/char.jl
    +++ b/test/char.jl
    @@ -1,6 +1,7 @@
     # This file is a part of Julia. License is MIT: https://julialang.org/license
    
     @testset "basic properties" begin
    +    @test throw(ErrorException("testing Buildkite JSON"))
         @test typemax(Char) == reinterpret(Char, typemax(UInt32))
         @test typemin(Char) == Char(0)
         @test typemax(Char) == reinterpret(Char, 0xffffffff)
    ```
    
    … and then `CI=true ./julia test/runtests.jl char` which produces
    `test/results_1.json`.
    
    Before:
    
    ```json
    [
      {
        "file_name": "/Users/pda/code/julia/test/char.jl",
        "history": {
          "duration": 2.123565912246704,
          "start_at": 1.710245465232599e9,
          "end_at": 1.710245467356165e9
        },
        "name": "test_error: throw(ErrorException(\"testing Buildkite JSON\"))",
        "location": "/Users/pda/code/julia/test/char.jl:4",
        "failure_reason": "Exception (unexpectedly) thrown during test",
        "scope": "/Overall/char",
        "failure_expanded": {
          "backtrace": [
            " [1] top-level scope",
            "   @ ~/code/julia/test/char.jl:4",
            " [2] macro expansion",
            "   @ ~/code/julia/usr/share/julia/stdlib/v1.12/Test/src/Test.jl:164 [inlined]",
            " [3] macro expansion",
            "   @ ~/code/julia/test/char.jl:4 [inlined]",
            " [4] macro expansion",
            "   @ ~/code/julia/usr/share/julia/stdlib/v1.12/Test/src/Test.jl:164 [inlined]",
            " [5] macro expansion",
            "   @ ~/code/julia/test/char.jl:4 [inlined]"
          ],
          "expanded": [
            "testing Buildkite JSON"
          ]
        },
        "id": "e9272117-d5f5-f542-039b-cfd3d2e8f33a",
        "result": "failed"
      }
    ]
    ```
    
    After:
    
    ```json
    [
      {
        "file_name": "/Users/pda/code/julia/test/char.jl",
        "history": {
          "duration": 2.123565912246704,
          "start_at": 1.710245465232599e9,
          "end_at": 1.710245467356165e9
        },
        "name": "test_error: throw(ErrorException(\"testing Buildkite JSON\"))",
        "location": "/Users/pda/code/julia/test/char.jl:4",
        "failure_reason": "Exception (unexpectedly) thrown during test",
        "scope": "/Overall/char",
        "failure_expanded": [
          {
            "backtrace": [
              " [1] top-level scope",
              "   @ ~/code/julia/test/char.jl:4",
              " [2] macro expansion",
              "   @ ~/code/julia/usr/share/julia/stdlib/v1.12/Test/src/Test.jl:164 [inlined]",
              " [3] macro expansion",
              "   @ ~/code/julia/test/char.jl:4 [inlined]",
              " [4] macro expansion",
              "   @ ~/code/julia/usr/share/julia/stdlib/v1.12/Test/src/Test.jl:164 [inlined]",
              " [5] macro expansion",
              "   @ ~/code/julia/test/char.jl:4 [inlined]"
            ],
            "expanded": [
              "testing Buildkite JSON"
            ]
          }
        ],
        "id": "e9272117-d5f5-f542-039b-cfd3d2e8f33a",
        "result": "failed"
      }
    ]
    ```
    
    Diff:
    
    ```patch
    --- buildkite-before.json	2024-03-12 23:08:26
    +++ buildkite-after.json	2024-03-12 23:07:58
    @@ -10,23 +10,25 @@
         "location": "/Users/pda/code/julia/test/char.jl:4",
         "failure_reason": "Exception (unexpectedly) thrown during test",
         "scope": "/Overall/char",
    -    "failure_expanded": {
    -      "backtrace": [
    -        " [1] top-level scope",
    -        "   @ ~/code/julia/test/char.jl:4",
    -        " [2] macro expansion",
    -        "   @ ~/code/julia/usr/share/julia/stdlib/v1.12/Test/src/Test.jl:164 [inlined]",
    -        " [3] macro expansion",
    -        "   @ ~/code/julia/test/char.jl:4 [inlined]",
    -        " [4] macro expansion",
    -        "   @ ~/code/julia/usr/share/julia/stdlib/v1.12/Test/src/Test.jl:164 [inlined]",
    -        " [5] macro expansion",
    -        "   @ ~/code/julia/test/char.jl:4 [inlined]"
    -      ],
    -      "expanded": [
    -        "testing Buildkite JSON"
    -      ]
    -    },
    +    "failure_expanded": [
    +      {
    +        "backtrace": [
    +          " [1] top-level scope",
    +          "   @ ~/code/julia/test/char.jl:4",
    +          " [2] macro expansion",
    +          "   @ ~/code/julia/usr/share/julia/stdlib/v1.12/Test/src/Test.jl:164 [inlined]",
    +          " [3] macro expansion",
    +          "   @ ~/code/julia/test/char.jl:4 [inlined]",
    +          " [4] macro expansion",
    +          "   @ ~/code/julia/usr/share/julia/stdlib/v1.12/Test/src/Test.jl:164 [inlined]",
    +          " [5] macro expansion",
    +          "   @ ~/code/julia/test/char.jl:4 [inlined]"
    +        ],
    +        "expanded": [
    +          "testing Buildkite JSON"
    +        ]
    +      }
    +    ],
         "id": "e9272117-d5f5-f542-039b-cfd3d2e8f33a",
         "result": "failed"
       }
    ```
    vchuravy authored Apr 4, 2024
    Configuration menu
    Copy the full SHA
    66a4fa7 View commit details
    Browse the repository at this point in the history
  7. Make all command-line options documented in all related files (JuliaL…

    …ang#53826)
    
    I checked and updated the three related files to make sure command-line
    documentations are the same in all of them.
    
    Previously mentioned in
    JuliaLang#52645 (comment)
    
    ---------
    
    Co-authored-by: Matt Bauman <mbauman@gmail.com>
    prbzrg and mbauman authored Apr 4, 2024
    Configuration menu
    Copy the full SHA
    a931fbe View commit details
    Browse the repository at this point in the history

Commits on Apr 5, 2024

  1. Add missing methods for UniformScaling (JuliaLang#53949)

    The methods `float`, `cis`, `sincos` and `sincosd` are defined for
    matrices, so it makes sense for these to be defined for a
    `UniformScaling` as well.
    E.g.:
    ```julia
    julia> float(2I)
    UniformScaling{Float64}
    2.0*I
    
    julia> sincos(2I)
    (UniformScaling{Float64}(0.9092974268256817), UniformScaling{Float64}(-0.4161468365471424))
    ```
    jishnub authored Apr 5, 2024
    Configuration menu
    Copy the full SHA
    e64fa86 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    57bbff6 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    6ea67a9 View commit details
    Browse the repository at this point in the history
  4. make loading work with a entryfile entry in the manifest file (Juli…

    …aLang#53939)
    
    also soft deprecate the `path` entry in project file in favour of using
    `entryfile` instead
    
    Fixes the Julia Base part of JuliaLang#53937
    KristofferC authored Apr 5, 2024
    Configuration menu
    Copy the full SHA
    5f4dec1 View commit details
    Browse the repository at this point in the history
  5. LazyString in LinearAlgebra.checksquare error message (JuliaLang#…

    …53961)
    
    This reduces dynamic dispatch and makes JET happier.
    Testing on v1.11:
    ```julia
    julia> import LinearAlgebra: checksquare
    
    julia> using JET
    
    julia> @report_opt checksquare(rand(2,2), rand(2,2))
    ═════ 4 possible errors found ═════
    ┌ checksquare(::Matrix{Float64}, ::Matrix{Float64}) @ LinearAlgebra /cache/build/builder-amdci4-1/julialang/julia-release-1-dot-11/usr/share/julia/stdlib/v1.11/LinearAlgebra/src/LinearAlgebra.jl:307
    │┌ string(::String, ::Tuple{Int64, Int64}) @ Base ./strings/io.jl:189
    ││┌ print_to_string(::String, ::Tuple{Int64, Int64}) @ Base ./strings/io.jl:150
    │││┌ _unsafe_take!(io::IOBuffer) @ Base ./iobuffer.jl:494
    ││││┌ wrap(::Type{Array}, m::MemoryRef{UInt8}, l::Int64) @ Base ./array.jl:3101
    │││││ failed to optimize due to recursion: wrap(::Type{Array}, ::MemoryRef{UInt8}, ::Int64)
    ││││└────────────────────
    │││┌ print_to_string(::String, ::Vararg{Any}) @ Base ./strings/io.jl:143
    ││││ runtime dispatch detected: Base._str_sizehint(%17::Any)::Int64
    │││└────────────────────
    │││┌ print_to_string(::String, ::Vararg{Any}) @ Base ./strings/io.jl:148
    ││││ runtime dispatch detected: print(%59::IOBuffer, %97::Any)::Any
    │││└────────────────────
    │││┌ string(::String, ::Int64, ::String, ::Tuple{Int64}, ::String, ::Int64, ::String, ::Int64, ::String) @ Base ./strings/io.jl:189
    ││││ failed to optimize due to recursion: string(::String, ::Int64, ::String, ::Tuple{Int64}, ::String, ::Int64, ::String, ::Int64, ::String)
    │││└────────────────────
    
    julia> function checksquare(A...) # This PR
                      sizes = Int[]
                      for a in A
                          size(a,1)==size(a,2) || throw(DimensionMismatch(lazy"matrix is not square: dimensions are $(size(a))"))
                          push!(sizes, size(a,1))
                      end
                      return sizes
                  end
    checksquare (generic function with 2 methods)
    
    julia> @report_opt checksquare(rand(2,2), rand(2,2))
    No errors detected
    
    ```
    jishnub authored Apr 5, 2024
    Configuration menu
    Copy the full SHA
    d505c8c View commit details
    Browse the repository at this point in the history
  6. Use StringMemory instead of StringVector where possible (JuliaLang#53962

    )
    
    On `1.11.0-alpha2`
    Old:
    ```julia
    @benchmark Base.dec($0x1, $0, $false)
    BenchmarkTools.Trial: 10000 samples with 994 evaluations.
     Range (min … max):  33.702 ns …   4.242 μs  ┊ GC (min … max):  0.00% … 97.61%
     Time  (median):     37.626 ns               ┊ GC (median):     0.00%
     Time  (mean ± σ):   45.787 ns ± 147.794 ns  ┊ GC (mean ± σ):  14.53% ±  4.47%
    
        ▄▅▆▇█▇▇▅▃▃▂▂▂▁    ▁▂▁▁▁             ▁▁   ▁                 ▂
      ▄▇███████████████▇▇██████▇█▆▆▄▄▃▄▅▄▆▇████████▆▅▅▇▆▅▆▄▄▅▄▄▄▁▅ █
      33.7 ns       Histogram: log(frequency) by time      67.5 ns <
    
     Memory estimate: 88 bytes, allocs estimate: 3.
    ```
    New:
    ```julia
    BenchmarkTools.Trial: 10000 samples with 995 evaluations.
     Range (min … max):  27.538 ns …   3.397 μs  ┊ GC (min … max):  0.00% … 97.86%
     Time  (median):     30.151 ns               ┊ GC (median):     0.00%
     Time  (mean ± σ):   34.547 ns ± 105.101 ns  ┊ GC (mean ± σ):  10.37% ±  3.39%
    
           ▁ █▆▃  ▁
      ▂▂▃▃▅█████▆████▆▄▄▃▃▃▃▃▃▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▁▂▂▂▂▂▁▂▂▂▂▂▂▂▂▂▂▂▂▂ ▃
      27.5 ns         Histogram: frequency by time         43.8 ns <
    
     Memory estimate: 56 bytes, allocs estimate: 2.
    ```
    
    
    Fixes JuliaLang#53950, actually now even faster than `1.10.2`.
    
    It doesn't look like the length is ever changed and we don't return
    these `StringMemory`s so this change should be fine.
    Zentrik authored Apr 5, 2024
    Configuration menu
    Copy the full SHA
    0e59c9e View commit details
    Browse the repository at this point in the history
  7. TOML: Improve type-stability of BigInt/UInt support (JuliaLang#53955)

    From a type-stability perspective, this restores a lot of our behavior
    before JuliaLang#47903.
    
    As it turns out, 10 of the 11 uses of `parse_int` (now called
    `parse_integer`) introduced in that PR are unnecessary since the TOML
    format already requires the parsed value to be within a very limited
    range.
    
    Note that this change does not actually revert any functionality (in
    contrast to JuliaLang#49576)
    topolarity authored Apr 5, 2024
    Configuration menu
    Copy the full SHA
    59c3c71 View commit details
    Browse the repository at this point in the history
  8. Configuration menu
    Copy the full SHA
    d963a34 View commit details
    Browse the repository at this point in the history

Commits on Apr 6, 2024

  1. Explicit namespaces in sort-related docstrings (JuliaLang#53968)

    This represents the unexported names by the fully qualified namespace,
    which makes it simpler to interpret the keyword arguments. Otherwise,
    for example, it's not obvious where `Forward` comes from in the `sort`
    docstring.
    
    Also, replaces some occurrences of `instance <: Algorithm` by `instance
    isa Algorithm`, which is the correct relation. This is also closer to
    English, which helps with readability.
    
    ---------
    
    Co-authored-by: Lilith Orion Hafner <lilithhafner@gmail.com>
    jishnub and LilithHafner authored Apr 6, 2024
    Configuration menu
    Copy the full SHA
    c707a53 View commit details
    Browse the repository at this point in the history
  2. Make reshape and view on Memory produce Arrays and delete wrap (Julia…

    …Lang#53896)
    
    - Make reshape and view with one based indexing on Memory produce Arrays
    - delete wrap
    
    Implements
    JuliaLang#53552 (comment)
    
    ---------
    
    Co-authored-by: Jameson Nash <vtjnash@gmail.com>
    LilithHafner and vtjnash authored Apr 6, 2024
    Configuration menu
    Copy the full SHA
    273d91e View commit details
    Browse the repository at this point in the history
  3. LazyString in DimensionMismatch error messages in broadcasting (J…

    …uliaLang#53975)
    
    This reduces dynamic dispatch, and makes JET happier. Something similar
    is already used in line 523.
    jishnub authored Apr 6, 2024
    Configuration menu
    Copy the full SHA
    f7c7410 View commit details
    Browse the repository at this point in the history
  4. fix minor typo in mktempdir docs (JuliaLang#53977)

    This is a minor change, just adding a missing word to a docstring for
    `Base.Filesystem.mktempdir`
    musoke authored Apr 6, 2024
    Configuration menu
    Copy the full SHA
    4e5bd66 View commit details
    Browse the repository at this point in the history
  5. Fix JuliaLang#52989: DateTime parser would return an error when parsi…

    …ng a year string (JuliaLang#53954)
    
    Issue JuliaLang#52989.
    Originally checked on version 1.10.0 but still relevant in the current
    version in master
    
    Bug: When executing the method DateTime to create a DateTime value with
    a string input only containing a year (ex: "2000") the method returns an
    'ArgumentError: Invalid DateTime string' when it should, from what I
    understood, return a DateTime like 2000-01-01T00:00:00 seeing as if you
    call the same method with a number indicating a year (ex: 2000) the
    method returns correctly.
    
    Fix: The fix was simple, on the first tryparsenext_base10 block (line
    207-211) where a year is parsed from the string the exit condition i >
    end_pos should jump into 'done' so it returns a correct value instead of
    'error'
    Viriato5 authored Apr 6, 2024
    Configuration menu
    Copy the full SHA
    821c608 View commit details
    Browse the repository at this point in the history

Commits on Apr 7, 2024

  1. Configuration menu
    Copy the full SHA
    1febcd6 View commit details
    Browse the repository at this point in the history
  2. Support broadcasting over structured block matrices (JuliaLang#53909)

    Fix JuliaLang#48664
    
    After this, broadcasting over structured block matrices with
    matrix-valued elements works:
    ```julia
    julia> D = Diagonal([[1 2; 3 4], [5 6; 7 8]])
    2×2 Diagonal{Matrix{Int64}, Vector{Matrix{Int64}}}:
     [1 2; 3 4]      ⋅     
         ⋅       [5 6; 7 8]
    
    julia> D .+ D
    2×2 Diagonal{Matrix{Int64}, Vector{Matrix{Int64}}}:
     [2 4; 6 8]      ⋅     
         ⋅       [10 12; 14 16]
    
    julia> cos.(D)
    2×2 Matrix{Matrix{Float64}}:
     [0.855423 -0.110876; -0.166315 0.689109]  [1.0 0.0; 0.0 1.0]
     [1.0 0.0; 0.0 1.0]                        [0.928384 -0.069963; -0.0816235 0.893403]
    ```
    Such operations show up when using `BlockArrays`.
    
    The implementation is a bit hacky as it uses `0I` as the zero element in
    `fzero`, which isn't really the correct zero if the blocks are
    rectangular. Nonetheless, this works, as `fzero` is only used to
    determine if the structure is preserved.
    jishnub authored Apr 7, 2024
    Configuration menu
    Copy the full SHA
    243ebc3 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    c5a3b65 View commit details
    Browse the repository at this point in the history

Commits on Apr 8, 2024

  1. Test and fix non-int-length bug in `view(::Memory, ::Union{UnitRange,…

    … Base.OneTo})` (JuliaLang#53991)
    
    We assumed, falsely, that `length(inds) isa Int`. The length must be
    convertible to an `Int` or we throw, but that conversion may need to be
    explicitly performed.
    
    Fixes JuliaLang#53990
    
    CC @oscardssmith @vtjnash @odow
    LilithHafner authored Apr 8, 2024
    Configuration menu
    Copy the full SHA
    e4f2124 View commit details
    Browse the repository at this point in the history
  2. inference: fixes cache lookup with extended lattice elements

    The previous local cache lookup system wasn't working well for caches
    with extended lattice elements that are transformed from the caller
    context to the callee context by `matching_cache_argtypes`. To address
    this, the current commit moves the call to `matching_cache_argtypes`
    right before `cache_lookup`, instead of within the `InferenceResult`
    constructor.
    
    Note that this adjustment leads to `given_argtypes` being allocated even
    when there's a cache hit, potentially affecting performance negatively.
    I'm looking to further optimize `matching_cache_argtypes` in an upcoming
    commit.
    aviatesk committed Apr 8, 2024
    Configuration menu
    Copy the full SHA
    62df400 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    41347f5 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    a5356a4 View commit details
    Browse the repository at this point in the history
  5. inference: fixes cache lookup with extended lattice elements (JuliaLa…

    …ng#53953)
    
    The previous local cache lookup system wasn't working well for caches
    with extended lattice elements that are transformed from the caller
    context to the callee context by `matching_cache_argtypes`. To address
    this, the current commit moves the call to `matching_cache_argtypes`
    right before `cache_lookup`, instead of within the `InferenceResult`
    constructor.
    
    Note that this adjustment leads to `given_argtypes` being allocated even
    when there's a cache hit, potentially affecting performance negatively.
    I'm looking to further optimize `matching_cache_argtypes` in an upcoming
    commit.
    aviatesk authored Apr 8, 2024
    Configuration menu
    Copy the full SHA
    0e28cf6 View commit details
    Browse the repository at this point in the history

Commits on Apr 9, 2024

  1. Bump the StyledStrings stdlib from e0ca0f8 to bfdb4c3 (JuliaLang#53993)

    Overall, a large pile of polish with some fixes too.
    
    Git log of commits involved:
    bfdb4c3 Modify tests to also pass when run as stdlib
    c084718 Fix return type of AnnotatedString write
    180ab6c Try fixing the non-stdlib tests via refactor
    528f245 Docs: minor index copyedits, and americanizations
    9c015e2 Docs: create an examples page
    a9772d4 Markup annot keys cannot contain null character
    243d959 Allow interpolation of underline properties
    fd2adcc Docs: tweak face description for clarity
    4b06b79 Docs: clarify that AbstractString is wrapped
    7f07b1b Docs: second paragraph reads better as not a note
    a3d15cb Docs: forgot to mention font attribute
    9c10614 Show colour and styling in docs
    59fd944 Add docs previews to PR CI
    9709612 Mark styled and withfaces functions as public API
    a4c7678 Make withfaces behave more consistently
    50d4198 Add speculative consideration of future face keys
    04b5031 Add fuzzing to the tests set
    7dc3c26 Allow color strings as in Face constructor
    c419317 Don't annotate interpolated empty strings
    dfef96d Adjust prioritisation of composed styling in parse
    9a23e9e Test the display of parsing errors
    1d7f42a Test parsing of each and every inline face attr
    84ba211 No need to escape a string when parsing
    e3c0453 Add missing is-macro check to face value interp
    db006ed Mistyped font attribute as "face" in the parser
    230fa8e Test errors emitted with various malformed stystrs
    31f4c1d Overly aggressive color names check in styled strs
    bec9216 Expand on faces tests
    093385e Improve showing of RGB SimpleColors without MIME
    d60d545 Test the show methods of SimpleColor and Face
    cb05225 Test the AnnotatedIOBuffer printstyled method
    c36911c Test the (legacy) loading of colors from envvars
    14b4c6e Reduce test code verbosity by importing more names
    3db948f Add a battery of HTML encoding tests
    316bdd5 Remove extranious spaces from HTML underline style
    62a7d25 Adjust named HTML colours to be not-garish
    81e031e Add a battery of ANSI encoding tests
    a14c3b1 Check the Smulx termcap instead of Su
    b9d4aea Use the redmean colour distance in 8-bit approx
    f9976ad More careful comma handling with inline face specs
    24e10e4 Accept a style symbol as the sole underline value
    2ba234a Use the hardcoded bold ANSI code
    ab4f681 Refactro termcolor8bit to be less magic
    a8b8aaf Fix off-by-one errors in termcolor8bit
    21e127a Introduce fuzzer for styled markup
    a3b40b7 Mention the loading of faces.toml in the docs
    16c0e4f Fix functional parsing of inline face weight
    7da631f Consolidate use of "ws" and "whitespace" in EBNF
    b76c1ce Introduce ismacro convenience func to parser
    b1cb60c Fix handling of space around inline face attrs
    e22d058 Clarification in styled markup grammar docs
    701d29f Introduce isnextchar convenience func to parser
    6efb352 Fix edge-case parsing of empty face construct
    10f6839 Implement new functional styled markup interpreter
    e2d2d5f Refactor stylemacro into a submodule
    11c5bd9 Introduce specialised write for AnnotatedIOBuffer
    tecosaur authored Apr 9, 2024
    Configuration menu
    Copy the full SHA
    3988860 View commit details
    Browse the repository at this point in the history
  2. irinterp: Don't try to access mi.def if it's not a Method (JuliaLang#…

    …54003)
    
    I don't believe this is reachable from the base compiler pipeline, since
    we don't run irinterp on toplevel things, but I am seeing this in
    downstream packages.
    Keno authored Apr 9, 2024
    Configuration menu
    Copy the full SHA
    26070ca View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    7099bdd View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    97ac3ec View commit details
    Browse the repository at this point in the history
  5. Correct return types in docstrings of sincos* (JuliaLang#54006)

    Just a tiny correction to the return types noted in the docstrings, and
    include a phrase in `sincosd` that's present in the other two.
    moble authored Apr 9, 2024
    Configuration menu
    Copy the full SHA
    f870ea0 View commit details
    Browse the repository at this point in the history
  6. Improve performance of ncodeunits(::Char) (JuliaLang#54001)

    This improves performance of `ncodeunits(::Char)` by simply counting the
    number of non-zero bytes (except for `\0`, which is encoded as all zero
    bytes). For a performance comparison, see [this gist](
    https://gist.github.com/Seelengrab/ebb02d4b8d754700c2869de8daf88cad);
    there's an up to 10x improvement here for collections of `Char`, with a
    minor improvement for single `Char` (with much smaller spread). The
    version in this PR is called `nbytesencoded` in the benchmarks.
    
    Correctness has been verified with Supposition.jl, using the existing
    implementation as an oracle:
    
    ```julia
    julia> using Supposition
    
    julia> const chars = Data.Characters()
    
    julia> @check max_examples=1_000_000 function bytesenc(i=Data.Integers{UInt32}())
               c = reinterpret(Char, i)
               ncodeunits(c) == nbytesdiv(c)
           end;
    Test Summary: | Pass  Total  Time
    bytesenc      |    1      1  1.0s
    
    julia> ncodeunits('\0') == nbytesencoded('\0')
    true
    ```
    
    Let's see if CI agrees!
    
    Notably, neither the existing nor the new implementation check whether
    the given `Char` is valid or not, since the only thing that matters is
    how many bytes are written out.
    
    ---------
    
    Co-authored-by: Sukera <Seelengrab@users.noreply.github.com>
    Seelengrab and Seelengrab authored Apr 9, 2024
    Configuration menu
    Copy the full SHA
    d183ee1 View commit details
    Browse the repository at this point in the history

Commits on Apr 10, 2024

  1. 🤖 [master] Bump the Pkg stdlib from 162634c56 to 8f772ffa7 (JuliaLang…

    …#54018)
    
    Stdlib: Pkg
    URL: https://github.com/JuliaLang/Pkg.jl.git
    Stdlib branch: master
    Julia branch: master
    Old commit: 162634c56
    New commit: 8f772ffa7
    Julia version: 1.12.0-DEV
    Pkg version: 1.12.0
    Bump invoked by: @KristofferC
    Powered by:
    [BumpStdlibs.jl](https://github.com/JuliaLang/BumpStdlibs.jl)
    
    Diff:
    JuliaLang/Pkg.jl@162634c...8f772ff
    
    ```
    $ git log --oneline 162634c56..8f772ffa7
    8f772ffa7 prune manifest after the set of some deps have been "demoted" to weakdeps (JuliaLang#3864)
    88c38b2cd make `add` and `dev` on a package remove it from the set of weak dependencies (JuliaLang#3865)
    9210a1da5 fix how entry point to package is computed with `path` provided in project file (JuliaLang#3850)
    77620a945 extensions: fixup entire manifest (JuliaLang#3720)
    8cc835c7d Report failures to download artifacts as failures (JuliaLang#3860)
    2f318cf66 remove unused PkgPrecompileError type (JuliaLang#3858)
    ```
    
    Co-authored-by: Dilum Aluthge <dilum@aluthge.com>
    DilumAluthgeBot and DilumAluthge authored Apr 10, 2024
    Configuration menu
    Copy the full SHA
    e9a24d4 View commit details
    Browse the repository at this point in the history
  2. allow extensions to trigger from packages in [deps] (JuliaLang#54009)

    There is a use case where you have a weak dependency (for one of your
    extensions) that is misbehaving and you quickly want to try debug that
    issue. A workflow that feels reasonable for this could be:
    
    ```
    pkg> dev WeakDependency
    
    # do some fixes in this dependency
    
    julia> using Package, WeakDependency
    # this loads the extension of Package triggered by loading WeakDependency
    
    # check that things work ok now
    ```
    
    This doesn't work right now for two reasons:
    
    1. Doing the `dev WeakDependency` will add the dependency to `[deps]`
    but not remove it from `[weakdeps]` which means you all of a sudden are
    in the scenario described in
    https://pkgdocs.julialang.org/v1/creating-packages/#Transition-from-normal-dependency-to-extension
    which is not what is desired.
    2. The extension will not actually load because you can right now only
    trigger extensions from weak deps getting loaded, not from deps getting
    loaded.
    
    Point 1. is fixed by JuliaLang/Pkg.jl#3865
    Point 2. is fixed by this PR.
    KristofferC authored Apr 10, 2024
    Configuration menu
    Copy the full SHA
    f46cb4c View commit details
    Browse the repository at this point in the history
  3. revert moving "creating packages" from Pkg.jl (JuliaLang#53509)

    As mentioned in
    JuliaLang#52102 (comment),
    having this information be moved from Pkg to Base creates a quite
    uncomfortable split between information about the package manager
    between the Pkg docs and Base.
    
    Pkg PR: JuliaLang/Pkg.jl#3818
    KristofferC authored Apr 10, 2024
    Configuration menu
    Copy the full SHA
    3357d1b View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    45fb084 View commit details
    Browse the repository at this point in the history

Commits on Apr 11, 2024

  1. Fix comparison base for line table compression (JuliaLang#54032)

    I'm not entirely sure what the original intent of this statement was,
    but the effect ends up being that some codeloc entries end up negative
    in the compressed representation, but the code always assumes unsigned
    integers, so things roundtripped badly, leading to badly corrupted stack
    traces. I guess this might have been a rebase mistake,
    since the same line exists (correctly) a few lines prior. Fixes JuliaLang#54031.
    Keno authored Apr 11, 2024
    Configuration menu
    Copy the full SHA
    630f754 View commit details
    Browse the repository at this point in the history
  2. ir: Add version of compute_trycatch for IRCode (JuliaLang#54035)

    For ir transform passes that need to be aware of current_scope.
    Currently no users in Base, but available for external absint.
    
    ---------
    
    Co-authored-by: Shuhei Kadowaki <40514306+aviatesk@users.noreply.github.com>
    Keno and aviatesk authored Apr 11, 2024
    Configuration menu
    Copy the full SHA
    dc8857a View commit details
    Browse the repository at this point in the history
  3. Allow mutable-for-identity-only types to be inlined into IR (JuliaLan…

    …g#54034)
    
    This extends the value-inability predicate to allow mutable structs that
    do not have any mutable fields. The motivating example for this is
    ScopedValue, which is mutable only for identity. By allowing it in this
    predicate, more of the ScopedValue support code becomes concrete-eval
    eligible, rather than attempting to constprop for every single
    ScopedValue, saving compilation time.
    
    ---------
    
    Co-authored-by: Shuhei Kadowaki <aviatesk@gmail.com>
    Keno and aviatesk authored Apr 11, 2024
    Configuration menu
    Copy the full SHA
    a7fd6a7 View commit details
    Browse the repository at this point in the history
  4. constprop: Add facility for widening arguments before constprop (Juli…

    …aLang#54036)
    
    There are various situations where we may want to constprop with
    something other than the most precise concrete arguments in order to
    make the resulting cache more useful to other call sites. One particular
    example of this might be a method where non-concrete inference already
    discovered that one argument is unused:
    
    ```
    function foo(a, b::DispatchOnly)
        expensive_to_compile(a)
    end
    ```
    
    Right now, we will generally perform constprop for every different value
    of `b`, even though we already have the information that `b` is unused.
    
    Another example is external absints that may want to treat certain types
    fully symbolically. They may want to substitute concrete values for an
    abstract domain.
    
    This adds the facility to do both of these things by
    1. Adding an appropriate interp hook in the constprop path
    2. Adding a WidendedSimpleArgtypes wrapper that's like SimpleArgtypes
    but works around an issue where we would override cache information
    using values from concrete eval, which is not legal if the argtypes were
    widened.
    Keno authored Apr 11, 2024
    Configuration menu
    Copy the full SHA
    f085913 View commit details
    Browse the repository at this point in the history
  5. LinearAlgebra: Remove unnecessary adjoint/transpose for bidiag/tridiag (

    JuliaLang#54024)
    
    These should be unnecessary, as the fallback methods do the same.
    jishnub authored Apr 11, 2024
    Configuration menu
    Copy the full SHA
    db247ce View commit details
    Browse the repository at this point in the history

Commits on Apr 12, 2024

  1. RAI: Change task ordering behavior to prioritize older tasks

    kpamnany authored and RAI CI (GitHub Action Automation) committed Apr 12, 2024
    Configuration menu
    Copy the full SHA
    6e5c4e9 View commit details
    Browse the repository at this point in the history
  2. Add PR template and labels (#62)

    labeler workflow fixes (#64)
    
    * Try fix labeler
    
    * Update labeler workflow triggers
    
    * fixup! Update labeler workflow triggers
    nickrobinson251 authored and RAI CI (GitHub Action Automation) committed Apr 12, 2024
    Configuration menu
    Copy the full SHA
    e322667 View commit details
    Browse the repository at this point in the history
  3. Add heartbeat capability

    Presence is controlled by a build-time option. Start a separate
    thread which simply sleeps. When heartbeats are enabled, this
    thread wakes up at specified intervals to verify that user code
    is heartbeating as requested and if not, prints task backtraces.
    
    Also fixes the call to `maxthreadid` in `generate_precompile.jl`.
    kpamnany authored and RAI CI (GitHub Action Automation) committed Apr 12, 2024
    Configuration menu
    Copy the full SHA
    878f6a4 View commit details
    Browse the repository at this point in the history
  4. Change heartbeat thread controls

    When enabling heartbeats, the user must specify:
    - heartbeat_s: jl_heartbeat() must be called at least once every heartbeat_s; if it
      isn't, a one-line heartbeat loss report is printed
    - show_tasks_after_n: after these many heartbeat_s have passed without jl_heartbeat()
      being called, print task backtraces and stop all reporting
    - reset_after_n: after these many heartbeat_s have passed with jl_heartbeat()
      being called, print a heartbeats recovered message and reset reporting
    kpamnany authored and RAI CI (GitHub Action Automation) committed Apr 12, 2024
    Configuration menu
    Copy the full SHA
    ee2831c View commit details
    Browse the repository at this point in the history
  5. Add GitHub template and workflows needed on the default branch (#136)

    Drvi authored and RAI CI (GitHub Action Automation) committed Apr 12, 2024
    Configuration menu
    Copy the full SHA
    18c0aa9 View commit details
    Browse the repository at this point in the history