Skip to content

Backports for 1.13.0-rc1#60920

Open
KristofferC wants to merge 44 commits intorelease-1.13from
backports-release-1.13
Open

Backports for 1.13.0-rc1#60920
KristofferC wants to merge 44 commits intorelease-1.13from
backports-release-1.13

Conversation

@KristofferC
Copy link
Member

@KristofferC KristofferC commented Feb 4, 2026

Backported PRs:

Need manual backport:

Contains multiple commits, manual intervention needed:

Non-merged PRs with backport label:

@KristofferC KristofferC added the release Release management and versioning. label Feb 4, 2026
mlechu and others added 3 commits February 4, 2026 15:08
Fix #60152, which impacted both lowering implementations.
      `remove-argument-side-effects` assumed all `kw` arguments from a
`parameters` block had already been dumped into the argument list, which
is
     not true in some cases.  In addition:

- JuliaLowering hit a MethodError in the dumped-`kw` case regardless.
There are other issues with `kw` which I'm ignoring in this PR (see
#60162)

- Delete some ancient history: `&` [used to be a valid
argument](a378b75#diff-5d79463faae0f7f19454c7f9888498d9f876082e258ab3efdca36a0ee64b0c87L72)
head sometime in 2012 apparently!

(cherry picked from commit 2be8847)
The function was checking `rt.thentype` twice instead of checking both
`rt.thentype` and `rt.elsetype`. This caused incorrect type narrowing
when conditional types were propagated through wrapper functions.

Fixes #60883. Completely done by Claude.

Co-authored-by: Keno Fischer <Keno@users.noreply.github.com>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
(cherry picked from commit 922aa53)
This is a small collection of (what I consider) innocuous fixes/tweaks
to the history UI.

(cherry picked from commit 41e50a7)
KristofferC and others added 4 commits February 4, 2026 15:37
…vert` to a `Symbol` or `String` (#60366)

(cherry picked from commit 8691643)
Fixes #60811

Fixes a bug from #59670 which broke the waiting for another compile job.

(cherry picked from commit e0eed1e)
…60949)

Bumps [actions/checkout](https://github.com/actions/checkout) from 5.0.0
to 6.0.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/checkout/releases">actions/checkout's
releases</a>.</em></p>
<blockquote>
<h2>v6.0.2</h2>
<h2>What's Changed</h2>
<ul>
<li>Add orchestration_id to git user-agent when ACTIONS_ORCHESTRATION_ID
is set by <a
href="https://github.com/TingluoHuang"><code>@​TingluoHuang</code></a>
in <a
href="https://redirect.github.com/actions/checkout/pull/2355">actions/checkout#2355</a></li>
<li>Fix tag handling: preserve annotations and explicit fetch-tags by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2356">actions/checkout#2356</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/checkout/compare/v6.0.1...v6.0.2">https://github.com/actions/checkout/compare/v6.0.1...v6.0.2</a></p>
<h2>v6.0.1</h2>
<h2>What's Changed</h2>
<ul>
<li>Update all references from v5 and v4 to v6 by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2314">actions/checkout#2314</a></li>
<li>Add worktree support for persist-credentials includeIf by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2327">actions/checkout#2327</a></li>
<li>Clarify v6 README by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2328">actions/checkout#2328</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/checkout/compare/v6...v6.0.1">https://github.com/actions/checkout/compare/v6...v6.0.1</a></p>
<h2>v6.0.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Update README to include Node.js 24 support details and requirements
by <a href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a>
in <a
href="https://redirect.github.com/actions/checkout/pull/2248">actions/checkout#2248</a></li>
<li>Persist creds to a separate file by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2286">actions/checkout#2286</a></li>
<li>v6-beta by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2298">actions/checkout#2298</a></li>
<li>update readme/changelog for v6 by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2311">actions/checkout#2311</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/checkout/compare/v5.0.0...v6.0.0">https://github.com/actions/checkout/compare/v5.0.0...v6.0.0</a></p>
<h2>v6-beta</h2>
<h2>What's Changed</h2>
<p>Updated persist-credentials to store the credentials under
<code>$RUNNER_TEMP</code> instead of directly in the local git
config.</p>
<p>This requires a minimum Actions Runner version of <a
href="https://github.com/actions/runner/releases/tag/v2.329.0">v2.329.0</a>
to access the persisted credentials for <a
href="https://docs.github.com/en/actions/tutorials/use-containerized-services/create-a-docker-container-action">Docker
container action</a> scenarios.</p>
<h2>v5.0.1</h2>
<h2>What's Changed</h2>
<ul>
<li>Port v6 cleanup to v5 by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2301">actions/checkout#2301</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/checkout/compare/v5...v5.0.1">https://github.com/actions/checkout/compare/v5...v5.0.1</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/actions/checkout/blob/main/CHANGELOG.md">actions/checkout's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<h2>v6.0.2</h2>
<ul>
<li>Fix tag handling: preserve annotations and explicit fetch-tags by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2356">actions/checkout#2356</a></li>
</ul>
<h2>v6.0.1</h2>
<ul>
<li>Add worktree support for persist-credentials includeIf by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2327">actions/checkout#2327</a></li>
</ul>
<h2>v6.0.0</h2>
<ul>
<li>Persist creds to a separate file by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2286">actions/checkout#2286</a></li>
<li>Update README to include Node.js 24 support details and requirements
by <a href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a>
in <a
href="https://redirect.github.com/actions/checkout/pull/2248">actions/checkout#2248</a></li>
</ul>
<h2>v5.0.1</h2>
<ul>
<li>Port v6 cleanup to v5 by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2301">actions/checkout#2301</a></li>
</ul>
<h2>v5.0.0</h2>
<ul>
<li>Update actions checkout to use node 24 by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2226">actions/checkout#2226</a></li>
</ul>
<h2>v4.3.1</h2>
<ul>
<li>Port v6 cleanup to v4 by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2305">actions/checkout#2305</a></li>
</ul>
<h2>v4.3.0</h2>
<ul>
<li>docs: update README.md by <a
href="https://github.com/motss"><code>@​motss</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1971">actions/checkout#1971</a></li>
<li>Add internal repos for checking out multiple repositories by <a
href="https://github.com/mouismail"><code>@​mouismail</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1977">actions/checkout#1977</a></li>
<li>Documentation update - add recommended permissions to Readme by <a
href="https://github.com/benwells"><code>@​benwells</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2043">actions/checkout#2043</a></li>
<li>Adjust positioning of user email note and permissions heading by <a
href="https://github.com/joshmgross"><code>@​joshmgross</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2044">actions/checkout#2044</a></li>
<li>Update README.md by <a
href="https://github.com/nebuk89"><code>@​nebuk89</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2194">actions/checkout#2194</a></li>
<li>Update CODEOWNERS for actions by <a
href="https://github.com/TingluoHuang"><code>@​TingluoHuang</code></a>
in <a
href="https://redirect.github.com/actions/checkout/pull/2224">actions/checkout#2224</a></li>
<li>Update package dependencies by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2236">actions/checkout#2236</a></li>
</ul>
<h2>v4.2.2</h2>
<ul>
<li><code>url-helper.ts</code> now leverages well-known environment
variables by <a href="https://github.com/jww3"><code>@​jww3</code></a>
in <a
href="https://redirect.github.com/actions/checkout/pull/1941">actions/checkout#1941</a></li>
<li>Expand unit test coverage for <code>isGhes</code> by <a
href="https://github.com/jww3"><code>@​jww3</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1946">actions/checkout#1946</a></li>
</ul>
<h2>v4.2.1</h2>
<ul>
<li>Check out other refs/* by commit if provided, fall back to ref by <a
href="https://github.com/orhantoy"><code>@​orhantoy</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1924">actions/checkout#1924</a></li>
</ul>
<h2>v4.2.0</h2>
<ul>
<li>Add Ref and Commit outputs by <a
href="https://github.com/lucacome"><code>@​lucacome</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1180">actions/checkout#1180</a></li>
<li>Dependency updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>- <a
href="https://redirect.github.com/actions/checkout/pull/1777">actions/checkout#1777</a>,
<a
href="https://redirect.github.com/actions/checkout/pull/1872">actions/checkout#1872</a></li>
</ul>
<h2>v4.1.7</h2>
<ul>
<li>Bump the minor-npm-dependencies group across 1 directory with 4
updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1739">actions/checkout#1739</a></li>
<li>Bump actions/checkout from 3 to 4 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1697">actions/checkout#1697</a></li>
<li>Check out other refs/* by commit by <a
href="https://github.com/orhantoy"><code>@​orhantoy</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1774">actions/checkout#1774</a></li>
<li>Pin actions/checkout's own workflows to a known, good, stable
version. by <a href="https://github.com/jww3"><code>@​jww3</code></a> in
<a
href="https://redirect.github.com/actions/checkout/pull/1776">actions/checkout#1776</a></li>
</ul>
<h2>v4.1.6</h2>
<ul>
<li>Check platform to set archive extension appropriately by <a
href="https://github.com/cory-miller"><code>@​cory-miller</code></a> in
<a
href="https://redirect.github.com/actions/checkout/pull/1732">actions/checkout#1732</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/actions/checkout/commit/de0fac2e4500dabe0009e67214ff5f5447ce83dd"><code>de0fac2</code></a>
Fix tag handling: preserve annotations and explicit fetch-tags (<a
href="https://redirect.github.com/actions/checkout/issues/2356">#2356</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/064fe7f3312418007dea2b49a19844a9ee378f49"><code>064fe7f</code></a>
Add orchestration_id to git user-agent when ACTIONS_ORCHESTRATION_ID is
set (...</li>
<li><a
href="https://github.com/actions/checkout/commit/8e8c483db84b4bee98b60c0593521ed34d9990e8"><code>8e8c483</code></a>
Clarify v6 README (<a
href="https://redirect.github.com/actions/checkout/issues/2328">#2328</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/033fa0dc0b82693d8986f1016a0ec2c5e7d9cbb1"><code>033fa0d</code></a>
Add worktree support for persist-credentials includeIf (<a
href="https://redirect.github.com/actions/checkout/issues/2327">#2327</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/c2d88d3ecc89a9ef08eebf45d9637801dcee7eb5"><code>c2d88d3</code></a>
Update all references from v5 and v4 to v6 (<a
href="https://redirect.github.com/actions/checkout/issues/2314">#2314</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/1af3b93b6815bc44a9784bd300feb67ff0d1eeb3"><code>1af3b93</code></a>
update readme/changelog for v6 (<a
href="https://redirect.github.com/actions/checkout/issues/2311">#2311</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/71cf2267d89c5cb81562390fa70a37fa40b1305e"><code>71cf226</code></a>
v6-beta (<a
href="https://redirect.github.com/actions/checkout/issues/2298">#2298</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/069c6959146423d11cd0184e6accf28f9d45f06e"><code>069c695</code></a>
Persist creds to a separate file (<a
href="https://redirect.github.com/actions/checkout/issues/2286">#2286</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/ff7abcd0c3c05ccf6adc123a8cd1fd4fb30fb493"><code>ff7abcd</code></a>
Update README to include Node.js 24 support details and requirements (<a
href="https://redirect.github.com/actions/checkout/issues/2248">#2248</a>)</li>
<li>See full diff in <a
href="https://github.com/actions/checkout/compare/08c6903cd8c0fde910a37f88322edcfb5dd907a8...de0fac2e4500dabe0009e67214ff5f5447ce83dd">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/checkout&package-manager=github_actions&previous-version=5.0.0&new-version=6.0.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
@DilumAluthge DilumAluthge requested a review from a team as a code owner February 6, 2026 03:45
adienes and others added 3 commits February 6, 2026 11:55
after #34296 this method is
redundant, and it's also undocumented. according to
#43491 (comment),
`Callable` should not be used anymore, so it might make sense to remove
from `Base` where feasible.

(cherry picked from commit 5957579)
The use of `__attribute__` in headers causes compile errors on MSVC,
this PR removes these when compiling a program that includes Julia
headers with MSVC.

The `DECLSPEC_IMPORT` macro is also defined by default on MSVC, so it is
deactivated when in MSVC.

See the [log starting
here](https://github.com/JuliaInterop/libcxxwrap-julia/actions/runs/19379560768/job/55455166299#step:4:60)
for an example of the errors.

(cherry picked from commit 89243d1)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
@KristofferC KristofferC changed the title Backports for 1.13.0-beta3 Backports for 1.13.0-rc1 Feb 11, 2026
@DilumAluthge DilumAluthge removed the request for review from a team February 26, 2026 16:51
These lead to 10-20x speedups in Revise's fieldtype-caching
@KristofferC
Copy link
Member Author

@timholy, Revise tests seem to fail here:


revise_structs preference: Test Failed at /root/.julia/packages/Revise/oNu1t/test/runtests.jl:2484
--
Expression: read(`$julia --project=$test_proj_dir -e $check_bpart`, String) == "true"
Evaluated: "false" == "true"
Stacktrace:
[1] top-level scope
@ ~/.julia/packages/Revise/oNu1t/test/runtests.jl:101
[2] macro expansion
@ /cache/build/builder-amdci4-3/julialang/julia-release-1-dot-13/usr/share/julia/stdlib/v1.13/Test/src/Test.jl:1961 [inlined]
[3] macro expansion
@ ~/.julia/packages/Revise/oNu1t/test/runtests.jl:2473 [inlined]
[4] macro expansion
@ /cache/build/builder-amdci4-3/julialang/julia-release-1-dot-13/usr/share/julia/stdlib/v1.13/Test/src/Test.jl:1961 [inlined]
[5] macro expansion
@ ~/.julia/packages/Revise/oNu1t/test/runtests.jl:2484 [inlined]

any idea what is going on there?

@KristofferC
Copy link
Member Author

Getting rid of all the milestones seems to take longer than expected so this should maybe be another beta (which is what I originally intended...)

vchuravy and others added 6 commits March 3, 2026 16:50
…pilation (#60747)

Forward-port of #60741

---------

Co-authored-by: Gabriel Baraldi <baraldigabriel@gmail.com>
Co-authored-by: Jameson Nash <vtjnash@gmail.com>
(cherry picked from commit e386b48)
…=error` (#60892)

I tested this locally with:
- [x] `--depwarn=no`
- [x] `--depwarn=yes`
- [x] `--depwarn=error`

All codepaths pass for me locally.

## Motivation

To get the Artifacts tests passing in PkgEval.

(cherry picked from commit c825e10)
This allows `--trim` to safely* prune bindings without dropping the root
required for the generated machine code.

The (significantly more complex) alternative will be to examine the
bindings (back)edges during `--trim` serialization and reconstruct the
relevant binding dependency edges at that time but that does
not seem worth it compared to the 23.6 KB overhead in the sysimage
to track these roots explicitly.

Resolves #60846.

\* As a caveat, uninferred GlobalRefs can lead to missing bindings at
runtime, but this is out-of-scope for --trim.

(cherry picked from commit 484e7b1)
We only support a few built-in versions of this call (due to
#57830), but those should at
least be working now with this small tweak.

Includes a fix-up for built-in functions to be included in the method
table for `--trim`'d executables, so that we can dynamically dispatch to
them as the verifier expects.

(cherry picked from commit 46226e1)
The officially supported argument is --sdk, not -sdk, though it seems
the later also works in practice. But with BinaryBuilder, we use a
'fake' xcrun script which only supports the officially documented
argument name.

I've also submitted a [PR to let BinaryBuilderBase.jl accept
this](JuliaPackaging/BinaryBuilderBase.jl#464);
but I think it's wise for us to stick to the officially documented
options.

(cherry picked from commit 4820747)
IanButterworth and others added 16 commits March 3, 2026 17:06
…) (#61039)

Fixes #60938

When typing text and then using Ctrl+R to search history, the selected
result was appending to the typed text instead of replacing it.

For example:
- Type `prin`
- Press Ctrl+R, select `println("test")`
- Got: `prinprintln("test")` ❌
- Expected: `println("test")` ✅

**Changes:**
- LineEdit.jl line 2713: Clear `last_buffer` instead of copying current
input
- REPL.jl line 918: Same fix for consistency
- LineEdit.jl line 2732: Use `replace_line` instead of `edit_insert`

The issue was that the current buffer was being saved and then
concatenated with the search result instead of being replaced by it.

---
*No AI tools were used in developing this fix.*

---------

Co-authored-by: Andy Dienes <51664769+adienes@users.noreply.github.com>
(cherry picked from commit 719df26)
It's easy enough to work around this while upstream converts all the
blocking lookups to asynchronous ones. Fixes `ENABLE_GDBLISTENER=1` on
OSX.

Fixes #59103.

(cherry picked from commit 4acab83)
## Summary
- When a union type contains members with mixed GC-pointer and
non-pointer fields, codegen uses "split representation"
(`inline_roots`). `generic_bitcast` called
`ispointer()`/`data_pointer()` which assert `inline_roots.empty()`,
causing an assertion failure.
- Handle the `inline_roots` case by loading directly from `v.V` before
falling through to `ispointer()`. The dynamic runtime checks
(isprimitivetype + size match) already guarantee only primitive types
reach the load.
- Discovered via LinearSolve's KLU extension, which bitcasts a union
value containing structs with Vector fields.

## Test plan
- Added test in `test/intrinsics.jl` that exercises
`Core.Intrinsics.bitcast` on a union containing a struct with GC-pointer
fields (split representation).

This PR was written with the assistance of generative AI (Claude).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit 114a015)
The x86 psABI specifies that f16 goes on the stack (but is returned in
xmm0). Our emulation for compilers that do not support _Float16 did not
handle this properly. Fixes #61072.

I think this fixes it at least - I'm too tired to actually go check at
this point, so I'll just let CI try it ;). My remaining concern is that
I don't quite understand why seeing this behavior is AVX512 dependent.

(cherry picked from commit 2ba9b37)
`thrash_counter` is initialized to `0` but only ever incremented under
this branch, which was checking `!(thrash_counter < 4)`, making the
entire mechanism effectively dead code

here was something that can demonstrate the difference but I don't know
how to add a unit test

```
# gc_thrash_mwe.jl
mutable struct Node; l::Any; r::Any; d::Vector{UInt8}; end
tree(n) = n <= 0 ? Node(nothing,nothing,rand(UInt8,64)) : Node(tree(n-1),tree(n-1),rand(UInt8,64))

const SHED = Ref(false)
const CB = @cfunction(() -> (SHED[] = true; nothing), Cvoid, ())
ccall(:jl_gc_set_cb_notify_gc_pressure, Cvoid, (Ptr{Cvoid}, Cint), CB, 1)

trees = Any[tree(18) for _ in 1:8]                       # ~640 MB scattered pointers
cache = Ref{Any}([rand(UInt8, 200) for _ in 1:1_000_000]) # ~200 MB droppable cache
GC.gc()

@time for i in 1:200
    if SHED[]; cache[] = nothing; SHED[] = false; end
    [rand(UInt8, 48) for _ in 1:50_000]
end
println(cache[] === nothing ? "PASS: cache shed under pressure" : "FAIL: pressure callback never fired")
```

```
➜  (adienes) ./julia --heap-size-hint=1500M gc_thrash_mwe.jl
  0.449891 seconds (20.03 M allocations: 1.121 GiB, 64.03% gc time, 4.14% compilation time)
PASS: cache shed under pressure

➜  (adienes) julia +nightly --heap-size-hint=1500M gc_thrash_mwe.jl
  0.619595 seconds (20.03 M allocations: 1.121 GiB, 75.61% gc time, 2.99% compilation time)
FAIL: pressure callback never fired
```

Discovered via automated Claude audit for typos and other minor /
obvious bugs.

(cherry picked from commit e98d248)
Found by JET.

(cherry picked from commit 2786fb9)
Replace manual insertion point save/restore operations with RAII-based
InsertPointGuard. This ensures insertion points properly restore debug
information too. With credit to abraemer for diagnosing and suggesting
the fix.

Fix: #61095

Co-authored-by: Adrian Braemer <adrian.braemer@tngtech.com>
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
(cherry picked from commit 1003b8d)
…61120)

discovered via automated Claude audit for typos and other minor /
obvious bugs. I manually reviewed each result

I was less sure about this one but robot seems confident so I'm pasting
the message it gave as-is

Add a `jl_gc_wb` in `jl_update_loaded_bpart` after storing
`resolution.binding_or_const` into an existing (potentially
old-generation) binding partition's restriction field, matching every
other non-fresh store to this field.

Add a `jl_gc_wb_fresh` in `jl_replace_binding_locked2`'s
`IMPLICIT_RECOMPUTE` path, where `jl_resolve_implicit_import` can
trigger GC between the allocation of `new_bpart` and the store,
potentially promoting the fresh partition to an older generation. The
else branch already had the corresponding `jl_gc_wb_fresh`.

Neither bug is currently triggerable because the stored values are
always independently rooted through the module binding table, but the
barriers are needed to maintain GC invariants and guard against future
code changes.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit f6fd24c)
`ismalformed()` is not exported from `Base`, so we need to qualify it
when calling.

