Skip to content

chore(deps): unify pyo3 on 0.30 with compatible companions - #2863

Open
chaliy wants to merge 3 commits into
mainfrom
fix/pyo3-0.30-unified
Open

chaliy wants to merge 3 commits into
mainfrom
fix/pyo3-0.30-unified

Conversation

@chaliy

@chaliy chaliy commented Nov 6, 2026 •

Copy link
Copy Markdown
Contributor

What changed

Same bumps as #2858 (pyo3 0.29->0.30, syn 2->3 in the random-fs fixture, hyperlight 0.259->0.262, wit-bindgen 0.62->0.63) plus the companions the jump requires: jiter 0.17->0.18 and pyo3-async-runtimes 0.29->0.30. Supersedes #2858.

Why

#2858 cannot land: pyo3 0.30 and jiter 0.17's pyo3 0.29 collide on links=pyo3-python, so resolution fails in every rust job. jiter 0.18 moves its required pyo3 dep to ^0.30.1 and pyo3-async-runtimes 0.30 tracks pyo3 0.30, unifying the graph on one major.

Before / After

Before (#2858): failed to select a version for pyo3 (links conflict 0.29.x vs 0.30.1) in Lint and everything downstream.
After: cargo check --workspace --all-targets clean, zero warnings; clippy -D warnings clean on the touched crates; monty lib tests 49 passed.

pyo3 0.30 notes: skip_from_py_object is now the default and the option is deprecated, so the 8 occurrences are removed (behavior-preserving; nothing extracts these pyclasses via FromPyObject or the workspace check would fail). Direct cargo build of the cdylib still needs maturin for libpython linking (pre-existing); the maturin/pytest matrix here is the real validation.

Vet: exemption bumps for the new versions (pyo3 set, jiter), same trust already granted.

Risk

  • Medium: major FFI bump. Behavior risk is in pyo3 0.30 itself; the repo's pytest matrix (3.9-3.14) plus CPython jobs cover it.
  • syn 2->3 and hyperlight/wit-bindgen bumps are fixture/example-scoped.

Checklist

  • cargo check --workspace --all-targets clean, zero warnings
  • clippy -D warnings on touched crates
  • monty lib tests pass (49)
  • cargo vet --locked passes locally
  • CI green (esp. pytest matrix + CPython) - required before merge

Autofix with [code]smith
Open in [code]smith · Need help on this PR? Tag @codesmith-bot with what you need.

Same bumps as #2858 (pyo3 0.29->0.30, syn 2->3 in the random-fs fixture, hyperlight 0.259->0.262, wit-bindgen 0.62->0.63) plus the companions the 0.30 jump requires: jiter 0.17->0.18 (its required pyo3 dep moves to ^0.30.1) and pyo3-async-runtimes 0.29->0.30. Without them the two pyo3 majors collide on links=pyo3-python and resolution fails, which sank #2858.

pyo3 0.30 makes skip_from_py_object the default and deprecates the option (deny-warnings clean): removed the 8 now-no-op occurrences. No extraction behavior change: nothing extracts these pyclasses via FromPyObject (workspace check is clean).

Vet: exemption bumps for the new versions (pyo3 set, jiter), matching existing cover.

Supersedes #2858.
@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Nov 6, 2026 •

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
bashkit 4a19cfc Commit Preview URL

Branch Preview URL
Nov 07 2026, 02:02 PM

@bashkit-pr-reviewer bashkit-pr-reviewer Bot 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.

Dependency unification looks correct: version bumps are consistent across workspaces, cargo-vet exemptions match the new versions, and the skip_from_py_object removals are behavior-preserving under PyO3 0.30 (verified no extract::<...>() of those types; only BuiltinResult is extracted and it keeps from_py_object). One stale-doc follow-up below.

itertools = { version = "0.14.0" }
itoa = { version = "1" }
jiter = { version = "0.17.0", features = ["num-bigint"] }
jiter = { version = "0.18.0", features = ["num-bigint"] }

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

[P2] Knowledge now stale: knowledge/operations/dependencies.md:90-91 still says "Monty 1.4 uses published jiter 0.17 with pyo3 0.29", but this PR moves the tree to jiter 0.18 / pyo3 0.30 (this file's jiter = "0.18.0" line is the evidence). Per AGENTS.md (update knowledge in the same change when durable facts change), update that sentence to jiter 0.18 with pyo3 0.30 in this PR.

@bashkit-pr-reviewer

bashkit-pr-reviewer Bot commented Nov 6, 2026 •

Copy link
Copy Markdown

Review summary (head 4a19cfc, re-review after push)

Verdict: Still no blocking issues. The new push only adds the bashkit fork: decision comment on the jiter 0.18.0 line in crates/bashkit-monty/Cargo.toml (plus a rebase; all other hunks — pyo3 0.30, syn 3, hyperlight/wit-bindgen, skip_from_py_object removals, vet exemptions — are unchanged). That marker is exactly what scripts/check_monty_fork.py:marked_deps requires for a version divergence, so the push improves fork-drift compliance. Per AGENTS.md ("important decisions as comments"), the comment is in the right place.

Findings: No new findings this push. One correction to my previous review: the P2 (deps-knowledge-jiter-pyo3-stale) does not stand — re-reading knowledge/operations/dependencies.md:151-152 ("Monty 1.4 uses published jiter 0.17 with pyo3 0.29"), the sentence describes upstream monty-1.4.0's published deps, which the new fork comment itself confirms ("upstream pins 0.17"). The fork's intentional 0.18 divergence is now documented at the divergence site, so no knowledge edit is required.

What I checked beyond the diff: crates/bashkit-monty/Cargo.toml fork comment; scripts/check_monty_fork.py:marked_deps (version divergences explicitly markable, table-scoped) and marker_window/FORK_ONLY handling; knowledge/operations/dependencies.md:140-165 context; confirmed no other hunk changed since c8b0c62. Could not build/test (no cargo per workflow); full diff visible (truncated: false).

The fork-drift check rejected jiter 0.18 in bashkit-monty because upstream
Monty 1.4.0 pins 0.17. #2876 made a marked version divergence legal, so the
line now carries its reason: upstream's 0.17 declares pyo3 ^0.29.2, the Python
binding is on 0.30, and the two collide on links=pyo3-python, so cargo cannot
resolve the workspace at all. jiter 0.18 moves its pyo3 requirement to ^0.30.1
and unifies the graph on one major; 0.19 exists but is not needed.

Cargo.lock now holds a single pyo3 (0.30.1), jiter 0.18.0 and
pyo3-async-runtimes 0.30.0.

Claude-Session: https://claude.ai/code/session_01Wy7MByvAMwapenBYpmq9HN

This branch has not been deployed

No deployments
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