Skip to content

build(deps): bump pyo3 to 0.29 for Python 3.15 - #310

Merged
liquidsec merged 1 commit into
devfrom
fix/pyo3-python-3.15
Oct 6, 2026
Merged

liquidsec merged 1 commit into
devfrom
fix/pyo3-python-3.15

Conversation

@liquidsec

Copy link
Copy Markdown
Collaborator

Summary

Bumps pyo3 and pyo3-async-runtimes 0.27 -> 0.29 so the build survives Python 3.15, which ships October 9. Raised by @en0f on #304.

Why this is time-boxed

#304 moved testing and wheels onto the shared workflows, which derive their matrix from requires-python = ">=3.10" instead of a fixed list. 3.15 enters both matrices on release day, and pyo3 0.27 refuses to build against an interpreter it doesn't know:

  • python / test (3.15) fails at maturin develop -> python / passed fails -> every PR is blocked, since that's a required check.
  • The 3.15 wheel leg fails -> publish.yml stops before PyPI, crates.io and the GitHub release.

Capping requires-python was the other option, but that locks 3.15 users out of installing.

Changes

Cargo.toml and Cargo.lock only — no source changes. python.rs is already on the Bound / Python::attach API that 0.28 and 0.29 require, so nothing in it moved.

before after
pyo3 0.27.2 0.29.3
pyo3-async-runtimes 0.27.0 0.29.0

pyo3 0.29.0 is where 3.15 support landed (PEP 820 module init, PyModExport/PyABIInfo); 0.29.3 is the current stable. pyo3-async-runtimes 0.29 requires pyo3 ^0.29, so the two move together.

Validation

$ cargo fmt --all -- --check
$ cargo clippy --all-targets --all-features -- -D warnings
    Finished `dev` profile
$ cargo build --features py
    Finished `dev` profile
$ cargo test --all-features
test result: ok. 13 passed; 0 failed    # lib
test result: ok. 2 passed; 0 failed     # bin + api

No deprecation warnings from the jump.

🤖 Generated with Claude Code

pyo3 0.27 stops the build on interpreters it doesn't know, and 3.15.0
final ships October 9. The shared python-tests.yml and maturin-wheels.yml
derive their matrix from requires-python = ">=3.10", so 3.15 joins both
the moment it releases: `python / test (3.15)` would fail at `maturin
develop` and take the required `python / passed` check with it, blocking
every PR, and the 3.15 wheel leg would stop publish.yml before PyPI,
crates.io and the release.

pyo3 0.29.0 added 3.15 support (PEP 820 module init, PyModExport/PyABIInfo).
No source changes: python.rs is already on the Bound/Python::attach API.

Capping requires-python was the alternative, but that locks 3.15 users
out of installing.
@liquidsec liquidsec mentioned this pull request Oct 6, 2026
4 tasks
@liquidsec
liquidsec merged commit 397e398 into dev Oct 6, 2026
15 checks passed
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.

2 participants