Skip to content

Commit 15d3b80

Browse files
committed
Squashed commit of the following:
commit 6a1615b1a1315c4664503d535e573616ec4bdf5d Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu Apr 30 13:49:17 2026 +1000 chore(deps): bump pyo3 from 0.25.1 to 0.28.3 (#436) Bumps [pyo3](https://github.com/pyo3/pyo3) from 0.25.1 to 0.28.3. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/pyo3/pyo3/releases">pyo3's releases</a>.</em></p> <blockquote> <h2>PyO3 0.28.3</h2> <p>This patch contains several fixes for stability of the PyO3 0.28.x series:</p> <ul> <li><code>Python::attach</code> and <code>Python::try_attach</code> will no longer return before the thread initializing the interpreter has finished runnning <code>site.py</code> when using the <code>auto-initialize</code> feature.</li> <li>Fix unsoundness in <code>PyBytesWriter::write_vectored</code> when targeting the Python 3.15 prerelease interpreter.</li> <li>Fix possible deadlock in <code>.into_pyobject()</code> implementation for C-like <code>#[pyclass]</code> enums.</li> </ul> <p>A couple of edge cases causing compile failures were also fixed.</p> <p>Thank you to the following contributors for the improvements:</p> <p><a href="https://github.com/alex"><code>@​alex</code></a> <a href="https://github.com/bschoenmaeckers"><code>@​bschoenmaeckers</code></a> <a href="https://github.com/chirizxc"><code>@​chirizxc</code></a> <a href="https://github.com/davidhewitt"><code>@​davidhewitt</code></a> <a href="https://github.com/Embers-of-the-Fire"><code>@​Embers-of-the-Fire</code></a> <a href="https://github.com/Icxolu"><code>@​Icxolu</code></a> <a href="https://github.com/maurosilber"><code>@​maurosilber</code></a> <a href="https://github.com/ngoldbaum"><code>@​ngoldbaum</code></a></p> <h2>PyO3 0.28.2</h2> <p>This patch release contains a soundness fix for subclassing native types such as <code>PyList</code> with the <code>abi3</code> feature enabled when targeting a minimum version of Python 3.12 or higher. (Support for doing such subclassing was newly added in PyO3 0.28.0.)</p> <p>PyO3 0.28.0 and 0.28.1 will be yanked.</p> <p>This release also contains a correction to the FFI definition <code>PyType_GetTypeDataSize</code> and incorrectly-generated <code>__qualname__</code> on <code>#[pyclass]</code> enum variant types when using <code>#[pyo3(name = &quot;...&quot;)]</code> option to rename the enum and/or variant.</p> <p>Thank you to the following contributors for the improvements:</p> <p><a href="https://github.com/davidhewitt"><code>@​davidhewitt</code></a> <a href="https://github.com/Icxolu"><code>@​Icxolu</code></a> <a href="https://github.com/ngoldbaum"><code>@​ngoldbaum</code></a></p> <h2>PyO3 0.28.1</h2> <p>This patch contains a number of minor compile-time fixes for PyO3 0.28.0.</p> <p>Thank you to the following contributors for the improvements:</p> <p><a href="https://github.com/davidhewitt"><code>@​davidhewitt</code></a> <a href="https://github.com/funsafemath"><code>@​funsafemath</code></a> <a href="https://github.com/ngoldbaum"><code>@​ngoldbaum</code></a> <a href="https://github.com/rara64"><code>@​rara64</code></a> <a href="https://github.com/tdyas"><code>@​tdyas</code></a></p> <h2>PyO3 0.28.0</h2> <p>This release contains many improvements across PyO3's feature set:</p> <ul> <li>Proper support for <code>__init__</code> methods for <code>#[pyclass]</code> types</li> <li>Support for <code>#[deleter]</code>s to complement the existing <code>#[getter]</code> and <code>#[setter]</code> attributes when implementing class &quot;properties&quot;.</li> <li>Support for subclassing many Python types with the <code>abi3</code> feature (requires Python 3.12+).</li> <li>A new <code>#[pyclass(new = &quot;from_fields&quot;)]</code> option to automatically define the constructor from the class fields.</li> <li>Many corrections to FFI definitions (including removal of many private CPython methods)</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/PyO3/pyo3/blob/main/CHANGELOG.md">pyo3's changelog</a>.</em></p> <blockquote> <h2>[0.28.3] - 2026-04-02</h2> <h3>Fixed</h3> <ul> <li>Fix compile error with <code>#[pyclass(get_all)]</code> on a type named <code>Probe</code>. <a href="https://redirect.github.com/PyO3/pyo3/pull/5837">#5837</a></li> <li>Fix compile error in debug builds related to <code>_Py_NegativeRefcount</code> with Python &lt; 3.12. <a href="https://redirect.github.com/PyO3/pyo3/pull/5847">#5847</a></li> <li>Fix a race condition where <code>Python::attach</code> or <code>try_attach</code> could return before <code>site.py</code> had finished running. <a href="https://redirect.github.com/PyO3/pyo3/pull/5903">#5903</a></li> <li>Fix unsoundness in <code>PyBytesWriter::write_vectored</code> with Python 3.15 prerelease versions. <a href="https://redirect.github.com/PyO3/pyo3/pull/5907">#5907</a></li> <li>Fix deadlock in <code>.into_pyobject()</code> implementation for C-like <code>#[pyclass]</code> enums. <a href="https://redirect.github.com/PyO3/pyo3/pull/5928">#5928</a></li> </ul> <h2>[0.28.2] - 2026-02-18</h2> <h3>Fixed</h3> <ul> <li>Fix complex enum <code>__qualname__</code> not using python name <a href="https://redirect.github.com/PyO3/pyo3/pull/5815">#5815</a></li> <li>Fix FFI definition <code>PyType_GetTypeDataSize</code> (was incorrectly named <code>PyObject_GetTypeDataSize</code>). <a href="https://redirect.github.com/PyO3/pyo3/pull/5819">#5819</a></li> <li>Fix memory corruption when subclassing native types with <code>abi3</code> feature on Python 3.12+ (newly enabled in PyO3 0.28.0). <a href="https://redirect.github.com/PyO3/pyo3/pull/5823">#5823</a></li> </ul> <h2>[0.28.1] - 2026-02-14</h2> <h3>Fixed</h3> <ul> <li>Fix <code>*args</code> / <code>**kwargs</code> support in<code> experimental-async</code> feature (regressed in 0.28.0). <a href="https://redirect.github.com/PyO3/pyo3/pull/5771">#5771</a></li> <li>Fix <code>clippy::declare_interior_mutable_const</code> warning inside <code>#[pyclass]</code> generated code on enums. <a href="https://redirect.github.com/PyO3/pyo3/pull/5772">#5772</a></li> <li>Fix <code>ambiguous_associated_items</code> compilation error when deriving <code>FromPyObject</code> or using <code>#[pyclass(from_py_object)]</code> macro on enums with <code>Error</code> variant. <a href="https://redirect.github.com/PyO3/pyo3/pull/5784">#5784</a></li> <li>Fix <code>__qualname__</code> for complex <code>#[pyclass]</code> enum variants to include the enum name. <a href="https://redirect.github.com/PyO3/pyo3/pull/5796">#5796</a></li> <li>Fix missing <code>std::sync::atomic::Ordering</code> import for targets without atomic64. <a href="https://redirect.github.com/PyO3/pyo3/pull/5808">#5808</a></li> </ul> <h2>[0.28.0] - 2026-02-01</h2> <h3>Packaging</h3> <ul> <li>Bump MSRV to Rust 1.83. <a href="https://redirect.github.com/PyO3/pyo3/pull/5531">#5531</a></li> <li>Bump minimum supported <code>quote</code> version to 1.0.37. <a href="https://redirect.github.com/PyO3/pyo3/pull/5531">#5531</a></li> <li>Bump supported GraalPy version to 25.0. <a href="https://redirect.github.com/PyO3/pyo3/pull/5542">#5542</a></li> <li>Drop <code>memoffset</code> dependency. <a href="https://redirect.github.com/PyO3/pyo3/pull/5545">#5545</a></li> <li>Support for free-threaded Python is now opt-out rather than opt-in. <a href="https://redirect.github.com/PyO3/pyo3/pull/5564">#5564</a></li> <li>Bump <code>target-lexicon</code> dependency to 0.13.3. <a href="https://redirect.github.com/PyO3/pyo3/pull/5571">#5571</a></li> <li>Drop <code>indoc</code> and <code>unindent</code> dependencies. <a href="https://redirect.github.com/PyO3/pyo3/pull/5608">#5608</a></li> </ul> <h3>Added</h3> <ul> <li>Add <code>__init__</code> support in <code>#[pymethods]</code>. <a href="https://redirect.github.com/PyO3/pyo3/pull/4951">#4951</a></li> <li>Expose <code>PySuper</code> on PyPy, GraalPy and ABI3 <a href="https://redirect.github.com/PyO3/pyo3/pull/4951">#4951</a></li> <li>Add <code>PyString::from_fmt</code> and <code>py_format!</code> macro. <a href="https://redirect.github.com/PyO3/pyo3/pull/5199">#5199</a></li> <li>Add <code>#[pyclass(new = &quot;from_fields&quot;)]</code> option. <a href="https://redirect.github.com/PyO3/pyo3/pull/5421">#5421</a></li> <li>Add <code>pyo3::buffer::PyUntypedBuffer</code>, a type-erased form of <code>PyBuffer&lt;T&gt;</code>. <a href="https://redirect.github.com/PyO3/pyo3/pull/5458">#5458</a></li> <li>Add <code>PyBytes::new_with_writer</code> <a href="https://redirect.github.com/PyO3/pyo3/pull/5517">#5517</a></li> <li>Add <code>PyClass::NAME</code>. <a href="https://redirect.github.com/PyO3/pyo3/pull/5579">#5579</a></li> <li>Add <code>pyo3_build_config::add_libpython_rpath_link_args</code>. <a href="https://redirect.github.com/PyO3/pyo3/pull/5624">#5624</a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/PyO3/pyo3/commit/743af645e7143be6abe2217aafaa0540cf532af4"><code>743af64</code></a> release: 0.28.3</li> <li><a href="https://github.com/PyO3/pyo3/commit/2042b4c0c1da74844f43f4970ab52386abf6deac"><code>2042b4c</code></a> fix deadlock when initializing enum via <code>into_pyobject()</code> (<a href="https://redirect.github.com/pyo3/pyo3/issues/5928">#5928</a>)</li> <li><a href="https://github.com/PyO3/pyo3/commit/01572470d031d16cd14fdc96f330397b4055f424"><code>0157247</code></a> ci: update UI tests for Rust 1.94 (<a href="https://redirect.github.com/pyo3/pyo3/issues/5859">#5859</a>)</li> <li><a href="https://github.com/PyO3/pyo3/commit/e234f8a75aaa0c0c0feecaf360107a78a7c0e436"><code>e234f8a</code></a> Update getting-started.md (<a href="https://redirect.github.com/pyo3/pyo3/issues/5899">#5899</a>)</li> <li><a href="https://github.com/PyO3/pyo3/commit/c06848d5f466350efe6bd05c9fc6cd923a12dd78"><code>c06848d</code></a> fix ffi-check in 3.15.0a7 (<a href="https://redirect.github.com/pyo3/pyo3/issues/5873">#5873</a>)</li> <li><a href="https://github.com/PyO3/pyo3/commit/83f4283bde6e207827edeb9422e79944ced8327c"><code>83f4283</code></a> remove unused <code>try_trait_v2</code> feature when enabling the <code>nightly</code> feature (<a href="https://redirect.github.com/pyo3/pyo3/issues/5868">#5868</a>)</li> <li><a href="https://github.com/PyO3/pyo3/commit/0de57ed453eeb47e40b011d8be2cdc0028116ebc"><code>0de57ed</code></a> Fix unsoundness in <code>PyBytesWriter::write_vectored</code> (<a href="https://redirect.github.com/pyo3/pyo3/issues/5907">#5907</a>)</li> <li><a href="https://github.com/PyO3/pyo3/commit/49cd13fae22c5e46a4b0946539b9e64bb8ccb573"><code>49cd13f</code></a> fixes <a href="https://redirect.github.com/pyo3/pyo3/issues/5900">#5900</a> -- address race condition with initialization and site.py loading...</li> <li><a href="https://github.com/PyO3/pyo3/commit/c90d163638ef4a754fd31a3a29e3ba2ebc05a354"><code>c90d163</code></a> [fix] Fix <code>std::ffi</code> import for <code>_Py_NegativeRefcount</code> (<a href="https://redirect.github.com/pyo3/pyo3/issues/5847">#5847</a>)</li> <li><a href="https://github.com/PyO3/pyo3/commit/b79d7257dd0abd9d6d029878d8f0902a8e35e695"><code>b79d725</code></a> fix(pyo3-macros): allow pyclass named Probe (<a href="https://redirect.github.com/pyo3/pyo3/issues/5837">#5837</a>)</li> <li>Additional commits viewable in <a href="https://github.com/pyo3/pyo3/compare/v0.25.1...v0.28.3">compare view</a></li> </ul> </details> <br /> [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=pyo3&package-manager=cargo&previous-version=0.25.1&new-version=0.28.3)](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> Co-authored-by: Maarten Flippo <maartenflippo@outlook.com> commit 646c2f2d577b59574759695f54c6884290a3a4ff Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu Apr 30 13:25:04 2026 +1000 chore(deps): bump wasm-bindgen-test from 0.3.68 to 0.3.70 (#435) Bumps [wasm-bindgen-test](https://github.com/wasm-bindgen/wasm-bindgen) from 0.3.68 to 0.3.70. <details> <summary>Commits</summary> <ul> <li>See full diff in <a href="https://github.com/wasm-bindgen/wasm-bindgen/commits">compare view</a></li> </ul> </details> <br /> [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=wasm-bindgen-test&package-manager=cargo&previous-version=0.3.68&new-version=0.3.70)](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 5b887a44e7f614e4cdfd312df638dbc1945f5251 Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu Apr 30 13:23:58 2026 +1000 chore(deps): bump cc from 1.2.60 to 1.2.61 (#437) Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.2.60 to 1.2.61. <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.61</h2> <h3>Other</h3> <ul> <li>fix <code>OutputKind::Capture</code> documentation (<a href="https://redirect.github.com/rust-lang/cc-rs/pull/1705">#1705</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.60...cc-v1.2.61">1.2.61</a> - 2026-04-24</h2> <h3>Other</h3> <ul> <li>fix <code>OutputKind::Capture</code> documentation (<a href="https://redirect.github.com/rust-lang/cc-rs/pull/1705">#1705</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/rust-lang/cc-rs/commit/360f69119862eb26b44253f09f9ce60be5b3011b"><code>360f691</code></a> chore(cc): release v1.2.61 (<a href="https://redirect.github.com/rust-lang/cc-rs/issues/1707">#1707</a>)</li> <li><a href="https://github.com/rust-lang/cc-rs/commit/17a2788f499da76bf7a6b404367ab37613b8fa00"><code>17a2788</code></a> Bump taiki-e/install-action from 2.75.16 to 2.75.17 (<a href="https://redirect.github.com/rust-lang/cc-rs/issues/1706">#1706</a>)</li> <li><a href="https://github.com/rust-lang/cc-rs/commit/da52db738b1b1ea89cc176dfd718e0de6bef742a"><code>da52db7</code></a> command_helpers.rs: fix <code>OutputKind::Capture</code> documentation (<a href="https://redirect.github.com/rust-lang/cc-rs/issues/1705">#1705</a>)</li> <li><a href="https://github.com/rust-lang/cc-rs/commit/ee64d58c06ec386eaa5298bb415e56c5710498ce"><code>ee64d58</code></a> Bump taiki-e/install-action from 2.75.4 to 2.75.5 (<a href="https://redirect.github.com/rust-lang/cc-rs/issues/1703">#1703</a>)</li> <li><a href="https://github.com/rust-lang/cc-rs/commit/78cf7e481b1b2ce6f61cada4128843451e5580f4"><code>78cf7e4</code></a> CI: Hash-pin all actions, apply other suggestions from zizmor (<a href="https://redirect.github.com/rust-lang/cc-rs/issues/1702">#1702</a>)</li> <li>See full diff in <a href="https://github.com/rust-lang/cc-rs/compare/cc-v1.2.60...cc-v1.2.61">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.60&new-version=1.2.61)](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 7efb72a451c1c09d32071e1bfb412a242fd71421 Author: Maarten Flippo <maartenflippo@outlook.com> Date: Thu Apr 30 10:52:33 2026 +1000 feat(pumpkin-core): Define predicate order and add Predicate::implies (#426) The chosen order makes minimizing a sorted collection easy. It can be done in two linear passes, one forward and one backward. commit 70503a5ed2929006f0be72c97045409e8605f9e5 Author: Maarten Flippo <maartenflippo@outlook.com> Date: Thu Apr 30 09:57:09 2026 +1000 feat(pumpkin-core): Brancher implements Debug (#409) Just like many other traits, we want the `Brancher` trait to extend `Debug`. This allows for easier debug printing and usage of the Debug derive macro. commit c82db0ac716f973a395bc7a50ea492614ca236c1 Author: Maarten Flippo <maartenflippo@outlook.com> Date: Thu Apr 30 09:56:24 2026 +1000 refactor(pumpkin-core): Attach `InferenceCode` instead of `Predicate` (#433) When calling `PropagationContext::post`, the user must supply an inference code as a parameter. However, when the reason of the propagation is lazy, the inference code of the explanation may differ from the inference that identified the propagation. A very small other benefit is that on benchmarks with much propagation, the clone of an inference code actually shows up in profiles. With this PR, when a lazy explanation is used, no such clone happens. For eager reasons: Instead of passing the `InferenceCode` to `PropagationContext::post`, it is part of the eager reason. `From<PropositionalConjunction>` is no longer implemented for `Reason`. Instead, `From<(PropositionalConjunction, &InferenceCode)>` is implemented. Alternatively, if a lazy explanation is used, instead of returning `&[Predicate]`, `Propagator::lazy_explanation` now returns a `LazyExplanation`. This is a combination of a slice of predicates with an inference code. commit e5db5c677ac2e19b1d49f89c881af914600e715e Author: Maarten Flippo <maartenflippo@outlook.com> Date: Wed Apr 29 14:00:23 2026 +1000 fix(pumpkin-core): Creation and Insertion in Sparse Set (#395) Co-authored-by: Imko Marijnissen <imko.marijnissen@gmail.com> commit 664384820bd09c12c7d4fb717cea5838600e7c27 Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon Apr 27 10:33:35 2026 +1000 chore(deps): bump convert_case from 0.8.0 to 0.11.0 (#428) Bumps [convert_case](https://github.com/rutrum/convert-case) from 0.8.0 to 0.11.0. <details> <summary>Commits</summary> <ul> <li>See full diff in <a href="https://github.com/rutrum/convert-case/commits">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 7159a584b1d24eed4753c714410489bfe446182a Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon Apr 27 10:14:50 2026 +1000 chore(deps): bump downcast-rs from 1.2.1 to 2.0.2 (#429) Bumps [downcast-rs](https://github.com/marcianx/downcast-rs) from 1.2.1 to 2.0.2. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/marcianx/downcast-rs/blob/master/CHANGELOG.md">downcast-rs's changelog</a>.</em></p> <blockquote> <h2>2.0.2 - 2025-09-01</h2> <h3>Changed</h3> <ul> <li>Updated <code>README.md</code> to omit lines hidden in crate documentation.</li> <li>(Minor) <code>Cargo.toml</code>: Corrected license format and added categories.</li> </ul> <h2>2.0.1 - 2025-01-06</h2> <h3>Change</h3> <ul> <li>Updated how code conditioned on the <code>sync</code> flag is written in the crate documentation to work around a <a href="https://redirect.github.com/rust-lang/crates.io/issues/10331">crates.io doc rendering bug</a>.</li> </ul> <h2>2.0.0 - 2025-01-06</h2> <h3>Added</h3> <ul> <li>Gated the sync/<code>Arc</code> downcasting functionality behind a new <code>sync</code> feature that is enabled by default.</li> <li>Added a new <code>DowncastSend</code> trait to support downcasting to <code>Box&lt;Any + Send&gt;</code> and made <code>DowncastSync</code> extend this trait.</li> <li>Added downcasting support to <code>Box&lt;Any + Send + Sync&gt;</code> to <code>DowncastSync</code>.</li> </ul> <h3>Change</h3> <ul> <li>Updated minimum supported rust version 1.56 to enforce the <code>rustdoc::bare_urls</code> lint (1.53) and switch to edition 2021 (1.56).</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li>See full diff in <a href="https://github.com/marcianx/downcast-rs/commits">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 187fce88bdb7857f2ee1114a230f3b441fa9c81a Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon Apr 27 10:14:37 2026 +1000 chore(deps): bump bitfield from 0.14.0 to 0.19.4 (#430) Bumps [bitfield](https://github.com/dzamlo/rust-bitfield) from 0.14.0 to 0.19.4. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/dzamlo/rust-bitfield/blob/master/CHANGELOG.md">bitfield's changelog</a>.</em></p> <blockquote> <h2>[0.19.4] - 2025-11-16</h2> <h3>Added</h3> <ul> <li>Support <code>try_into</code> keyword in field definition to use <code>TryInto</code> instead of <code>Into</code></li> </ul> <h3>Fixed</h3> <ul> <li>Print the correct error message on incorrect use of the <code>impl</code> in <code>no_std</code> crates, thanks to <a href="https://github.com/stop5"><code>@​stop5</code></a> for reporting and proposing the fix</li> </ul> <h2>[0.19.3] - 2025-10-10</h2> <h3>Added</h3> <ul> <li>In debug mode, check that msb &gt;= lsb in the default <code>BitRange</code>/<code>BitRangeMut</code> implementations and show a more helpful message than before if this is the case, thanks to <a href="https://github.com/blaine-dodson"><code>@​blaine-dodson</code></a> for reporting</li> <li>Mention MSB and LSB ordering in the readme</li> <li>Explain sign extension and valid range of signed field in the readme</li> </ul> <h2>[0.19.2] - 2025-08-24</h2> <h3>Fixed</h3> <ul> <li>Allow usage of a signed int types for the base of newtype, thanks to <a href="https://github.com/FeeeeK"><code>@​FeeeeK</code></a></li> </ul> <h2>[0.19.1] - 2025-05-14</h2> <h3>Fixed</h3> <ul> <li>Allow to use <code>impl new</code> with <code>#[deny(missing_docs)]</code>.</li> </ul> <h2>[0.19.0] - 2025-02-23</h2> <h3>Fixed</h3> <ul> <li>Allow to specify an array of bools.</li> </ul> <h3>Breaking Changes</h3> <ul> <li>If the type of an array field is exactly <code>bool</code>, then the <code>Bit</code>/<code>BitMut</code> traits are used instead of <code>BitRange</code>/<code>BitRangeMut</code>. In some very unlikely case where the traits are implemented manually, this may break existing code.</li> </ul> <h2>[0.18.1] - 2025-01-29</h2> <h3>Fixed</h3> <ul> <li>Don't use <code>__bitfield_*</code> macros from the code generated by the proc-macros. Otherwise, they need to be imported by the calling code.</li> <li>Allow <code>mask</code>, <code>from</code> and <code>ìnto</code> as getter names.</li> </ul> <h2>[0.18.0] - 2025-01-27</h2> <h3>Fixed</h3> <ul> <li>With the new proc macro implementation some corner-cases that were not handled are now handled correctly.</li> </ul> <h3>Breaking Changes</h3> <ul> <li>The syntax to create a constructor by specifying individual fields has been removed.</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/dzamlo/rust-bitfield/commit/a459bcfd6f96a2d8e0cba02a69e3f4f9e7384938"><code>a459bcf</code></a> bitfield 0.19.4</li> <li><a href="https://github.com/dzamlo/rust-bitfield/commit/de82ee32c89f0bd0a8c879baf94645e785f45028"><code>de82ee3</code></a> fix: print the correct error message on incorrect use of the impl in no_std c...</li> <li><a href="https://github.com/dzamlo/rust-bitfield/commit/e3c27779f491d2fe5518e50bfd4513c9c85569f8"><code>e3c2777</code></a> docs: Show in example that it is possible to add doc comments</li> <li><a href="https://github.com/dzamlo/rust-bitfield/commit/079e145ca7e46a15dcfe2e7d544424d71920404e"><code>079e145</code></a> fix: Support try_into for array fields</li> <li><a href="https://github.com/dzamlo/rust-bitfield/commit/3cdcfd3c45cecddb22f598d199100bf2c94dd49c"><code>3cdcfd3</code></a> feat: Add support for try_into</li> <li><a href="https://github.com/dzamlo/rust-bitfield/commit/53331f7f7c99c3d9bb104d18ba254f1f12f33559"><code>53331f7</code></a> bitfield 0.19.3</li> <li><a href="https://github.com/dzamlo/rust-bitfield/commit/a366e5a210382a094e87e2292a109e22eaa4b2b1"><code>a366e5a</code></a> docs: Explain sign extension in README</li> <li><a href="https://github.com/dzamlo/rust-bitfield/commit/0681808d236da1f1d133e7cae04320369872271a"><code>0681808</code></a> docs: Mention MSB and LSB ordering in the README</li> <li><a href="https://github.com/dzamlo/rust-bitfield/commit/9fe9a0f1dd51b2f3caa38f93cbae27e41b67fb3f"><code>9fe9a0f</code></a> feat: Add debug check for inverted msb/lsb</li> <li><a href="https://github.com/dzamlo/rust-bitfield/commit/7f5136d8aa97adf8284543575ec3651e784d9ca6"><code>7f5136d</code></a> bitfield 0.19.2</li> <li>Additional commits viewable in <a href="https://github.com/dzamlo/rust-bitfield/compare/v0.14.0...v0.19.4">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 065e431b8bfb1558859d8b0c3fa0cd5eb1255900 Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu Apr 23 16:20:49 2026 +1000 chore(deps): bump signal-hook from 0.3.18 to 0.4.4 (#431) Bumps [signal-hook](https://github.com/vorner/signal-hook) from 0.3.18 to 0.4.4. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/vorner/signal-hook/blob/master/CHANGELOG.md">signal-hook's changelog</a>.</em></p> <blockquote> <h1>0.4.4</h1> <ul> <li>Documentation about SIGBUS (<a href="https://redirect.github.com/vorner/signal-hook/issues/204">#204</a>).</li> </ul> <h1>0.4.3</h1> <ul> <li>Don't exclude .c files from release package.</li> </ul> <h1>0.4.2</h1> <ul> <li>Fix double-close on pipe unregister (<a href="https://redirect.github.com/vorner/signal-hook/issues/200">#200</a>).</li> <li>Don't include development scripts in release package (195).</li> </ul> <h1>signal-hook-mio-0.3.0</h1> <h1>signal-hook-tokio-0.4.0</h1> <h1>signal-hook-async-std-0.4.0</h1> <ul> <li>Release to bump dependency on signal-hook.</li> </ul> <h1>0.4.1</h1> <ul> <li>Don't pin specific dependency versions accidentally.</li> </ul> <h1>0.4.0</h1> <ul> <li>Changed the <code>low_level::pipe</code> to look <code>OwnedFd</code> instead of <code>IntoRawFd</code>, to enforce ownership of the file descriptor (<a href="https://redirect.github.com/vorner/signal-hook/issues/196">#196</a>).</li> </ul> <h1>signal-hook-registry-1.4.8</h1> <ul> <li>Restore errno on signal handler exit (<a href="https://redirect.github.com/vorner/signal-hook/issues/194">#194</a>, <a href="https://redirect.github.com/vorner/signal-hook/issues/191">#191</a>).</li> </ul> <h1>signal-hook-registry-1.4.7</h1> <ul> <li>Using earlier monopolization to reduce binary size (<a href="https://redirect.github.com/vorner/signal-hook/issues/190">#190</a>).</li> </ul> <h1>signal-hook-mio-0.2.5</h1> <ul> <li>Allow mio 1.1</li> </ul> <h1>signal-hook-registry-1.4.6</h1> <ul> <li>Reword/improve the safety requirements docs for register (<a href="https://redirect.github.com/vorner/signal-hook/issues/178">#178</a>).</li> </ul> <h1>signal-hook-1.3.18</h1> <ul> <li>Release the special-case removal of AIX for top-level signal-hook too (<a href="https://redirect.github.com/vorner/signal-hook/issues/169">#169</a>, <a href="https://redirect.github.com/vorner/signal-hook/issues/176">#176</a>).</li> </ul> <h1>signal-hook-async-std-0.3.0</h1> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/vorner/signal-hook/commit/f37a7b5918830009c83f5e17fd5a533f2dfd7f82"><code>f37a7b5</code></a> Document SIGBUS</li> <li><a href="https://github.com/vorner/signal-hook/commit/b089b6b64487b23cb3cfc770ab5aa2f55f051116"><code>b089b6b</code></a> Update deps</li> <li><a href="https://github.com/vorner/signal-hook/commit/7854fb670a19e512a030bfa0d41ecb5f8fc90b57"><code>7854fb6</code></a> Don't exclude .c files from release package</li> <li><a href="https://github.com/vorner/signal-hook/commit/c81b0e01ed4eb4b1af3ef753c2ad7a213c3955a7"><code>c81b0e0</code></a> Release version 0.4.2</li> <li><a href="https://github.com/vorner/signal-hook/commit/390dafbc1dce27eb222bce33340dd3ad3ee4653c"><code>390dafb</code></a> Fix double-close on pipe unregister</li> <li><a href="https://github.com/vorner/signal-hook/commit/173107ab7c60d684637e6a3362460903d90d81a4"><code>173107a</code></a> Exclude development script from published package</li> <li><a href="https://github.com/vorner/signal-hook/commit/2413101f2e7851483993e32a3b5a49d09af32e4f"><code>2413101</code></a> Release async crates</li> <li><a href="https://github.com/vorner/signal-hook/commit/85f8c75e6e42b96382faa8a376bafeea8e058ed2"><code>85f8c75</code></a> Version 0.4.1 (don't pin dep versions)</li> <li><a href="https://github.com/vorner/signal-hook/commit/6e4472288ee8387436fa5d708f46e8609edbcde2"><code>6e44722</code></a> Version bump to 0.4.0</li> <li><a href="https://github.com/vorner/signal-hook/commit/80cc0cff0002d1eeb85f8ab9131367a64eed7d98"><code>80cc0cf</code></a> Update dependencies</li> <li>Additional commits viewable in <a href="https://github.com/vorner/signal-hook/compare/v0.3.18...v0.4.4">compare view</a></li> </ul> </details> <br /> [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=signal-hook&package-manager=cargo&previous-version=0.3.18&new-version=0.4.4)](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 037e4eccb5630c0d417927fd2312b4a9591f85d3 Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu Apr 23 16:20:10 2026 +1000 chore(deps): bump itertools from 0.13.0 to 0.14.0 (#427) Bumps [itertools](https://github.com/rust-itertools/itertools) from 0.13.0 to 0.14.0. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/rust-itertools/itertools/blob/master/CHANGELOG.md">itertools's changelog</a>.</em></p> <blockquote> <h2>0.14.0</h2> <h3>Breaking</h3> <ul> <li>Increased MSRV to 1.63.0 (<a href="https://redirect.github.com/rust-itertools/itertools/issues/960">#960</a>)</li> <li>Removed generic parameter from <code>cons_tuples</code> (<a href="https://redirect.github.com/rust-itertools/itertools/issues/988">#988</a>)</li> </ul> <h3>Added</h3> <ul> <li>Added <code>array_combinations</code> (<a href="https://redirect.github.com/rust-itertools/itertools/issues/991">#991</a>)</li> <li>Added <code>k_smallest_relaxed</code> and variants (<a href="https://redirect.github.com/rust-itertools/itertools/issues/925">#925</a>)</li> <li>Added <code>next_array</code> and <code>collect_array</code> (<a href="https://redirect.github.com/rust-itertools/itertools/issues/560">#560</a>)</li> <li>Implemented <code>DoubleEndedIterator</code> for <code>FilterOk</code> (<a href="https://redirect.github.com/rust-itertools/itertools/issues/948">#948</a>)</li> <li>Implemented <code>DoubleEndedIterator</code> for <code>FilterMapOk</code> (<a href="https://redirect.github.com/rust-itertools/itertools/issues/950">#950</a>)</li> </ul> <h3>Changed</h3> <ul> <li>Allow <code>Q: ?Sized</code> in <code>Itertools::contains</code> (<a href="https://redirect.github.com/rust-itertools/itertools/issues/971">#971</a>)</li> <li>Improved hygiene of <code>chain!</code> (<a href="https://redirect.github.com/rust-itertools/itertools/issues/943">#943</a>)</li> <li>Improved <code>into_group_map_by</code> documentation (<a href="https://redirect.github.com/rust-itertools/itertools/issues/1000">#1000</a>)</li> <li>Improved <code>tree_reduce</code> documentation (<a href="https://redirect.github.com/rust-itertools/itertools/issues/955">#955</a>)</li> <li>Improved discoverability of <code>merge_join_by</code> (<a href="https://redirect.github.com/rust-itertools/itertools/issues/966">#966</a>)</li> <li>Improved discoverability of <code>take_while_inclusive</code> (<a href="https://redirect.github.com/rust-itertools/itertools/issues/972">#972</a>)</li> <li>Improved documentation of <code>find_or_last</code> and <code>find_or_first</code> (<a href="https://redirect.github.com/rust-itertools/itertools/issues/984">#984</a>)</li> <li>Prevented exponentially large type sizes in <code>tuple_combinations</code> (<a href="https://redirect.github.com/rust-itertools/itertools/issues/945">#945</a>)</li> <li>Added <code>track_caller</code> attr for <code>asser_equal</code> (<a href="https://redirect.github.com/rust-itertools/itertools/issues/976">#976</a>)</li> </ul> <h3>Notable Internal Changes</h3> <ul> <li>Fixed clippy lints (<a href="https://redirect.github.com/rust-itertools/itertools/issues/956">#956</a>, <a href="https://redirect.github.com/rust-itertools/itertools/issues/987">#987</a>, <a href="https://redirect.github.com/rust-itertools/itertools/issues/1008">#1008</a>)</li> <li>Addressed warnings within doctests (<a href="https://redirect.github.com/rust-itertools/itertools/issues/964">#964</a>)</li> <li>CI: Run most tests with miri (<a href="https://redirect.github.com/rust-itertools/itertools/issues/961">#961</a>)</li> <li>CI: Speed up &quot;cargo-semver-checks&quot; action (<a href="https://redirect.github.com/rust-itertools/itertools/issues/938">#938</a>)</li> <li>Changed an instance of <code>default_features</code> in <code>Cargo.toml</code> to <code>default-features</code> (<a href="https://redirect.github.com/rust-itertools/itertools/issues/985">#985</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/rust-itertools/itertools/commit/a015a6831525ee1637df747d3f530a627d9741bf"><code>a015a68</code></a> Add <code>next_array</code> and <code>collect_array</code></li> <li><a href="https://github.com/rust-itertools/itertools/commit/a1213e1c81af9d8c329239b916fb9663387ae1b0"><code>a1213e1</code></a> Prepare v0.14.0 release</li> <li><a href="https://github.com/rust-itertools/itertools/commit/ff0c942b2e0127dfdd311a8b1ee022bd367c237f"><code>ff0c942</code></a> fix clippy lints</li> <li><a href="https://github.com/rust-itertools/itertools/commit/f80883b8e01cba2f8ef872cd33d6eda1a471db4c"><code>f80883b</code></a> Fix into_group_map_by documentation errors</li> <li><a href="https://github.com/rust-itertools/itertools/commit/b793238ff14bb4270456264708acc9771022d6a2"><code>b793238</code></a> Add track_caller for asser_equal</li> <li><a href="https://github.com/rust-itertools/itertools/commit/5d4056b643c575c6a808ec4d6f2fb24db57acf43"><code>5d4056b</code></a> <code>default_features</code> is deprecated - switch it to <code>default-features</code></li> <li><a href="https://github.com/rust-itertools/itertools/commit/a447b6896043facbd234bd57213cfae58244d46d"><code>a447b68</code></a> doc for added trait</li> <li><a href="https://github.com/rust-itertools/itertools/commit/d0479b080781cf92a035cf2e33aee04079062b3e"><code>d0479b0</code></a> &quot;nitpicks&quot;</li> <li><a href="https://github.com/rust-itertools/itertools/commit/35c78ce0bc36fbe41df2f5833827b166896e1f50"><code>35c78ce</code></a> IndexMut -&gt; BorrowMut&lt;slice&gt;</li> <li><a href="https://github.com/rust-itertools/itertools/commit/deb53ba21065e6adbcfdd8af120f939733cc52c6"><code>deb53ba</code></a> refactored to share code</li> <li>Additional commits viewable in <a href="https://github.com/rust-itertools/itertools/compare/v0.13.0...v0.14.0">compare view</a></li> </ul> </details> <br /> [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=itertools&package-manager=cargo&previous-version=0.13.0&new-version=0.14.0)](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 be34a9424ddfd5ed7e3ecb8f2eb45e353405d95d Author: Maarten Flippo <maartenflippo@outlook.com> Date: Thu Apr 23 15:58:34 2026 +1000 Add uv package ecosystem to dependabot config commit b7aeb7157b0d9cf277643f304af0ea4924a736f5 Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu Apr 23 15:11:35 2026 +1000 chore(deps): bump actions/cache from 4 to 5 (#425) Bumps [actions/cache](https://github.com/actions/cache) from 4 to 5. <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>v5.0.0</h2> <blockquote> <p>[!IMPORTANT] <strong><code>actions/cache@v5</code> runs on the Node.js 24 runtime and requires a minimum Actions Runner version of <code>2.327.1</code>.</strong></p> <p>If you are using self-hosted runners, ensure they are updated before upgrading.</p> </blockquote> <hr /> <h2>What's Changed</h2> <ul> <li>Upgrade to use node24 by <a href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a href="https://redirect.github.com/actions/cache/pull/1630">actions/cache#1630</a></li> <li>Prepare v5.0.0 release by <a href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a href="https://redirect.github.com/actions/cache/pull/1684">actions/cache#1684</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/cache/compare/v4.3.0...v5.0.0">https://github.com/actions/cache/compare/v4.3.0...v5.0.0</a></p> <h2>v4.3.0</h2> <h2>What's Changed</h2> <ul> <li>Add note on runner versions by <a href="https://github.com/GhadimiR"><code>@​GhadimiR</code></a> in <a href="https://redirect.github.com/actions/cache/pull/1642">actions/cache#1642</a></li> <li>Prepare <code>v4.3.0</code> release by <a href="https://github.com/Link"><code>@​Link</code></a>- in <a href="https://redirect.github.com/actions/cache/pull/1655">actions/cache#1655</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/GhadimiR"><code>@​GhadimiR</code></a> made their first contribution in <a href="https://redirect.github.com/actions/cache/pull/1642">actions/cache#1642</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/cache/compare/v4...v4.3.0">https://github.com/actions/cache/compare/v4...v4.3.0</a></p> <h2>v4.2.4</h2> <h2>What's Changed</h2> <ul> <li>Update README.md by <a href="https://github.com/nebuk89"><code>@​nebuk89</code></a> in <a href="https://redirect.github.com/actions/cache/pull/1620">actions/cache#1620</a></li> <li>Upgrade <code>@actions/cache</code> to <code>4.0.5</code> and move <code>@protobuf-ts/plugin</code> to dev depdencies by <a href="https://github.com/Link"><code>@​Link</code></a>- in <a href="https://redirect.github.com/actions/cache/pull/1634">actions/cache#1634</a></li> <li>Prepare release <code>4.2.4</code> by <a href="https://github.com/Link"><code>@​Link</code></a>- in <a href="https://redirect.github.com/actions/cache/pull/1636">actions/cache#1636</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/nebuk89"><code>@​nebuk89</code></a> made their first contribution in <a href="https://redirect.github.com/actions/cache/pull/1620">actions/cache#1620</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/cache/compare/v4...v4.2.4">https://github.com/actions/cache/compare/v4...v4.2.4</a></p> <h2>v4.2.3</h2> <h2>What's Changed</h2> <ul> <li>Update to use <code>@​actions/cache</code> 4.0.3 package &amp; prepare for new release by <a href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a href="https://redirect.github.com/actions/cache/pull/1577">actions/cache#1577</a> (SAS tokens for cache entries are now masked in debug logs)</li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> made their first contribution in <a href="https://redirect.github.com/actions/cache/pull/1577">actions/cache#1577</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/cache/compare/v4.2.2...v4.2.3">https://github.com/actions/cache/compare/v4.2.2...v4.2.3</a></p> <!-- 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]<br /> 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>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> <ul> <li>Bump <code>@actions/cache</code> to v5.0.3 <a href="https://redirect.github.com/actions/cache/pull/1692">#1692</a></li> </ul> <h3>5.0.1</h3> <ul> <li>Update <code>@azure/storage-blob</code> to <code>^12.29.1</code> via <code>@actions/cache@5.0.1</code> <a href="https://redirect.github.com/actions/cache/pull/1685">#1685</a></li> </ul> <h3>5.0.0</h3> <blockquote> <p>[!IMPORTANT] <code>actions/cache@v5</code> runs on the Node.js 24 runtime and requires a minimum Actions Runner version of <code>2.327.1</code>.</p> </blockquote> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/actions/cache/commit/27d5ce7f107fe9357f9df03efb73ab90386fccae"><code>27d5ce7</code></a> Merge pull request <a href="https://redirect.github.com/actions/cache/issues/1747">#1747</a> from actions/yacaovsnc/update-dependency</li> <li><a href="https://github.com/actions/cache/commit/f280785d7b6e1884c7d12b9136eb0f4a1574fcfd"><code>f280785</code></a> licensed changes</li> <li><a href="https://github.com/actions/cache/commit/619aeb1606e195be0b36fd0ff68dcf1aff6b65a7"><code>619aeb1</code></a> npm run build generated dist files</li> <li><a href="https://github.com/actions/cache/commit/bcf16c2893940a4899761e55c7ac3c1cf88a04f6"><code>bcf16c2</code></a> Update ts-http-runtime to 0.3.5</li> <li><a href="https://github.com/actions/cache/commit/668228422ae6a00e4ad889ee87cd7109ec5666a7"><code>6682284</code></a> Merge pull request <a href="https://redirect.github.com/actions/cache/issues/1738">#1738</a> from actions/prepare-v5.0.4</li> <li><a href="https://github.com/actions/cache/commit/e34039626f957d3e3e50843d15c1b20547fc90e2"><code>e340396</code></a> Update RELEASES</li> <li><a href="https://github.com/actions/cache/commit/8a671105293e81530f1af99863cdf94550aba1a6"><code>8a67110</code></a> Add licenses</li> <li><a href="https://github.com/actions/cache/commit/1865903e1b0cb750dda9bc5c58be03424cc62830"><code>1865903</code></a> Update dependencies &amp; patch security vulnerabilities</li> <li><a href="https://github.com/actions/cache/commit/565629816435f6c0b50676926c9b05c254113c0c"><code>5656298</code></a> Merge pull request <a href="https://redirect.github.com/actions/cache/issues/1722">#1722</a> from RyPeck/patch-1</li> <li><a href="https://github.com/actions/cache/commit/4e380d19e192ace8e86f23f32ca6fdec98a673c6"><code>4e380d1</code></a> Fix cache key in examples.md for bun.lock</li> <li>Additional commits viewable in <a href="https://github.com/actions/cache/compare/v4...v5">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 bb6305d26530509fd5bbadec10d74fed2f71a57e Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu Apr 23 14:57:28 2026 +1000 chore(deps): bump stringcase from 0.3.0 to 0.4.0 (#422) Bumps [stringcase](https://github.com/sttk/stringcase-rust) from 0.3.0 to 0.4.0. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/sttk/stringcase-rust/releases">stringcase's releases</a>.</em></p> <blockquote> <h2>0.4.0</h2> <h3>⚠️ BREAKING CHANGES</h3> <p><em>NOTE: This release differs in the behavior of <code>〜_case_with_sep</code> compared to previous versions. (The rest behaves the same.) This release adds <code>〜_case_with_options</code> functions that take the <code>Options</code> struct as an argument for all case conversions and modifies the existing functions to use these functions. These <code>〜_case_with_options</code> functions ignore ASCII alphabetic characters and digits when specified as separators or keep characters. Therefore, the behaviour of <code>〜_case_with_sep</code> functions, when specified alphabetic or numeric characters as separators will neither result in these characters being used nor being removed as separators, which differs from the behavior in previous versions. In addition, <code>〜_case_with_sep</code>, <code>〜_case_with_keep</code>, and <code>〜_case_with_nums_as_word</code> functions are all deprecated.</em></p> <ul> <li>new!: added camel_case_with_options and made use it in existing camel case functions by <a href="https://github.com/sttk"><code>@​sttk</code></a> in <a href="https://redirect.github.com/sttk/stringcase-rust/pull/25">sttk/stringcase-rust#25</a></li> <li>new!: added cobol_case_with_options and made use it in existing cobol case functions by <a href="https://github.com/sttk"><code>@​sttk</code></a> in <a href="https://redirect.github.com/sttk/stringcase-rust/pull/27">sttk/stringcase-rust#27</a></li> <li>new!: added kebab_case_with_options and made use it in existing kebab case functions by <a href="https://github.com/sttk"><code>@​sttk</code></a> in <a href="https://redirect.github.com/sttk/stringcase-rust/pull/28">sttk/stringcase-rust#28</a></li> <li>new!: added macro_case_with_options and made use it in existing macro case functions by <a href="https://github.com/sttk"><code>@​sttk</code></a> in <a href="https://redirect.github.com/sttk/stringcase-rust/pull/29">sttk/stringcase-rust#29</a></li> <li>new!: added pascal_case_with_options and made use it in existing pascal case functions by <a href="https://github.com/sttk"><code>@​sttk</code></a> in <a href="https://redirect.github.com/sttk/stringcase-rust/pull/30">sttk/stringcase-rust#30</a></li> <li>new!: added snake_case_with_options and made use it in existing snake case functions by <a href="https://github.com/sttk"><code>@​sttk</code></a> in <a href="https://redirect.github.com/sttk/stringcase-rust/pull/31">sttk/stringcase-rust#31</a></li> <li>new!: added train_case_with_options and made use it in existing train case functions by <a href="https://github.com/sttk"><code>@​sttk</code></a> in <a href="https://redirect.github.com/sttk/stringcase-rust/pull/32">sttk/stringcase-rust#32</a></li> </ul> <h3>Docs</h3> <ul> <li>doc,comment: modified documentation comments by <a href="https://github.com/sttk"><code>@​sttk</code></a> in <a href="https://redirect.github.com/sttk/stringcase-rust/pull/33">sttk/stringcase-rust#33</a></li> <li>doc: modified README.md by <a href="https://github.com/sttk"><code>@​sttk</code></a> in <a href="https://redirect.github.com/sttk/stringcase-rust/pull/36">sttk/stringcase-rust#36</a></li> </ul> <h3>Supports</h3> <ul> <li>cicd: updated target rust versions by <a href="https://github.com/sttk"><code>@​sttk</code></a> in <a href="https://redirect.github.com/sttk/stringcase-rust/pull/26">sttk/stringcase-rust#26</a></li> <li>test: added more tests for coverage by <a href="https://github.com/sttk"><code>@​sttk</code></a> in <a href="https://redirect.github.com/sttk/stringcase-rust/pull/34">sttk/stringcase-rust#34</a></li> <li>test: updated benchmark tests by <a href="https://github.com/sttk"><code>@​sttk</code></a> in <a href="https://redirect.github.com/sttk/stringcase-rust/pull/35">sttk/stringcase-rust#35</a></li> <li>release tasks for 0.4.0 by <a href="https://github.com/sttk"><code>@​sttk</code></a> in <a href="https://redirect.github.com/sttk/stringcase-rust/pull/37">sttk/stringcase-rust#37</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/sttk/stringcase-rust/compare/0.3.0...0.4.0">https://github.com/sttk/stringcase-rust/compare/0.3.0...0.4.0</a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/sttk/stringcase-rust/commit/a04c8f88e24234033da1d8ac557d71122e2034c4"><code>a04c8f8</code></a> 0.4.0 (<a href="https://redirect.github.com/sttk/stringcase-rust/issues/37">#37</a>)</li> <li><a href="https://github.com/sttk/stringcase-rust/commit/db8c28ff7c1e2ff7baafa6b87ee7e0ae590fe939"><code>db8c28f</code></a> doc: modified README.md (<a href="https://redirect.github.com/sttk/stringcase-rust/issues/36">#36</a>)</li> <li><a href="https://github.com/sttk/stringcase-rust/commit/22d46883dd0ed2ef24b7ddf5bb2c345e90ca07eb"><code>22d4688</code></a> test: updated benchmark tests (<a href="https://redirect.github.com/sttk/stringcase-rust/issues/35">#35</a>)</li> <li><a href="https://github.com/sttk/stringcase-rust/commit/2b1f2612a0a5d529a4c426a7bc9a7959eea835bc"><code>2b1f261</code></a> test: added more tests for coverage (<a href="https://redirect.github.com/sttk/stringcase-rust/issues/34">#34</a>)</li> <li><a href="https://github.com/sttk/stringcase-rust/commit/bd04d55734493c0e6fb10af1f00abcbbc6cf01b9"><code>bd04d55</code></a> doc,comment: modified documentation comments (<a href="https://redirect.github.com/sttk/stringcase-rust/issues/33">#33</a>)</li> <li><a href="https://github.com/sttk/stringcase-rust/commit/8283681968a9b74e1f1297fb1d6cfeaa3d789c37"><code>8283681</code></a> new!: added train_case_with_options and made use it in existing train case fu...</li> <li><a href="https://github.com/sttk/stringcase-rust/commit/033e117f272ffb7c58a4e8c09e7d9ea05e8f26e4"><code>033e117</code></a> new!: added snake_case_with_options and made use it in existing snake case fu...</li> <li><a href="https://github.com/sttk/stringcase-rust/commit/65c6a15a05e7818ba5160d86d3a051418a5f8c8c"><code>65c6a15</code></a> new!: added pascal_case_with_options and made use it in existing pascal case ...</li> <li><a href="https://github.com/sttk/stringcase-rust/commit/93cb03e8b3c327e4176fa4506fea3106288fd8a8"><code>93cb03e</code></a> new!: added macro_case_with_options and made use it in existing macro case fu...</li> <li><a href="https://github.com/sttk/stringcase-rust/commit/cc35bcffd159a35a517fc12e341998d992ee3264"><code>cc35bcf</code></a> new!: added kebab_case_with_options and made use it in existing kebab case fu...</li> <li>Additional commits viewable in <a href="https://github.com/sttk/stringcase-rust/compare/0.3.0...0.4.0">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 8f4914ecc5908dcbcdbf38bc8dc28a7cff5ff70f Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu Apr 23 14:52:01 2026 +1000 chore(deps): bump actions/download-artifact from 4 to 8 (#424) Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 4 to 8. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/actions/download-artifact/releases">actions/download-artifact's r…
1 parent eb23033 commit 15d3b80

87 files changed

Lines changed: 5150 additions & 2970 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/dependabot.yml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
version: 2
2+
updates:
3+
- package-ecosystem: "cargo"
4+
directory: "/"
5+
schedule:
6+
interval: "weekly"
7+
8+
- package-ecosystem: "uv"
9+
directory: "pumpkin-solver-py/"
10+
schedule:
11+
interval: "weekly"
12+
13+
- package-ecosystem: "github-actions"
14+
directory: "/"
15+
schedule:
16+
interval: "weekly"

.github/workflows/ci-python.yml

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ jobs:
3838
- runner: ubuntu-22.04
3939
target: armv7
4040
steps:
41-
- uses: actions/checkout@v4
42-
- uses: actions/setup-python@v5
41+
- uses: actions/checkout@v6
42+
- uses: actions/setup-python@v6
4343
with:
4444
python-version: 3.x
4545
- name: Build wheels
@@ -52,7 +52,7 @@ jobs:
5252
manylinux: auto
5353
docker-options: -e NO_CHECKERS
5454
- name: Upload wheels
55-
uses: actions/upload-artifact@v4
55+
uses: actions/upload-artifact@v7
5656
with:
5757
name: wheels-linux-${{ matrix.platform.target }}
5858
path: pumpkin-solver-py/dist
@@ -71,8 +71,8 @@ jobs:
7171
- runner: ubuntu-22.04
7272
target: armv7
7373
steps:
74-
- uses: actions/checkout@v4
75-
- uses: actions/setup-python@v5
74+
- uses: actions/checkout@v6
75+
- uses: actions/setup-python@v6
7676
with:
7777
python-version: 3.x
7878
- name: Build wheels
@@ -84,7 +84,7 @@ jobs:
8484
sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
8585
manylinux: musllinux_1_2
8686
- name: Upload wheels
87-
uses: actions/upload-artifact@v4
87+
uses: actions/upload-artifact@v7
8888
with:
8989
name: wheels-musllinux-${{ matrix.platform.target }}
9090
path: pumpkin-solver-py/dist
@@ -99,8 +99,8 @@ jobs:
9999
- runner: windows-latest
100100
target: x86
101101
steps:
102-
- uses: actions/checkout@v4
103-
- uses: actions/setup-python@v5
102+
- uses: actions/checkout@v6
103+
- uses: actions/setup-python@v6
104104
with:
105105
python-version: 3.x
106106
architecture: ${{ matrix.platform.target }}
@@ -112,7 +112,7 @@ jobs:
112112
args: --release --out dist --find-interpreter
113113
sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
114114
- name: Upload wheels
115-
uses: actions/upload-artifact@v4
115+
uses: actions/upload-artifact@v7
116116
with:
117117
name: wheels-windows-${{ matrix.platform.target }}
118118
path: pumpkin-solver-py/dist
@@ -127,8 +127,8 @@ jobs:
127127
- runner: macos-latest
128128
target: aarch64
129129
steps:
130-
- uses: actions/checkout@v4
131-
- uses: actions/setup-python@v5
130+
- uses: actions/checkout@v6
131+
- uses: actions/setup-python@v6
132132
with:
133133
python-version: 3.x
134134
- name: Build wheels
@@ -139,23 +139,23 @@ jobs:
139139
args: --release --out dist --find-interpreter
140140
sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
141141
- name: Upload wheels
142-
uses: actions/upload-artifact@v4
142+
uses: actions/upload-artifact@v7
143143
with:
144144
name: wheels-macos-${{ matrix.platform.target }}
145145
path: pumpkin-solver-py/dist
146146

147147
sdist:
148148
runs-on: ubuntu-latest
149149
steps:
150-
- uses: actions/checkout@v4
150+
- uses: actions/checkout@v6
151151
- name: Build sdist
152152
uses: PyO3/maturin-action@v1
153153
with:
154154
working-directory: pumpkin-solver-py/
155155
command: sdist
156156
args: --out dist
157157
- name: Upload sdist
158-
uses: actions/upload-artifact@v4
158+
uses: actions/upload-artifact@v7
159159
with:
160160
name: wheels-sdist
161161
path: pumpkin-solver-py/dist
@@ -174,9 +174,9 @@ jobs:
174174
# Used to generate artifact attestation
175175
attestations: write
176176
steps:
177-
- uses: actions/download-artifact@v4
177+
- uses: actions/download-artifact@v8
178178
- name: Generate artifact attestation
179-
uses: actions/attest-build-provenance@v2
179+
uses: actions/attest-build-provenance@v4
180180
with:
181181
subject-path: 'wheels-*/*'
182182
- name: Publish to PyPI

.github/workflows/ci.yml

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ jobs:
1515
name: Test Suite
1616
runs-on: ubuntu-latest
1717
steps:
18-
- uses: actions/checkout@v4
19-
- uses: actions/cache@v4
18+
- uses: actions/checkout@v6
19+
- uses: actions/cache@v5
2020
with:
2121
path: |
2222
~/.cargo/bin/
@@ -26,13 +26,13 @@ jobs:
2626
target/
2727
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
2828
- uses: dtolnay/rust-toolchain@stable
29-
- run: cargo test --release --no-fail-fast --features pumpkin-solver/check-propagations
29+
- run: cargo test --release --no-fail-fast --features pumpkin-solver/check-propagations --features pumpkin-core/check-deductions
3030

3131
wasm-test:
3232
name: Test Suite for pumpkin-core in WebAssembly
3333
runs-on: ubuntu-latest
3434
steps:
35-
- uses: actions/checkout@v4
35+
- uses: actions/checkout@v6
3636
- uses: dtolnay/rust-toolchain@stable
3737
with:
3838
targets: wasm32-unknown-unknown
@@ -48,8 +48,8 @@ jobs:
4848
runner: [ ubuntu-latest, macos-latest, windows-latest ]
4949
runs-on: ${{ matrix.runner }}
5050
steps:
51-
- uses: actions/checkout@v4
52-
- uses: actions/setup-python@v5
51+
- uses: actions/checkout@v6
52+
- uses: actions/setup-python@v6
5353
with:
5454
python-version: 3.x
5555
- name: Install pytest
@@ -65,8 +65,8 @@ jobs:
6565
name: Documentation
6666
runs-on: ubuntu-latest
6767
steps:
68-
- uses: actions/checkout@v4
69-
- uses: actions/cache@v4
68+
- uses: actions/checkout@v6
69+
- uses: actions/cache@v5
7070
with:
7171
path: |
7272
~/.cargo/bin/
@@ -82,8 +82,8 @@ jobs:
8282
name: Code Style and Lints
8383
runs-on: ubuntu-latest
8484
steps:
85-
- uses: actions/checkout@v4
86-
- uses: actions/cache@v4
85+
- uses: actions/checkout@v6
86+
- uses: actions/cache@v5
8787
with:
8888
path: |
8989
~/.cargo/bin/
@@ -102,5 +102,5 @@ jobs:
102102
name: Dependency Licensing
103103
runs-on: ubuntu-latest
104104
steps:
105-
- uses: actions/checkout@v4
105+
- uses: actions/checkout@v6
106106
- uses: EmbarkStudios/cargo-deny-action@v2

.github/workflows/reset_reviewed_status.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ jobs:
1212
pull-requests: write
1313
steps:
1414
- name: Dismiss old reviews
15-
uses: actions/github-script@v7
15+
uses: actions/github-script@v9
1616
with:
1717
script: |
1818
const reviews = await github.paginate(github.rest.pulls.listReviews, {

CLAUDE.md

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
# CLAUDE.md
2+
3+
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4+
5+
## Overview
6+
7+
Pumpkin is a constraint programming (CP) solver written in pure Rust, based on the lazy clause generation paradigm. It supports proof logging via DRAT (SAT) and DRCP (CP) certificates.
8+
9+
## Build & Development Commands
10+
11+
```bash
12+
# Build
13+
cargo build
14+
cargo build --release
15+
16+
# Test (standard CI command)
17+
cargo test --release --no-fail-fast --features pumpkin-solver/check-propagations
18+
19+
# Run a single test
20+
cargo test --release --features pumpkin-solver/check-propagations <test_name>
21+
22+
# Format (requires nightly)
23+
cargo +nightly fmt
24+
cargo +nightly fmt --check # check only
25+
26+
# Lint (requires nightly)
27+
cargo +nightly clippy --all-targets -- -Dwarnings
28+
29+
# Docs
30+
cargo doc --no-deps
31+
32+
# License check
33+
cargo deny check
34+
35+
# WASM tests (for pumpkin-crates/core)
36+
wasm-pack test --release --node
37+
38+
# Python tests
39+
cd pumpkin-solver-py && pytest
40+
```
41+
42+
Scripts in `scripts/` (`fmt.sh`, `clippy.sh`, `documentation.sh`, `deny.sh`) mirror the CI commands and are also run by the pre-commit hook (`.githooks/pre-commit`).
43+
44+
## Workspace Architecture
45+
46+
The project is a Cargo workspace (edition 2024, resolver 2). Crates are grouped by role:
47+
48+
### Core Engine (`pumpkin-crates/`)
49+
- **`core`** — The main solver engine. Contains the CDCL loop, propagation engine, nogood learning, branching heuristics, and proof logging infrastructure. This is the heart of the solver.
50+
- **`checking`** — Shared types used by both `core` and `pumpkin-checker` (avoids circular deps).
51+
- **`propagators`** — Implementations of CP propagators (arithmetic, cumulative, disjunctive, element, etc.).
52+
- **`conflict-resolvers`** — Pluggable conflict analysis strategies for nogood derivation.
53+
- **`constraints`** — High-level constraint API built on top of `core`.
54+
55+
### Interfaces
56+
- **`pumpkin-solver`** — CLI binary. Accepts CNF, WCNF (MaxSAT), and FlatZinc input formats.
57+
- **`pumpkin-solver-py`** — Python bindings via PyO3.
58+
59+
### Proof Infrastructure
60+
- **`drcp-format`** — Reading/writing the DRCP proof certificate format.
61+
- **`pumpkin-checker`** — Standalone proof verification tool.
62+
- **`pumpkin-proof-processor`** — Proof transformation/preprocessing utility.
63+
- **`drcp-debugger`** — Debugging tool for DRCP proofs.
64+
65+
### Parsing & Utilities
66+
- **`fzn-rs`** / **`fzn-rs-derive`** — FlatZinc parser and derive macros.
67+
- **`pumpkin-macros`** — Procedural macros used across the workspace.
68+
- **`minizinc/`** — MiniZinc integration (solver plugin).
69+
70+
## Key Design Concepts
71+
72+
- **Lazy Clause Generation (LCG)**: The solver operates on a hybrid SAT/CP model. CP propagators generate explanations (clauses/nogoods) on demand during conflict analysis.
73+
- **Proof Logging**: Every inference can be certified. The `core` crate threads proof-logging through propagators via a `Proof` type. The `check-propagations` feature enables runtime validation of propagator explanations during tests.
74+
- **Propagator Interface**: Custom propagators implement the `Propagator` trait in `pumpkin-crates/core`. They must provide both `propagate` and `explain` methods for proof soundness.
75+
- **Feature Flags**: `pumpkin-solver/check-propagations` enables expensive correctness assertions — always enable this when running tests.
76+
77+
## Code Style
78+
79+
- **Rust edition 2024**, stable toolchain (see `rust-toolchain.toml`), but formatting/linting requires nightly.
80+
- Line length: 120 chars for comments (`rustfmt.toml`).
81+
- Imports: grouped (std / external / crate), single-line style enforced.
82+
- Workspace-level lints are configured in the root `Cargo.toml` — check there before suppressing warnings locally.

0 commit comments

Comments
 (0)