Skip to content

refactor(pumpkin-solver): PropagatorConstructor::create now returns event registrations#456

Merged
maartenflippo merged 12 commits into
mainfrom
refactor/variable-registration
Jul 21, 2026
Merged

refactor(pumpkin-solver): PropagatorConstructor::create now returns event registrations#456
maartenflippo merged 12 commits into
mainfrom
refactor/variable-registration

Conversation

@maartenflippo

@maartenflippo maartenflippo commented May 27, 2026

Copy link
Copy Markdown
Contributor

We want to make it more explicit that variables should be registered in the propagator constructor. To do so, the signature of PropagatorConstructor::create is updated to not only return a propagator implementation, but also a bag of events with local IDs for which the propagator should be registered.

Implemented as a result of the discussion in #449.

What this adds

  • EventTarget: Anything that can be registered for domain events. Implemented for all variables, and required for any implementation of IntegerVariable. This is a separate trait instead of a method on IntegerVariable to try to move away from the monolithic interface that IntegerVariable is becoming.
  • EventDispatcher: Anything that an EventTarget can be registered with. Implemented for a wrapper of NotificationEngine as well as the new EventRegistration type.
  • EventRegistration: The bag of domain events that is returned by PropagatorConstructor::create alongside the propagator. The implementation tries to be explicit about when an empty registration is expected. To do so, we introduced the EventRegistrationBuilder abstraction.

What this does not do

  • Port the unwatching and backtrack event registration to the new EventTarget trait. In the future it is likely we will want to do this.
  • Handle registration of predicates, which should also eventually happen through the EventTarget and EventRegistration.

Feedback

The names of the new types added here may not be very clear. Please consider whether you have better ideas, or whether you like the names as they are now.

@maartenflippo
maartenflippo marked this pull request as ready for review May 27, 2026 13:27
@EmirDe

EmirDe commented May 28, 2026

Copy link
Copy Markdown
Contributor

I have done a partial review, e.g., I did not assess the "what is does not do". Added some comments to the code, here are a few more:

About naming.

  • EventDispatcher -> EventNotifier? We use the term "notify" for propagators and engine, so it might make sense to use that word here too.
  • EventRegistration -> perhaps EventsToRegister is a good name, this would be more explicit so I like it. EventRegistrations could be another alternative. The current version ("EventRegistration") sounds a bit like a function or otherwise something actively doing something.

About the trait EventTarget: I am not against having the trait, but I am wondering. You said that you would like to keep this as a separate trait as opposed to adding to IntegerVariable. But it seems to me that this trait will only be used with IntegerVariables, and it is required to implement it, so why not keep it as part of IntegerVariable, it does not seem to be that problematic. It also helps with naming. But fine by me in both cases.

Other minor comments:

I suppose we would like to have the event registration be an enum with types "EventsToRegister" and "Empty". But this might be a bit cumbersome for something used in only a few lines of code, so I am fine with the current design with the builder!

Both EventTarget and Dispatcher have the same function name "register" but they do slightly different things. Not sure if this is a problem or not, but just mentioning it, since in the code it would look like calling the same function (but it is also obviously different, the name is simply the same).

Comment thread pumpkin-crates/core/src/propagation/event_registration.rs
Comment thread pumpkin-crates/core/src/propagation/event_registration.rs
Comment thread pumpkin-crates/core/src/propagation/event_registration.rs
Comment thread pumpkin-crates/core/src/propagation/event_registration.rs
Comment thread pumpkin-crates/core/src/propagation/event_registration.rs
@maartenflippo

maartenflippo commented May 28, 2026

Copy link
Copy Markdown
Contributor Author

EventDispatcher -> EventNotifier? We use the term "notify" for propagators and engine, so it might make sense to use that word here too.

Of these two I prefer EventDispatcher as events are dispatched but propagators are notified. So then PropagatorNotifier would be slightly better, but I still prefer EventDispatcher over that within this module.

About the trait EventTarget: I am not against having the trait, but I am wondering. You said that you would like to keep this as a separate trait as opposed to adding to IntegerVariable. But it seems to me that this trait will only be used with IntegerVariables, and it is required to implement it, so why not keep it as part of IntegerVariable, it does not seem to be that problematic. It also helps with naming. But fine by me in both cases.

I have developed a preference for smaller traits. They make it easier to write test dummies in the future. If we want to write unit tests for this part, we do not need to create dummy implementation for the entire IntegerVariable trait.

I suppose we would like to have the event registration be an enum with types "EventsToRegister" and "Empty". But this might be a bit cumbersome for something used in only a few lines of code, so I am fine with the current design with the builder!

I also prefer the current builder pattern with an assertion over the enum.

Both EventTarget and Dispatcher have the same function name "register" but they do slightly different things. Not sure if this is a problem or not, but just mentioning it, since in the code it would look like calling the same function (but it is also obviously different, the name is simply the same).

I don't think they do different things. EventTarget::register maps the events to eventually put them into Dispatcher::register. So In this case I think the names being the same is okay.


I have made changes for and responded to the other comments @EmirDe

@EmirDe

EmirDe commented May 29, 2026

Copy link
Copy Markdown
Contributor

Of these two I prefer EventDispatcher as events are dispatched but propagators are notified. So then PropagatorNotifier would be slightly better, but I still prefer EventDispatcher over that within this module.

You are right that EventNotifier might not be ideal, because it seems like it notifies events. I like PropagatorNotifier, or even more PropagatorEventNotifier, because it is more explicit in what it does and uses the term 'notify'. But if you still prefer EventDispatcher then let us go with that, it is not that important in the end.

I have developed a preference for smaller traits. They make it easier to write test dummies in the future. If we want to write unit tests for this part, we do not need to create dummy implementation for the entire IntegerVariable trait.

I thought about this since, and now I am convincing having this as a trait is a fantastic idea, much better than adding it to IntegerVariable. In general, smaller traits are great, even if only one struct uses the trait. It makes it clearer for functions which part of the interface is relevant. We should use smaller traits more in Pumpkin!

I don't think they do different things. EventTarget::register maps the events to eventually put them into Dispatcher::register. So In this case I think the names being the same is okay.

One registers itself, and the other registers another entity. Not entirely the same but similar. In any case this is probably not so important so we could leave the names and if later it becomes an issue we can change.

Overall this looks good to me. The only issue is with the things this PR does not do. It seems okay with me to proceed without those points, but please see what to do with those, e.g., open issues for later?

@EmirDe EmirDe left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See my comments for potential changes, but overall seems good for merging

@ImkoMarijnissen ImkoMarijnissen left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some small points I think could be addressed but other than that it looks good to me!

