Skip to content

build(deps): bump pyo3 to 0.30 for Python 3.15, drop 3.9 and 3.10 - #103

Merged
liquidsec merged 2 commits into
devfrom
deps/bump
Oct 19, 2026
Merged

liquidsec merged 2 commits into
devfrom
deps/bump

Conversation

@liquidsec

@liquidsec liquidsec commented Oct 19, 2026 •

Copy link
Copy Markdown
Contributor

Unblocks bbot's Python 3.15 PR (blacklanternsecurity/bbot#3474). Its test (3.15) job fails while installing radixtarget:

error: the configured Python version (3.15) is newer than PyO3's maximum supported version (3.14)
= help: this package is being built with PyO3 version 0.27.2

There's no 3.15 wheel on PyPI, so pip builds radixtarget from source, and pyo3 0.27 doesn't support 3.15.

Changes

  • pyo3 0.27 → 0.30. The bindings compile unchanged, with no new clippy warnings.
  • cargo update for every other semver-compatible crate (ipnet 2.12, icu_* 2.3, libc, proc-macro2, …).
  • uv lock --upgrade for dev tools: pytest 9.1, ruff 0.17, pytest-cov 7.1, coverage 7.16. Lockfile format unchanged (revision 3).
  • Python 3.15 added to the CI test matrix and the package classifiers.
  • Drops Python 3.9 and 3.10. 3.9 is end-of-life and 3.10 reaches end-of-life this month; bbot is dropping 3.10 too (bbot#3474). requires-python is now >=3.11, and the CI matrix, classifiers, README badge and uv.lock are updated to match.

Verified locally

  • Built an sdist, installed it into a clean CPython 3.15.0 venv (the same build-from-source path as bbot's CI), and the full Python test suite passes there.
  • Python 3.11 (the new minimum) and 3.14 also pass with pyo3 0.30.
  • cargo fmt, clippy -D warnings, cargo test, pytest and ruff all pass.

Not in this PR

  • rand 0.8 → 0.10 (test-only): its API renames would conflict with the differential test in Faster IP Tree #64. Better done after Faster IP Tree #64 lands.
  • GitHub Actions version bumps, which belong in a separate PR.

To actually unblock bbot, this has to ship in a release: a version bump, then dev → stable so the publish pipeline builds 3.15 wheels.

pyo3 0.27 refuses to build for Python 3.15 ("the configured Python
version (3.15) is newer than PyO3's maximum supported version (3.14)").
With no 3.15 wheel on PyPI, installs on 3.15 build from source and
fail, which blocks bbot's Python 3.15 support (bbot#3474).

- pyo3 0.27 -> 0.30, no code changes needed
- cargo update for all other semver-compatible crates
- uv lock --upgrade for dev tools (pytest 9.1, ruff 0.17, pytest-cov 7.1)
- add 3.15 to the CI test matrix and classifiers

rand stays on 0.8: the 0.10 API rename would conflict with #64's tests.
@github-actions

github-actions Bot commented Oct 19, 2026 •

Copy link
Copy Markdown

RadixTarget Benchmark Results

100000 networks per table, 100000 lookups, median of 5 runs (seed 1337).

Benchmark dev (ms) deps/bump (ms) Change
IPv4 insert 207.90 35.06 🟢 -83.1%
IPv4 lookup 156.57 32.74 🟢 -79.1%
IPv6 insert 1149.09 83.63 🟢 -92.7%
IPv6 lookup 232.91 64.42 🟢 -72.3%

Change is in time taken: negative is faster.

@codecov-commenter

codecov-commenter commented Oct 19, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100%. Comparing base (9fc51ef) to head (4867241).
⚠️ Report is 28 commits behind head on dev.

Additional details and impacted files
@@         Coverage Diff         @@
##            dev   #103   +/-   ##
===================================
  Coverage   100%   100%           
===================================
  Files         3      3           
  Lines       604    605    +1     
===================================
+ Hits        604    605    +1     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

3.9 is end-of-life and 3.10 reaches end-of-life this month; bbot is
dropping 3.10 as well (bbot#3474). requires-python is now >=3.11, and
3.9/3.10 are removed from the CI matrix, classifiers and README badge.
@liquidsec liquidsec changed the title build(deps): bump pyo3 to 0.30 for Python 3.15 support build(deps): bump pyo3 to 0.30 for Python 3.15, drop 3.9 and 3.10 Oct 19, 2026

@en0f en0f left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Let's go!

@liquidsec
liquidsec merged commit dcdf8ad into dev Oct 19, 2026
18 checks passed
@liquidsec
liquidsec deleted the deps/bump branch October 19, 2026 21:01
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.

4 participants