Detected by JET.

(cherry picked from commit 1cd77b5)
Keeping this a ccall before adding a julia level API so we can back out
if wanted later

(cherry picked from commit 370a2a0)
In this function, `key` is allowed to be either `String` or `Char`, but
there is no method matching `escape_string(::Char)`. So convert `key` to
a string before calling `escape_string`.

MWE:

```
import REPL

keymap = Dict{Char, Any}()
REPL.LineEdit.add_nested_key!(keymap, 'a', "foo")
REPL.LineEdit.add_nested_key!(keymap, 'a', "bar")
```

Which throws this error:

```
julia> REPL.LineEdit.add_nested_key!(keymap, 'a', "bar")
ERROR: MethodError: no method matching escape_string(::Char)
The function `escape_string` exists, but no method is defined for this combination of argument types.

Closest candidates are:
  escape_string(::IO, ::Union{Base.AnnotatedString, SubString{<:Base.AnnotatedString}}, ::Any; keep, ascii, fullhex)
   @ Base strings/annotated_io.jl:266
  escape_string(::IO, ::Union{Base.AnnotatedString, SubString{<:Base.AnnotatedString}}; ...)
   @ Base strings/annotated_io.jl:266
  escape_string(::AbstractString, ::Any; keep, ascii, fullhex)
   @ Base strings/io.jl:467
  ...

Stacktrace:
 [1] add_nested_key!(keymap::Dict{Char, Any}, key::Union{Char, String}, value::Any; override::Bool)
   @ REPL.LineEdit ~/juliaup.depot/juliaup/julia-1.12.5+0.aarch64.apple.darwin14/Julia-1.12.app/Contents/Resources/julia/share/julia/stdlib/v1.12/REPL/src/LineEdit.jl:1785
 [2] add_nested_key!(keymap::Dict{Char, Any}, key::Union{Char, String}, value::Any)
   @ REPL.LineEdit ~/juliaup.depot/juliaup/julia-1.12.5+0.aarch64.apple.darwin14/Julia-1.12.app/Contents/Resources/julia/share/julia/stdlib/v1.12/REPL/src/LineEdit.jl:1779
 [3] top-level scope
   @ REPL[3]:1
```