Comment thread pumpkin-crates/core/src/engine/state.rs Outdated
Comment thread pumpkin-crates/core/src/propagation/contexts/propagation_context.rs
Comment thread pumpkin-crates/core/src/propagation/constructor.rs
Comment thread pumpkin-crates/core/src/propagation/constructor.rs
Comment thread pumpkin-crates/core/src/propagation/event_registration.rs
Comment thread pumpkin-crates/core/src/propagation/event_registration.rs Outdated
Comment thread pumpkin-crates/core/src/propagation/event_registration.rs
Comment thread pumpkin-crates/propagators/src/propagators/arithmetic/maximum.rs
commit 285ac94a49ae7ae7f42f73a59626e653baed0163
Author: Imko Marijnissen <50290518+ImkoMarijnissen@users.noreply.github.com>
Date:   Thu Jul 16 14:22:11 2026 +0200

    feat(pumpkin-solver,pumpkin-core): Implement extended nogood propagation and CPIP nogood learning (#454)

    Based on the paper "From Literals to Atomic Constraints: Generalising
    Conflict-Driven Clause Learning for Constraint Programming - Imko
    Marijnissen, Maarten Flippo, and Emir Demirović" (to appear at CP'26), I
    have implemented the extended nogood propagation and CPIP nogood
    learning.

    ## Overview

    The PR consists of the following:
    - Adjusting the `ResolutionResolver` to be able to produce CPIP nogoods;
    this involves updating the stopping criterion for resolving and the
    structure `LearnedNogood` to ensure certain invariants.
    - Adjusting the `NogoodPropagator` in several ways:
    - When adding a(n) (asserting) nogood, the watchers need to be placed on
    atomic constraints over different variables, and the detection of
    propagation, which can take place at the root level, is adjusted.
    - When propagating, the watcher structure is different between the two
    approaches so this has been adjusted
    - I implemented extended nogood propagation based on the algorithm
    described in the paper.

    This supersedes the branch `feat/extended-conflict-analysis` in several
    ways:
    - It now uses lazy explanations for the propagation
    - It also performs nogood database management; this is based on the
    original (SAT-based) strategy. This could be adjusted in the future
    since LBD could be uninformative.

    ## Feedback
    The main point I would like feedback on is whether it makes sense to
    keep the 1UIP + unit propagation and CPIP + extended nogood propagation
    approaches merged or whether it would be preferable to be separated into
    their own structs. I have kept it this way to be able to clearly see the
    differences between the two, but I can imagine that this does not make
    the code clearer.

    Additionally, do we want to include testing this feature in the CI or is
    that unnecessary?

    @maartenflippo I ran into the issue that retrieving from
    `unit_nogood_inference_codes` when using CPIP + extended nogood
    propagation led to some issues. I have resolved this in _a_ way but it
    would be good to hear your opinion on this!

    ## Experimentation
    I tested the extended nogood propagation + CPIP learning using different
    priority schemes. The `(Updated)` instances are the ones where
    incremental stopping condition calculation is included.

    ### Overall Results

    `1UIP + High Priority`:
    ```
    {'ERROR': 42,
     'OPTIMAL': 100,
     'SATISFIABLE': 153,
     'UNKNOWN': 93,
     'UNSATISFIABLE': 5}
    ```

    `CPIP with Extended Nogood Propagation + High Priority`:
    ```
    {'ERROR': 43,
     'OPTIMAL': 95,
     'SATISFIABLE': 156,
     'UNKNOWN': 94,
     'UNSATISFIABLE': 5}
    ```

    `CPIP with Extended Nogood Propagation + High Priority (Updated)`:
    ```
    {'ERROR': 48,
     'OPTIMAL': 101,
     'SATISFIABLE': 146,
     'UNKNOWN': 93,
     'UNSATISFIABLE': 5}
    ```

    `1UIP + Very Low Priority`:
    ```
    {'ERROR': 43,
     'OPTIMAL': 101,
     'SATISFIABLE': 151,
     'UNKNOWN': 93,
     'UNSATISFIABLE': 5}
    ```

    `CPIP with Extended Nogood Propagation + Very Low Priority`:
    ```
    {'ERROR': 43,
     'OPTIMAL': 97,
     'SATISFIABLE': 154,
     'UNKNOWN': 94,
     'UNSATISFIABLE': 5}
    ```

    `CPIP with Extended Nogood Propagation + Very Low Priority (Updated)`:
    ```
    {'ERROR': 32,
     'OPTIMAL': 99,
     'SATISFIABLE': 167,
     'UNKNOWN': 90,
     'UNSATISFIABLE': 5}
    ```

    ### MiniZinc Scoring
    ```
    {
        '1UIP + High Priority': 641.0,
        'CPIP + High Priority': 670.71,
        'CPIP + High Priority (Updated)': 653.61,
        '1UIP + Very Low Priority': 652.35,
        'CPIP + Very Low Priority': 698.09,
        'CPIP + Very Low Priority (Updated)': 708.24,
    }
    ```

    ### Average Primal Integral
    ```
    {
        '1UIP + High Priority': 63.18,
        'CPIP + High Priority': 64.09,
        'CPIP + High Priority (Updated)': 69.13,
        '1UIP + Very Low Priority': 68.44,
        'CPIP + Very Low Priority': 63.37,
        'CPIP + Very Low Priority (Updated)': 46.45,
    }
    ```

    ### Overall Conclusions
    In terms of the number of instances solved, 1UIP with a Very Low
    Priority appears to be best. However, looking at the MiniZinc scoring,
    both of the CPIP approaches outperform their 1UIP counterparts, with
    CPIP + Very Low priority performing the best. For the primal integral,
    the results are more mixed, with CPIP + Very Low Priority having the
    best anytime performance. This _appears_ to indicate that CPIP has some
    better anytime performance compared to 1UIP learning (when using a very
    low priority of the nogood propagator). I think it would be better to
    keep the 1UIP as the default since I would _expect_ 1UIP to outperform
    when using free search.

    **After Update**: It appears that while `1UIP + Very Low Priority` is
    generally the best at proving optimality, `CPIP + Very Low Priority
    (Updated)` proves optimality on a similar number of instances while
    providing solutions on 16 more. Additionally, the MiniZinc score of this
    approach is significantly higher, and the primal integral is
    significantly lower.

    ## TODO
    - [x] Rerun the experimentation to determine the impact of the changes
    - [x] Calculate the stopping condition for learning CPIP nogoods
    incrementally rather than recalculating from scratch in every iteration

commit 216c1ec1a0238f88ab8fff485bbef6b57f2dc212
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Thu Jul 16 09:33:42 2026 +0200

    chore(deps): bump clap from 4.6.1 to 4.6.2 (#505)

    Bumps [clap](https://github.com/clap-rs/clap) from 4.6.1 to 4.6.2.
    <details>
    <summary>Release notes</summary>
    <p><em>Sourced from <a
    href="https://github.com/clap-rs/clap/releases">clap's
    releases</a>.</em></p>
    <blockquote>
    <h2>v4.6.2</h2>
    <h2>[4.6.2] - 2026-07-15</h2>
    <h3>Fixes</h3>
    <ul>
    <li><em>(help)</em> Say <code>alias</code> when there is only one</li>
    </ul>
    </blockquote>
    </details>
    <details>
    <summary>Changelog</summary>
    <p><em>Sourced from <a
    href="https://github.com/clap-rs/clap/blob/master/CHANGELOG.md">clap's
    changelog</a>.</em></p>
    <blockquote>
    <h2>[4.6.2] - 2026-07-15</h2>
    <h3>Fixes</h3>
    <ul>
    <li><em>(help)</em> Say <code>alias</code> when there is only one</li>
    </ul>
    </blockquote>
    </details>
    <details>
    <summary>Commits</summary>
    <ul>
    <li><a
    href="https://github.com/clap-rs/clap/commit/0fe0be302726f4253b9bee27eed48438c92917aa"><code>0fe0be3</code></a>
    chore: Release</li>
    <li><a
    href="https://github.com/clap-rs/clap/commit/480af9d045453f4ab96d9bdd4d4b9f5aab3c272f"><code>480af9d</code></a>
    docs: Update changelog</li>
    <li><a
    href="https://github.com/clap-rs/clap/commit/2b3ddd0294a147d1eda917cb303243bcde0c12ee"><code>2b3ddd0</code></a>
    Merge pull request <a
    href="https://redirect.github.com/clap-rs/clap/issues/6340">#6340</a>
    from liskin/fix-completion-escape</li>
    <li><a
    href="https://github.com/clap-rs/clap/commit/7ffe7399ff032cc247eb0449cf8fcdfbfe55a4ec"><code>7ffe739</code></a>
    fix(complete): Do not suggest options after &quot;--&quot;</li>
    <li><a
    href="https://github.com/clap-rs/clap/commit/d47fc4f8a5e9fcc16d0cae15b51e6eb1a8ed5832"><code>d47fc4f</code></a>
    test(complete): Options suggested after escape (<code>--</code>)</li>
    <li>See full diff in <a
    href="https://github.com/clap-rs/clap/compare/clap_complete-v4.6.1...clap_complete-v4.6.2">compare
    view</a></li>
    </ul>
    </details>
    <br />

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

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

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

    ---

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

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

    </details>

    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

commit 97e670c7bbf5e096f57a5efefef1f66d8d37558a
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Thu Jul 16 09:33:10 2026 +0200

    chore(deps): bump cc from 1.2.66 to 1.2.67 (#504)

    Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.2.66 to 1.2.67.
    <details>
    <summary>Release notes</summary>
    <p><em>Sourced from <a
    href="https://github.com/rust-lang/cc-rs/releases">cc's
    releases</a>.</em></p>
    <blockquote>
    <h2>cc-v1.2.67</h2>
    <h3>Other</h3>
    <ul>
    <li>Fix clippy warning (<a
    href="https://redirect.github.com/rust-lang/cc-rs/pull/1788">#1788</a>)</li>
    <li>Regenerate target info (<a
    href="https://redirect.github.com/rust-lang/cc-rs/pull/1785">#1785</a>)</li>
    <li>Add support for <code>aarch64-unknown-linux-pauthtest</code> target
    (<a
    href="https://redirect.github.com/rust-lang/cc-rs/pull/1713">#1713</a>)</li>
    <li>Fix nightly compilation error (<a
    href="https://redirect.github.com/rust-lang/cc-rs/pull/1783">#1783</a>)</li>
    </ul>
    </blockquote>
    </details>
    <details>
    <summary>Changelog</summary>
    <p><em>Sourced from <a
    href="https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md">cc's
    changelog</a>.</em></p>
    <blockquote>
    <h2><a
    href="https://github.com/rust-lang/cc-rs/compare/cc-v1.2.66...cc-v1.2.67">1.2.67</a>
    - 2026-07-11</h2>
    <h3>Other</h3>
    <ul>
    <li>Fix clippy warning (<a
    href="https://redirect.github.com/rust-lang/cc-rs/pull/1788">#1788</a>)</li>
    <li>Regenerate target info (<a
    href="https://redirect.github.com/rust-lang/cc-rs/pull/1785">#1785</a>)</li>
    <li>Add support for <code>aarch64-unknown-linux-pauthtest</code> target
    (<a
    href="https://redirect.github.com/rust-lang/cc-rs/pull/1713">#1713</a>)</li>
    <li>Fix nightly compilation error (<a
    href="https://redirect.github.com/rust-lang/cc-rs/pull/1783">#1783</a>)</li>
    </ul>
    </blockquote>
    </details>
    <details>
    <summary>Commits</summary>
    <ul>
    <li><a
    href="https://github.com/rust-lang/cc-rs/commit/fa031a077aca2b19a31de895eafb17e965f35c89"><code>fa031a0</code></a>
    chore(cc): release v1.2.67 (<a
    href="https://redirect.github.com/rust-lang/cc-rs/issues/1789">#1789</a>)</li>
    <li><a
    href="https://github.com/rust-lang/cc-rs/commit/842aab16d28c77b30157f97bef777f8a643652b5"><code>842aab1</code></a>
    Bump taiki-e/install-action from 2.81.8 to 2.82.8 (<a
    href="https://redirect.github.com/rust-lang/cc-rs/issues/1786">#1786</a>)</li>
    <li><a
    href="https://github.com/rust-lang/cc-rs/commit/e2f07d0d68e3698d59d5e96d53c78f30e83ac845"><code>e2f07d0</code></a>
    Fix clippy warning (<a
    href="https://redirect.github.com/rust-lang/cc-rs/issues/1788">#1788</a>)</li>
    <li><a
    href="https://github.com/rust-lang/cc-rs/commit/8ced615d2c5349dfcb75ab064dfc600490264d89"><code>8ced615</code></a>
    Regenerate target info (<a
    href="https://redirect.github.com/rust-lang/cc-rs/issues/1785">#1785</a>)</li>
    <li><a
    href="https://github.com/rust-lang/cc-rs/commit/2943b5251297b6dabaf3f8e4c7d32560f69415f6"><code>2943b52</code></a>
    Add missing todo for deprecated API</li>
    <li><a
    href="https://github.com/rust-lang/cc-rs/commit/43ae1bf3ff399a7954c5b34cef7dc04d511f360e"><code>43ae1bf</code></a>
    Add support for <code>aarch64-unknown-linux-pauthtest</code> target (<a
    href="https://redirect.github.com/rust-lang/cc-rs/issues/1713">#1713</a>)</li>
    <li><a
    href="https://github.com/rust-lang/cc-rs/commit/a5c584a1fa50ee93c7db9c3ff85b04a36df9100b"><code>a5c584a</code></a>
    Fix nightly compilation error (<a
    href="https://redirect.github.com/rust-lang/cc-rs/issues/1783">#1783</a>)</li>
    <li>See full diff in <a
    href="https://github.com/rust-lang/cc-rs/compare/cc-v1.2.66...cc-v1.2.67">compare
    view</a></li>
    </ul>
    </details>
    <br />

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

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

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

    ---

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

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

    </details>

    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

commit c0246ce66ab607d67c47e458120005e7eb27f586
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Thu Jul 16 09:32:51 2026 +0200

    chore(deps): bump regex from 1.12.4 to 1.13.1 (#503)

    Bumps [regex](https://github.com/rust-lang/regex) from 1.12.4 to 1.13.1.
    <details>
    <summary>Changelog</summary>
    <p><em>Sourced from <a
    href="https://github.com/rust-lang/regex/blob/master/CHANGELOG.md">regex's
    changelog</a>.</em></p>
    <blockquote>
    <h1>1.13.1 (2026-07-15)</h1>
    <p>This is a release that fixes a bug where incorrect regex match
    offsets could be
    reported. Note that this doesn't impact whether a match occurs or not,
    just
    where it occurs. The match offsets are still valid for slicing, they
    just may
    not refer to the correct leftmost-first match. See
    <a
    href="https://redirect.github.com/rust-lang/regex/pull/1364">#1364</a>
    for (many) more details.</p>
    <p>Bug fixes:</p>
    <ul>
    <li><a
    href="https://redirect.github.com/rust-lang/regex/issues/1354">#1354</a>:
    Fixes previously unsound reverse suffix and inner optimizations.</li>
    </ul>
    <h1>1.13.0 (2026-07-09)</h1>
    <p>This release includes a new API, a <code>regex!</code> macro, for
    lazy compilation of
    a regex from a string literal. If you use regexes a lot, it's likely
    you've
    already written one exactly like it. The new macro can be used like
    this:</p>
    <pre lang="rust"><code>use regex::regex;
    <p>fn is_match(line: &amp;str) -&gt; bool {<br />
    // The regex will be compiled approximately once and reused
    automatically.<br />
    // This avoids the footgun of using <code>Regex::new</code> here, which
    would<br />
    // guarantee that it would be compiled every time this routine is
    called.<br />
    // This would likely make this routine much slower than it needs to
    be.<br />
    regex!(r&quot;bar|baz&quot;).is_match(line)<br />
    }</p>
    <p>let hay = &quot;<br />
    path/to/foo:54:Blue Harvest<br />
    path/to/bar:90:Something, Something, Something, Dark Side<br />
    path/to/baz:3:It's a Trap!<br />
    &quot;;</p>
    <p>let matches = hay.lines().filter(|line| is_match(line)).count();<br
    />
    assert_eq!(matches, 2);<br />
    </code></pre></p>
    <p>Improvements:</p>
    <ul>
    <li><a
    href="https://redirect.github.com/rust-lang/regex/issues/709">#709</a>:
    Add a new <code>regex!</code> macro for efficient and automatic reuse of
    a compiled regex.</li>
    </ul>
    </blockquote>
    </details>
    <details>
    <summary>Commits</summary>
    <ul>
    <li><a
    href="https://github.com/rust-lang/regex/commit/2b527599eb9eea0dcc288c704584f242f26a5c61"><code>2b52759</code></a>
    1.13.1, redux</li>
    <li><a
    href="https://github.com/rust-lang/regex/commit/40e98238fff903f3e1ec95bbdb487185dd60504a"><code>40e9823</code></a>
    1.13.1</li>
    <li><a
    href="https://github.com/rust-lang/regex/commit/75fcb962d6ea1c456f6f023c9537a66389413a85"><code>75fcb96</code></a>
    changelog: 1.13.1</li>
    <li><a
    href="https://github.com/rust-lang/regex/commit/64ad0b618e043b791ed5385dd5504a436da1ddae"><code>64ad0b6</code></a>
    automata: fix bug in reverse suffix/inner optimization</li>
    <li><a
    href="https://github.com/rust-lang/regex/commit/fa91c31a4291c9dda6afe19829e6fe2e3bbc2da5"><code>fa91c31</code></a>
    automata: fix a bug caught by Codex review</li>
    <li><a
    href="https://github.com/rust-lang/regex/commit/30390ec3e8889aad830337cdf3a7a01ae195ae73"><code>30390ec</code></a>
    automata: formatting tweaks</li>
    <li><a
    href="https://github.com/rust-lang/regex/commit/821a8eb1ad7860ddc788fe36f495036df63cfc35"><code>821a8eb</code></a>
    automata: refactor reverse suffix/inner search slightly</li>
    <li><a
    href="https://github.com/rust-lang/regex/commit/10afd704d88d00ddfcd10218883a81b3ae5e4831"><code>10afd70</code></a>
    automata: expose the extracted literals for inner literal
    extraction</li>
    <li><a
    href="https://github.com/rust-lang/regex/commit/8c34f41d3c5a0e16ce17dfb964587cb48625a8d5"><code>8c34f41</code></a>
    automata: avoid reverse suffix optimization for non-leftmost-first</li>
    <li><a
    href="https://github.com/rust-lang/regex/commit/5524f02430d2d118d5c34fde54136d08376de711"><code>5524f02</code></a>
    test: add regression tests for failed reverse suffix/inner
    optimizations</li>
    <li>Additional commits viewable in <a
    href="https://github.com/rust-lang/regex/compare/1.12.4...1.13.1">compare
    view</a></li>
    </ul>
    </details>
    <br />

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

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

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

    ---

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

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

    </details>

    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

commit fab5ece22db10b95e176b264fa7bec6609bcdd59
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Thu Jul 16 09:32:03 2026 +0200

    chore(deps): bump syn from 2.0.118 to 2.0.119 (#502)

    Bumps [syn](https://github.com/dtolnay/syn) from 2.0.118 to 2.0.119.
    <details>
    <summary>Release notes</summary>
    <p><em>Sourced from <a
    href="https://github.com/dtolnay/syn/releases">syn's
    releases</a>.</em></p>
    <blockquote>
    <h2>2.0.119</h2>
    <ul>
    <li>Preserve attributes on tail-call expressions in statement position
    (<a
    href="https://redirect.github.com/dtolnay/syn/issues/1994">#1994</a>)</li>
    <li>Parse field-representing types builtin in type position (<a
    href="https://redirect.github.com/dtolnay/syn/issues/1996">#1996</a>)</li>
    </ul>
    </blockquote>
    </details>
    <details>
    <summary>Commits</summary>
    <ul>
    <li><a
    href="https://github.com/dtolnay/syn/commit/3295f9e9841785ac88a5e558c884854d5fb7d67f"><code>3295f9e</code></a>
    Release 2.0.119</li>
    <li><a
    href="https://github.com/dtolnay/syn/commit/6ae9c18793d029bdad068a796e11c0d276d346d1"><code>6ae9c18</code></a>
    Merge pull request <a
    href="https://redirect.github.com/dtolnay/syn/issues/1996">#1996</a>
    from dtolnay/fieldrepresenting</li>
    <li><a
    href="https://github.com/dtolnay/syn/commit/8ebd96350c7f7f52f762a735d581e589a736d10e"><code>8ebd963</code></a>
    Parse field-representing types builtin</li>
    <li><a
    href="https://github.com/dtolnay/syn/commit/540ccf8298c3e422d672a9793f3e12f638d06691"><code>540ccf8</code></a>
    Drop unneeded lifetime on covariant Cursor in verbatim::between</li>
    <li><a
    href="https://github.com/dtolnay/syn/commit/aa05887100a7c28b3e9a777eb4711e3e7457849b"><code>aa05887</code></a>
    Merge pull request <a
    href="https://redirect.github.com/dtolnay/syn/issues/1995">#1995</a>
    from dtolnay/cursor</li>
    <li><a
    href="https://github.com/dtolnay/syn/commit/b7160d353ee7372567b1621f29a42c077c042a69"><code>b7160d3</code></a>
    Reduce forking for Verbatim construction</li>
    <li><a
    href="https://github.com/dtolnay/syn/commit/efdc9255a9668a4bfff8085d114eb95ae6ebd7e9"><code>efdc925</code></a>
    Merge pull request <a
    href="https://redirect.github.com/dtolnay/syn/issues/1994">#1994</a>
    from dtolnay/tailcall</li>
    <li><a
    href="https://github.com/dtolnay/syn/commit/de6424cc3b41f3a4d37691c2b5104d9d33eb8ec0"><code>de6424c</code></a>
    Preserve attribute on tail-call expression in statement position</li>
    <li><a
    href="https://github.com/dtolnay/syn/commit/050dd73d9622948e1321e96a5af378ce63506ee2"><code>050dd73</code></a>
    Stricter const move closure grammar</li>
    <li><a
    href="https://github.com/dtolnay/syn/commit/c7d514bd7f1cf7259945feb8b4c29427bbf2df7e"><code>c7d514b</code></a>
    Merge pull request <a
    href="https://redirect.github.com/dtolnay/syn/issues/1992">#1992</a>
    from dtolnay/scanconstmove</li>
    <li>Additional commits viewable in <a
    href="https://github.com/dtolnay/syn/compare/2.0.118...2.0.119">compare
    view</a></li>
    </ul>
    </details>
    <br />

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

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

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

    ---

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

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

    </details>

    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

commit a6374ce46e3b7f268efee4d978412f5d3429c4c3
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Thu Jul 16 09:31:48 2026 +0200

    chore(deps): bump docker/build-push-action from 3add1637a63aa04f4e5fa1916f9e12090d90780a to cb941d0b895b09c17fa011d41c411b33c752cf28 (#501)

    Bumps
    [docker/build-push-action](https://github.com/docker/build-push-action)
    from 3add1637a63aa04f4e5fa1916f9e12090d90780a to
    cb941d0b895b09c17fa011d41c411b33c752cf28.
    <details>
    <summary>Commits</summary>
    <ul>
    <li><a
    href="https://github.com/docker/build-push-action/commit/cb941d0b895b09c17fa011d41c411b33c752cf28"><code>cb941d0</code></a>
    Merge pull request <a
    href="https://redirect.github.com/docker/build-push-action/issues/1583">#1583</a>
    from crazy-max/group-codeql-dependabot-updates</li>
    <li><a
    href="https://github.com/docker/build-push-action/commit/a9855f30a5cab2ede9bca3c8b2887d3a340a5838"><code>a9855f3</code></a>
    chore: group codeql dependabot updates</li>
    <li>See full diff in <a
    href="https://github.com/docker/build-push-action/compare/3add1637a63aa04f4e5fa1916f9e12090d90780a...cb941d0b895b09c17fa011d41c411b33c752cf28">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 this major version` will close this PR and stop
    Dependabot creating any more for this major version (unless you reopen
    the PR or upgrade to it yourself)
    - `@dependabot ignore this minor version` will close this PR and stop
    Dependabot creating any more for this minor version (unless you reopen
    the PR or upgrade to it yourself)
    - `@dependabot ignore this dependency` will close this PR and stop
    Dependabot creating any more for this dependency (unless you reopen the
    PR or upgrade to it yourself)

    </details>

    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

commit 5ca68ed8365b96b471386b3a85326bbbb4da0684
Author: Imko Marijnissen <50290518+ImkoMarijnissen@users.noreply.github.com>
Date:   Wed Jul 15 13:15:32 2026 +0200

    chore: Add citation file (#473)

    Adds the "Cite this repository" button which links to the bib file.

    Unfortunately, it does not show the bibtex reference directly. When
    using a `.cff` file, certain metadata is lost. Hence, I think this is
    the easiest fix.

commit 42894d6640018a5c4ad28e7170a1f993818b3c64
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Wed Jul 15 09:02:14 2026 +0200

    chore(deps): bump actions/cache from 5 to 6 (#477)

    Bumps [actions/cache](https://github.com/actions/cache) from 5 to 6.
    <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.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>
    <h2>v5.0.5</h2>
    <h2>What's Changed</h2>
    <ul>
    <li>Update ts-http-runtime dependency by <a
    href="https://github.com/yacaovsnc"><code>@​yacaovsnc</code></a> in <a
    href="https://redirect.github.com/actions/cache/pull/1747">actions/cache#1747</a></li>
    </ul>
    <p><strong>Full Changelog</strong>: <a
    href="https://github.com/actions/cache/compare/v5...v5.0.5">https://github.com/actions/cache/compare/v5...v5.0.5</a></p>
    <h2>v5.0.4</h2>
    <h2>What's Changed</h2>
    <ul>
    <li>Add release instructions and update maintainer docs by <a
    href="https://github.com/Link"><code>@​Link</code></a>- in <a
    href="https://redirect.github.com/actions/cache/pull/1696">actions/cache#1696</a></li>
    <li>Potential fix for code scanning alert no. 52: Workflow does not
    contain permissions by <a
    href="https://github.com/Link"><code>@​Link</code></a>- in <a
    href="https://redirect.github.com/actions/cache/pull/1697">actions/cache#1697</a></li>
    <li>Fix workflow permissions and cleanup workflow names / formatting by
    <a href="https://github.com/Link"><code>@​Link</code></a>- in <a
    href="https://redirect.github.com/actions/cache/pull/1699">actions/cache#1699</a></li>
    <li>docs: Update examples to use the latest version by <a
    href="https://github.com/XZTDean"><code>@​XZTDean</code></a> in <a
    href="https://redirect.github.com/actions/cache/pull/1690">actions/cache#1690</a></li>
    <li>Fix proxy integration tests by <a
    href="https://github.com/Link"><code>@​Link</code></a>- in <a
    href="https://redirect.github.com/actions/cache/pull/1701">actions/cache#1701</a></li>
    <li>Fix cache key in examples.md for bun.lock by <a
    href="https://github.com/RyPeck"><code>@​RyPeck</code></a> in <a
    href="https://redirect.github.com/actions/cache/pull/1722">actions/cache#1722</a></li>
    <li>Update dependencies &amp; patch security vulnerabilities by <a
    href="https://github.com/Link"><code>@​Link</code></a>- in <a
    href="https://redirect.github.com/actions/cache/pull/1738">actions/cache#1738</a></li>
    </ul>
    <h2>New Contributors</h2>
    <ul>
    <li><a href="https://github.com/XZTDean"><code>@​XZTDean</code></a> made
    their first contribution in <a
    href="https://redirect.github.com/actions/cache/pull/1690">actions/cache#1690</a></li>
    <li><a href="https://github.com/RyPeck"><code>@​RyPeck</code></a> made
    their first contribution in <a
    href="https://redirect.github.com/actions/cache/pull/1722">actions/cache#1722</a></li>
    </ul>
    <p><strong>Full Changelog</strong>: <a
    href="https://github.com/actions/cache/compare/v5...v5.0.4">https://github.com/actions/cache/compare/v5...v5.0.4</a></p>
    <h2>v5.0.3</h2>
    <h2>What's Changed</h2>
    <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>
    <p><strong>Full Changelog</strong>: <a
    href="https://github.com/actions/cache/compare/v5...v5.0.3">https://github.com/actions/cache/compare/v5...v5.0.3</a></p>
    <h2>v.5.0.2</h2>
    <h1>v5.0.2</h1>
    <h2>What's Changed</h2>
    <!-- raw HTML omitted -->
    </blockquote>
    <p>... (truncated)</p>
    </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/v5...v6">compare
    view</a></li>
    </ul>
    </details>
    <br />

    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

commit 352b03cfcc45643b2f9fdbfd0ce91fd4713d1e8e
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Wed Jul 15 09:02:06 2026 +0200

    chore(deps): bump env_logger from 0.11.10 to 0.11.11 (#485)

    Bumps [env_logger](https://github.com/rust-cli/env_logger) from 0.11.10
    to 0.11.11.
    <details>
    <summary>Release notes</summary>
    <p><em>Sourced from <a
    href="https://github.com/rust-cli/env_logger/releases">env_logger's
    releases</a>.</em></p>
    <blockquote>
    <h2>v0.11.11</h2>
    <h2>[0.11.11] - 2026-06-25</h2>
    <h3>Internal</h3>
    <ul>
    <li>Updated <code>env_filter</code></li>
    </ul>
    </blockquote>
    </details>
    <details>
    <summary>Changelog</summary>
    <p><em>Sourced from <a
    href="https://github.com/rust-cli/env_logger/blob/main/CHANGELOG.md">env_logger's
    changelog</a>.</em></p>
    <blockquote>
    <h2>[0.11.11] - 2026-06-25</h2>
    <h3>Internal</h3>
    <ul>
    <li>Updated <code>env_filter</code></li>
    </ul>
    </blockquote>
    </details>
    <details>
    <summary>Commits</summary>
    <ul>
    <li><a
    href="https://github.com/rust-cli/env_logger/commit/b4d3f2b8dd3f1c3362f07da8f6f4a30c701358cf"><code>b4d3f2b</code></a>
    chore: Release</li>
    <li><a
    href="https://github.com/rust-cli/env_logger/commit/cc2b2efcd7454be82ca49f8ac165b3fbc3095ae3"><code>cc2b2ef</code></a>
    chore: Release</li>
    <li><a
    href="https://github.com/rust-cli/env_logger/commit/69e27d1e822d8f7e6b788bedffcb00575127553f"><code>69e27d1</code></a>
    docs: Update changelog</li>
    <li><a
    href="https://github.com/rust-cli/env_logger/commit/166880db07de228ab22dd32f06b408464e73ac79"><code>166880d</code></a>
    Merge pull request <a
    href="https://redirect.github.com/rust-cli/env_logger/issues/411">#411</a>
    from epage/parse</li>
    <li><a
    href="https://github.com/rust-cli/env_logger/commit/0a580d06e7ac42816e1a84e06fe6417d6973f8e6"><code>0a580d0</code></a>
    fix(filter): Remove 'parse' on no_std</li>
    <li><a
    href="https://github.com/rust-cli/env_logger/commit/78d8ef116efbf981e272ad41c0b380298e4b2060"><code>78d8ef1</code></a>
    Merge pull request <a
    href="https://redirect.github.com/rust-cli/env_logger/issues/404">#404</a>
    from cagatay-y/feature/filter-no_std</li>
    <li><a
    href="https://github.com/rust-cli/env_logger/commit/132fe86c8cb8e5df4fca7d71067a8d862a366b95"><code>132fe86</code></a>
    feat(filter): Add support for no_std environments</li>
    <li><a
    href="https://github.com/rust-cli/env_logger/commit/4feafa4c3c5baeec6d8646bb73a35246882a731d"><code>4feafa4</code></a>
    refactor(env_filter): Fix unreachable pub warning</li>
    <li><a
    href="https://github.com/rust-cli/env_logger/commit/92f8d8d08343c30e60b5f54455d7e16c810fcf11"><code>92f8d8d</code></a>
    Merge pull request <a
    href="https://redirect.github.com/rust-cli/env_logger/issues/410">#410</a>
    from rust-cli/renovate/crate-ci-typos-1.x</li>
    <li><a
    href="https://github.com/rust-cli/env_logger/commit/4e57784e0a878d9e6510d71ee4f63ec96b8fdcc8"><code>4e57784</code></a>
    chore(deps): Update pre-commit hook crate-ci/typos to v1.47.0</li>
    <li>Additional commits viewable in <a
    href="https://github.com/rust-cli/env_logger/compare/v0.11.10...v0.11.11">compare
    view</a></li>
    </ul>
    </details>
    <br />

    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

commit 41a7e71a9977bcc9a255c25f37eebe7503341f57
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Wed Jul 15 08:55:01 2026 +0200

    chore(deps): bump docker/build-push-action from ff26911fd365b0233252dfbd8eede1c0e9ef9a51 to 3add1637a63aa04f4e5fa1916f9e12090d90780a (#493)

    Bumps
    [docker/build-push-action](https://github.com/docker/build-push-action)
    from ff26911fd365b0233252dfbd8eede1c0e9ef9a51 to
    3add1637a63aa04f4e5fa1916f9e12090d90780a.
    <details>
    <summary>Commits</summary>
    <ul>
    <li><a
    href="https://github.com/docker/build-push-action/commit/3add1637a63aa04f4e5fa1916f9e12090d90780a"><code>3add163</code></a>
    Merge pull request <a
    href="https://redirect.github.com/docker/build-push-action/issues/1577">#1577</a>
    from docker/dependabot/npm_and_yarn/sigstore-4.1.1</li>
    <li><a
    href="https://github.com/docker/build-push-action/commit/6d79e06484381a343cfce7200a7488c4f530e6a7"><code>6d79e06</code></a>
    chore(deps): Bump sigstore from 4.1.0 to 4.1.1</li>
    <li><a
    href="https://github.com/docker/build-push-action/commit/53b7df96c91f9c12dcc8a07bcb9ccacbed38856a"><code>53b7df9</code></a>
    Merge pull request <a
    href="https://redirect.github.com/docker/build-push-action/issues/1572">#1572</a>
    from docker/dependabot/npm_and_yarn/docker/actions-t...</li>
    <li><a
    href="https://github.com/docker/build-push-action/commit/154298c1ca89be1c0e019084f0611ddca621aafc"><code>154298c</code></a>
    [dependabot skip] chore: update generated content</li>
    <li><a
    href="https://github.com/docker/build-push-action/commit/cb1238b9c9eb453d106b4e4142a5bd9cde710040"><code>cb1238b</code></a>
    chore(deps): Bump <code>@​docker/actions-toolkit</code> from 0.91.0 to
    0.92.0</li>
    <li><a
    href="https://github.com/docker/build-push-action/commit/24f845d5cbe75d2d350a984fd0e18cb7a3f29c1c"><code>24f845d</code></a>
    Merge pull request <a
    href="https://redirect.github.com/docker/build-push-action/issues/1566">#1566</a>
    from docker/dependabot/npm_and_yarn/js-yaml-4.2.0</li>
    <li><a
    href="https://github.com/docker/build-push-action/commit/9c6973007b52c322651c38915d5e8824cea95c50"><code>9c69730</code></a>
    [dependabot skip] chore: update generated content</li>
    <li><a
    href="https://github.com/docker/build-push-action/commit/bc3a3a5f72a6dca16c2c2468d1dfc55ee66d2193"><code>bc3a3a5</code></a>
    Merge pull request <a
    href="https://redirect.github.com/docker/build-push-action/issues/1574">#1574</a>
    from docker/dependabot/github_actions/aws-actions/co...</li>
    <li><a
    href="https://github.com/docker/build-push-action/commit/a82c504a2387bb8bedc50072f9c554ae2a7dab5d"><code>a82c504</code></a>
    chore(deps): Bump js-yaml from 4.1.1 to 4.3.0</li>
    <li><a
    href="https://github.com/docker/build-push-action/commit/0285a75190c039d6dac52b7711abcef3f5d8f6f6"><code>0285a75</code></a>
    Merge pull request <a
    href="https://redirect.github.com/docker/build-push-action/issues/1573">#1573</a>
    from docker/dependabot/github_actions/actions/cache-...</li>
    <li>Additional commits viewable in <a
    href="https://github.com/docker/build-push-action/compare/ff26911fd365b0233252dfbd8eede1c0e9ef9a51...3add1637a63aa04f4e5fa1916f9e12090d90780a">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 this major version` will close this PR and stop
    Dependabot creating any more for this major version (unless you reopen
    the PR or upgrade to it yourself)
    - `@dependabot ignore this minor version` will close this PR and stop
    Dependabot creating any more for this minor version (unless you reopen
    the PR or upgrade to it yourself)
    - `@dependabot ignore this dependency` will close this PR and stop
    Dependabot creating any more for this dependency (unless you reopen the
    PR or upgrade to it yourself)

    </details>

    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

commit c78512ee66512f5deb307a6d97ce840f80f9f99f
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Wed Jul 15 08:54:30 2026 +0200

    chore(deps): bump docker/metadata-action from 020b7354dd55a28effcab0f3b19639fe24d3f58b to dc802804100637a589fabce1cb79ff13a1411302 (#492)

    Bumps
    [docker/metadata-action](https://github.com/docker/metadata-action) from
    020b7354dd55a28effcab0f3b19639fe24d3f58b to
    dc802804100637a589fabce1cb79ff13a1411302.
    <details>
    <summary>Commits</summary>
    <ul>
    <li><a
    href="https://github.com/docker/metadata-action/commit/dc802804100637a589fabce1cb79ff13a1411302"><code>dc80280</code></a>
    Merge pull request <a
    href="https://redirect.github.com/docker/metadata-action/issues/696">#696</a>
    from docker/dependabot/npm_and_yarn/docker/actions-to...</li>
    <li><a
    href="https://github.com/docker/metadata-action/commit/2b9fe830efc58cb7b0fab7c94300b1afa01864db"><code>2b9fe83</code></a>
    [dependabot skip] chore: update generated content</li>
    <li><a
    href="https://github.com/docker/metadata-action/commit/8128ce30ab370fd360c8423698dcc077f2db8087"><code>8128ce3</code></a>
    chore(deps): Bump <code>@​docker/actions-toolkit</code> from 0.91.0 to
    0.92.0</li>
    <li><a
    href="https://github.com/docker/metadata-action/commit/1d1c89551edb081628e818368680beffb2bbccee"><code>1d1c895</code></a>
    Merge pull request <a
    href="https://redirect.github.com/docker/metadata-action/issues/695">#695</a>
    from docker/dependabot/npm_and_yarn/semver-7.8.5</li>
    <li><a
    href="https://github.com/docker/metadata-action/commit/7f0c2dd4c83ea6258f78bf2fc6a02908417518ad"><code>7f0c2dd</code></a>
    Merge pull request <a
    href="https://redirect.github.com/docker/metadata-action/issues/694">#694</a>
    from docker/dependabot/npm_and_yarn/sigstore-4.1.1</li>
    <li><a
    href="https://github.com/docker/metadata-action/commit/025f8c5c8167edab853571a387d8e80ccc1e91ed"><code>025f8c5</code></a>
    [dependabot skip] chore: update generated content</li>
    <li><a
    href="https://github.com/docker/metadata-action/commit/e98d63c3081990566e174100a3afaa97aefbbcf3"><code>e98d63c</code></a>
    chore(deps): Bump semver from 7.8.1 to 7.8.5</li>
    <li><a
    href="https://github.com/docker/metadata-action/commit/37d93799507b94cf1c1885efd7278d52a0fb806a"><code>37d9379</code></a>
    chore(deps): Bump sigstore from 4.1.0 to 4.1.1</li>
    <li><a
    href="https://github.com/docker/metadata-action/commit/a1b80728476a956a25c5eeaff91c4dc46e7ac1bc"><code>a1b8072</code></a>
    Merge pull request <a
    href="https://redirect.github.com/docker/metadata-action/issues/690">#690</a>
    from docker/dependabot/npm_and_yarn/sigstore/core-3.2.1</li>
    <li><a
    href="https://github.com/docker/metadata-action/commit/e0e338106d6ae0da5b44537049a34620b3559a5c"><code>e0e3381</code></a>
    [dependabot skip] chore: update generated content</li>
    <li>Additional commits viewable in <a
    href="https://github.com/docker/metadata-action/compare/020b7354dd55a28effcab0f3b19639fe24d3f58b...dc802804100637a589fabce1cb79ff13a1411302">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 this major version` will close this PR and stop
    Dependabot creating any more for this major version (unless you reopen
    the PR or upgrade to it yourself)
    - `@dependabot ignore this minor version` will close this PR and stop
    Dependabot creating any more for this minor version (unless you reopen
    the PR or upgrade to it yourself)
    - `@dependabot ignore this dependency` will close this PR and stop
    Dependabot creating any more for this dependency (unless you reopen the
    PR or upgrade to it yourself)

    </details>

    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

commit 10d4c16111518c32283ee1f0ccde2571cd5cd52c
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Wed Jul 15 08:54:18 2026 +0200

    chore(deps): bump docker/login-action from 3864d6aed8ff134b2ed894ce00c87695c709c870 to af1e73f918a031802d376d3c8bbc3fe56130a9b0 (#491)

    Bumps [docker/login-action](https://github.com/docker/login-action) from
    3864d6aed8ff134b2ed894ce00c87695c709c870 to
    af1e73f918a031802d376d3c8bbc3fe56130a9b0.
    <details>
    <summary>Commits</summary>
    <ul>
    <li><a
    href="https://github.com/docker/login-action/commit/af1e73f918a031802d376d3c8bbc3fe56130a9b0"><code>af1e73f</code></a>
    Merge pull request <a
    href="https://redirect.github.com/docker/login-action/issues/1034">#1034</a>
    from docker/dependabot/npm_and_yarn/aws-sdk-dependen...</li>
    <li><a
    href="https://github.com/docker/login-action/commit/da722bde43bacb027adfc67d42dbaa4c0f9e550b"><code>da722bd</code></a>
    [dependabot skip] chore: update generated content</li>
    <li><a
    href="https://github.com/docker/login-action/commit/2916ad60bd5cb72f07aa54c69fdcc61749c09b7a"><code>2916ad6</code></a>
    build(deps): bump the aws-sdk-dependencies group across 1 directory with
    2 up...</li>
    <li><a
    href="https://github.com/docker/login-action/commit/ca0a662f786e4cfddce972005bd68f3dafc3a903"><code>ca0a662</code></a>
    Merge pull request <a
    href="https://redirect.github.com/docker/login-action/issues/1035">#1035</a>
    from crazy-max/fix-registry-auth-empty-mask</li>
    <li><a
    href="https://github.com/docker/login-action/commit/c455755a579833bf0d2e4e54e3beb413ef10cc80"><code>c455755</code></a>
    chore: update generated content</li>
    <li><a
    href="https://github.com/docker/login-action/commit/48351901f89581a7c12870c787d3f06d1f498438"><code>4835190</code></a>
    skip empty registry-auth secret mask</li>
    <li><a
    href="https://github.com/docker/login-action/commit/992421c6e6806a7f6df609d1bfff374f9eca3004"><code>992421c</code></a>
    Merge pull request <a
    href="https://redirect.github.com/docker/login-action/issues/1033">#1033</a>
    from docker/dependabot/github_actions/docker/bake-ac...</li>
    <li><a
    href="https://github.com/docker/login-action/commit/b249b43765525dd7951068267a34cf63f22ab4f0"><code>b249b43</code></a>
    Merge pull request <a
    href="https://redirect.github.com/docker/login-action/issues/1032">#1032</a>
    from docker/dependabot/github_actions/docker/bake-ac...</li>
    <li><a
    href="https://github.com/docker/login-action/commit/1b67977736863551a88ff218642a2d7628b10520"><code>1b67977</code></a>
    build(deps): bump docker/bake-action from 7.2.0 to 7.3.0</li>
    <li><a
    href="https://github.com/docker/login-action/commit/9d49d6a3234c78daa10c3c12183ef7b6caa8e69e"><code>9d49d6a</code></a>
    build(deps): bump docker/bake-action/subaction/matrix</li>
    <li>Additional commits viewable in <a
    href="https://github.com/docker/login-action/compare/3864d6aed8ff134b2ed894ce00c87695c709c870...af1e73f918a031802d376d3c8bbc3fe56130a9b0">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 this major version` will close this PR and stop
    Dependabot creating any more for this major version (unless you reopen
    the PR or upgrade to it yourself)
    - `@dependabot ignore this minor version` will close this PR and stop
    Dependabot creating any more for this minor version (unless you reopen
    the PR or upgrade to it yourself)
    - `@dependabot ignore this dependency` will close this PR and stop
    Dependabot creating any more for this dependency (unless you reopen the
    PR or upgrade to it yourself)

    </details>

    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

commit 498823fa7866a2b3263f944fde8b15ca49dbef89
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Wed Jul 15 08:50:08 2026 +0200

    chore(deps): bump rand from 0.10.1 to 0.10.2 (#494)

    Bumps [rand](https://github.com/rust-random/rand) from 0.10.1 to 0.10.2.
    <details>
    <summary>Changelog</summary>
    <p><em>Sourced from <a
    href="https://github.com/rust-random/rand/blob/master/CHANGELOG.md">rand's
    changelog</a>.</em></p>
    <blockquote>
    <h2>[0.10.2] — 2026-07-02</h2>
    <h3>Fixes</h3>
    <ul>
    <li>Fix possible memory safety violation due to deserialization of
    <code>UniformChar</code> from bad source (<a
    href="https://redirect.github.com/rust-random/rand/issues/1790">#1790</a>)</li>
    </ul>
    <h3>Changes</h3>
    <ul>
    <li>Document required output order of fn <code>partial_shuffle</code>
    and apply <code>#[must_use]</code> (<a
    href="https://redirect.github.com/rust-random/rand/issues/1769">#1769</a>)</li>
    <li>Avoid usage of <code>unsafe</code> in contexts where non-local
    memory corruption could invalidate contract (<a
    href="https://redirect.github.com/rust-random/rand/issues/1791">#1791</a>)</li>
    </ul>
    <p><a
    href="https://redirect.github.com/rust-random/rand/issues/1769">#1769</a>:
    <a
    href="https://redirect.github.com/rust-random/rand/pull/1769">rust-random/rand#1769</a>
    <a
    href="https://redirect.github.com/rust-random/rand/issues/1790">#1790</a>:
    <a
    href="https://redirect.github.com/rust-random/rand/pull/1790">rust-random/rand#1790</a>
    <a
    href="https://redirect.github.com/rust-random/rand/issues/1791">#1791</a>:
    <a
    href="https://redirect.github.com/rust-random/rand/pull/1791">rust-random/rand#1791</a></p>
    </blockquote>
    </details>
    <details>
    <summary>Commits</summary>
    <ul>
    <li><a
    href="https://github.com/rust-random/rand/commit/1540ea327e8beaf0694ea64f6d9eb8eaadd47bd5"><code>1540ea3</code></a>
    Prepare rand 0.10.2 (<a
    href="https://redirect.github.com/rust-random/rand/issues/1800">#1800</a>)</li>
    <li><a
    href="https://github.com/rust-random/rand/commit/a29964ad94b54c25b3865626de6964ce0f796a29"><code>a29964a</code></a>
    Bump chacha20 from 0.10.0 to 0.10.1 in the all-deps group (<a
    href="https://redirect.github.com/rust-random/rand/issues/1801">#1801</a>)</li>
    <li><a
    href="https://github.com/rust-random/rand/commit/ced94914cb75c93a1f19140a966a466345185fff"><code>ced9491</code></a>
    Tweak docs for RngExt::random_range and SampleRange (<a
    href="https://redirect.github.com/rust-random/rand/issues/1798">#1798</a>)</li>
    <li><a
    href="https://github.com/rust-random/rand/commit/db146647afaf002b866420d34e4501b0dd872163"><code>db14664</code></a>
    Check UniformChar validity on deser (<a
    href="https://redirect.github.com/rust-random/rand/issues/1790">#1790</a>)</li>
    <li><a
    href="https://github.com/rust-random/rand/commit/bea8620204c7aeecdefc132b5cb0dec8134add4b"><code>bea8620</code></a>
    Bump the all-deps group with 2 updates (<a
    href="https://redirect.github.com/rust-random/rand/issues/1796">#1796</a>)</li>
    <li><a
    href="https://github.com/rust-random/rand/commit/4f449322825498e4ec1f486119e5fd251ba97f8a"><code>4f44932</code></a>
    Bump actions/cache from 5 to 6 (<a
    href="https://redirect.github.com/rust-random/rand/issues/1795">#1795</a>)</li>
    <li><a
    href="https://github.com/rust-random/rand/commit/b999a130a990b30af01743021e8ea97f3b09a17e"><code>b999a13</code></a>
    Bump actions/checkout from 6 to 7 (<a
    href="https://redirect.github.com/rust-random/rand/issues/1794">#1794</a>)</li>
    <li><a
    href="https://github.com/rust-random/rand/commit/aeab810bd9704a3b7666ba0a78e1ad5d1d5ad1ae"><code>aeab810</code></a>
    Avoid unsafe where safety depends on non-local values (<a
    href="https://redirect.github.com/rust-random/rand/issues/1791">#1791</a>)</li>
    <li><a
    href="https://github.com/rust-random/rand/commit/1896d7c660524a022b3dbc3a1e044e162d766b25"><code>1896d7c</code></a>
    Add typos CI job (<a
    href="https://redirect.github.com/rust-random/rand/issues/1789">#1789</a>)</li>
    <li><a
    href="https://github.com/rust-random/rand/commit/43eddee18c8cca2cebee929be3899cf183afe801"><code>43eddee</code></a>
    Bump the all-deps group with 2 updates (<a
    href="https://redirect.github.com/rust-random/rand/issues/1788">#1788</a>)</li>
    <li>Additional commits viewable in <a
    href="https://github.com/rust-random/rand/compare/0.10.1...0.10.2">compare
    view</a></li>
    </ul>
    </details>
    <br />

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

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

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

    ---

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

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

    </details>

    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

commit c775b0cc0ea7fa0372351eec58e831d008a090ba
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Wed Jul 15 08:49:21 2026 +0200

    chore(deps): bump cc from 1.2.65 to 1.2.66 (#495)

    Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.2.65 to 1.2.66.
    <details>
    <summary>Release notes</summary>
    <p><em>Sourced from <a
    href="https://github.com/rust-lang/cc-rs/releases">cc's
    releases</a>.</em></p>
    <blockquote>
    <h2>cc-v1.2.66</h2>
    <h3>Other</h3>
    <ul>
    <li>Fix target parsing for aarch64-unknown-linux-pauthtest (<a
    href="https://redirect.github.com/rust-lang/cc-rs/pull/1779">#1779</a>)</li>
    <li>Support new QNX targets (<a
    href="https://red…
@maartenflippo
maartenflippo merged commit d8fa0af into main Jul 21, 2026
8 checks passed
@maartenflippo
maartenflippo deleted the refactor/variable-registration branch July 21, 2026 10:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants