6675 Commits

Author SHA1 Message Date
Stephan Renatus d517d1b914 ast+topdown: let external sources distinguish absent from unknown
External rule sources received a resolver (via ExternalIndex.Tree) that
reported both an input reference absent from a concrete input and one that
is symbolic under partial evaluation as the same UnknownValueErr. A source
therefore could not tell 'concretely missing' apart from 'deliberately
unknown' on a per-reference basis (e.g. input.foo unknown while input.bar
is known), which matters when a source translates input into an external
lookup during partial evaluation.

Pass the save-set-aware evaluator to ExternalIndex.Tree instead of the raw
input document, mirroring the resolver the built-in rule indexer already
uses. Sources opt into the new behavior via
ExternalSourceOptions.DistinguishAbsentFromUnknown: when set, an unknown
reference returns UnknownValueErr while an absent one resolves to
(nil, nil). The default is unchanged, preserving the previous collapse for
existing sources.

The ExternalRuleSource/ExternalRuleIndex interfaces are unchanged.

Signed-off-by: Stephan Renatus <stephan.renatus@gmail.com>
2026-07-09 19:21:38 +02:00
Sebastian Spaink 78f31260f6 sdk: fix deadlock between OPA.Plugin and manager onCommit (#8879)
Fixes: #8873

An intermittent deadlock could occur between sdk.OPA.mtx and
plugins.Manager.mtx when they were acquired in opposite orders by two
concurrent goroutines:

- OPA.Plugin held opa.mtx and then called into the manager, which
acquires manager.mtx.
- Manager.onCommit held manager.mtx and then invoked the registered
compiler trigger, which acquires opa.mtx.

Break the cycle from both sides. OPA.Plugin now snapshots the manager
under opa.mtx and releases the lock before calling into it, matching the
pattern already used by Stop and executeTransaction. Manager.onCommit
now snapshots the registered triggers under manager.mtx and invokes them
after releasing the lock, so no registered callback runs while the
manager lock is held.

Signed-off-by: Sebastian Spaink <sebastianspaink@gmail.com>
2026-07-09 11:57:09 -05:00
Sebastian Spaink afb57c7e13 topdown: don't leak internal vars in partial eval results (#8872)
Fixes: #6378

Calling a function with an unknown argument the function ignores
produced a partial-eval result referencing an internal variable, e.g.

    __localcp0__ = input.project

instead of the equivalent bare ref

    input.project

To record that input.project must be defined, copy propagation keeps the
ref but binds it to a generated variable that's used nowhere else —
cluttering the result for no benefit. Track these generated variables as
placeholders and emit the bare ref instead of the equality.

---------

Signed-off-by: Sebastian Spaink <sebastianspaink@gmail.com>
2026-07-09 16:33:04 +00:00
RinZ27 d051c7e41a server: set ReadHeaderTimeout to 32s on all HTTP servers
Signed-off-by: RinZ27 <222222878+RinZ27@users.noreply.github.com>
2026-07-09 15:09:37 +02:00
Charlie Egan e8c3e104fa docs: Add kubecon NA page (#8876)
This page will be linked to from the kiosk at KubeCon.


https://deploy-preview-8876--openpolicyagent.netlify.app/events/2026-kubecon-na

Signed-off-by: Charlie Egan <charlie_egan@apple.com>
2026-07-09 13:56:05 +01:00
Stephan Renatus 19855342fe build(go): bump to 1.26.5
https://groups.google.com/g/golang-announce/c/OrmQE_Yp5Sc

govulncheck flagged us for:

* crypto/tls: Encrypted Client Hello privacy leak

The Encrypted Client Hello implementation would leak the pre-shared key
identities during the handshake, allowing a passive network observer who can
collect handshakes to de-anonymize the hostname of the server, even when ECH was
being used.

Thanks to Coia Prant (github.com/rbqvq) for reporting this issue.

This is CVE-2026-42505 and Go issue https://go.dev/issue/79282.

Signed-off-by: Stephan Renatus <stephan.renatus@gmail.com>
2026-07-09 11:43:57 +02:00
Synvoya 65c39790fc topdown: fix format_int precision loss for integers larger than 64 bits (#8857)
## Description

`format_int(x, base)` corrupts integers that need more than 64 bits of
precision, in every base. It routes the value through
`builtins.NumberToFloat` (a `big.Float` with a 64-bit mantissa) then
`f.Int()`, so any integer above ~2^64 is rounded before formatting:

```rego
format_int(18446744073709551617, 16)   # "10000000000000000"    (should be "10000000000000001")
format_int(18446744073709551617, 10)   # "18446744073709551616" (should be "...617")
```

`sprintf("%x", [18446744073709551617])` returns the correct
`10000000000000001`, so two builtins disagree on the same exact-integer
value.

## Fix

Format integer inputs through an exact `big.Int` (mirroring
`builtinSprintf`). Fractional/exponent inputs still fall through to the
existing float-truncation path, so `format_int(15.9, 16) == "f"` and
`format_int(-15.9, 16) == "-f"` are unchanged.

## Test

Added a golden case covering a >2^64 integer in bases 2/8/10/16,
negatives, and the fractional-truncation cases. Full `go test
./v1/topdown/` passes (900+ existing string golden cases, no
regressions).

---------

Signed-off-by: Synvoya <16019863+Synvoya@users.noreply.github.com>
Co-authored-by: Synvoya <16019863+Synvoya@users.noreply.github.com>
2026-07-08 12:13:17 -05:00
Charlie Egan 39fcb030e5 docs: Add Ghostunnel and NATS Plugin to Ecosystem (#8871)
Signed-off-by: Charlie Egan <charlie_egan@apple.com>
2026-07-08 18:06:41 +01:00
SEONGHYUN HONG deb30b103d docs: fix decision_logs buffer_size_limit_events default in prose (#8866)
The `decision_logs.reporting.buffer_size_limit_events` row documents its
default as `10000`, but the prose in the same cell says "By default, 100
events are held". The real default is `10000`
(`defaultBufferSizeLimitEvents = int64(10000)` in
`v1/plugins/logs/plugin.go`), so the row was internally contradictory.
This corrects the prose to match both the code and the row's own default
column.

Docs only.

Signed-off-by: s3onghyun <s3onghyun@users.noreply.github.com>
2026-07-08 16:25:07 +00:00
Charlie Egan 7bdfe03927 runtime: Remove goautomaxprocs and automemlimit (#8869)
The memory pressure in low resource containers this PR aimed to fix was
actually caused by #8817, which was fixed in #8829. The
automaxprocs/automemlimit dependencies are no longer needed as was
intended in #8696.

This reverts commit 88c01e659c and updates
docs to match the current behaviour.

---------

Signed-off-by: Charlie Egan <charlie_egan@apple.com>
2026-07-08 14:13:57 +00:00
Charlie Egan b0d896adec docs: Update cheatsheet files
follows https://github.com/open-policy-agent/rego-cheat-sheet/pull/13

Signed-off-by: Charlie Egan <charlie_egan@apple.com>
2026-07-08 14:32:28 +02:00
Charlie Egan 618978384d docs: remove import rego.v1
This has not been needed in new releases for over a year. Leaving these
in has a cost as it causes AI to generate rego with import rego.v1 when
it's not needed.

Signed-off-by: Charlie Egan <charlie_egan@apple.com>
2026-07-08 13:23:52 +02:00
rchildress87 81589c1244 vendor a method-less text/template to restore whole-binary linker DCE (#8844)
### Why the changes in this PR are needed?

`text/template`'s field evaluator (`text/template.(*state).evalField`,
`exec.go`) calls`reflect.Value.MethodByName` with a non-constant name.
The Go linker treats a reachable non-constant`MethodByName` as a signal
to disable **method-level dead-code elimination for the whole binary**
(see `cmd/link/internal/ld/deadcode.go` and golang/go#72895). Two OPA
code paths pull stdlib `text/template` into the reachable graph of
ordinary embedders:

1. **Compiler frontend** — `ast.Compiler.Compile → … →
gojsonschema.formatErrorDescription → text/template`. Reached
unconditionally by anything that compiles Rego.
2. **`strings.render_template` builtin** (`v1/topdown/template.go`) —
registered in the topdown builtin table, reachable in anything that
links Rego evaluation.

So an embedder of OPA's compiler/eval retains its entire reachable
method surface — a large binary-size regression, hundreds of MB in the
reporter's case (#7903). Both edges must go before the linker re-enables
method-level DCE for that embedder.

### What are the changes in this PR?

Vendor a self-contained, method-less copy of `text/template` under
`internal/methodlesstemplate` and point both call sites at it. **No
external dependency** (`go.mod`/`go.sum` unchanged).

- Copied verbatim from **Go 1.25.8**: `doc.go`, `exec.go`, `funcs.go`,
`option.go`, `template.go`, plus `internal/fmtsort/sort.go`. Go's BSD
`LICENSE` is preserved in the vendored directory and every file keeps
its `The Go Authors` copyright header.
- Stdlib `text/template/parse` is reused unchanged (the parser has no
`MethodByName`/`evalField` edge, so it does not defeat DCE).
- `helper.go` (`ParseFiles`/`ParseGlob`/`ParseFS`) is dropped — the OPA
call sites only need `New`/`Parse`/`Execute`, and nothing in the kept
files references it.
- **The only edit to the copied code** is removing the `MethodByName`
branch in `exec.go`'s `evalField` (method resolution on the data value).
Everything else is byte-identical, so re-syncing to a newer Go release
is a diff-and-reapply of that single branch removal.
- `internal/gojsonschema` (commit 1) and `v1/topdown` (commit 2) import
the vendored package. The gojsonschema engine is retained in full, so
`ErrorTemplateFuncs` (its `FuncMap` extension point) keeps working —
**no public symbol is removed**.

Rego values and gojsonschema `ErrorDetails` decode to
`map[string]any`/`[]any`/scalars, which have no methods, so removing
method resolution is a provable no-op for these callers.

### Notes to assist PR review:

- **Diff review tip**:
`doc.go`/`funcs.go`/`option.go`/`template.go`/`internal/fmtsort/sort.go`
are **byte-identical** to the Go 1.25.8 originals. Only `exec.go`
differs, in exactly two hunks: the `internal/fmtsort` → vendored import
path, and the removed `MethodByName` block (replaced by a comment
explaining the DCE rationale).
- **Fidelity — render_template**: the `rendertemplate` conformance cases
(incl. `complex` range/if/vars, `simpleint` `%v`, `missingkey` →
`<undefined>`) pass **unchanged**.
- **Fidelity — gojsonschema**: same engine (method-less),
validation-error output unchanged; existing `internal/gojsonschema` and
`v1/ast` tests pass.
- **Tests**: `TestNoStdlibTextTemplateImport` in both
`internal/gojsonschema` and `v1/topdown` scans every non-test file and
asserts none import stdlib `text/template`/`html/template`. `go build
./...`, `go vet ./...` OK; `go mod tidy` is a no-op.
- **Lint**: the vendored directory is added to the golangci-lint path
exclusions, mirroring the existing `internal/gojsonschema` precedent —
the copy is verbatim stdlib, and linting it against OPA's house rules
would force divergence from upstream Go (it trips ~31 stdlib-idiom
issues) and break the diff-and-reapply re-sync.
- **Attribution**: the vendored code is Go stdlib only (BSD, `The Go
Authors`); it contains no third-party/DataDog code.

### Further comments:

- **Scope**: this restores method-level DCE for embedders of OPA's
**compiler/eval**. The standalone `opa` binary additionally links
`v1/server`, which imports `html/template` (a wrapper over
`text/template`) — a separate, independent edge left as a follow-up.
Embedders that don't link the server (the common case) get the full win
from this PR.
- Root cause: golang/go#72895. Closes #7903 for compiler/eval embedders.

---------

Signed-off-by: Dick Childress <dick.childress@icearp.net>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-07 21:08:19 +02:00
Sebastian Spaink 89afc26b87 github: remove cpp from CodeQL language matrix
The CodeQL cpp job fails with "no source code seen during build" on
every run since the wazero migration (#8815).

CodeQL builds a C/C++ database only from the compiler invocations it
traces during the build. `make build` never compiled the C in wasm/src
(that is a Docker-based wasm cross-build, invisible to `make build`);
the only C it ever compiled was the CGo shim of the wasmtime-go wasm
runtime, built with CGO_ENABLED=1. #8815 replaced wasmtime-go with
wazero (pure Go) and switched the build to CGO_ENABLED=0, so no C is
compiled during `make build` anymore and CodeQL sees nothing.

The remaining C in wasm/src is only built via a Docker cross-build for
the wasm32-unknown-unknown-wasm target, which CodeQL's build tracer
cannot follow, so re-adding a build step for it is not practical.

Drop cpp and keep the go, javascript, and python analyzers.

Signed-off-by: Sebastian Spaink <sebastianspaink@gmail.com>
2026-07-07 20:58:58 +02:00
Michael Chittenden a57aa7ee61 fix TermValueEqual performance regression (#8863)
### Why the changes in this PR are needed?

When I was updating my app from v1.1.0 to v1.2.0 I noticed an almost 50%
performance regression in the hot path. The line here is the deploy, and
of course you can see latency increase right afterwards:

<img width="2724" height="1050" alt="Screenshot 2026-07-06 at 8 52
11 PM"
src="https://github.com/user-attachments/assets/66a8ecfc-ff67-4000-b926-228a0845c3b4"
/>

I did a git bisect and was able to identify that [this
commit](https://github.com/open-policy-agent/opa/commit/3d7fc9f3ac98f4f4d756f5e36eced7dec82e116c)
was the culprit. The commit immediately before it kept essentially the
same baseline as before, and this one saw the increase in latency. This
seemed unusual given the change essentially didn't seem to be that
drastic of a change.

So I did a CPU profile on my running app and found that with this
change, there was increase in CPU cycles around `v1/ast.Compare` and
`v1/ast.sortOrder` and `v1/ast.(*object).Compare`. Doing some digging, I
see that the old implementation had used `(*Term).Equal()` (among
others), which has a pointer equality check:
https://github.com/open-policy-agent/opa/blob/main/v1/ast/term.go#L383

And the new (at the time) `TermValueEqual` does not:
https://github.com/open-policy-agent/opa/commit/3d7fc9f3ac98f4f4d756f5e36eced7dec82e116c#diff-bd1f965e4bfe6f4374ccff2a119e129c0b11538253a2a99dc8694d79a7daf51cR405

So before, the two term pointers being exactly the same could short
circuit, and after that commit they had to traverse both objects to
compare, even if both pointers are equal. With this change you can see
that latency returned to baseline from before:

<img width="2732" height="1056" alt="Screenshot 2026-07-06 at 8 52 31 PM
(1)"
src="https://github.com/user-attachments/assets/c207454f-e9a5-423f-a942-a3fc293174f8"
/>

### What are the changes in this PR?

Basic pointer equality check to reduce CPU cycles.

---------

Signed-off-by: Mike Chittenden <mchitten@gmail.com>
2026-07-07 13:52:48 +00:00
Sebastian Spaink 980998a53c topdown: add regression test for partial eval local names
Issue #5226 reported that partial evaluation produced wrong/orphaned
local variable names when a rule-head variable is bound to an unknown
and also referenced inside a comprehension: the comprehension ended up
referencing a disconnected local that never resolved back to the head
variable.

This was fixed as a side effect of #5913 ("General refs in rule heads",
released in v0.56.0), but no test explicitly guarded this scenario. Add
a focused TestTopDownPartialEval case so the behavior can't silently
regress.

Fixes #5226

Signed-off-by: Sebastian Spaink <sebastianspaink@gmail.com>
2026-07-07 08:30:20 +02:00
Sebastian Spaink d0bd3b7a19 topdown: fix partial-eval test rejected by new conflict check
The 'partial set, general ref head' shallow-inlining test paired a set
rule (p.q contains x) with an object-of-sets rule (p.q[r].s contains t)
sharing the name p.q. That is exactly the set-vs-object conflict this
change now rejects at compile time, and it panics at eval time on main,
so the fixture is itself an invalid policy.

Replace it with a single general-ref partial-set rule that keeps the
shallow-inlining full-extent path under test, and update the expected
support module.

Signed-off-by: Sebastian Spaink <sebastianspaink@gmail.com>
2026-07-07 07:57:05 +02:00
Sebastian Spaink f11a2c2279 ast: reject partial set and object rules sharing a name
`p contains x` (set) and `p[k] contains v` (object of sets) describe
incompatible documents, but the compiler's conflict check let two
multi-value rules of these differing shapes through. Evaluation then
folded the set rule into the object accumulator and sliced its shorter
ref out of range, panicking. Reachable from check, eval, and the REPL
since general refs landed in v0.56.0.

Fixes: #8860
Signed-off-by: Sebastian Spaink <sebastianspaink@gmail.com>
2026-07-07 07:57:05 +02:00
Manuela Züger e761d1711e docs/website: Improve partial evaluation / data filtering documentation (#8625)
### Why the changes in this PR are needed?

The issue #8316 outlines that the Partial Evaluation / Data Filtering
documentation could benefit from clearer examples and explanations to
better enable users to get started adopting the feature.

### What are the changes in this PR?

* added a simple data filtering example to the filtering overview page
to better showcase its purpose
* explained the metadata annotation for unknowns and how it links to the
database table and field names
* added a tutorial page to provide a quick walkthrough

---------

Signed-off-by: Manuela Züger <manuela.zueger@ipt.ch>
Signed-off-by: Manuela Züger <79690363+mmzzuu@users.noreply.github.com>
Co-authored-by: Charlie Egan <git@charlieegan3.com>
2026-07-06 15:31:42 -05:00
Shuvam Pal bdd4646352 ast: improve rule conflict error (#8802)
fixes #6391 
<!--

Thanks for submitting a PR to OPA!

Before pressing 'Create pull request' please read the checklist below.

* All code changes should be accompanied with tests. If you are not
modifying any tests, just provide a short explanation of why updates
to tests are not necessary. In addition to helping catch bugs, tests
are extremely helpful in providing _context_ that explains how your
changes can be used.

* All changes to public APIs **must** be accompanied with
docs. Examples of public APIs include built-in functions,
config fields, and of course, exported Go types/functions/constants/etc.

* Commit messages should explain _why_ you made the changes, not what
you changed. Use active voice. Keep the subject line under 50
characters or so.

* All commits must be signed off by the author. If you are not
familiar with signing off, see our contributor guide below.

* You have read the project's
[guidelines on AI tool
use](https://www.openpolicyagent.org/docs/contrib-code#ai-guidelines).

For more information on contributing to OPA see our
[Contributing Guide](https://www.openpolicyagent.org/docs/contributing/)
for high-level contributing guidelines and development setup.
(See the [Developer Certificate of
Origin](https://www.openpolicyagent.org/docs/contrib-code/#developer-certificate-of-origin)
section for specifics on signing off a commit.)

-->

### Why the changes in this PR are needed?

1. the rewritten var `__local0__` is output instead of s for rule
p.r[s].
2. no location is given for the conflicting refs data.play.p.q and
data.play.p.r[`__local0__`].

### What are the changes in this PR?

Tracking rule location as well along with ref now. Also added formatting
to keep the different conflicts multiline.

Signed-off-by: unichronic <ishuvam.pal@gmail.com>
2026-07-06 15:04:38 -05:00
dependabot[bot] 16d8d5e151 build(deps): bump the gha-dependencies group with 6 updates (#8838)
Bumps the gha-dependencies group with 6 updates:

| Package | From | To |
| --- | --- | --- |
| [actions/checkout](https://github.com/actions/checkout) | `6.0.3` |
`7.0.0` |
| [actions/setup-go](https://github.com/actions/setup-go) | `6.4.0` |
`6.5.0` |
| [actions/setup-java](https://github.com/actions/setup-java) | `5.2.0`
| `5.4.0` |
| [jdx/mise-action](https://github.com/jdx/mise-action) | `4.1.0` |
`4.2.0` |
| [actions/cache](https://github.com/actions/cache) | `5.0.5` | `6.1.0`
|
|
[zizmorcore/zizmor-action](https://github.com/zizmorcore/zizmor-action)
| `0.5.6` | `0.5.7` |

Updates `actions/checkout` from 6.0.3 to 7.0.0
<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>v7.0.0</h2>
<h2>What's Changed</h2>
<ul>
<li>block checking out fork pr for pull_request_target and workflow_run
by <a href="https://github.com/aiqiaoy"><code>@​aiqiaoy</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2454">actions/checkout#2454</a></li>
<li>Bump actions/publish-immutable-action from 0.0.3 to 0.0.4 in the
minor-actions-dependencies group across 1 directory by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/actions/checkout/pull/2458">actions/checkout#2458</a></li>
<li>Bump flatted from 3.3.1 to 3.4.2 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/actions/checkout/pull/2460">actions/checkout#2460</a></li>
<li>Bump js-yaml from 4.1.0 to 4.2.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/actions/checkout/pull/2461">actions/checkout#2461</a></li>
<li>Bump <code>@​actions/core</code> and
<code>@​actions/tool-cache</code> and Remove uuid by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/actions/checkout/pull/2459">actions/checkout#2459</a></li>
<li>upgrade module to esm and update dependencies by <a
href="https://github.com/aiqiaoy"><code>@​aiqiaoy</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2463">actions/checkout#2463</a></li>
<li>Bump the minor-npm-dependencies group across 1 directory with 3
updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/actions/checkout/pull/2462">actions/checkout#2462</a></li>
<li>getting ready for checkout v7 release by <a
href="https://github.com/aiqiaoy"><code>@​aiqiaoy</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2464">actions/checkout#2464</a></li>
<li>update error wording by <a
href="https://github.com/aiqiaoy"><code>@​aiqiaoy</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2467">actions/checkout#2467</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/aiqiaoy"><code>@​aiqiaoy</code></a> made
their first contribution in <a
href="https://redirect.github.com/actions/checkout/pull/2454">actions/checkout#2454</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/checkout/compare/v6.0.3...v7.0.0">https://github.com/actions/checkout/compare/v6.0.3...v7.0.0</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>v7.0.0</h2>
<ul>
<li>Block checking out fork PR for pull_request_target and workflow_run
by <a href="https://github.com/aiqiaoy"><code>@​aiqiaoy</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2454">actions/checkout#2454</a></li>
<li>Bump actions/publish-immutable-action from 0.0.3 to 0.0.4 in the
minor-actions-dependencies group across 1 directory by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/actions/checkout/pull/2458">actions/checkout#2458</a></li>
<li>Bump flatted from 3.3.1 to 3.4.2 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/actions/checkout/pull/2460">actions/checkout#2460</a></li>
<li>Bump js-yaml from 4.1.0 to 4.2.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/actions/checkout/pull/2461">actions/checkout#2461</a></li>
<li>Bump <code>@​actions/core</code> and
<code>@​actions/tool-cache</code> and Remove uuid by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/actions/checkout/pull/2459">actions/checkout#2459</a></li>
<li>upgrade module to esm and update dependencies by <a
href="https://github.com/aiqiaoy"><code>@​aiqiaoy</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2463">actions/checkout#2463</a></li>
<li>Bump the minor-npm-dependencies group across 1 directory with 3
updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/actions/checkout/pull/2462">actions/checkout#2462</a></li>
</ul>
<h2>v6.0.3</h2>
<ul>
<li>Fix checkout init for SHA-256 repositories by <a
href="https://github.com/yaananth"><code>@​yaananth</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2439">actions/checkout#2439</a></li>
<li>fix: expand merge commit SHA regex and add SHA-256 test cases by <a
href="https://github.com/yaananth"><code>@​yaananth</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2414">actions/checkout#2414</a></li>
</ul>
<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>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/actions/checkout/commit/9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0"><code>9c091bb</code></a>
update error wording (<a
href="https://redirect.github.com/actions/checkout/issues/2467">#2467</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/1044a6dea927916f2c38ba5aeffbc0a847b1221a"><code>1044a6d</code></a>
getting ready for checkout v7 release (<a
href="https://redirect.github.com/actions/checkout/issues/2464">#2464</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/f0282184c7ce73ab54c7e4ab5a617122602e575f"><code>f028218</code></a>
Bump the minor-npm-dependencies group across 1 directory with 3 updates
(<a
href="https://redirect.github.com/actions/checkout/issues/2462">#2462</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/d914b262ffc244530a203ab40decab34c3abf34d"><code>d914b26</code></a>
upgrade module to esm and update dependencies (<a
href="https://redirect.github.com/actions/checkout/issues/2463">#2463</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/537c7ef99cef6e5ddb5e7ff5d16d14510503801d"><code>537c7ef</code></a>
Bump <code>@​actions/core</code> and <code>@​actions/tool-cache</code>
and Remove uuid (<a
href="https://redirect.github.com/actions/checkout/issues/2459">#2459</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/130a169078a413d3a5246a393625e8e742f387f6"><code>130a169</code></a>
Bump js-yaml from 4.1.0 to 4.2.0 (<a
href="https://redirect.github.com/actions/checkout/issues/2461">#2461</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/7d09575332117a40b46e5e020664df234cd416f3"><code>7d09575</code></a>
Bump flatted from 3.3.1 to 3.4.2 (<a
href="https://redirect.github.com/actions/checkout/issues/2460">#2460</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/0f9f3aa320cb53abeb534aeb54048075d9697a0e"><code>0f9f3aa</code></a>
Bump actions/publish-immutable-action (<a
href="https://redirect.github.com/actions/checkout/issues/2458">#2458</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/f9e715a95fcd1f9253f77dd28f11e88d2d6460c7"><code>f9e715a</code></a>
block checking out fork pr for pull_request_target and workflow_run (<a
href="https://redirect.github.com/actions/checkout/issues/2454">#2454</a>)</li>
<li>See full diff in <a
href="https://github.com/actions/checkout/compare/df4cb1c069e1874edd31b4311f1884172cec0e10...9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0">compare
view</a></li>
</ul>
</details>
<br />

Updates `actions/setup-go` from 6.4.0 to 6.5.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/setup-go/releases">actions/setup-go's
releases</a>.</em></p>
<blockquote>
<h2>v6.5.0</h2>
<h2>What's Changed</h2>
<h3>Dependency update</h3>
<ul>
<li>Upgrade actions dependencies by <a
href="https://github.com/priyagupta108"><code>@​priyagupta108</code></a>
with <a href="https://github.com/Copilot"><code>@​Copilot</code></a> in
<a
href="https://redirect.github.com/actions/setup-go/pull/744">actions/setup-go#744</a></li>
<li>Upgrade <code>@​types/node</code> and typescript-eslint dependencies
to resolve npm audit findings by <a
href="https://github.com/HarithaVattikuti"><code>@​HarithaVattikuti</code></a>
in <a
href="https://redirect.github.com/actions/setup-go/pull/755">actions/setup-go#755</a></li>
<li>Upgrade <code>@​actions/cache</code> to 5.1.0, log cache write
denied by <a
href="https://github.com/jasongin"><code>@​jasongin</code></a> in <a
href="https://redirect.github.com/actions/setup-go/pull/758">actions/setup-go#758</a></li>
<li>Upgrade version to 6.5.0 in package.json and package-lock.json by <a
href="https://github.com/HarithaVattikuti"><code>@​HarithaVattikuti</code></a>
in <a
href="https://redirect.github.com/actions/setup-go/pull/762">actions/setup-go#762</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/priyagupta108"><code>@​priyagupta108</code></a>
with <a href="https://github.com/Copilot"><code>@​Copilot</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/setup-go/pull/744">actions/setup-go#744</a></li>
<li><a href="https://github.com/jasongin"><code>@​jasongin</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/setup-go/pull/758">actions/setup-go#758</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/setup-go/compare/v6...v6.5.0">https://github.com/actions/setup-go/compare/v6...v6.5.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/actions/setup-go/commit/924ae3a1cded613372ab5595356fb5720e22ba16"><code>924ae3a</code></a>
chore: bump version to 6.5.0 in package.json and package-lock.json (<a
href="https://redirect.github.com/actions/setup-go/issues/762">#762</a>)</li>
<li><a
href="https://github.com/actions/setup-go/commit/e91cc3bfe0c3efd0b2d1dc3a51269c9038deb4f1"><code>e91cc3b</code></a>
Bump <code>@​actions/cache</code> to 5.1.0, log cache write denied (<a
href="https://redirect.github.com/actions/setup-go/issues/758">#758</a>)</li>
<li><a
href="https://github.com/actions/setup-go/commit/4a2405e6aebff6aabd8e43618539aa35cf90ac92"><code>4a2405e</code></a>
chore: update <code>@​types/node</code> and <a
href="https://github.com/typescript-eslint"><code>@​typescript-eslint</code></a>
dependencies to latest versi...</li>
<li><a
href="https://github.com/actions/setup-go/commit/78961f6f84d799cd858575bb931c3e51d3b13290"><code>78961f6</code></a>
chore: update <a
href="https://github.com/actions"><code>@​actions</code></a>
dependencies and refresh license cache (<a
href="https://redirect.github.com/actions/setup-go/issues/744">#744</a>)</li>
<li>See full diff in <a
href="https://github.com/actions/setup-go/compare/4a3601121dd01d1626a1e23e37211e3254c1c06c...924ae3a1cded613372ab5595356fb5720e22ba16">compare
view</a></li>
</ul>
</details>
<br />

Updates `actions/setup-java` from 5.2.0 to 5.4.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/setup-java/releases">actions/setup-java's
releases</a>.</em></p>
<blockquote>
<h2>v5.4.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Bump <code>@​typescript-eslint/parser</code> from 8.48.0 to 8.61.1
by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/actions/setup-java/pull/1021">actions/setup-java#1021</a></li>
<li>Fix codeql workflow permissions by <a
href="https://github.com/jsoref"><code>@​jsoref</code></a> in <a
href="https://redirect.github.com/actions/setup-java/pull/993">actions/setup-java#993</a></li>
<li>fix CodeQL permissions by <a
href="https://github.com/gdams"><code>@​gdams</code></a> in <a
href="https://redirect.github.com/actions/setup-java/pull/1025">actions/setup-java#1025</a></li>
<li>fix: reject non-semver candidate versions in isVersionSatisfies by
<a href="https://github.com/sproctor"><code>@​sproctor</code></a> in <a
href="https://redirect.github.com/actions/setup-java/pull/1009">actions/setup-java#1009</a></li>
<li>Bump <code>@​actions/cache</code> to 5.1.0, handle cache write
denied by <a
href="https://github.com/jasongin"><code>@​jasongin</code></a> in <a
href="https://redirect.github.com/actions/setup-java/pull/1026">actions/setup-java#1026</a></li>
<li>Add Maven Wrapper cache feature by <a
href="https://github.com/mahabaleshwars"><code>@​mahabaleshwars</code></a>
in <a
href="https://redirect.github.com/actions/setup-java/pull/1027">actions/setup-java#1027</a></li>
<li>Spelling by <a
href="https://github.com/jsoref"><code>@​jsoref</code></a> in <a
href="https://redirect.github.com/actions/setup-java/pull/713">actions/setup-java#713</a></li>
<li>add link to advanced configuration for JetBrains by <a
href="https://github.com/robstoll"><code>@​robstoll</code></a> in <a
href="https://redirect.github.com/actions/setup-java/pull/850">actions/setup-java#850</a></li>
<li>docs(action): fix missing required or default fields by <a
href="https://github.com/kranthipoturaju"><code>@​kranthipoturaju</code></a>
in <a
href="https://redirect.github.com/actions/setup-java/pull/1007">actions/setup-java#1007</a></li>
<li>feat: add microsoft openjdk 17.0.18 by <a
href="https://github.com/al-kau"><code>@​al-kau</code></a> in <a
href="https://redirect.github.com/actions/setup-java/pull/1002">actions/setup-java#1002</a></li>
<li>Update README.md - use &quot;alert syntax for Markdown&quot; for
notes by <a
href="https://github.com/mhoffrog"><code>@​mhoffrog</code></a> in <a
href="https://redirect.github.com/actions/setup-java/pull/924">actions/setup-java#924</a></li>
<li>Bump undici from 6.24.1 to 6.27.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/actions/setup-java/pull/1033">actions/setup-java#1033</a></li>
<li>Update contributor guide with emoji for clarity by <a
href="https://github.com/brunoborges"><code>@​brunoborges</code></a> in
<a
href="https://redirect.github.com/actions/setup-java/pull/1028">actions/setup-java#1028</a></li>
<li>add javac problem matcher by <a
href="https://github.com/Trass3r"><code>@​Trass3r</code></a> in <a
href="https://redirect.github.com/actions/setup-java/pull/562">actions/setup-java#562</a></li>
<li>Clarify README version syntax and migration guidance by <a
href="https://github.com/brunoborges"><code>@​brunoborges</code></a>
with <a href="https://github.com/Copilot"><code>@​Copilot</code></a> in
<a
href="https://redirect.github.com/actions/setup-java/pull/1038">actions/setup-java#1038</a></li>
<li>Update undici artifacts to 6.27.0 (license cache + dist) by <a
href="https://github.com/brunoborges"><code>@​brunoborges</code></a> in
<a
href="https://redirect.github.com/actions/setup-java/pull/1040">actions/setup-java#1040</a></li>
<li>docs: enhance custom jdk file installation by <a
href="https://github.com/stephanabel"><code>@​stephanabel</code></a> in
<a
href="https://redirect.github.com/actions/setup-java/pull/996">actions/setup-java#996</a></li>
<li>Templates for new Java distributions by <a
href="https://github.com/panticmilos"><code>@​panticmilos</code></a> in
<a
href="https://redirect.github.com/actions/setup-java/pull/429">actions/setup-java#429</a></li>
<li>Bump actions/checkout from 6 to 7 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/actions/setup-java/pull/1032">actions/setup-java#1032</a></li>
<li>Bump <code>@​types/node</code> from 25.9.3 to 26.0.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/actions/setup-java/pull/1031">actions/setup-java#1031</a></li>
<li>docs: replace non-existent HelloWorldApp references with java
--version by <a
href="https://github.com/brunoborges"><code>@​brunoborges</code></a>
with <a href="https://github.com/Copilot"><code>@​Copilot</code></a> in
<a
href="https://redirect.github.com/actions/setup-java/pull/1043">actions/setup-java#1043</a></li>
<li>docs: add JavaFX Maven project configuration instructions by <a
href="https://github.com/brunoborges"><code>@​brunoborges</code></a>
with <a href="https://github.com/Copilot"><code>@​Copilot</code></a> in
<a
href="https://redirect.github.com/actions/setup-java/pull/1044">actions/setup-java#1044</a></li>
<li>docs: self-signed certificate / internal CA handling for GitHub
Enterprise by <a
href="https://github.com/brunoborges"><code>@​brunoborges</code></a> in
<a
href="https://redirect.github.com/actions/setup-java/pull/1050">actions/setup-java#1050</a></li>
<li>docs: document importing an internal CA into the installed JDK
(cacerts) by <a
href="https://github.com/brunoborges"><code>@​brunoborges</code></a> in
<a
href="https://redirect.github.com/actions/setup-java/pull/1051">actions/setup-java#1051</a></li>
<li>chore: Harden workflows: least-privilege permissions + zizmor
integration by <a
href="https://github.com/brunoborges"><code>@​brunoborges</code></a> in
<a
href="https://redirect.github.com/actions/setup-java/pull/1039">actions/setup-java#1039</a></li>
<li>dist: Add GraalVM Community distribution support by <a
href="https://github.com/brunoborges"><code>@​brunoborges</code></a>
with <a href="https://github.com/Copilot"><code>@​Copilot</code></a> in
<a
href="https://redirect.github.com/actions/setup-java/pull/1042">actions/setup-java#1042</a></li>
<li>docs: note jdkfile approach for Early Access / unreleased JDK builds
by <a
href="https://github.com/brunoborges"><code>@​brunoborges</code></a> in
<a
href="https://redirect.github.com/actions/setup-java/pull/1058">actions/setup-java#1058</a></li>
<li>dist: Apply Copilot review suggestions from PR <a
href="https://redirect.github.com/actions/setup-java/issues/1042">#1042</a>
(GraalVM Community) by <a
href="https://github.com/brunoborges"><code>@​brunoborges</code></a> in
<a
href="https://redirect.github.com/actions/setup-java/pull/1059">actions/setup-java#1059</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/jsoref"><code>@​jsoref</code></a> made
their first contribution in <a
href="https://redirect.github.com/actions/setup-java/pull/993">actions/setup-java#993</a></li>
<li><a href="https://github.com/sproctor"><code>@​sproctor</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/setup-java/pull/1009">actions/setup-java#1009</a></li>
<li><a href="https://github.com/jasongin"><code>@​jasongin</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/setup-java/pull/1026">actions/setup-java#1026</a></li>
<li><a href="https://github.com/robstoll"><code>@​robstoll</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/setup-java/pull/850">actions/setup-java#850</a></li>
<li><a
href="https://github.com/kranthipoturaju"><code>@​kranthipoturaju</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/setup-java/pull/1007">actions/setup-java#1007</a></li>
<li><a href="https://github.com/al-kau"><code>@​al-kau</code></a> made
their first contribution in <a
href="https://redirect.github.com/actions/setup-java/pull/1002">actions/setup-java#1002</a></li>
<li><a href="https://github.com/mhoffrog"><code>@​mhoffrog</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/setup-java/pull/924">actions/setup-java#924</a></li>
<li><a
href="https://github.com/brunoborges"><code>@​brunoborges</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/setup-java/pull/1028">actions/setup-java#1028</a></li>
<li><a href="https://github.com/Trass3r"><code>@​Trass3r</code></a> made
their first contribution in <a
href="https://redirect.github.com/actions/setup-java/pull/562">actions/setup-java#562</a></li>
<li><a
href="https://github.com/stephanabel"><code>@​stephanabel</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/setup-java/pull/996">actions/setup-java#996</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/setup-java/compare/v5...v5.4.0">https://github.com/actions/setup-java/compare/v5...v5.4.0</a></p>
<h2>v5.3.0</h2>
<h2>What's Changed</h2>
<ul>
<li>chore: update Java version to 25 in setup examples by <a
href="https://github.com/alaahong"><code>@​alaahong</code></a> in <a
href="https://redirect.github.com/actions/setup-java/pull/969">actions/setup-java#969</a></li>
<li>Bump minimatch from 3.1.2 to 3.1.5 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/actions/setup-java/pull/984">actions/setup-java#984</a></li>
<li>Refactor error handling and improve test logging for installers by
<a
href="https://github.com/chiranjib-swain"><code>@​chiranjib-swain</code></a>
in <a
href="https://redirect.github.com/actions/setup-java/pull/989">actions/setup-java#989</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/actions/setup-java/commit/1bcf9fb12cf4aa7d266a90ae39939e61372fe520"><code>1bcf9fb</code></a>
dist: Address Copilot review suggestions from PR <a
href="https://redirect.github.com/actions/setup-java/issues/1042">#1042</a>
(GraalVM Community) (#...</li>
<li><a
href="https://github.com/actions/setup-java/commit/fa2c6508d1036292a5efdf642f98d1c695974c72"><code>fa2c650</code></a>
docs: note jdkfile approach for Early Access / unreleased JDK builds (<a
href="https://redirect.github.com/actions/setup-java/issues/1058">#1058</a>)</li>
<li><a
href="https://github.com/actions/setup-java/commit/1d56e31dbb83904d53629e4e0bd2d956e011c1c2"><code>1d56e31</code></a>
dist: Add GraalVM Community distribution support (<a
href="https://redirect.github.com/actions/setup-java/issues/1042">#1042</a>)</li>
<li><a
href="https://github.com/actions/setup-java/commit/1d252528046b5ceb47839b03a115e0ea04f026cc"><code>1d25252</code></a>
chore: Harden workflows: least-privilege permissions + zizmor
integration (<a
href="https://redirect.github.com/actions/setup-java/issues/1">#1</a>...</li>
<li><a
href="https://github.com/actions/setup-java/commit/668c1ea991737ea087e51dbf0bcf7fd41cbc20ee"><code>668c1ea</code></a>
docs: add post-install keytool import for the JDK cacerts trust store
(<a
href="https://redirect.github.com/actions/setup-java/issues/1051">#1051</a>)</li>
<li><a
href="https://github.com/actions/setup-java/commit/a9a46fbe0996878a5673db759d29dbc5f470320e"><code>a9a46fb</code></a>
docs: document self-signed certificate / internal CA handling for GitHub
Ente...</li>
<li><a
href="https://github.com/actions/setup-java/commit/5431e71f9a4e00431c1c904af57e62794b518b11"><code>5431e71</code></a>
docs: add JavaFX Maven project configuration instructions (<a
href="https://redirect.github.com/actions/setup-java/issues/1044">#1044</a>)</li>
<li><a
href="https://github.com/actions/setup-java/commit/4baa9b45d2bff6fcbef9619dabd0cb1ca822905b"><code>4baa9b4</code></a>
docs: replace non-existent HelloWorldApp references with java --version
(<a
href="https://redirect.github.com/actions/setup-java/issues/1043">#1043</a>)</li>
<li><a
href="https://github.com/actions/setup-java/commit/eab4b0854d2abdb899d5cf9e1bbff1df86044a8e"><code>eab4b08</code></a>
Bump <code>@​types/node</code> from 25.9.3 to 26.0.0 (<a
href="https://redirect.github.com/actions/setup-java/issues/1031">#1031</a>)</li>
<li><a
href="https://github.com/actions/setup-java/commit/bf0c0e6df33849b0cba166f7c5d05fb38a219383"><code>bf0c0e6</code></a>
Bump actions/checkout from 6 to 7 (<a
href="https://redirect.github.com/actions/setup-java/issues/1032">#1032</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/actions/setup-java/compare/be666c2fcd27ec809703dec50e508c2fdc7f6654...1bcf9fb12cf4aa7d266a90ae39939e61372fe520">compare
view</a></li>
</ul>
</details>
<br />

Updates `jdx/mise-action` from 4.1.0 to 4.2.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/jdx/mise-action/releases">jdx/mise-action's
releases</a>.</em></p>
<blockquote>
<h2>v4.2.0: Bootstrap mode &amp; wget fallback</h2>
<p>This release adds an opt-in <strong>bootstrap mode</strong> for
projects that use <code>mise bootstrap</code>, and makes the action work
on runner images that ship <code>wget</code> but not
<code>curl</code>.</p>
<h2>Added</h2>
<h3>Bootstrap mode (<a
href="https://redirect.github.com/jdx/mise-action/pull/522">#522</a>) by
<a href="https://github.com/jdx"><code>@​jdx</code></a></h3>
<p>Three new inputs let the action drive <code>mise bootstrap</code>
instead of <code>mise install</code>:</p>
<pre lang="yaml"><code>- uses: jdx/mise-action@v4
  with:
    bootstrap: true
bootstrap_skip: &quot;tools,task&quot; # comma-separated parts to skip
bootstrap_args: &quot;--yes&quot; # extra args forwarded to mise
bootstrap
</code></pre>
<ul>
<li>When <code>bootstrap: true</code>, the action runs <code>mise
bootstrap</code> under the existing <code>install</code> gate and sets
<code>MISE_EXPERIMENTAL=1</code> automatically.</li>
<li>If a repo mise lock file is present, it runs <code>mise --locked
bootstrap</code>, matching the auto-lock behavior introduced for
<code>mise install</code> in v4.1.0.</li>
<li><code>install_args</code> cannot be combined with <code>bootstrap:
true</code> — the action fails fast and tells you to use
<code>bootstrap_skip</code> / <code>bootstrap_args</code> instead,
because full bootstrap doesn't support partial tool install args.</li>
<li>A new <code>{{bootstrap_hash}}</code> template variable is included
in the default cache key (and available in custom <code>cache_key</code>
templates) so bootstrap and non-bootstrap configurations don't share
caches.</li>
</ul>
<p><code>bootstrap_skip</code> relies on <code>mise bootstrap
--skip</code> from <a
href="https://redirect.github.com/jdx/mise/pull/10497">jdx/mise#10497</a>,
so make sure you're on a recent mise version if you use it.</p>
<h2>Fixed</h2>
<ul>
<li><strong>Fall back to <code>wget</code> when <code>curl</code> is
unavailable</strong> (<a
href="https://redirect.github.com/jdx/mise-action/pull/521">#521</a>) by
<a href="https://github.com/risu729"><code>@​risu729</code></a> — The
action used to hard-code <code>curl</code> for fetching the mise binary,
tar/zip archives, and the latest <code>VERSION</code> lookup, which
broke on minimal runner images that only ship <code>wget</code>. It now
prefers <code>curl</code> and transparently falls back to
<code>wget</code>, preserving the streaming <code>download | tar</code>
fast path for <code>.tar.gz</code> and <code>.tar.zst</code> installs on
Linux/macOS. Proxy support is unchanged — both tools honor
<code>HTTP_PROXY</code>/<code>HTTPS_PROXY</code>. Addresses <a
href="https://redirect.github.com/jdx/mise/issues/10488">jdx/mise#10488</a>.</li>
</ul>
<h2>Documentation</h2>
<ul>
<li>Link the known Rust cache interaction note from the README (<a
href="https://redirect.github.com/jdx/mise-action/pull/496">#496</a>) by
<a href="https://github.com/risu729"><code>@​risu729</code></a>.</li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/jdx/mise-action/compare/v4.1.0...v4.2.0">https://github.com/jdx/mise-action/compare/v4.1.0...v4.2.0</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/jdx/mise-action/blob/main/CHANGELOG.md">jdx/mise-action's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<hr />
<h2><a
href="https://github.com/jdx/mise-action/compare/v4.1.0..v4.2.0">4.2.0</a>
- 2026-06-17</h2>
<h3>🚀 Features</h3>
<ul>
<li>support bootstrap mode (<a
href="https://redirect.github.com/jdx/mise-action/issues/522">#522</a>)
by <a href="https://github.com/jdx"><code>@​jdx</code></a> in <a
href="https://redirect.github.com/jdx/mise-action/pull/522">#522</a></li>
</ul>
<h3>🐛 Bug Fixes</h3>
<ul>
<li>fall back to wget when curl is unavailable (<a
href="https://redirect.github.com/jdx/mise-action/issues/521">#521</a>)
by <a href="https://github.com/risu729"><code>@​risu729</code></a> in <a
href="https://redirect.github.com/jdx/mise-action/pull/521">#521</a></li>
</ul>
<h3>📚 Documentation</h3>
<ul>
<li>link rust cache issue (<a
href="https://redirect.github.com/jdx/mise-action/issues/496">#496</a>)
by <a href="https://github.com/risu729"><code>@​risu729</code></a> in <a
href="https://redirect.github.com/jdx/mise-action/pull/496">#496</a></li>
</ul>
<h3>⚙️ Miscellaneous Tasks</h3>
<ul>
<li><strong>(ci)</strong> fix zizmor version comments (<a
href="https://redirect.github.com/jdx/mise-action/issues/506">#506</a>)
by <a href="https://github.com/jdx"><code>@​jdx</code></a> in <a
href="https://redirect.github.com/jdx/mise-action/pull/506">#506</a></li>
<li><strong>(ci)</strong> use pr-closer action (<a
href="https://redirect.github.com/jdx/mise-action/issues/505">#505</a>)
by <a href="https://github.com/jdx"><code>@​jdx</code></a> in <a
href="https://redirect.github.com/jdx/mise-action/pull/505">#505</a></li>
</ul>
<hr />
<h2><a
href="https://github.com/jdx/mise-action/compare/v4.0.1..v4.1.0">4.1.0</a>
- 2026-06-04</h2>
<h3>🚀 Features</h3>
<ul>
<li>add wings_enabled input (mise-wings cache integration) (<a
href="https://redirect.github.com/jdx/mise-action/issues/454">#454</a>)
by <a href="https://github.com/jdx"><code>@​jdx</code></a> in <a
href="https://redirect.github.com/jdx/mise-action/pull/454">#454</a></li>
<li>lock install when mise.lock is present (<a
href="https://redirect.github.com/jdx/mise-action/issues/495">#495</a>)
by <a href="https://github.com/zeitlinger"><code>@​zeitlinger</code></a>
in <a
href="https://redirect.github.com/jdx/mise-action/pull/495">#495</a></li>
</ul>
<h3>🐛 Bug Fixes</h3>
<ul>
<li><strong>(ci)</strong> add gh auth setup-git to release-plz.sh (<a
href="https://redirect.github.com/jdx/mise-action/issues/473">#473</a>)
by <a href="https://github.com/jdx"><code>@​jdx</code></a> in <a
href="https://redirect.github.com/jdx/mise-action/pull/473">#473</a></li>
<li><strong>(ci)</strong> pin codeql-action with exact version comment
(<a
href="https://redirect.github.com/jdx/mise-action/issues/481">#481</a>)
by <a href="https://github.com/jdx"><code>@​jdx</code></a> in <a
href="https://redirect.github.com/jdx/mise-action/pull/481">#481</a></li>
<li><strong>(ci)</strong> resolve zizmor findings (<a
href="https://redirect.github.com/jdx/mise-action/issues/503">#503</a>)
by <a href="https://github.com/jdx"><code>@​jdx</code></a> in <a
href="https://redirect.github.com/jdx/mise-action/pull/503">#503</a></li>
<li>include runner image in cache key to prevent cross-provider
collisions (<a
href="https://redirect.github.com/jdx/mise-action/issues/456">#456</a>)
by <a href="https://github.com/jdx"><code>@​jdx</code></a> in <a
href="https://redirect.github.com/jdx/mise-action/pull/456">#456</a></li>
<li>install mise-shim.exe on Windows (<a
href="https://redirect.github.com/jdx/mise-action/issues/476">#476</a>)
by <a href="https://github.com/risu729"><code>@​risu729</code></a> in <a
href="https://redirect.github.com/jdx/mise-action/pull/476">#476</a></li>
</ul>
<h3>⚙️ Miscellaneous Tasks</h3>
<ul>
<li><strong>(ci)</strong> use !cancelled() instead of always() for final
job (<a
href="https://redirect.github.com/jdx/mise-action/issues/460">#460</a>)
by <a href="https://github.com/jdx"><code>@​jdx</code></a> in <a
href="https://redirect.github.com/jdx/mise-action/pull/460">#460</a></li>
<li><strong>(ci)</strong> remove autofix.ci workflow (<a
href="https://redirect.github.com/jdx/mise-action/issues/470">#470</a>)
by <a href="https://github.com/jdx"><code>@​jdx</code></a> in <a
href="https://redirect.github.com/jdx/mise-action/pull/470">#470</a></li>
<li><strong>(ci)</strong> add zizmor workflow for github actions
security analysis (<a
href="https://redirect.github.com/jdx/mise-action/issues/471">#471</a>)
by <a href="https://github.com/jdx"><code>@​jdx</code></a> in <a
href="https://redirect.github.com/jdx/mise-action/pull/471">#471</a></li>
<li><strong>(ci)</strong> close failing or conflicted PRs sooner (<a
href="https://redirect.github.com/jdx/mise-action/issues/480">#480</a>)
by <a href="https://github.com/jdx"><code>@​jdx</code></a> in <a
href="https://redirect.github.com/jdx/mise-action/pull/480">#480</a></li>
<li>add communique to enhance release notes (<a
href="https://redirect.github.com/jdx/mise-action/issues/411">#411</a>)
by <a href="https://github.com/jdx"><code>@​jdx</code></a> in <a
href="https://redirect.github.com/jdx/mise-action/pull/411">#411</a></li>
<li>migrate from ncc (CJS) to rollup (ESM) (<a
href="https://redirect.github.com/jdx/mise-action/issues/436">#436</a>)
by <a href="https://github.com/jdx"><code>@​jdx</code></a> in <a
href="https://redirect.github.com/jdx/mise-action/pull/436">#436</a></li>
<li>add final job to aggregate build-test results (<a
href="https://redirect.github.com/jdx/mise-action/issues/438">#438</a>)
by <a href="https://github.com/jdx"><code>@​jdx</code></a> in <a
href="https://redirect.github.com/jdx/mise-action/pull/438">#438</a></li>
<li>migrate package manager from npm/pnpm/bun to aube (<a
href="https://redirect.github.com/jdx/mise-action/issues/455">#455</a>)
by <a href="https://github.com/jdx"><code>@​jdx</code></a> in <a
href="https://redirect.github.com/jdx/mise-action/pull/455">#455</a></li>
<li>remove pull_request_target workflow (<a
href="https://redirect.github.com/jdx/mise-action/issues/469">#469</a>)
by <a href="https://github.com/jdx"><code>@​jdx</code></a> in <a
href="https://redirect.github.com/jdx/mise-action/pull/469">#469</a></li>
<li>update aube tool version (<a
href="https://redirect.github.com/jdx/mise-action/issues/501">#501</a>)
by <a href="https://github.com/jdx"><code>@​jdx</code></a> in <a
href="https://redirect.github.com/jdx/mise-action/pull/501">#501</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/jdx/mise-action/commit/e6a8b3978addb5a52f2b4cd9d91eafa7f0ab959d"><code>e6a8b39</code></a>
chore: release v4.2.0 (<a
href="https://redirect.github.com/jdx/mise-action/issues/504">#504</a>)</li>
<li><a
href="https://github.com/jdx/mise-action/commit/884d42869346da12ec20a7082de3b5fe8e236c49"><code>884d428</code></a>
fix: fall back to wget when curl is unavailable (<a
href="https://redirect.github.com/jdx/mise-action/issues/521">#521</a>)</li>
<li><a
href="https://github.com/jdx/mise-action/commit/5f61b63affab7b78e79dec8562c94e0ebd1b90a0"><code>5f61b63</code></a>
feat: support bootstrap mode (<a
href="https://redirect.github.com/jdx/mise-action/issues/522">#522</a>)</li>
<li><a
href="https://github.com/jdx/mise-action/commit/03d53910f98bfb7555d242a9136d77505539db7a"><code>03d5391</code></a>
chore(deps): update node.js to v24.16.0 (<a
href="https://redirect.github.com/jdx/mise-action/issues/519">#519</a>)</li>
<li><a
href="https://github.com/jdx/mise-action/commit/0f82543dabdbcc5b4ce04e1166d04020d82a488d"><code>0f82543</code></a>
chore(deps): update node.js to v24.16.0 (<a
href="https://redirect.github.com/jdx/mise-action/issues/518">#518</a>)</li>
<li><a
href="https://github.com/jdx/mise-action/commit/5d76934c0b29bd4b18da9e2a421c21bb55f1e1cc"><code>5d76934</code></a>
chore(deps): update dependency rollup to v4.61.1 (<a
href="https://redirect.github.com/jdx/mise-action/issues/516">#516</a>)</li>
<li><a
href="https://github.com/jdx/mise-action/commit/80781a51e156fb8e96a7f96970a5301b5c70467f"><code>80781a5</code></a>
chore(deps): update jdx/mise-action action to v4.1.0 (<a
href="https://redirect.github.com/jdx/mise-action/issues/517">#517</a>)</li>
<li><a
href="https://github.com/jdx/mise-action/commit/f1eae89ff08c50fe95cc6fa2b8adef3ecd6d935e"><code>f1eae89</code></a>
chore(deps): update dependency js-yaml to v4.2.0 (<a
href="https://redirect.github.com/jdx/mise-action/issues/515">#515</a>)</li>
<li><a
href="https://github.com/jdx/mise-action/commit/ab3e780cf6a06e6826af8e7c48720b12226c39b5"><code>ab3e780</code></a>
chore(deps): update typescript-eslint monorepo to v8.60.1 (<a
href="https://redirect.github.com/jdx/mise-action/issues/514">#514</a>)</li>
<li><a
href="https://github.com/jdx/mise-action/commit/17d3aa0218aa40c76afd6d9099714e1623f750f6"><code>17d3aa0</code></a>
chore(deps): update github/codeql-action action to v4.36.2 (<a
href="https://redirect.github.com/jdx/mise-action/issues/513">#513</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/jdx/mise-action/compare/dba19683ed58901619b14f395a24841710cb4925...e6a8b3978addb5a52f2b4cd9d91eafa7f0ab959d">compare
view</a></li>
</ul>
</details>
<br />

Updates `actions/cache` from 5.0.5 to 6.1.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/cache/releases">actions/cache's
releases</a>.</em></p>
<blockquote>
<h2>v6.1.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Bump <code>@​actions/cache</code> to v6.1.0 - handle read-only cache
access by <a
href="https://github.com/jasongin"><code>@​jasongin</code></a> in <a
href="https://redirect.github.com/actions/cache/pull/1768">actions/cache#1768</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/cache/compare/v6...v6.1.0">https://github.com/actions/cache/compare/v6...v6.1.0</a></p>
<h2>v6.0.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Update packages, migrate to ESM by <a
href="https://github.com/Samirat"><code>@​Samirat</code></a> in <a
href="https://redirect.github.com/actions/cache/pull/1760">actions/cache#1760</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/cache/compare/v5...v6.0.0">https://github.com/actions/cache/compare/v5...v6.0.0</a></p>
<h2>v5.1.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Bump <code>@​actions/cache</code> to v5.1.0 - handle read-only cache
access by <a
href="https://github.com/jasongin"><code>@​jasongin</code></a> in <a
href="https://redirect.github.com/actions/cache/pull/1775">actions/cache#1775</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/cache/compare/v5...v5.1.0">https://github.com/actions/cache/compare/v5...v5.1.0</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/actions/cache/blob/main/RELEASES.md">actions/cache's
changelog</a>.</em></p>
<blockquote>
<h1>Releases</h1>
<h2>How to prepare a release</h2>
<blockquote>
<p>[!NOTE]
Relevant for maintainers with write access only.</p>
</blockquote>
<ol>
<li>Switch to a new branch from <code>main</code>.</li>
<li>Run <code>npm test</code> to ensure all tests are passing.</li>
<li>Update the version in <a
href="https://github.com/actions/cache/blob/main/package.json"><code>https://github.com/actions/cache/blob/main/package.json</code></a>.</li>
<li>Run <code>npm run build</code> to update the compiled files.</li>
<li>Update this <a
href="https://github.com/actions/cache/blob/main/RELEASES.md"><code>https://github.com/actions/cache/blob/main/RELEASES.md</code></a>
with the new version and changes in the <code>## Changelog</code>
section.</li>
<li>Run <code>licensed cache</code> to update the license report.</li>
<li>Run <code>licensed status</code> and resolve any warnings by
updating the <a
href="https://github.com/actions/cache/blob/main/.licensed.yml"><code>https://github.com/actions/cache/blob/main/.licensed.yml</code></a>
file with the exceptions.</li>
<li>Commit your changes and push your branch upstream.</li>
<li>Open a pull request against <code>main</code> and get it reviewed
and merged.</li>
<li>Draft a new release <a
href="https://github.com/actions/cache/releases">https://github.com/actions/cache/releases</a>
use the same version number used in <code>package.json</code>
<ol>
<li>Create a new tag with the version number.</li>
<li>Auto generate release notes and update them to match the changes you
made in <code>RELEASES.md</code>.</li>
<li>Toggle the set as the latest release option.</li>
<li>Publish the release.</li>
</ol>
</li>
<li>Navigate to <a
href="https://github.com/actions/cache/actions/workflows/release-new-action-version.yml">https://github.com/actions/cache/actions/workflows/release-new-action-version.yml</a>
<ol>
<li>There should be a workflow run queued with the same version
number.</li>
<li>Approve the run to publish the new version and update the major tags
for this action.</li>
</ol>
</li>
</ol>
<h2>Changelog</h2>
<h3>6.1.0</h3>
<ul>
<li>Bump <code>@actions/cache</code> to v6.1.0 to pick up <a
href="https://redirect.github.com/actions/toolkit/pull/2435">actions/toolkit#2435
Handle cache write error due to read-only token</a></li>
<li>Switch redundant &quot;Cache save failed&quot; warning to debug log
in save-only</li>
</ul>
<h3>6.0.0</h3>
<ul>
<li>Updated <code>@actions/cache</code> to ^6.0.1,
<code>@actions/core</code> to ^3.0.1, <code>@actions/exec</code> to
^3.0.0, <code>@actions/io</code> to ^3.0.2</li>
<li>Migrated to ESM module system</li>
<li>Upgraded Jest to v30 and test infrastructure to be ESM
compatible</li>
</ul>
<h3>5.0.4</h3>
<ul>
<li>Bump <code>minimatch</code> to v3.1.5 (fixes ReDoS via globstar
patterns)</li>
<li>Bump <code>undici</code> to v6.24.1 (WebSocket decompression bomb
protection, header validation fixes)</li>
<li>Bump <code>fast-xml-parser</code> to v5.5.6</li>
</ul>
<h3>5.0.3</h3>
<ul>
<li>Bump <code>@actions/cache</code> to v5.0.5 (Resolves: <a
href="https://github.com/actions/cache/security/dependabot/33">https://github.com/actions/cache/security/dependabot/33</a>)</li>
<li>Bump <code>@actions/core</code> to v2.0.3</li>
</ul>
<h3>5.0.2</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/actions/cache/commit/55cc8345863c7cc4c66a329aec7e433d2d1c52a9"><code>55cc834</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/cache/issues/1768">#1768</a>
from jasongin/readonly-cache</li>
<li><a
href="https://github.com/actions/cache/commit/d8cd72f230726cdf4457ebb61ec1b593a8d12337"><code>d8cd72f</code></a>
Bump <code>@​actions/cache</code> to v6.1.0 - handle cache write error
due to RO token</li>
<li><a
href="https://github.com/actions/cache/commit/2c8a9bd7457de244a408f35966fab2fb45fda9c8"><code>2c8a9bd</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/cache/issues/1760">#1760</a>
from actions/samirat/esm_migration_and_package_update</li>
<li><a
href="https://github.com/actions/cache/commit/e9b91fdc3fea7d79165fceb79042ef45c2d51023"><code>e9b91fd</code></a>
Prettier fixes</li>
<li><a
href="https://github.com/actions/cache/commit/e4884b8ff7f92ef6b52c79eda480bbc86e685adb"><code>e4884b8</code></a>
Rebuild dist</li>
<li><a
href="https://github.com/actions/cache/commit/10baf0191a3c426ea0fa4a3253a5c04233b6e18f"><code>10baf01</code></a>
Fixed licenses</li>
<li><a
href="https://github.com/actions/cache/commit/e39b386c9004d72a15d864ade8c0b3a702d47a37"><code>e39b386</code></a>
Fix test mock return order</li>
<li><a
href="https://github.com/actions/cache/commit/b6928203372a8571ff984c0c883ef3a1adfb0c06"><code>b692820</code></a>
PR feedback</li>
<li><a
href="https://github.com/actions/cache/commit/60749128a44d25d3c520a489e576380cf00ff3f1"><code>6074912</code></a>
Rebuild dist bundles as ESM to match type:module</li>
<li><a
href="https://github.com/actions/cache/commit/5a912e8b4af820fa082a0e75cfd2c782f8fbfe0e"><code>5a912e8</code></a>
Fix lint and jest issues</li>
<li>Additional commits viewable in <a
href="https://github.com/actions/cache/compare/27d5ce7f107fe9357f9df03efb73ab90386fccae...55cc8345863c7cc4c66a329aec7e433d2d1c52a9">compare
view</a></li>
</ul>
</details>
<br />

Updates `zizmorcore/zizmor-action` from 0.5.6 to 0.5.7
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/zizmorcore/zizmor-action/releases">zizmorcore/zizmor-action's
releases</a>.</em></p>
<blockquote>
<h2>v0.5.7</h2>
<p>1.26.1 is now available via the action
1.26.1 is now the default version of zizmor used by the action</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/zizmorcore/zizmor-action/commit/192e21d79ab29983730a13d1382995c2307fbcaa"><code>192e21d</code></a>
Sync zizmor versions (<a
href="https://redirect.github.com/zizmorcore/zizmor-action/issues/127">#127</a>)</li>
<li><a
href="https://github.com/zizmorcore/zizmor-action/commit/2720f2673c0b64a8656d08b009ac239b9383c0ae"><code>2720f26</code></a>
Update README.md with new actions/checkout version (<a
href="https://redirect.github.com/zizmorcore/zizmor-action/issues/126">#126</a>)</li>
<li><a
href="https://github.com/zizmorcore/zizmor-action/commit/40b41b824eab0ad9c19ddf9856be25550729e6d8"><code>40b41b8</code></a>
chore(deps): bump the github-actions group with 2 updates (<a
href="https://redirect.github.com/zizmorcore/zizmor-action/issues/123">#123</a>)</li>
<li><a
href="https://github.com/zizmorcore/zizmor-action/commit/a687b25bf3aa149153e80ed5f45292e47589888c"><code>a687b25</code></a>
chore(deps): bump github/codeql-action from 4.35.5 to 4.36.0 in the
github-ac...</li>
<li><a
href="https://github.com/zizmorcore/zizmor-action/commit/64a6900ea7f40fab0caa7dcfc77b392d28fe0cb1"><code>64a6900</code></a>
add note to explain that the default value for
<code>online-checks</code> is different t...</li>
<li><a
href="https://github.com/zizmorcore/zizmor-action/commit/14050abd109fcba34e6e2f31a723280997808e82"><code>14050ab</code></a>
chore(deps): bump the github-actions group with 2 updates (<a
href="https://redirect.github.com/zizmorcore/zizmor-action/issues/118">#118</a>)</li>
<li><a
href="https://github.com/zizmorcore/zizmor-action/commit/ee9b4194a74f093e38908dbcfcb078f63eeef002"><code>ee9b419</code></a>
chore(deps): bump github/codeql-action in the github-actions group (<a
href="https://redirect.github.com/zizmorcore/zizmor-action/issues/116">#116</a>)</li>
<li><a
href="https://github.com/zizmorcore/zizmor-action/commit/fddf2b4aa9bf29290c6bf9866e6d113b0cdf6f67"><code>fddf2b4</code></a>
Bump pins in README (<a
href="https://redirect.github.com/zizmorcore/zizmor-action/issues/115">#115</a>)</li>
<li>See full diff in <a
href="https://github.com/zizmorcore/zizmor-action/compare/5f14fd08f7cf1cb1609c1e344975f152c7ee938d...192e21d79ab29983730a13d1382995c2307fbcaa">compare
view</a></li>
</ul>
</details>
<br />


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 <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Sebastian Spaink <sebastianspaink@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Sebastian Spaink <sebastianspaink@gmail.com>
2026-07-06 13:39:32 -05:00
dependabot[bot] e72114bbbf build(deps): bump the website group in /docs with 4 updates (#8839)
Bumps the website group in /docs with 4 updates:
[eslint](https://github.com/eslint/eslint),
[js-yaml](https://github.com/nodeca/js-yaml),
[recharts](https://github.com/recharts/recharts) and
[baseline-browser-mapping](https://github.com/web-platform-dx/baseline-browser-mapping).

Updates `eslint` from 10.4.1 to 10.5.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/eslint/eslint/releases">eslint's
releases</a>.</em></p>
<blockquote>
<h2>v10.5.0</h2>
<h2>Features</h2>
<ul>
<li><a
href="https://github.com/eslint/eslint/commit/5ca8c5278edea1fd84d3ba83d8ea3f52fb3831ad"><code>5ca8c52</code></a>
feat: correct stack tracking in max-nested-callbacks (<a
href="https://redirect.github.com/eslint/eslint/issues/20973">#20973</a>)
(Pixel998)</li>
<li><a
href="https://github.com/eslint/eslint/commit/b5657837604fa5e8cf1278074782025cadd34b6c"><code>b565783</code></a>
feat: report no-with violations at the with keyword (<a
href="https://redirect.github.com/eslint/eslint/issues/20971">#20971</a>)
(Pixel998)</li>
<li><a
href="https://github.com/eslint/eslint/commit/2ce032fbc72a1a80c024c084a4f382fb6dece684"><code>2ce032f</code></a>
feat: report max-lines-per-function violations at function head (<a
href="https://redirect.github.com/eslint/eslint/issues/20966">#20966</a>)
(Pixel998)</li>
<li><a
href="https://github.com/eslint/eslint/commit/732cb3e09d5b8b809b5f461d118a5d9fdcd6427f"><code>732cb3e</code></a>
feat: report max-nested-callbacks violations at function head (<a
href="https://redirect.github.com/eslint/eslint/issues/20967">#20967</a>)
(Pixel998)</li>
<li><a
href="https://github.com/eslint/eslint/commit/f9c138a0ba7d8e37aed39aef4a3ff1cae8c669f7"><code>f9c138a</code></a>
feat: report max-depth violations on keywords (<a
href="https://redirect.github.com/eslint/eslint/issues/20943">#20943</a>)
(Pixel998)</li>
<li><a
href="https://github.com/eslint/eslint/commit/bdb496cc0d54b6d0a023aef9abd5f040ccff2101"><code>bdb496c</code></a>
feat: correct max-depth handling for else-if chains (<a
href="https://redirect.github.com/eslint/eslint/issues/20944">#20944</a>)
(Pixel998)</li>
<li><a
href="https://github.com/eslint/eslint/commit/c29687354a7f96093f57f7d73eecb866ad5e2953"><code>c296873</code></a>
feat: update error loc in <code>max-statements</code> to function header
(<a
href="https://redirect.github.com/eslint/eslint/issues/20907">#20907</a>)
(Taejin Kim)</li>
</ul>
<h2>Documentation</h2>
<ul>
<li><a
href="https://github.com/eslint/eslint/commit/8ae1b5b856dc031cd6c701d89a4df7da4772cd56"><code>8ae1b5b</code></a>
docs: Update README (GitHub Actions Bot)</li>
<li><a
href="https://github.com/eslint/eslint/commit/ca7eb90127dcad917188bb1342623f02a272e781"><code>ca7eb90</code></a>
docs: update Node.js prerequisites to include ICU support (<a
href="https://redirect.github.com/eslint/eslint/issues/20962">#20962</a>)
(Francesco Trotta)</li>
<li><a
href="https://github.com/eslint/eslint/commit/f99b47a6799be25321552402a49303bb06a43fe4"><code>f99b47a</code></a>
docs: Update README (GitHub Actions Bot)</li>
<li><a
href="https://github.com/eslint/eslint/commit/acf03d4eed31d259c7dc62af5b9640629784f7cc"><code>acf03d4</code></a>
docs: clarify precedence of parserOptions over languageOptions (<a
href="https://redirect.github.com/eslint/eslint/issues/20926">#20926</a>)
(sethamus)</li>
</ul>
<h2>Chores</h2>
<ul>
<li><a
href="https://github.com/eslint/eslint/commit/b18bf58c5ac748415ffffdff2d96980fbd6a57e8"><code>b18bf58</code></a>
chore: update ecosystem plugins (<a
href="https://redirect.github.com/eslint/eslint/issues/20959">#20959</a>)
(ESLint Bot)</li>
<li><a
href="https://github.com/eslint/eslint/commit/c2d1444df77cb42e5a0b89ab70496879d180a54d"><code>c2d1444</code></a>
refactor: replace areAllSegmentsUnreachable with !isAnySegmentReachable
(<a
href="https://redirect.github.com/eslint/eslint/issues/20951">#20951</a>)
(Taejin Kim)</li>
<li><a
href="https://github.com/eslint/eslint/commit/243b8c56014bbbe63771185b0731d8dd4d1316e9"><code>243b8c5</code></a>
chore: enhance config-rule to support oneOf, anyOf, and nested schemas
(<a
href="https://redirect.github.com/eslint/eslint/issues/20788">#20788</a>)
(kuldeep kumar)</li>
<li><a
href="https://github.com/eslint/eslint/commit/217b2a91f46137c5ffd693965e71306c4c15ea6b"><code>217b2a9</code></a>
test: add unit tests for ParserService (<a
href="https://redirect.github.com/eslint/eslint/issues/20949">#20949</a>)
(Taejin Kim)</li>
<li><a
href="https://github.com/eslint/eslint/commit/72003e781d76bd4ee0d98a6601730d0b829070f9"><code>72003e7</code></a>
test: add location information to error messages in
<code>max-statements</code> (<a
href="https://redirect.github.com/eslint/eslint/issues/20945">#20945</a>)
(lumir)</li>
<li><a
href="https://github.com/eslint/eslint/commit/7797c266977b0bc4971aa79721813d480de72cd1"><code>7797c26</code></a>
refactor: deduplicate isAnySegmentReachable across rules (<a
href="https://redirect.github.com/eslint/eslint/issues/20890">#20890</a>)
(Taejin Kim)</li>
<li><a
href="https://github.com/eslint/eslint/commit/67c46fa6e4f34e88cc6bc82f8a0dcc917c65d257"><code>67c46fa</code></a>
chore: update ecosystem plugins (<a
href="https://redirect.github.com/eslint/eslint/issues/20938">#20938</a>)
(ESLint Bot)</li>
<li><a
href="https://github.com/eslint/eslint/commit/95d8c7a99f991abd8ab618d0ee2cbd4f58effc29"><code>95d8c7a</code></a>
chore: update dependency <code>@​eslint/json</code> to v2 (<a
href="https://redirect.github.com/eslint/eslint/issues/20934">#20934</a>)
(renovate[bot])</li>
<li><a
href="https://github.com/eslint/eslint/commit/cf9e496205142cd4971b9f98aed85866d1010b9c"><code>cf9e496</code></a>
chore: update <code>@​arethetypeswrong/cli</code> to 0.18.3 (<a
href="https://redirect.github.com/eslint/eslint/issues/20933">#20933</a>)
(Pixel998)</li>
<li><a
href="https://github.com/eslint/eslint/commit/fb6d3960cacc51fc12383fa5ded2382adbf90c1c"><code>fb6d396</code></a>
test: run type tests with TypeScript 7 (<a
href="https://redirect.github.com/eslint/eslint/issues/20868">#20868</a>)
(sethamus)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/eslint/eslint/commit/de3b672a267e32607db04176ce4775664acb3145"><code>de3b672</code></a>
10.5.0</li>
<li><a
href="https://github.com/eslint/eslint/commit/362a5185134290db696d39f97c9da609ded54040"><code>362a518</code></a>
Build: changelog update for 10.5.0</li>
<li><a
href="https://github.com/eslint/eslint/commit/5ca8c5278edea1fd84d3ba83d8ea3f52fb3831ad"><code>5ca8c52</code></a>
feat: correct stack tracking in max-nested-callbacks (<a
href="https://redirect.github.com/eslint/eslint/issues/20973">#20973</a>)</li>
<li><a
href="https://github.com/eslint/eslint/commit/b5657837604fa5e8cf1278074782025cadd34b6c"><code>b565783</code></a>
feat: report no-with violations at the with keyword (<a
href="https://redirect.github.com/eslint/eslint/issues/20971">#20971</a>)</li>
<li><a
href="https://github.com/eslint/eslint/commit/2ce032fbc72a1a80c024c084a4f382fb6dece684"><code>2ce032f</code></a>
feat: report max-lines-per-function violations at function head (<a
href="https://redirect.github.com/eslint/eslint/issues/20966">#20966</a>)</li>
<li><a
href="https://github.com/eslint/eslint/commit/732cb3e09d5b8b809b5f461d118a5d9fdcd6427f"><code>732cb3e</code></a>
feat: report max-nested-callbacks violations at function head (<a
href="https://redirect.github.com/eslint/eslint/issues/20967">#20967</a>)</li>
<li><a
href="https://github.com/eslint/eslint/commit/f9c138a0ba7d8e37aed39aef4a3ff1cae8c669f7"><code>f9c138a</code></a>
feat: report max-depth violations on keywords (<a
href="https://redirect.github.com/eslint/eslint/issues/20943">#20943</a>)</li>
<li><a
href="https://github.com/eslint/eslint/commit/8ae1b5b856dc031cd6c701d89a4df7da4772cd56"><code>8ae1b5b</code></a>
docs: Update README</li>
<li><a
href="https://github.com/eslint/eslint/commit/ca7eb90127dcad917188bb1342623f02a272e781"><code>ca7eb90</code></a>
docs: update Node.js prerequisites to include ICU support (<a
href="https://redirect.github.com/eslint/eslint/issues/20962">#20962</a>)</li>
<li><a
href="https://github.com/eslint/eslint/commit/b18bf58c5ac748415ffffdff2d96980fbd6a57e8"><code>b18bf58</code></a>
chore: update ecosystem plugins (<a
href="https://redirect.github.com/eslint/eslint/issues/20959">#20959</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/eslint/eslint/compare/v10.4.1...v10.5.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `js-yaml` from 4.2.0 to 5.1.0
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md">js-yaml's
changelog</a>.</em></p>
<blockquote>
<h2>[5.1.0] - 2026-06-23</h2>
<h3>Added</h3>
<ul>
<li>Collection tags can finalize an incrementally populated carrier into
a
different result value.</li>
</ul>
<h3>Changed</h3>
<ul>
<li>[breaking] <code>quoteStyle</code> now selects the preferred quote
style; use the
restored <code>forceQuotes</code> option to force quoting non-key
strings.</li>
</ul>
<h2>[5.0.0] - 2026-06-20</h2>
<h3>Added</h3>
<ul>
<li>Added named exports for schemas, tags, parser events and AST
utilities.</li>
<li>Reworked <code>JSON_SCHEMA</code> and <code>CORE_SCHEMA</code> with
spec-compliant scalar resolution
rules, and added <code>YAML11_SCHEMA</code>.</li>
<li>Added <code>realMapTag</code> for lossless mappings with non-string
and complex keys.
Object-based mappings now reject complex keys instead of stringifying
them.</li>
<li>Added <code>dump()</code> <code>transform</code> option for changing
the generated AST before
rendering.</li>
<li>Added <code>dump()</code> options <code>seqInlineFirst</code>,
<code>flowBracketPadding</code>,
<code>flowSkipCommaSpace</code>, <code>flowSkipColonSpace</code>,
<code>quoteFlowKeys</code>, <code>quoteStyle</code> and
<code>tagBeforeAnchor</code>.</li>
<li>Added formal data layers (events and AST) for modular data
pipelines.
<ul>
<li>Added low-level parser (to events), presenter and visitor APIs.</li>
</ul>
</li>
<li>Added the <a href="https://github.com/yaml/yaml-test-suite">YAML
Test Suite</a> to the
test set.</li>
</ul>
<h3>Changed</h3>
<ul>
<li>See the <a
href="https://github.com/nodeca/js-yaml/blob/master/docs/migrate_v4_to_v5.md">migration
guide</a> for upgrade notes.</li>
<li>Rewritten in TypeScript and reorganized the public API around flat
named
exports.</li>
<li>Reduced the set of exported schemas:
<ul>
<li>YAML 1.2 schemas: <code>CORE_SCHEMA</code> (loader default),
<code>JSON_SCHEMA</code>,
<code>FAILSAFE_SCHEMA</code>.</li>
<li><code>YAML11_SCHEMA</code>, a combination of all YAML 1.1 tags (YAML
1.1 does not
specify a schema, only &quot;types&quot;).</li>
</ul>
</li>
<li><code>load</code>/<code>dump</code> default behaviour is now
specified exactly via schemas:
<ul>
<li><code>load</code> uses <code>CORE_SCHEMA</code>, without
<code>!!merge</code> by default.</li>
<li><code>dump</code> uses <code>YAML11_SCHEMA</code> +
<code>CORE_SCHEMA</code> for the quoting check, to
guarantee backward compatibility by default.</li>
</ul>
</li>
<li><code>!!set</code> is now loaded as a JavaScript
<code>Set</code>.</li>
<li>Replaced the <code>Type</code> API with a tags API. Similar, but
more precise and
simpler. See examples for details. Tags can be defined via
<code>defineScalarTag()</code>, <code>defineSequenceTag()</code> and
<code>defineMappingTag()</code>, or as a
spread + override of an existing tag.</li>
<li>Renamed <code>Schema.extend()</code> to
<code>Schema.withTags()</code>.</li>
<li>Expanded YAML 1.2 conformance and improved handling of directives,
document
markers, block keys, multiline scalars, tag syntax and other
things.</li>
<li><code>load()</code> now throws on empty input instead of returning
<code>undefined</code>.</li>
<li>Moved browser builds to the <code>js-yaml/browser</code>
export.</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/nodeca/js-yaml/commit/f1e45cd201de162cc388a5175717eddf0743d367"><code>f1e45cd</code></a>
5.1.0 released</li>
<li><a
href="https://github.com/nodeca/js-yaml/commit/53b22be4fe05ea668b2420b142b424d360f6e2cf"><code>53b22be</code></a>
Fix constructor coverage</li>
<li><a
href="https://github.com/nodeca/js-yaml/commit/a1eaa2bce1ce5738d46a918b1f3a228b9fa0bdbd"><code>a1eaa2b</code></a>
Fix quote style options and restore forceQuotes</li>
<li><a
href="https://github.com/nodeca/js-yaml/commit/0532e7d23fff763f07ce166bef0f3b0906f26597"><code>0532e7d</code></a>
Add finalizers for immutable collection tags</li>
<li><a
href="https://github.com/nodeca/js-yaml/commit/9f00b91cdc293f3dfcd017d29dbc413ee98a5c70"><code>9f00b91</code></a>
tests: drop the rest of issues tests, move a small fraction of useful
checks ...</li>
<li><a
href="https://github.com/nodeca/js-yaml/commit/6be5d46c88f4caed3103e83075c2eb4aab8770fd"><code>6be5d46</code></a>
tests: drop not actual or duplicating issue tests (covered in other
places)</li>
<li><a
href="https://github.com/nodeca/js-yaml/commit/a7c9766f0d79e6506e119dbe91b43deb2d5f8879"><code>a7c9766</code></a>
Fix !!pairs coverage</li>
<li><a
href="https://github.com/nodeca/js-yaml/commit/75148bc4f5eb69b3d338e1c355d8bb2dba5bdf34"><code>75148bc</code></a>
5.0.0 released</li>
<li><a
href="https://github.com/nodeca/js-yaml/commit/704b25d29229c52e66b824bfc1908d8f3ba3a45e"><code>704b25d</code></a>
Quote document markers followed by whitespace</li>
<li><a
href="https://github.com/nodeca/js-yaml/commit/42dea284430b1077f95a326f14db422b19bedecc"><code>42dea28</code></a>
Support complex !!pairs keys with realMapTag</li>
<li>Additional commits viewable in <a
href="https://github.com/nodeca/js-yaml/compare/4.2.0...5.1.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `recharts` from 3.8.1 to 3.9.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/recharts/recharts/releases">recharts's
releases</a>.</em></p>
<blockquote>
<h2>v3.9.0</h2>
<h2>What's Changed</h2>
<h3>Animations</h3>
<p>3.9 comes with new animations! There are several bug fixes and what's
best, all animations are now fully customizable.</p>
<p>See the animations guide on <a
href="https://recharts.github.io/en-US/guide/animations/">https://recharts.github.io/en-US/guide/animations/</a></p>
<ul>
<li>Animation guide by <a
href="https://github.com/PavelVanecek"><code>@​PavelVanecek</code></a>
in <a
href="https://redirect.github.com/recharts/recharts/pull/7179">recharts/recharts#7179</a></li>
<li>Animation tests by <a
href="https://github.com/PavelVanecek"><code>@​PavelVanecek</code></a>
in <a
href="https://redirect.github.com/recharts/recharts/pull/7255">recharts/recharts#7255</a></li>
<li>New animation props by <a
href="https://github.com/PavelVanecek"><code>@​PavelVanecek</code></a>
in <a
href="https://redirect.github.com/recharts/recharts/pull/7215">recharts/recharts#7215</a></li>
<li>test: cover legacy animation length changes by <a
href="https://github.com/PavelVanecek"><code>@​PavelVanecek</code></a>
in <a
href="https://redirect.github.com/recharts/recharts/pull/7283">recharts/recharts#7283</a></li>
<li>test: add sparse animation path tests for Line component by <a
href="https://github.com/PavelVanecek"><code>@​PavelVanecek</code></a>
in <a
href="https://redirect.github.com/recharts/recharts/pull/7295">recharts/recharts#7295</a></li>
<li>Export and document interpolate function by <a
href="https://github.com/PavelVanecek"><code>@​PavelVanecek</code></a>
in <a
href="https://redirect.github.com/recharts/recharts/pull/7293">recharts/recharts#7293</a></li>
<li>test: enhance line animation tests for ComposedChart and responsive
by <a
href="https://github.com/PavelVanecek"><code>@​PavelVanecek</code></a>
in <a
href="https://redirect.github.com/recharts/recharts/pull/7289">recharts/recharts#7289</a></li>
<li>Manual animations on website by <a
href="https://github.com/PavelVanecek"><code>@​PavelVanecek</code></a>
in <a
href="https://redirect.github.com/recharts/recharts/pull/7483">recharts/recharts#7483</a></li>
<li>Add new example where chart animates by scroll by <a
href="https://github.com/PavelVanecek"><code>@​PavelVanecek</code></a>
in <a
href="https://redirect.github.com/recharts/recharts/pull/7484">recharts/recharts#7484</a></li>
<li>fix: preserve single-value line dash gaps during animation by <a
href="https://github.com/puneetdixit200"><code>@​puneetdixit200</code></a>
in <a
href="https://redirect.github.com/recharts/recharts/pull/7405">recharts/recharts#7405</a></li>
<li>Add animate-by-scroll example and update docs by <a
href="https://github.com/PavelVanecek"><code>@​PavelVanecek</code></a>
in <a
href="https://redirect.github.com/recharts/recharts/pull/7487">recharts/recharts#7487</a></li>
<li>Add custom fillOpacity on hover website example by <a
href="https://github.com/PavelVanecek"><code>@​PavelVanecek</code></a>
in <a
href="https://redirect.github.com/recharts/recharts/pull/7489">recharts/recharts#7489</a></li>
<li>honorable mention to <a
href="https://github.com/robjampar"><code>@​robjampar</code></a> for PR
<a
href="https://redirect.github.com/recharts/recharts/pull/6973">recharts/recharts#6973</a>
which ended up declined but it introduced the starting idea for the new
animation props</li>
</ul>
<h3>New features other than animations</h3>
<ul>
<li>Expose and document chart layout hooks and layout types in public
API by <a href="https://github.com/Copilot"><code>@​Copilot</code></a>
in <a
href="https://redirect.github.com/recharts/recharts/pull/7265">recharts/recharts#7265</a></li>
<li>feat: allow HTML attributes passthrough on ResponsiveContainer by <a
href="https://github.com/techcodie"><code>@​techcodie</code></a> in <a
href="https://redirect.github.com/recharts/recharts/pull/7168">recharts/recharts#7168</a></li>
<li>feat: add nodeInset and nodeGap properties to Treemap for better la…
by <a href="https://github.com/MaximSrour"><code>@​MaximSrour</code></a>
in <a
href="https://redirect.github.com/recharts/recharts/pull/7044">recharts/recharts#7044</a></li>
<li>feat(PieChart): add dataKey to Legend payload by <a
href="https://github.com/Harikrushn9118"><code>@​Harikrushn9118</code></a>
in <a
href="https://redirect.github.com/recharts/recharts/pull/7137">recharts/recharts#7137</a></li>
</ul>
<h3>Bugfixes</h3>
<ul>
<li>fix: preserve valid falsy custom names (0, &quot;&quot;) in tooltips
by <a href="https://github.com/vamsi2246"><code>@​vamsi2246</code></a>
in <a
href="https://redirect.github.com/recharts/recharts/pull/7175">recharts/recharts#7175</a></li>
<li>fix(ResponsiveContainer): Fix erroneous console warning on init by
<a href="https://github.com/andypoorman"><code>@​andypoorman</code></a>
in <a
href="https://redirect.github.com/recharts/recharts/pull/7174">recharts/recharts#7174</a></li>
<li>fix(DataUtils): improve isPercent validation to exclude invalid
formats by <a
href="https://github.com/vamsi2246"><code>@​vamsi2246</code></a> in <a
href="https://redirect.github.com/recharts/recharts/pull/7178">recharts/recharts#7178</a></li>
<li>fix(BarChart): render stacked bars when all values are 0 (<a
href="https://redirect.github.com/recharts/recharts/issues/6235">#6235</a>)
by <a
href="https://github.com/andypoorman"><code>@​andypoorman</code></a> in
<a
href="https://redirect.github.com/recharts/recharts/pull/7199">recharts/recharts#7199</a></li>
<li>fix(Sankey): prevent NaN node positions when link values sum to zero
by <a href="https://github.com/Mridul012"><code>@​Mridul012</code></a>
in <a
href="https://redirect.github.com/recharts/recharts/pull/7185">recharts/recharts#7185</a></li>
<li>fix(Funnel): prevent NaN coordinate layout crash when all values are
zero by <a
href="https://github.com/Mridul012"><code>@​Mridul012</code></a> in <a
href="https://redirect.github.com/recharts/recharts/pull/7184">recharts/recharts#7184</a></li>
<li>fixes an issue where XAxis and YAxis padding were ignored by the
clipping mask when allowDataOverflow={true} was used alongside a
restricted domain by <a
href="https://github.com/emiedonmokumo"><code>@​emiedonmokumo</code></a>
in <a
href="https://redirect.github.com/recharts/recharts/pull/7232">recharts/recharts#7232</a></li>
<li>fix: use originalDataIndex for tooltip dispatch in Bar by <a
href="https://github.com/mayrang"><code>@​mayrang</code></a> in <a
href="https://redirect.github.com/recharts/recharts/pull/7273">recharts/recharts#7273</a></li>
<li>fix: resolve TypeScript 6 deprecation errors in tsconfig files by <a
href="https://github.com/shreedharbhat98"><code>@​shreedharbhat98</code></a>
in <a
href="https://redirect.github.com/recharts/recharts/pull/7285">recharts/recharts#7285</a></li>
<li>fix(bar): use Math.round instead of bitwise truncation for bar
positioning by <a
href="https://github.com/EduardF1"><code>@​EduardF1</code></a> in <a
href="https://redirect.github.com/recharts/recharts/pull/7297">recharts/recharts#7297</a></li>
<li>fix(types): propagate Tooltip types in chart helper contexts by <a
href="https://github.com/mixelburg"><code>@​mixelburg</code></a> in <a
href="https://redirect.github.com/recharts/recharts/pull/7125">recharts/recharts#7125</a></li>
<li>fix(Legend): prevent overlap with chart on container resize by <a
href="https://github.com/maroKanatani"><code>@​maroKanatani</code></a>
in <a
href="https://redirect.github.com/recharts/recharts/pull/7201">recharts/recharts#7201</a></li>
<li>test(YAxis): failing repro for <a
href="https://redirect.github.com/recharts/recharts/issues/7362">#7362</a>
— function domain doesn't render ticks on empty/all-null data by <a
href="https://github.com/nlenepveu"><code>@​nlenepveu</code></a> in <a
href="https://redirect.github.com/recharts/recharts/pull/7384">recharts/recharts#7384</a></li>
</ul>
<h3>Tree-shaking</h3>
<p>We now have focused tree-shaking tests that allow us to observe
exactly which components end up in the final bundle and why. I have also
removed some unnecessary loops and you should see the final bundle size
decrease somewhat as a result.</p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/recharts/recharts/commit/8c1cce725956a036949471eba392ac0cc20189a8"><code>8c1cce7</code></a>
v3.9.0 (<a
href="https://redirect.github.com/recharts/recharts/issues/7490">#7490</a>)</li>
<li><a
href="https://github.com/recharts/recharts/commit/e5fe9bb2fba18dc96c64b10fd4a7c4a4bdc86d1f"><code>e5fe9bb</code></a>
Add custom fillOpacity on hover website example (<a
href="https://redirect.github.com/recharts/recharts/issues/7489">#7489</a>)</li>
<li><a
href="https://github.com/recharts/recharts/commit/ad1590f256d6e7484890326282935576824cdce6"><code>ad1590f</code></a>
Add test for Pie and Legend animation (<a
href="https://redirect.github.com/recharts/recharts/issues/7488">#7488</a>)</li>
<li><a
href="https://github.com/recharts/recharts/commit/337edbd371ace0551068cbd9591b9ef18fee0ae3"><code>337edbd</code></a>
Add animate-by-scroll example and update docs (<a
href="https://redirect.github.com/recharts/recharts/issues/7487">#7487</a>)</li>
<li><a
href="https://github.com/recharts/recharts/commit/0063aa486281e28ebbceeeda0102ba9c1dc1b6ff"><code>0063aa4</code></a>
fix: preserve single-value line dash gaps during animation (<a
href="https://redirect.github.com/recharts/recharts/issues/7405">#7405</a>)</li>
<li><a
href="https://github.com/recharts/recharts/commit/6dbe130b8908cc09f6096d0b78d117b93b8335f4"><code>6dbe130</code></a>
Add new example where chart animates by scroll (<a
href="https://redirect.github.com/recharts/recharts/issues/7484">#7484</a>)</li>
<li><a
href="https://github.com/recharts/recharts/commit/a2c4171608f2608e9025204c6c3fdb3b459c5c87"><code>a2c4171</code></a>
Manual animations on website (<a
href="https://redirect.github.com/recharts/recharts/issues/7483">#7483</a>)</li>
<li><a
href="https://github.com/recharts/recharts/commit/c88f5f36f38be0c3d0cab6dad5e7f8f167b7f1bb"><code>c88f5f3</code></a>
Simplify and export some of the new animation props (<a
href="https://redirect.github.com/recharts/recharts/issues/7481">#7481</a>)</li>
<li><a
href="https://github.com/recharts/recharts/commit/410cf5cf063f521ad9b84ed21143c39cc113d8cb"><code>410cf5c</code></a>
Renaming some of the animation props (<a
href="https://redirect.github.com/recharts/recharts/issues/7477">#7477</a>)</li>
<li><a
href="https://github.com/recharts/recharts/commit/a1b89c6c798c3e6294a166f2a199baf3f991f128"><code>a1b89c6</code></a>
chore(deps-dev): bump undici from 6.26.0 to 6.27.0 (<a
href="https://redirect.github.com/recharts/recharts/issues/7475">#7475</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/recharts/recharts/compare/v3.8.1...v3.9.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `baseline-browser-mapping` from 2.10.33 to 2.10.38
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/web-platform-dx/baseline-browser-mapping/releases">baseline-browser-mapping's
releases</a>.</em></p>
<blockquote>
<h2>v2.9.3 - remove <code>process.loadEnvFile()</code></h2>
<h2>What's Changed</h2>
<ul>
<li>Remove process.loadEnfFile() from main script by <a
href="https://github.com/tonypconway"><code>@​tonypconway</code></a> in
<a
href="https://redirect.github.com/web-platform-dx/baseline-browser-mapping/pull/112">web-platform-dx/baseline-browser-mapping#112</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/web-platform-dx/baseline-browser-mapping/compare/v2.9.2...v2.9.3">https://github.com/web-platform-dx/baseline-browser-mapping/compare/v2.9.2...v2.9.3</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/web-platform-dx/baseline-browser-mapping/commit/37f3dae1c0142f522858bc0f40084af1879fd46c"><code>37f3dae</code></a>
Patch to 2.10.38 because browser or feature data changed</li>
<li><a
href="https://github.com/web-platform-dx/baseline-browser-mapping/commit/c5c28415598c49f679b1a77794a286ed9e00c315"><code>c5c2841</code></a>
Browser or feature data changed</li>
<li><a
href="https://github.com/web-platform-dx/baseline-browser-mapping/commit/14903f7eeaacd05bd2353f411d55aa8a72370a62"><code>14903f7</code></a>
Updating static site</li>
<li><a
href="https://github.com/web-platform-dx/baseline-browser-mapping/commit/2cfe7fc23acc6fe68d99f55d1dfa58370938ec0a"><code>2cfe7fc</code></a>
Patch to 2.10.37 because browser or feature data changed</li>
<li><a
href="https://github.com/web-platform-dx/baseline-browser-mapping/commit/48e5a7c4a4013a11b08c73cac230c11b2b557130"><code>48e5a7c</code></a>
Browser or feature data changed</li>
<li><a
href="https://github.com/web-platform-dx/baseline-browser-mapping/commit/ba5507374281bf5d9b3697b392b5a2173bcc5c8b"><code>ba55073</code></a>
Updating static site</li>
<li><a
href="https://github.com/web-platform-dx/baseline-browser-mapping/commit/df118b243455c9c65b2a212eeb5efff1a9a5d18e"><code>df118b2</code></a>
Patch to 2.10.36 because browser or feature data changed</li>
<li><a
href="https://github.com/web-platform-dx/baseline-browser-mapping/commit/c2663f17c73951bb3f586eb38f787018308ba446"><code>c2663f1</code></a>
Browser or feature data changed</li>
<li><a
href="https://github.com/web-platform-dx/baseline-browser-mapping/commit/221a2665ab34e99061ebae5c8232016a49c34677"><code>221a266</code></a>
Updating static site</li>
<li><a
href="https://github.com/web-platform-dx/baseline-browser-mapping/commit/d358b780b9446896a4bc0b2032cd35fbf73239c8"><code>d358b78</code></a>
Patch to 2.10.35 because browser or feature data changed</li>
<li>Additional commits viewable in <a
href="https://github.com/web-platform-dx/baseline-browser-mapping/compare/v2.10.33...v2.10.38">compare
view</a></li>
</ul>
</details>
<br />


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 <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-06 13:22:19 -05:00
Sebastian Spaink f6092b9ce4 add --format flag for proto/JSON plan bundles (#8825)
This change adds a new flag for emitting plan bundles in the new protobuf wire format. `opa build --format=json|proto`. With `--format=proto`, the bundle contains `/plan.pb` and `/.manifest.pb` in place of `/plan.json`and `/.manifest`. Bundle Reader auto-detects both forms; mixed-format bundles are rejected at read, merge, and write time.

Signed-off-by: Sebastian Spaink <sebastianspaink@gmail.com>
2026-07-06 12:50:33 -05:00
Stephan Renatus d7a9d913f8 compile: preserve package annotations in wasm bundle builds (#8855)
pruneBundleEntrypoints was removing the METADATA block from modules
whose package path matched the entrypoint. The original code explicitly
guarded against this—packages are always retained in the bundle so their
annotations should be too—but the guard was lost during a refactor in
39a4c0ef43.

Fixes #8854

Signed-off-by: Stephan Renatus <stephan.renatus@gmail.com>
2026-07-03 14:56:49 +02:00
Anders Eknert 193172daf1 Use more precise return types for object.* builtins
A bit surprising how not a single test seems to fail from this change 😅
I've added one to at least verify that the type checker does a little
better now than before. External tools like Regal can do even better :)

Fixes #8692

Signed-off-by: Anders Eknert <anders.eknert@apple.com>
2026-07-03 14:02:17 +02:00
Stephan Renatus defec76824 Integrate Patch v1.18.2 (#8852)
Signed-off-by: Anders Eknert <anders.eknert@apple.com>
Signed-off-by: Stephan Renatus <stephan.renatus@gmail.com>
Co-authored-by: Anders Eknert <anders.eknert@apple.com>
2026-07-03 09:20:49 +02:00
Anders Eknert b4a7a19882 perf: avoid allocations with custom Atoi and Atoi64 helpers (#8758)
strconv.Atoi was called frequently in OPA, and its failure case is
expensive. This custom implementation is slightly faster for the
successful case, but more importantly much more efficient in the failure
case, allocating nothing for any given input string.

Signed-off-by: Anders Eknert <anders.eknert@apple.com>
2026-07-02 10:14:17 +00:00
Anders Eknert e5679d92ce Fix regression in fix of #8557 (#8845)
The fix that shipped in v1.18.0 had the formatter not just honor
newlines when formatting single-item collections, but had them enforced.
This is quite a disruptive change leading to previously formatted files
to have potentially hundreds of changes upon reformat. This fix ensures
that only existing newlines in the source determine whether a
single-item collection should be formatted across a single or multiple
lines.

Signed-off-by: Anders Eknert <anders.eknert@apple.com>
2026-07-02 09:06:47 +00:00
dependabot[bot] b3ecf132c6 build(deps): bump pg in /e2e/api/compile/prisma in the e2e-prisma group
Bumps the e2e-prisma group in /e2e/api/compile/prisma with 1 update: [pg](https://github.com/brianc/node-postgres/tree/HEAD/packages/pg).


Updates `pg` from 8.21.0 to 8.22.0
- [Changelog](https://github.com/brianc/node-postgres/blob/master/CHANGELOG.md)
- [Commits](https://github.com/brianc/node-postgres/commits/pg@8.22.0/packages/pg)

---
updated-dependencies:
- dependency-name: pg
  dependency-version: 8.22.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: e2e-prisma
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-02 10:07:29 +02:00
dependabot[bot] 8aa2b36fa9 build(deps): bump the dependencies group across 2 directories with 4 updates (#8836)
Bumps the dependencies group with 2 updates in the / directory:
[github.com/huandu/go-sqlbuilder](https://github.com/huandu/go-sqlbuilder)
and
[github.com/vektah/gqlparser/v2](https://github.com/vektah/gqlparser).
Bumps the dependencies group with 2 updates in the /e2e directory:
[github.com/testcontainers/testcontainers-go](https://github.com/testcontainers/testcontainers-go)
and [modernc.org/sqlite](https://gitlab.com/cznic/sqlite).

Updates `github.com/huandu/go-sqlbuilder` from 1.41.0 to 1.42.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/huandu/go-sqlbuilder/releases">github.com/huandu/go-sqlbuilder's
releases</a>.</em></p>
<blockquote>
<h2>v1.42.0</h2>
<h2>What's Changed</h2>
<ul>
<li><code>[NEW]</code>: Add<code>USING</code> to<code>DELETE</code> and
<code>SKIP LOCKED</code>/<code>NOWAIT</code> to<code>SELECT</code> by <a
href="https://github.com/webdaad"><code>@​webdaad</code></a> in <a
href="https://redirect.github.com/huandu/go-sqlbuilder/issues/239">#239</a></li>
<li><code>[FIX]</code>: <code>ILIKE</code> operator is supported by
ClickHouse but not Sqlite. Issue was raised by <a
href="https://github.com/NAlexandrov"><code>@​NAlexandrov</code></a> in
<a
href="https://redirect.github.com/huandu/go-sqlbuilder/issues/240">#240</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/webdaad"><code>@​webdaad</code></a> made
their first contribution in <a
href="https://redirect.github.com/huandu/go-sqlbuilder/pull/239">huandu/go-sqlbuilder#239</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/huandu/go-sqlbuilder/compare/v1.41.0...v1.42.0">https://github.com/huandu/go-sqlbuilder/compare/v1.41.0...v1.42.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/huandu/go-sqlbuilder/commit/345b646003cea85d5e86a54bd78d25c54f82f0e7"><code>345b646</code></a>
fix: restore module path and retract v1.42.0</li>
<li><a
href="https://github.com/huandu/go-sqlbuilder/commit/289c7205eed2fa8a6a5954595db4dc66ae835dc8"><code>289c720</code></a>
fix <a
href="https://redirect.github.com/huandu/go-sqlbuilder/issues/240">#240</a>:
ILIKE is supported by ClickHouse but not Sqlite</li>
<li><a
href="https://github.com/huandu/go-sqlbuilder/commit/eb02267b1c23923ee0e3a49b71418d0aa8966cd3"><code>eb02267</code></a>
Merge pull request <a
href="https://redirect.github.com/huandu/go-sqlbuilder/issues/239">#239</a>
from webdaad/master</li>
<li><a
href="https://github.com/huandu/go-sqlbuilder/commit/d5110f9dd25e549ddab05150e5c542f4a06318b2"><code>d5110f9</code></a>
feat(select): add SKIP LOCKED</li>
<li><a
href="https://github.com/huandu/go-sqlbuilder/commit/0c2aa0fb5257b5808681bf3ff10e89d22252a62d"><code>0c2aa0f</code></a>
feat(delete): add using for postgres database</li>
<li>See full diff in <a
href="https://github.com/huandu/go-sqlbuilder/compare/v1.41.0...v1.42.1">compare
view</a></li>
</ul>
</details>
<br />

Updates `github.com/vektah/gqlparser/v2` from 2.5.34 to 2.5.35
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/vektah/gqlparser/releases">github.com/vektah/gqlparser/v2's
releases</a>.</em></p>
<blockquote>
<h2>v2.5.35</h2>
<h2>What's Changed</h2>
<ul>
<li>Migrate yaml dependency to go.yaml.in/yaml/v3 by <a
href="https://github.com/atzedus"><code>@​atzedus</code></a> in <a
href="https://redirect.github.com/vektah/gqlparser/pull/437">vektah/gqlparser#437</a></li>
<li>fix nullable nested list variable coercion by <a
href="https://github.com/jbellenger"><code>@​jbellenger</code></a> in <a
href="https://redirect.github.com/vektah/gqlparser/pull/439">vektah/gqlparser#439</a></li>
<li>build(deps-dev): bump prettier from 3.8.3 to 3.8.4 in
/validator/imported in the actions-deps group by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/vektah/gqlparser/pull/438">vektah/gqlparser#438</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/vektah/gqlparser/compare/v2.5.34...v2.5.35">https://github.com/vektah/gqlparser/compare/v2.5.34...v2.5.35</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/vektah/gqlparser/commit/e3a8d380b01be8704b7e43762413c396b77ec4f3"><code>e3a8d38</code></a>
Fix nullable nested list variable coercion (<a
href="https://redirect.github.com/vektah/gqlparser/issues/439">#439</a>)</li>
<li><a
href="https://github.com/vektah/gqlparser/commit/7edd6f710b8df76f817b2aa08f64d1bf72f71691"><code>7edd6f7</code></a>
build(deps-dev): bump prettier (<a
href="https://redirect.github.com/vektah/gqlparser/issues/438">#438</a>)</li>
<li><a
href="https://github.com/vektah/gqlparser/commit/5112c6b64846a7aa294ebff6776026c19b587e13"><code>5112c6b</code></a>
build(deps): migrate yaml import to go.yaml.in/yaml/v3 (<a
href="https://redirect.github.com/vektah/gqlparser/issues/437">#437</a>)</li>
<li>See full diff in <a
href="https://github.com/vektah/gqlparser/compare/v2.5.34...v2.5.35">compare
view</a></li>
</ul>
</details>
<br />

Updates `github.com/testcontainers/testcontainers-go` from 0.42.0 to
0.43.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/testcontainers/testcontainers-go/releases">github.com/testcontainers/testcontainers-go's
releases</a>.</em></p>
<blockquote>
<h2>v0.43.0</h2>
<h1>What's Changed</h1>
<h2>⚠️ Breaking Changes</h2>
<ul>
<li>chore(wait)!: change url callback in wait.ForSQL to accept
network.Port (<a
href="https://redirect.github.com/testcontainers/testcontainers-go/issues/3650">#3650</a>)
<a href="https://github.com/thaJeztah"><code>@​thaJeztah</code></a></li>
</ul>
<blockquote>
<p>Users of <code>wait.ForSQL</code> need to follow the new API
contract, using Moby's <code>network.Port</code> instead of
<code>string</code> when building the callback function to check the
URL. Please see <a
href="https://golang.testcontainers.org/features/wait/sql/">https://golang.testcontainers.org/features/wait/sql/</a></p>
</blockquote>
<ul>
<li>feat!: add PullImageWithPlatform to DockerProvider (<a
href="https://redirect.github.com/testcontainers/testcontainers-go/issues/3710">#3710</a>)
<a
href="https://github.com/blueprismo"><code>@​blueprismo</code></a></li>
</ul>
<blockquote>
<p>Users implementing their own
<code>testcontainers.ImageProvider</code> need to implement the new
<code>PullImageWithPlatform</code> method introduced by this PR.</p>
</blockquote>
<h2>🚀 Features</h2>
<ul>
<li>feat(k3s): pull image opts (<a
href="https://redirect.github.com/testcontainers/testcontainers-go/issues/3716">#3716</a>)
<a
href="https://github.com/blueprismo"><code>@​blueprismo</code></a></li>
<li>feat(wait): implement AnyMultiStrategy: ForAny equivalent to ForAll.
(<a
href="https://redirect.github.com/testcontainers/testcontainers-go/issues/3719">#3719</a>)
<a href="https://github.com/jeanbza"><code>@​jeanbza</code></a></li>
<li>feat(eventhubs): add WithAzuriteContainer and functional-options
config builder (<a
href="https://redirect.github.com/testcontainers/testcontainers-go/issues/3722">#3722</a>)
<a
href="https://github.com/mdelapenya"><code>@​mdelapenya</code></a></li>
<li>feat!: add PullImageWithPlatform to DockerProvider (<a
href="https://redirect.github.com/testcontainers/testcontainers-go/issues/3710">#3710</a>)
<a
href="https://github.com/blueprismo"><code>@​blueprismo</code></a></li>
<li>feat(modules/dex): add Dex OIDC provider module (<a
href="https://redirect.github.com/testcontainers/testcontainers-go/issues/3659">#3659</a>)
<a href="https://github.com/guilycst"><code>@​guilycst</code></a></li>
</ul>
<h2>🐛 Bug Fixes</h2>
<ul>
<li>fix(security): remove debug code that leaks Docker credentials (<a
href="https://redirect.github.com/testcontainers/testcontainers-go/issues/3721">#3721</a>)
<a
href="https://github.com/mdelapenya"><code>@​mdelapenya</code></a></li>
<li>fix(ollama): align local exec test with Ollama 0.30.6 log format (<a
href="https://redirect.github.com/testcontainers/testcontainers-go/issues/3715">#3715</a>)
<a
href="https://github.com/mdelapenya"><code>@​mdelapenya</code></a></li>
<li>fix: close temp file handle before removal (<a
href="https://redirect.github.com/testcontainers/testcontainers-go/issues/3672">#3672</a>)
<a href="https://github.com/acouvreur"><code>@​acouvreur</code></a></li>
<li>fix(compose): close docker clients to prevent goroutine leaks (<a
href="https://redirect.github.com/testcontainers/testcontainers-go/issues/3661">#3661</a>)
<a
href="https://github.com/mdelapenya"><code>@​mdelapenya</code></a></li>
<li>fix: wait for log production goroutine to drain on stop (<a
href="https://redirect.github.com/testcontainers/testcontainers-go/issues/3660">#3660</a>)
<a
href="https://github.com/mdelapenya"><code>@​mdelapenya</code></a></li>
</ul>
<h2>📖 Documentation</h2>
<ul>
<li>chore: update usage metrics (2026-06) (<a
href="https://redirect.github.com/testcontainers/testcontainers-go/issues/3714">#3714</a>)
@<a
href="https://github.com/apps/github-actions">github-actions[bot]</a></li>
</ul>
<h2>🧹 Housekeeping</h2>
<ul>
<li>chore(wait)!: change url callback in wait.ForSQL to accept
network.Port (<a
href="https://redirect.github.com/testcontainers/testcontainers-go/issues/3650">#3650</a>)
<a href="https://github.com/thaJeztah"><code>@​thaJeztah</code></a></li>
<li>chore: update usage metrics (2026-05) (<a
href="https://redirect.github.com/testcontainers/testcontainers-go/issues/3670">#3670</a>)
@<a
href="https://github.com/apps/github-actions">github-actions[bot]</a></li>
<li>chore: remove cgroupnsMode setting from K3s container configuration
(<a
href="https://redirect.github.com/testcontainers/testcontainers-go/issues/3653">#3653</a>)
<a href="https://github.com/lixin9311"><code>@​lixin9311</code></a></li>
</ul>
<h2>📦 Dependency updates</h2>
<ul>
<li>chore(deps): update dependencies to latest versions in go.mod and
go.sum (<a
href="https://redirect.github.com/testcontainers/testcontainers-go/issues/3729">#3729</a>)
<a
href="https://github.com/Steven-Harris"><code>@​Steven-Harris</code></a></li>
<li>chore: bump sshd-docker image to 1.4.0 (<a
href="https://redirect.github.com/testcontainers/testcontainers-go/issues/3727">#3727</a>)
<a
href="https://github.com/mdelapenya"><code>@​mdelapenya</code></a></li>
<li>chore(deps): bump Ryuk to v0.14.0 (<a
href="https://redirect.github.com/testcontainers/testcontainers-go/issues/3313">#3313</a>)
<a
href="https://github.com/mdelapenya"><code>@​mdelapenya</code></a></li>
<li>chore(deps): bump github.com/shirou/gopsutil/v4 from 4.26.4 to
4.26.5 (<a
href="https://redirect.github.com/testcontainers/testcontainers-go/issues/3713">#3713</a>)
@<a href="https://github.com/apps/dependabot">dependabot[bot]</a></li>
<li>chore(deps): bump golang.org/x/sys from 0.44.0 to 0.45.0 (<a
href="https://redirect.github.com/testcontainers/testcontainers-go/issues/3712">#3712</a>)
@<a href="https://github.com/apps/dependabot">dependabot[bot]</a></li>
<li>chore(deps): bump mkdocs-include-markdown-plugin from 7.2.2 to 7.3.0
(<a
href="https://redirect.github.com/testcontainers/testcontainers-go/issues/3711">#3711</a>)
@<a href="https://github.com/apps/dependabot">dependabot[bot]</a></li>
<li>chore(deps): bump slackapi/slack-github-action from 2.1.1 to 3.0.3
(<a
href="https://redirect.github.com/testcontainers/testcontainers-go/issues/3677">#3677</a>)
@<a href="https://github.com/apps/dependabot">dependabot[bot]</a></li>
<li>chore(deps): bump idna from 3.11 to 3.15 (<a
href="https://redirect.github.com/testcontainers/testcontainers-go/issues/3708">#3708</a>)
@<a href="https://github.com/apps/dependabot">dependabot[bot]</a></li>
<li>chore(deps): bump github.com/containerd/containerd/v2 from 2.2.2 to
2.2.4 in /modules/compose (<a
href="https://redirect.github.com/testcontainers/testcontainers-go/issues/3709">#3709</a>)
@<a href="https://github.com/apps/dependabot">dependabot[bot]</a></li>
<li>chore(deps): bump urllib3 from 2.6.3 to 2.7.0 (<a
href="https://redirect.github.com/testcontainers/testcontainers-go/issues/3704">#3704</a>)
@<a href="https://github.com/apps/dependabot">dependabot[bot]</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/testcontainers/testcontainers-go/commit/0835739aaf45d6cb7eb295f0c820e6f9e92102df"><code>0835739</code></a>
chore: use new version (v0.43.0) in modules and examples</li>
<li><a
href="https://github.com/testcontainers/testcontainers-go/commit/85b6d7075d69260feb15b9d3b5bdab14d4698546"><code>85b6d70</code></a>
chore(deps): update dependencies to latest versions in go.mod and go.sum
(<a
href="https://redirect.github.com/testcontainers/testcontainers-go/issues/3729">#3729</a>)</li>
<li><a
href="https://github.com/testcontainers/testcontainers-go/commit/8360f719408c23a4f3b731be25a94b267b624a28"><code>8360f71</code></a>
feat(k3s): pull image opts (<a
href="https://redirect.github.com/testcontainers/testcontainers-go/issues/3716">#3716</a>)</li>
<li><a
href="https://github.com/testcontainers/testcontainers-go/commit/b5e70223aa57f409f7721a89d66abf5b2a453468"><code>b5e7022</code></a>
chore: bump sshd-docker image to 1.4.0 (<a
href="https://redirect.github.com/testcontainers/testcontainers-go/issues/3727">#3727</a>)</li>
<li><a
href="https://github.com/testcontainers/testcontainers-go/commit/1c05dd58a894fd52b48ab272ef6cb6aceaa57dd2"><code>1c05dd5</code></a>
chore(deps): bump Ryuk to v0.14.0 (<a
href="https://redirect.github.com/testcontainers/testcontainers-go/issues/3313">#3313</a>)</li>
<li><a
href="https://github.com/testcontainers/testcontainers-go/commit/96ab0957556c744987ad7e97f59c78c469604e10"><code>96ab095</code></a>
feat(wait): implement AnyMultiStrategy: ForAny equivalent to ForAll. (<a
href="https://redirect.github.com/testcontainers/testcontainers-go/issues/3719">#3719</a>)</li>
<li><a
href="https://github.com/testcontainers/testcontainers-go/commit/42ac7d2e9a30de22f91da9e45d6084628ae2acb2"><code>42ac7d2</code></a>
chore(wait)!: change url callback in wait.ForSQL to accept network.Port
(<a
href="https://redirect.github.com/testcontainers/testcontainers-go/issues/3650">#3650</a>)</li>
<li><a
href="https://github.com/testcontainers/testcontainers-go/commit/ab312e0088c3d615d64a4c6159805b9ab6db356d"><code>ab312e0</code></a>
chore(deps): bump github.com/shirou/gopsutil/v4 from 4.26.4 to 4.26.5
(<a
href="https://redirect.github.com/testcontainers/testcontainers-go/issues/3713">#3713</a>)</li>
<li><a
href="https://github.com/testcontainers/testcontainers-go/commit/c5c95e5f9bbc01ef374cb76f8c63c09d9add93e4"><code>c5c95e5</code></a>
chore(deps): bump golang.org/x/sys from 0.44.0 to 0.45.0 (<a
href="https://redirect.github.com/testcontainers/testcontainers-go/issues/3712">#3712</a>)</li>
<li><a
href="https://github.com/testcontainers/testcontainers-go/commit/465d00250e529349f6975e88eb30d9338c6ae991"><code>465d002</code></a>
chore(deps): bump mkdocs-include-markdown-plugin from 7.2.2 to 7.3.0 (<a
href="https://redirect.github.com/testcontainers/testcontainers-go/issues/3711">#3711</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/testcontainers/testcontainers-go/compare/v0.42.0...v0.43.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `modernc.org/sqlite` from 1.52.0 to 1.53.0
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://gitlab.com/cznic/sqlite/blob/master/CHANGELOG.md">modernc.org/sqlite's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<ul>
<li>
<p>2026-06-25 v1.54.0:</p>
<ul>
<li>Under the opt-in <code>_texttotime</code> DSN parameter, best-effort
parse date-shaped TEXT values from columns SQLite reports with an empty
declared type — aggregates and expressions over a date column
(<code>MAX(d)</code>, <code>COALESCE(d, ...)</code>,
<code>upper(d)</code>, <code>d || ''</code>), subqueries, and typeless
real columns (<code>CREATE TABLE t(x)</code>) — into
<code>time.Time</code>, instead of delivering them as a raw string that
<code>Scan</code> cannot store into a <code>*time.Time</code>. The
existing declared
<code>DATE</code>/<code>DATETIME</code>/<code>TIME</code>/<code>TIMESTAMP</code>
path is unchanged; this only adds the empty-decltype case. The
conversion is strictly best-effort: a value that does not parse as a
time falls through to the original string, so no <code>Scan</code> that
worked before can newly fail. <code>ColumnTypeScanType</code> continues
to report <code>string</code> for empty-decltype columns, since the
declared type cannot prove the column is temporal. Without
<code>_texttotime</code> the behavior is byte-for-byte unchanged.
Resolves [GitLab issue <a
href="https://gitlab.com/cznic/sqlite/issues/248">#248</a>](<a
href="https://gitlab.com/cznic/sqlite/-/issues/248">https://gitlab.com/cznic/sqlite/-/issues/248</a>).</li>
<li>See [GitLab merge request <a
href="https://gitlab.com/cznic/sqlite/issues/133">#133</a>](<a
href="https://gitlab.com/cznic/sqlite/-/merge_requests/133">https://gitlab.com/cznic/sqlite/-/merge_requests/133</a>),
thanks Ian Chechin!</li>
</ul>
</li>
<li>
<p>2026-06-21 v1.53.0:</p>
<ul>
<li>Add <strong>experimental</strong> <code>netbsd/amd64</code> support,
resolving the long-standing build break in [GitLab issue <a
href="https://gitlab.com/cznic/sqlite/issues/246">#246</a>](<a
href="https://gitlab.com/cznic/sqlite/-/issues/246">https://gitlab.com/cznic/sqlite/-/issues/246</a>).
This target is intentionally <strong>not yet listed among the supported
platforms</strong> in the package documentation: the port had been
broken for years and is only now revived, and there is as yet no
real-world experience running it under production workloads. Green CI is
not the same as battle-tested — so while the full test suite (including
the <code>pcache</code> and <code>vec</code> packages and the
<code>-race</code> concurrency test) passes on NetBSD 10.1 / Go 1.26.3,
and the entire upstream toolchain (<code>libc</code>, <code>cc</code>,
<code>ccgo</code>, <code>libz</code>, <code>libtcl8.6</code>,
<code>libsqlite3</code>, <code>libsqlite_vec</code>) is green on the
NetBSD CI builder, the target is offered for evaluation only. If you run
NetBSD, please exercise it with your own workloads and report back via
<a href="https://gitlab.com/cznic/sqlite/issues/246">#246</a>; the
intent is to promote it to a fully supported platform after a period of
broader real-world testing (on the order of a month) elapses without
surprises.</li>
<li>Implementation notes: the previously shipped
<code>lib/sqlite_netbsd_amd64.go</code> was a stale old-generator
transpile that no longer compiled (the
<code>mu.enter</code>/<code>mu.leave</code> break in <a
href="https://gitlab.com/cznic/sqlite/issues/246">#246</a>); it is
replaced by a fresh new-generator transpile consistent with every other
platform, and <code>modernc.org/sqlite/vec</code> (sqlite-vec) is
vendored and auto-registers on netbsd. Correct operation requires the
matching pinned <code>modernc.org/libc</code>, which carries two
NetBSD-specific fixes found during this work: the <code>mmap(2)</code>
<code>PAD</code>-argument ABI (without it, concurrent WAL access faults
with SIGBUS in the WAL-index shared memory) and a working
<code>abort(3)</code> (the prior stub left SQLite's crash-recovery
<code>writecrash</code> test unable to terminate by signal). As usual,
downstream modules must pin the exact <code>modernc.org/libc</code>
version this module's <code>go.mod</code> pins.</li>
<li>See [GitLab merge request <a
href="https://gitlab.com/cznic/sqlite/issues/82">#82</a>](<a
href="https://gitlab.com/cznic/sqlite/-/merge_requests/82">https://gitlab.com/cznic/sqlite/-/merge_requests/82</a>),
thanks Leonardo Taccari (<a
href="https://github.com/iamleot"><code>@​iamleot</code></a>) and Thomas
Klausner (@<em>wiz</em>)!</li>
<li>Add <strong>experimental</strong> <code>freebsd/386</code> and
<code>freebsd/arm</code> support. As with the <code>netbsd/amd64</code>
target above, these two 32-bit FreeBSD ports are intentionally
<strong>not yet listed among the supported platforms</strong> in the
package documentation: <code>freebsd/386</code> previously shipped a
stale, effectively untested SQLite 3.41 transpile, and
<code>freebsd/arm</code> is entirely new, so neither has real-world
production mileage yet. Both are now freshly transpiled at SQLite 3.53.2
consistent with every other platform, build cleanly, and pass the full
test suite (core, WAL/concurrency, and the <code>vec</code> package) on
the FreeBSD CI builders; they are offered for evaluation only. If you
run 32-bit FreeBSD, please exercise these targets with your own
workloads and report back — the intent is to promote
<code>freebsd/386</code>, <code>freebsd/arm</code>, and
<code>netbsd/amd64</code> to fully supported platforms in a future
release cycle, once a period of broader real-world testing elapses
without surprises.</li>
<li>Implementation notes: correct operation on <code>freebsd/arm</code>
requires the matching pinned <code>modernc.org/libc</code> (v1.73.4),
which fixes the per-arch <code>mmap(2)</code> <code>off_t</code>
encoding for 32-bit FreeBSD; without it the WAL shared-memory mapping
faults with SIGBUS under concurrent access, the same class of bug found
on the netbsd port. As usual, downstream modules must pin the exact
<code>modernc.org/libc</code> version this module's <code>go.mod</code>
pins.</li>
<li>See [GitLab merge request <a
href="https://gitlab.com/cznic/sqlite/issues/119">#119</a>](<a
href="https://gitlab.com/cznic/sqlite/-/merge_requests/119">https://gitlab.com/cznic/sqlite/-/merge_requests/119</a>),
thanks Olivier Cochard-Labbé (<a
href="https://github.com/ocochard"><code>@​ocochard</code></a>)!</li>
<li>Add a Go-facing wrapper for <code>SQLITE_CONFIG_PCACHE2</code>.
<code>PageCache</code> is the factory and <code>Cache</code> the
per-database instance, both idiomatic Go interfaces; <code>Page</code>
exposes the raw <code>Buf</code> and <code>Extra</code> pointers that
SQLite reads through the C pcache contract.
<code>RegisterPageCache</code> and <code>MustRegisterPageCache</code>
install the module process-globally before the first
<code>sql.Open</code>; subsequent Open calls are gated through a
one-shot <code>Xsqlite3_config(SQLITE_CONFIG_PCACHE2)</code> so a
too-late Register returns <code>ErrPageCacheTooLate</code> rather than
silently falling through to the built-in pcache1. The binding owns the
<code>sqlite3_pcache_page</code> stub and re-consults the implementation
on every Fetch, reusing the stub only when the returned
<code>Page</code> value is unchanged, which keeps a bounded/evicting
purgeable cache safe by construction.</li>
<li>See [GitLab merge request <a
href="https://gitlab.com/cznic/sqlite/issues/126">#126</a>](<a
href="https://gitlab.com/cznic/sqlite/-/merge_requests/126">https://gitlab.com/cznic/sqlite/-/merge_requests/126</a>),
thanks Ian Chechin!</li>
<li>Add <code>modernc.org/sqlite/pcache</code>, the reference page-cache
implementation that accompanies the <a
href="https://gitlab.com/cznic/sqlite/issues/126">#126</a>
<code>SQLITE_CONFIG_PCACHE2</code> wrapper. <code>pcache.New</code>
returns a <code>*Pool</code> satisfying the <code>PageCache</code>
interface; register it once with
<code>sqlite.MustRegisterPageCache(pcache.New())</code> and every
connection opened afterwards draws its pages from it. Each
<code>Pool.Create</code> mints a fresh per-database <code>Cache</code>:
a bounded, LRU-evicting page store that honours the <code>PRAGMA
cache_size</code> soft cap and releases the least-recently-unpinned page
when it must make room. Page memory — the <code>Buf</code> and
<code>Extra</code> buffers SQLite reads through — is allocated with
<code>libc.Xmalloc</code>/<code>libc.Xcalloc</code> and therefore lives
off the Go heap, which keeps SQLite's interior pointer arithmetic on the
page extras from tripping the race detector's checkptr enforcement.
<code>Pool.Stats</code> reports aggregate lifetime counters (hits,
misses, allocs, evictions, rekeys, truncates, caches) across every cache
a Pool has created, so hit/miss/eviction behaviour is observable without
instrumenting individual caches. Cross-connection page sharing is out of
scope for now; each <code>Create</code> returns an independent
per-database cache.</li>
<li>Validated end-to-end against the <a
href="https://gitlab.com/cznic/sqlite/issues/126">#126</a> stress
workload (<code>cache_size=16</code>, 4000 BLOB rows with DELETE and
<code>incremental_vacuum</code>, <code>integrity_check</code> clean
under <code>-race</code>) and benchmarked for the memory-utilization
goal tracked in [GitLab issue <a
href="https://gitlab.com/cznic/sqlite/issues/204">#204</a>](<a
href="https://gitlab.com/cznic/sqlite/-/issues/204">https://gitlab.com/cznic/sqlite/-/issues/204</a>).</li>
<li>See [GitLab merge request <a
href="https://gitlab.com/cznic/sqlite/issues/127">#127</a>](<a
href="https://gitlab.com/cznic/sqlite/-/merge_requests/127">https://gitlab.com/cznic/sqlite/-/merge_requests/127</a>),
thanks Ian Chechin!</li>
<li>Tighten the <code>modernc.org/sqlite/pcache</code> reference
implementation per cznic's !127 review follow-ups. Adds
<code>Stats.EasyRefusals</code>, a per-Pool counter for the cases where
<code>FetchCreateEasy</code> returns nil at cap; SQLite reacts to a
refusal by spilling dirty pages and retrying with
<code>FetchCreateForce</code>, so the new field is a direct proxy for
the I/O pressure the strict Easy contract imposes vs pcache1's
recycle-without-spill behavior. <code>BenchmarkPoolEvictionChurn</code>
was reworked to drive a rotating-residue DELETE (<code>k % 3 = i %
3</code>) and re-insert a matching batch each cycle so the spill
pressure recurs and <code>easy-refusals/op</code> scales with
<code>b.N</code> instead of capping at the seed's one-time first-cycle
cost; both existing benchmarks now report <code>easy-refusals/op</code>
alongside the page-allocs/evictions metrics.
<code>Stats.Evictions</code> documentation was tightened to match the
actual behavior (counts LRU eviction, <code>Unpin(discard=true)</code>,
<code>Shrink</code> releases, and <code>Unpin(discard=false)</code>
trimming back to target after a <code>FetchCreateForce</code>
overcommit; bulk frees from <code>Truncate</code>, <code>Rekey</code>
collisions, and <code>Destroy</code> are not counted). The
<code>TestPoolRoundTripIntegrity</code> comment claiming the workload
exercises <code>xRekey</code> ~15 times has been corrected; the SQL
surface does not reliably emit xRekey here, and that codepath is covered
by the unit tests instead.</li>
<li>See [GitLab merge request <a
href="https://gitlab.com/cznic/sqlite/issues/130">#130</a>](<a
href="https://gitlab.com/cznic/sqlite/-/merge_requests/130">https://gitlab.com/cznic/sqlite/-/merge_requests/130</a>),
thanks Ian Chechin!</li>
<li>Make <code>modernc.org/sqlite/pcache</code> <code>-race</code>-clean
under SQLite's <code>cache=shared</code> mode. The pool already runs
correctly under shared-cache because every callback into a given
<code>Cache</code> is serialised internally by SQLite's
<code>sqlite3BtreeEnter</code> on the <code>BtShared</code> mutex;
verified empirically with a lock-free in-flight probe (max-in-flight = 1
on the canonical two-connection workload, 4 on a positive control with
goroutines hitting the cache directly). However the Go race detector
does not recognise SQLite's libc mutex as a happens-before edge and
reports false-positive races on <code>Fetch</code> vs <code>Unpin</code>
reads/writes of the per-cache state, which surfaces as <code>DATA
RACE</code> failures for any user who registers the pool and runs their
suite under <code>-race</code>. A <code>sync.Mutex</code> on the
<code>cache</code> type is now taken on every public method
(<code>SetSize</code>, <code>PageCount</code>, <code>Fetch</code>,
<code>Unpin</code>, <code>Rekey</code>, <code>Truncate</code>,
<code>Destroy</code>, <code>Shrink</code>), always. On the common
non-shared-cache path the lock is uncontended (one atomic CAS per
Lock/Unlock pair, negligible next to the SQLite work it bookends); on
the shared-cache path it just rubber-stamps the order SQLite's
<code>BtShared</code> mutex already established. A new
<code>e2e_test.go</code> <code>TestSharedCacheTwoConns_Integrity</code>
drives two <code>sql.Conn</code> against the same
<code>cache=shared</code> URI with concurrent writers and asserts
<code>PRAGMA integrity_check = ok</code> under <code>-race</code>;
passes cleanly with the lock, would surface the false-positive without
it. Design notes live in <code>pcache/sharing.go</code>.</li>
<li>See [GitLab merge request <a
href="https://gitlab.com/cznic/sqlite/issues/131">#131</a>](<a
href="https://gitlab.com/cznic/sqlite/-/merge_requests/131">https://gitlab.com/cznic/sqlite/-/merge_requests/131</a>),
thanks Ian Chechin!</li>
<li>Add a Go wrapper for <code>sqlite3_db_status</code>, the
per-connection runtime counters (cache hit/miss/write/spill rates,
schema and prepared-statement memory, lookaside usage, deferred foreign
keys). <code>DBStatus</code> is an interface implemented by the driver
connection and reached through the <code>database/sql</code> escape
hatch <code>(*sql.Conn).Raw()</code>, mirroring the existing
<code>FileControl</code> surface; <code>DBStatusOp</code> is a distinct
typed enum of the <code>SQLITE_DBSTATUS_*</code> verbs so a counter from
a different op family will not compile in its place. <code>Status(op,
reset)</code> returns the <code>(current, high)</code> pair and
optionally resets the counter. This also lets
<code>modernc.org/sqlite/pcache</code> measure real I/O instead of the
<code>EasyRefusals</code> proxy: the new
<code>BenchmarkPoolSpillIO</code> reads the pager-level
<code>SQLITE_DBSTATUS_CACHE_SPILL</code>/<code>_CACHE_WRITE</code>
counters, which the pager maintains identically for pcache1 and the
pool, making the pcache1-vs-pool comparison cznic raised on the !127
review a genuine apples-to-apples measurement. On the rotating-residue
eviction-churn workload at <code>cache_size=16</code> the pool spills
~3.5x more than pcache1 (cache-spill/op 31.96 vs 8.96) for ~3% more page
writes (cache-write/op 450 vs 436) at identical hit/miss, quantifying
the I/O cost of the strict Easy contract that <code>EasyRefusals</code>
only proxied.</li>
<li>See [GitLab merge request <a
href="https://gitlab.com/cznic/sqlite/issues/132">#132</a>](<a
href="https://gitlab.com/cznic/sqlite/-/merge_requests/132">https://gitlab.com/cznic/sqlite/-/merge_requests/132</a>),
thanks Ian Chechin!</li>
<li>Add an opt-in <code>_dqs</code> DSN query parameter that disables
SQLite's double-quoted string literal compatibility quirk on a
per-connection basis. When <code>_dqs=0</code> (or any
<code>strconv.ParseBool</code> false value) is supplied, the driver
calls <code>sqlite3_db_config</code> with
<code>SQLITE_DBCONFIG_DQS_DDL</code> and
<code>SQLITE_DBCONFIG_DQS_DML</code> set to off before any statement is
prepared, so a double-quoted identifier that fails to resolve raises a
parse error instead of silently falling back to a string literal.
Absence of the parameter, or <code>_dqs=1</code>, leaves SQLite's
default behavior unchanged; existing DSNs continue to work
byte-for-byte. Resolves [GitLab issue <a
href="https://gitlab.com/cznic/sqlite/issues/61">#61</a>](<a
href="https://gitlab.com/cznic/sqlite/-/issues/61">https://gitlab.com/cznic/sqlite/-/issues/61</a>).</li>
<li>See [GitLab merge request <a
href="https://gitlab.com/cznic/sqlite/issues/128">#128</a>](<a
href="https://gitlab.com/cznic/sqlite/-/merge_requests/128">https://gitlab.com/cznic/sqlite/-/merge_requests/128</a>),
thanks Ian Chechin!</li>
<li>Add an opt-in <code>_error_rc</code> DSN query parameter for clearer
error reporting on open-time failures. When <code>_error_rc=1</code> (or
any <code>strconv.ParseBool</code> true value) is supplied, error
strings synthesised from a <code>(rc, db)</code> pair only append
<code>sqlite3_errmsg(db)</code> when
<code>sqlite3_extended_errcode(db)</code> is consistent with the
operation rc (full match first, primary code <code>&amp;0xff</code> as
fallback). On mismatch the canonical <code>sqlite3_errstr(rc)</code> is
used alone, so an open-time <code>SQLITE_CANTOPEN</code> no longer
carries the temporary handle's stale &quot;out of memory&quot; errmsg.
Absence of the parameter, or <code>_error_rc=0</code>, preserves the
legacy &quot;errstr: errmsg&quot; form byte-for-byte; existing callers
that parse error strings are unaffected. The driver's
<code>*Error.Code()</code> returns the same SQLite result code in both
modes. Parsed before <code>sqlite3_open_v2</code> so open-time errors
are covered. Resolves [GitLab issue <a
href="https://gitlab.com/cznic/sqlite/issues/230">#230</a>](<a
href="https://gitlab.com/cznic/sqlite/-/issues/230">https://gitlab.com/cznic/sqlite/-/issues/230</a>).</li>
<li>See [GitLab merge request <a
href="https://gitlab.com/cznic/sqlite/issues/129">#129</a>](<a
href="https://gitlab.com/cznic/sqlite/-/merge_requests/129">https://gitlab.com/cznic/sqlite/-/merge_requests/129</a>),
thanks Ian Chechin!</li>
</ul>
</li>
<li>
<p>2026-06-06 v1.52.0:</p>
<ul>
<li>Upgrade to <a
href="https://sqlite.org/releaselog/3_53_2.html">SQLite 3.53.2</a>.</li>
<li>Add <code>Backup.Remaining</code> and <code>Backup.PageCount</code>,
thin wrappers around the existing <code>sqlite3_backup_remaining</code>
and <code>sqlite3_backup_pagecount</code> C symbols. Together they
expose the per-<code>Step</code> progress counters that the underlying
backup object already maintains, enabling progress reporting during
online backups without dropping to <code>modernc.org/sqlite/lib</code>
directly.</li>
<li>See [GitLab merge request <a
href="https://gitlab.com/cznic/sqlite/issues/122">#122</a>](<a
href="https://gitlab.com/cznic/sqlite/-/merge_requests/122">https://gitlab.com/cznic/sqlite/-/merge_requests/122</a>),
thanks Ian Chechin!</li>
<li>Drop the redundant second copy in <code>(*conn).columnText</code>,
the path that backs every <code>Rows.Scan</code> into a Go
<code>string</code> for a TEXT column. The value's bytes are still
copied once out of SQLite-owned memory into a fresh Go buffer; that
buffer is then reinterpreted as the result string with
<code>unsafe.String</code> rather than copied a second time by the
implicit <code>string([]byte)</code> conversion. This removes one
allocation per TEXT value per row and roughly halves the bytes allocated
on that path; on the new <code>BenchmarkColumnTextScan</code> cases it
is ~13–20% faster for payloads of 256 B and larger, with no measurable
change for very short strings. Purely internal: no API or behavioral
change, and the returned string never aliases SQLite's buffer.</li>
<li>See [GitLab merge request <a
href="https://gitlab.com/cznic/sqlite/issues/123">#123</a>](<a
href="https://gitlab.com/cznic/sqlite/-/merge_requests/123">https://gitlab.com/cznic/sqlite/-/merge_requests/123</a>),
thanks Ian Chechin!</li>
<li>Cache each result column's declared type once per result set in
<code>newRows</code> instead of recomputing it on every row. The TEXT
branch of <code>Rows.Next</code> calls
<code>ColumnTypeDatabaseTypeName</code> for every TEXT column on every
row (independent of any DSN flag), which previously did a
<code>libc.GoString</code> + <code>strings.ToUpper</code> each time;
that lookup is now a single index into a cached, pre-uppercased
<code>[]string</code>, and <code>ColumnTypeScanType</code> reads the
same cache and drops its per-call <code>strings.ToLower</code>. The
declared type is fixed for the lifetime of a prepared statement, so the
C round-trip is paid once per column rather than once per column per
row, removing exactly 1 alloc + 8 B per TEXT column per row from the
<code>Next</code> hot path. The new <code>BenchmarkTextToTimeScan</code>
cases show ~7% faster on a 1000-row DATETIME SELECT under
<code>_texttotime=1</code>. Purely internal:
<code>ColumnTypeDatabaseTypeName</code> and
<code>ColumnTypeScanType</code> return identical values, no API or
behavioral change.</li>
<li>See [GitLab merge request <a
href="https://gitlab.com/cznic/sqlite/issues/124">#124</a>](<a
href="https://gitlab.com/cznic/sqlite/-/merge_requests/124">https://gitlab.com/cznic/sqlite/-/merge_requests/124</a>),
thanks Ian Chechin!</li>
<li>Cache, per result column, the <code>parseTimeFormats</code> index
that first parsed a TEXT-stored DATE/DATETIME/TIMESTAMP value, and try
that format first on later rows instead of re-walking the list from the
top. <code>(*conn).parseTime</code> previously ran
<code>time.Parse</code> down the format list on every such row; for the
canonical SQLite TEXT datetime format every row paid two failed
<code>time.Parse</code> attempts — each allocating a
<code>*time.ParseError</code> — before the match. On a 1000-row DATETIME
TEXT SELECT this cuts ~50% of allocs/op and ~57% of B/op and is ~37%
faster. The fall-through chain is preserved exactly: the seven formats
are mutually exclusive, so the cached hint can never select a different
match than the in-order scan, and the parsed <code>driver.Value</code>
is identical to before. Purely internal: no API or behavioral
change.</li>
<li>See [GitLab merge request <a
href="https://gitlab.com/cznic/sqlite/issues/125">#125</a>](<a
href="https://gitlab.com/cznic/sqlite/-/merge_requests/125">https://gitlab.com/cznic/sqlite/-/merge_requests/125</a>),
thanks Ian Chechin!</li>
</ul>
</li>
<li>
<p>2026-05-28 v1.51.0:</p>
<ul>
<li>Pool the <code>[]driver.Value</code> slice passed to
scalar/aggregate UDF callbacks and to vtab
<code>Filter</code>/<code>Insert</code>/<code>Update</code> callbacks,
eliminating the dominant per-row allocation on UDF-heavy queries.
Benchmarks on a 1000-row, 3-arg noop scalar UDF show ~40% fewer bytes/op
and ~15% fewer allocs/op.</li>
<li>Document the matching &quot;arguments are not valid past
return&quot; contract on <code>vtab.Cursor.Filter</code> and
<code>vtab.Updater.Insert</code>/<code>Update</code>, consistent with
the existing rule for <code>FunctionImpl.Scalar</code> /
<code>AggregateFunction.Step</code> / <code>WindowInverse</code>.</li>
<li>Resolves [GitLab issue <a
href="https://gitlab.com/cznic/sqlite/issues/226">#226</a>](<a
href="https://gitlab.com/cznic/sqlite/-/issues/226">https://gitlab.com/cznic/sqlite/-/issues/226</a>).
See [GitLab merge request <a
href="https://gitlab.com/cznic/sqlite/issues/114">#114</a>](<a
href="https://gitlab.com/cznic/sqlite/-/merge_requests/114">https://gitlab.com/cznic/sqlite/-/merge_requests/114</a>),
thanks Ian Chechin!</li>
<li>Add <code>FileControl.FileControlDataVersion</code>, a wrapper
around <code>SQLITE_FCNTL_DATA_VERSION</code> for observing pager-cache
data-version changes, including those made on the same connection.
Useful as a primitive for application-level cache invalidation.</li>
<li>Exposed via the idiomatic <code>database/sql</code> escape hatch
<code>(*sql.Conn).Raw()</code>, consistent with the existing
<code>FileControlPersistWAL</code>.</li>
<li>See [GitLab merge request <a
href="https://gitlab.com/cznic/sqlite/issues/115">#115</a>](<a
href="https://gitlab.com/cznic/sqlite/-/merge_requests/115">https://gitlab.com/cznic/sqlite/-/merge_requests/115</a>),
thanks Ian Chechin!</li>
<li>Fix a regression where in-memory connections (<code>:memory:</code>,
<code>file::memory:</code>, shared-cache memory URIs) were discarded by
<code>database/sql</code> after a context-cancelled query, taking the
entire in-memory store with them. The fix for <a
href="https://gitlab.com/cznic/sqlite/issues/198">#198</a> had added an
<code>sqlite3_is_interrupted</code> check to the connection validator
that mistakenly applied to in-memory connections too, re-introducing the
bug originally fixed by !74. File-backed connections keep the existing
behaviour and are still discarded after an interrupt.</li>
<li>Resolves [GitLab issue <a
href="https://gitlab.com/cznic/sqlite/issues/196">#196</a>](<a
href="https://gitlab.com/cznic/sqlite/-/issues/196">https://gitlab.com/cznic/sqlite/-/issues/196</a>).
See [GitLab merge request <a
href="https://gitlab.com/cznic/sqlite/issues/116">#116</a>](<a
href="https://gitlab.com/cznic/sqlite/-/merge_requests/116">https://gitlab.com/cznic/sqlite/-/merge_requests/116</a>),
thanks Ian Chechin!</li>
<li>Add an opt-in <code>FunctionImpl.VolatileArgs</code> flag that hands
TEXT and BLOB arguments to scalar and aggregate UDF callbacks as
zero-copy views (<code>unsafe.String</code>/<code>unsafe.Slice</code>)
over SQLite's own value buffers, eliminating the per-argument
<code>libc.GoString</code>/<code>make([]byte)</code> copy that the <a
href="https://gitlab.com/cznic/sqlite/issues/226">#226</a> slice-pooling
left as the remaining per-row allocation. On the same 1000-row, 3-arg
(INTEGER/TEXT/BLOB) noop scalar UDF this removes a further ~35% of
allocs/op and ~11% of bytes/op on top of <a
href="https://gitlab.com/cznic/sqlite/issues/226">#226</a>.</li>
</ul>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://gitlab.com/cznic/sqlite/commit/6b32d1ee965dfe59bf2e50baeb6f451b67d6a71e"><code>6b32d1e</code></a>
CHANGELOG.md: document experimental freebsd/386 + freebsd/arm (<a
href="https://gitlab.com/cznic/sqlite/issues/119">#119</a>)</li>
<li><a
href="https://gitlab.com/cznic/sqlite/commit/697300ffaa56b03b79e490dc960f218794cb2a75"><code>697300f</code></a>
Merge branch 'dbstatus-binding' into 'master'</li>
<li><a
href="https://gitlab.com/cznic/sqlite/commit/759639fa15658feabd8218bc766768fc383b3c12"><code>759639f</code></a>
sqlite: review fixes for !132 — restore <a
href="https://gitlab.com/cznic/sqlite/issues/131">#131</a> CHANGELOG
link, correct DBStatus...</li>
<li><a
href="https://gitlab.com/cznic/sqlite/commit/40ff0274c43e4f7771456e5c2a06ed669605b797"><code>40ff027</code></a>
sqlite: add DBStatus wrapper for sqlite3_db_status + pcache spill-I/O
benchmark</li>
<li><a
href="https://gitlab.com/cznic/sqlite/commit/6a28fe7d28a1c7de553ae4d9dc797f59c45f3563"><code>6a28fe7</code></a>
HACKING.md: document CHANGELOG versioning + MR integration flow</li>
<li><a
href="https://gitlab.com/cznic/sqlite/commit/adff4b17551c6663f85f2b13400a44887c91a440"><code>adff4b1</code></a>
Merge branch 'pcache-shared-cache-draft' into 'master'</li>
<li><a
href="https://gitlab.com/cznic/sqlite/commit/14e5790eee01be325551a5ffa20d3c9788bc6135"><code>14e5790</code></a>
vendor: regenerate freebsd/arm vec at SQLite 3.53.2</li>
<li><a
href="https://gitlab.com/cznic/sqlite/commit/8725c22279f2bbcac7a9c661787bd3f69d66ea6d"><code>8725c22</code></a>
Add freebsd/386 + freebsd/arm targets</li>
<li><a
href="https://gitlab.com/cznic/sqlite/commit/73050dce0e8a597fea764c9b1d98689d3387f15a"><code>73050dc</code></a>
Merge branch 'pcache-pool-polish' into 'master'</li>
<li><a
href="https://gitlab.com/cznic/sqlite/commit/1897fdd636a034eeb5dde210365c0018ebfae09c"><code>1897fdd</code></a>
CHANGELOG.md: consolidate untagged v1.53.0/v1.54.0 into one v1.53.0
section</li>
<li>Additional commits viewable in <a
href="https://gitlab.com/cznic/sqlite/compare/v1.52.0...v1.53.0">compare
view</a></li>
</ul>
</details>
<br />


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 <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-01 22:50:05 +02:00
Nikhil J 81858aa542 docs: fix broken OAuth2/OIDC policy examples (#8840)
## What / Why

The examples on the OAuth2/OIDC guide (`docs/docs/oauth-oidc.md`) fail
to compile on current OPA (v1+):

1. `claims := jwt.decode(input.token)[1]` uses an undefined built-in.
The correct name is `io.jwt.decode`, which the same page already uses
correctly further down (`jwt_unverified := io.jwt.decode(input.token)`).
2. The `jwt_verified := jwt_unverified { ... }` and `token := t { ... }`
rules are missing the `if` keyword required before a rule body in Rego
v1, so they fail to parse (`'if' keyword is required before rule body`).

## Changes
- `jwt.decode` -> `io.jwt.decode`
- add `if` before the `jwt_verified` and `token` rule bodies

These are minimal, semantics-preserving fixes so the copy-pasteable
examples work on a current OPA release.

Signed-off-by: Nikhil Jathar <22786232+mailnike@users.noreply.github.com>
2026-07-01 22:03:55 +02:00
John Hooks c498b548ca ecosystem: add Sencillo projects to ecosystem (#8818)
### What are the changes in this PR?

Just adding a couple of my projects to the ecosystem page.

Signed-off-by: John Hooks <hooksie11@gmail.com>
2026-07-01 22:02:45 +02:00
Anders Eknert b7c9658c4e perf: reduce allocations in index lookup (#8835)
While we previously cached and reused trie traveral result from indexing
lookups, simply `clear`ing the tr.unordered map meant we still had to
allocate every time we appended to its slice values. This change fixes
that, along with some general cleanups in index.go — including an
audacious attempt to sneak in `util.Or` from Regal!

The improvement should reflect nicely across many benchmarks in OPA, as
pretty much all evaluations do indexing lookups. The Regal benchmark is
quite convincing, with 800k allocations saved in linting the Regal
bundle:

```
449648097 ns/op    1234775834 B/op    34886194 allocs/op
449672806 ns/op    1226927914 B/op    34045124 allocs/op
```

Signed-off-by: Anders Eknert <anders.eknert@apple.com>
2026-07-01 19:46:29 +00:00
Jasdeep Singh Bhalla 23a4e62676 Add Dockerfile.rego to validate image builds (#8744)
OPA's Docker images are built with `docker buildx`, which supports
Rego-based build policies via `Dockerfile.rego`. Adding this file lets
OPA validate its own image builds using OPA — enforcing that base images
come only from the approved chainguard namespace.

Adds `Dockerfile.rego` with a single deny rule: base images must come
from `docker.io/chainguard/`. This covers all four variants built in the
Makefile (`glibc-dynamic`, `glibc-dynamic:latest-dev`, `static`,
`busybox`). Local build context access (used by `COPY`) is allowed
implicitly when no deny rule fires.

The policy follows the same `decision` shape used by buildx's own
`policy/default.rego`. No changes to other files are needed — buildx
automatically evaluates `Dockerfile.rego` when present.

Closes #8401.

Signed-off-by: jasdeepbhalla <jasdeepbhalla@gmail.com>
2026-07-01 10:42:54 +02:00
Stephan Renatus 39811e50db workflows: prune benchmarks to last 250 runs
To avoid this:

```
📷 Committing and pushing new benchmark data...
[benchmarks 745914423] add benchmark run for 21fe862a52
 1 file changed, 1 insertion(+)
exit status 1: Cloning into '.'...
Switched to a new branch 'benchmarks'
remote: warning: See https://gh.io/lfs for more information.
remote: warning: File benchmarks.json is 50.29 MB; this is larger than GitHub's recommended maximum file size of 50.00 MB
remote: warning: File 1dfc1e1acb is 50.14 MB; this is larger than GitHub's recommended maximum file size of 50.00 MB
remote: warning: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com.
To https://github.com/open-policy-agent/opa.git
 ! [remote rejected]     benchmarks -> benchmarks (cannot lock ref 'refs/heads/benchmarks': is at 7a136a304d but expected 3fd93c504e)
error: failed to push some refs to 'https://github.com/open-policy-agent/opa.git'
```

Signed-off-by: Stephan Renatus <stephan.renatus@gmail.com>
2026-07-01 10:12:12 +02:00
Johan Fylling 21fe862a52 planner: Support and/or logical operators (#8827)
Fixes: #8681

---------

Signed-off-by: Johan Fylling <johan.dev@fylling.se>
2026-07-01 08:30:40 +02:00
dependabot[bot] 1783ac26de build(deps): bump linkify-it from 5.0.0 to 5.0.1 in /docs
Bumps [linkify-it](https://github.com/markdown-it/linkify-it) from 5.0.0 to 5.0.1.
- [Changelog](https://github.com/markdown-it/linkify-it/blob/master/CHANGELOG.md)
- [Commits](https://github.com/markdown-it/linkify-it/compare/5.0.0...5.0.1)

---
updated-dependencies:
- dependency-name: linkify-it
  dependency-version: 5.0.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-01 08:30:03 +02:00
Stephan Renatus db8fbb7ea2 Merge pull request #8831 from srenatus/sr/tluunlqkxqmy
Integrate Patch v1.18.1
2026-07-01 08:29:02 +02:00
Stephan Renatus dd0f52f38b releng: integrate patch release v1.18.1
This time via a merge commit. This is an experiment, I think golang
will play nicer with this, since v1.18.1 now is a precendant of main.

Signed-off-by: Stephan Renatus <stephan.renatus@gmail.com>
2026-06-29 14:45:53 +02:00
Stephan Renatus acc8bf9f88 Release v1.18.1
Signed-off-by: Stephan Renatus <stephan.renatus@gmail.com>
v1.18.1
2026-06-29 14:43:28 +02:00
Stephan Renatus 713dc6a427 ast: fix AnnotationSet memory leak via runtime.AddCleanup cycle
AnnotationSet.MergedLabels was introduced in v1.17.0 to cache merged
label maps per rule. It used weak.Pointer[Rule] as the cache key and
registered a runtime.AddCleanup to evict the entry when the rule was
garbage-collected.

The cleanup closure captured `as` (the AnnotationSet pointer). The
AnnotationSet holds strong references to every module it was built
from (as.modules), and each module holds its rules. This meant that
once any rule had a cleanup registered:

  runtime cleanup queue → closure → AnnotationSet → modules → Rule

Rule was always reachable through that path, so the cleanup could
never fire. Nothing would ever delete the closure, so the
AnnotationSet and all of its rules were permanently retained.

In practice, OPA's dynamic bundle plugin recompiles policies on every
poll cycle. Each compilation creates a fresh AnnotationSet. With the
bug, old AnnotationSets accumulated in the heap indefinitely, causing
the OOM-kill pattern reported in #8817.

Fix: drop the cache entirely. MergedLabels now calls Chain and
mergeChainLabels on every invocation. Chain is a handful of map
lookups and MergedLabels is called at most once per evaluated rule per
request, so the recomputation cost is negligible. This removes the
mergedLabels sync.Map field, the ruleLabelsEntry type, and the
runtime/sync/weak imports.

A regression test uses weak.Pointer[AnnotationSet] to assert that an
AnnotationSet is collectable after it goes out of scope.

Fixes #8817
Signed-off-by: Stephan Renatus <stephan.renatus@gmail.com>
2026-06-29 14:43:28 +02:00
Stephan Renatus bfd0d00073 ast: fix AnnotationSet memory leak via runtime.AddCleanup cycle
AnnotationSet.MergedLabels was introduced in v1.17.0 to cache merged
label maps per rule. It used weak.Pointer[Rule] as the cache key and
registered a runtime.AddCleanup to evict the entry when the rule was
garbage-collected.

The cleanup closure captured `as` (the AnnotationSet pointer). The
AnnotationSet holds strong references to every module it was built
from (as.modules), and each module holds its rules. This meant that
once any rule had a cleanup registered:

  runtime cleanup queue → closure → AnnotationSet → modules → Rule

Rule was always reachable through that path, so the cleanup could
never fire. Nothing would ever delete the closure, so the
AnnotationSet and all of its rules were permanently retained.

In practice, OPA's dynamic bundle plugin recompiles policies on every
poll cycle. Each compilation creates a fresh AnnotationSet. With the
bug, old AnnotationSets accumulated in the heap indefinitely, causing
the OOM-kill pattern reported in #8817.

Fix: drop the cache entirely. MergedLabels now calls Chain and
mergeChainLabels on every invocation. Chain is a handful of map
lookups and MergedLabels is called at most once per evaluated rule per
request, so the recomputation cost is negligible. This removes the
mergedLabels sync.Map field, the ruleLabelsEntry type, and the
runtime/sync/weak imports.

A regression test uses weak.Pointer[AnnotationSet] to assert that an
AnnotationSet is collectable after it goes out of scope.

Fixes #8817
Signed-off-by: Stephan Renatus <stephan.renatus@gmail.com>
2026-06-29 12:42:21 +02:00
Stephan Renatus 9c83b9948a wasm: replace wasmtime-go with wazero (#8815)
The change replaces bytecodealliance/wasmtime-go/v44 (CGo) with
tetratelabs/wazero (pure Go)

- CGo eliminated — wazero is pure Go, so the whole internal/wasm/sdk
runtime no longer needs a C toolchain/cross-compilation story.
- The "env glue module" trick (glue.go) is the right solution to
wazero's constraint that a HostModuleBuilder can't export memory.
- Process-wide CompilationCache (sync.OnceValue): each unique policy is
compiled once per process, and discarded/re-instantiated VMs are cheap.
- Simplification in vm.go — dropping the ~25 closure fields (evalOneOff,
eval, heapPtrGet, …) in favor of mod.ExportedFunction(name) + a generic
call/callVoid/callOrCancel
- All tests pass (incl. internal/wasm/sdk/internal/wasm,
internal/wasm/sdk/opa). evalCompat for ABI 1.1 is retained.


----------

```
                                │ bf2bb5261c13d2710058             │
                                │    sec/op    │   sec/op     vs base                │
WASMColdStartTargets/topdown-16    112.8µ ± 1%   113.3µ ± 1%        ~ (p=0.512 n=15)
WASMColdStartTargets/wasm-16      10.850m ± 1%   2.906m ± 1%  -73.22% (p=0.000 n=15)
geomean                            1.107m        573.9µ       -48.14%

benchmark \ host                local:tags=opa_wasm
                                            vs base
WASMColdStartTargets/topdown                      ~
WASMColdStartTargets/wasm                   -73.22%

```
```

            │ bf2bb5261c13d2710058             │
            │   sec/op    │   sec/op     vs base                │
WasmRego-16   4.976µ ± 1%   3.546µ ± 3%  -28.74% (p=0.000 n=15)

            │ bf2bb5261c13d2710058               │
            │     B/op     │     B/op       vs base                 │
WasmRego-16   2.276Ki ± 0%   13.260Ki ± 0%  +482.50% (p=0.000 n=15)

            │ bf2bb5261c13d2710058             │
            │  allocs/op  │ allocs/op   vs base                │
WasmRego-16    46.00 ± 0%   33.00 ± 0%  -28.26% (p=0.000 n=15)

benchmark \ host    local:tags=opa_wasm
                                vs base
WasmRego                        -28.74%
```

> [!NOTE]
> When running benchmarks here, be aware that the memory previously used
was invisible to the benchmark machinery -- it was on the other side of
the CGo divide 🙈

Fixes #7557.

---------

Signed-off-by: Stephan Renatus <stephan.renatus@gmail.com>
2026-06-26 17:40:03 +02:00
Stephan Renatus 65f485d651 docs: document rule indexer support for in, bare refs; modernize rego (#8823)
This had shipped in
[v1.15.0](https://github.com/open-policy-agent/opa/releases/tag/v1.15.0)
(and been attempted to ship in 1.14.0), but we've forgotten about the
docs 😅

Fixes #8822

Signed-off-by: Stephan Renatus <stephan.renatus@gmail.com>
2026-06-26 15:13:09 +02:00
Johan Fylling 37b14851b8 topdown: and/or expression evaluation (#8793)
Contains simplified PE: expressions are plugged and saved, but not
optimized. PE optimization to follow in #8680

Signed-off-by: Johan Fylling <johan.dev@fylling.se>
2026-06-26 14:07:16 +02:00
wasm-updater 6543ddebf6 wasm: Update generated binaries 2026-06-26 08:06:36 +00:00
Anders Eknert 2b18f03b2b topdown: fix "a", "a" in {"a"} not returning true (#8747)
It's mostly useless, but aren't we all.

Also added benchmarks to make sure I didn't mess anything up. And one or
two tiny but unrelated fixes.

---------

Signed-off-by: Anders Eknert <anders.eknert@apple.com>
Signed-off-by: Stephan Renatus <stephan.renatus@gmail.com>
Co-authored-by: Stephan Renatus <stephan.renatus@gmail.com>
2026-06-26 10:04:30 +02:00
Charlie Egan 8b59ff6e48 docs: Updates examples to use some...in, add link to debugger (#8806)
Based on input from user here in slack:
https://openpolicyagent.slack.com/archives/C08V59T3NAF/p1781788845493869

This also makes some updates based on common topics in the new docs
chat. Some/every appears to be particularly confusing and the
installation instructions might be better if more prominent.

---------

Signed-off-by: Charlie Egan <charlie_egan@apple.com>
2026-06-26 10:02:39 +02:00
Sebastian Spaink 141fc51bd6 Prepare v1.19.0 development (#8821)
Signed-off-by: Sebastian Spaink <sebastianspaink@gmail.com>
2026-06-25 16:41:51 -05:00
Sebastian Spaink cc2c5c60a4 Prepare v1.18 release (#8820)
Signed-off-by: Sebastian Spaink <sebastianspaink@gmail.com>
v1.18.0
2026-06-25 12:10:29 -05:00