But we want it to throw this instead:

```
ERROR: Conflicting definitions for keyseq a within one keymap
```

---

Detected by JET.

(cherry picked from commit ffb7fe3)
Follow-up to #61140

(cherry picked from commit 49f889c)
When pressing Ctrl-S → Clipboard in REPL history search on a system
without clipboard tools (xsel, xclip, wl-clipboard), a
TaskFailedException stack trace was thrown. This adds:

- `OncePerId{T}`: a new callable struct that caches `initializer(key)`
per mutable key object via WeakKeyDict, for general-purpose per-object
caching
- `has_system_clipboard()` in InteractiveUtils to detect native
clipboard availability per platform
- OSC 52 terminal clipboard support as a fallback, with proper DA1
(Primary Device Attributes) query to detect terminal capability
- Graceful degradation: when neither clipboard mechanism is available,
the Clipboard option is skipped and a friendly message is shown instead
of a stack trace

Fixes #60145

Co-authored-by: Keno Fischer <Keno@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit ab7ba34)
@KristofferC KristofferC requested a review from giordano as a code owner March 3, 2026 16:09
KristofferC and others added 5 commits March 3, 2026 17:26
This is prepratory work for #61151 and #59958. The key problem is that
when we issue informational queries to the terminal emulator, we don't
really have any way of knowing when they'll come back. There could be
arbitrary amount of actual user input before or after. Thus, any code
that would attempt to read from the terminal inline to read OSC
responses faces the problem of accidentally getting user input and
likewise, the REPL may see delayed OSC responses that are not inteded
for it. To avoid all that complication, just put the REPL in charge of
OSC response processing. The idea here is that at some point something
issues the OSC query (possibly at startup) and whenever the response
comes in, the REPL will just process it as if it was user input. This PR
intentionally does not define a query interface, which is delagated to
the follow on PRs that actually make use of this information.

