Skip to content

chore(deps): bump pyo3 0.28 -> 0.29 (v0.7.1) - #33

Merged
coseto6125 merged 1 commit into
mainfrom
chore/bump-pyo3-0.29
Aug 1, 2026
Merged

chore(deps): bump pyo3 0.28 -> 0.29 (v0.7.1)#33
coseto6125 merged 1 commit into
mainfrom
chore/bump-pyo3-0.29

Conversation

@coseto6125

Copy link
Copy Markdown
Owner

pyo3 0.28 carries two advisories, both fixed in 0.29:

ID Issue
RUSTSEC-2026-0176 Out-of-bounds read in nth / nth_back for PyList and PyTuple iterators
RUSTSEC-2026-0177 Missing Sync bound on PyCFunction::new_closure closures

The binding touches neither API (it is one #[pyfunction] taking &Bound<PyBytes>), so this is not an exploitable path here.

It still has to be fixed because it blocks releases: cargo audit is a job in release.yml and github-release depends on it, so the v0.7.0 run skipped release creation entirely and the release had to be assembled by hand. Every subsequent release would hit the same wall.

cargo audit now exits 0 — the remaining rkyv unsound notice (RUSTSEC-2026-0122, reached via sonic-rs) is an allowed warning, not a failure.

Verification

No source changes were needed for the upgrade.

  • cargo test --no-default-features — 32 pass
  • pytest tests/test_spec_fixtures.py — 197 pass
  • cargo +stable clippy --all-targets and --features python --all-targets — clean
  • cargo audit — exit 0
  • Binding paths by hand: normal encode, the bytes fast path, max_depth rejection, and delimiter validation all behave as before

pyo3 0.28 carries two advisories, both fixed in 0.29:
- RUSTSEC-2026-0176: out-of-bounds read in `nth` / `nth_back` for `PyList` and
  `PyTuple` iterators
- RUSTSEC-2026-0177: missing `Sync` bound on `PyCFunction::new_closure` closures

The binding touches neither API — it is one `#[pyfunction]` taking `&Bound<PyBytes>`
— so this is not an exploitable path here. It still has to be fixed: `cargo audit`
is a release-workflow job, and `github-release` depends on it, so the v0.7.0 run
skipped release creation and every later release would too.

`cargo audit` now exits 0 (the remaining rkyv `unsound` notice is an allowed
warning). No source changes were needed for the pyo3 upgrade. Verified: 32 Rust
tests, 197 fixture cases, clippy clean on stable for both feature sets, and the
binding's encode / bytes / max_depth / delimiter paths by hand.
@coseto6125
coseto6125 merged commit 7715b94 into main Aug 1, 2026
5 checks passed
@coseto6125
coseto6125 deleted the chore/bump-pyo3-0.29 branch August 1, 2026 01:03
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.

1 participant