Example:
```
julia> write(stdout, "\e[c")
3

julia> 52 in Base.active_repl.mistate.terminal_properties.da1
true
```

Written by Claude.

(cherry picked from commit 331421e)
…emoryrefnew` (#61137)

The Serialization stdlib has the following function:

https://github.com/JuliaLang/julia/blob/e46125f569f43e28261d1b55a0d85aacceee499a/stdlib/Serialization/src/Serialization.jl#L1445-L1450

As far as I can tell, there is no method matching
`Core.memoryref(x::MemoryRef, i::Int, true::Bool)` (called on line
1448).[^1]

[^1]: This issue was detected by JET.

I think this should be a call to `Core.memoryrefnew(x::MemoryRef,
i::Int, true::Bool)` instead, which is what this PR does.

(cherry picked from commit acd9708)
…61220)

Methods created with custom source data (e.g. via CompilerCaching's
add_method which stores domain-specific IR) are neither CodeInfo nor
compressed String. Return 0 instead of asserting, since such methods
cannot have image globalrefs.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Cody Tapscott <84105208+topolarity@users.noreply.github.com>
(cherry picked from commit edd8e94)
@DilumAluthge DilumAluthge removed the request for review from giordano March 5, 2026 17:23
maleadt and others added 2 commits March 6, 2026 12:34
The sret parameter's alignment attribute was set to LLVM's preferred type
alignment (getPrefTypeAlign), which can exceed julia_alignment. This caused
misaligned memory accesses on strict-alignment targets like NVPTX, since the
caller's alloca uses julia_alignment. Fix by setting the sret alignment to
julia_alignment and not overriding it in the function definition, so that
caller and callee agree on the same alignment.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
When a custom method table is defined in one package and imported by
another, jl_foreach_reachable_mtable visits the same table twice (once
per module binding). This causes extext methods to be collected and
serialized twice, and on loading, jl_method_table_activate asserts
because dispatch_status was already set by the first activation.

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

release Release management and versioning.

Projects

None yet

Development

Successfully merging this pull request may close these issues.