Title: Bump pyo3 from 0.28.3 to 0.29.0 by dependabot[bot] · Pull Request #8094 · RustPython/RustPython · GitHub
Open Graph Title: Bump pyo3 from 0.28.3 to 0.29.0 by dependabot[bot] · Pull Request #8094 · RustPython/RustPython
X Title: Bump pyo3 from 0.28.3 to 0.29.0 by dependabot[bot] · Pull Request #8094 · RustPython/RustPython
Description: Bumps pyo3 from 0.28.3 to 0.29.0.
Release notes
Sourced from pyo3's releases.
PyO3 0.29.0
This release is a relatively large release with improvements across many areas of PyO3's API.
Build and packaging changes
This release brings full support for Python 3.15 beta. We encourage downstream projects to begin testing and distributing Python 3.15 beta wheels so that the ecosystem can prepare for the 3.15 final release later in the year.
Alongside Python 3.15 support comes support for its new "abi3t" stable ABI which supports both free-threaded and gil-enabled Python builds. For projects distributing stable ABI wheels, we recommend distributing (for each OS/architecture) an abi3 wheel built for your minimum supported Python version, a 3.14t version-specific wheel for free-threaded Python 3.14, and an abi3t wheel to support Python 3.15 (and future versions).
Support for Python 3.7 has been dropped. Support for Python 3.13t, the first experimental free-threaded release of CPython, has also been dropped. 3.14t (and soon 3.15t) is more stable, performant, and the starting point for CPython's own declaration of "support" for the free-threaded build.
The PyO3 build process (via the pyo3-build-config crate) has been adjusted to reduce the cost of rebuilds when the environment used to detect the Python interpreter changes; pyo3-build-config and pyo3-macros will no longer be rebuilt in such cases (although pyo3-ffi and crates downstream of it still will be rebuilt). As a consequence the pyo3_build_config APIs now require crates to have a direct dependency on pyo3 or pyo3-ffi. We hope to continue to reduce rebuild frequency and cost in a future PyO3 release.
Security updates
With the recent boom in AI-assisted security scanning, PyO3 has inevitably had several correctness issues exposed by AI-assisted scanning.
In particular, PyO3 0.29 fixes two security vulnerabilities we will be releasing to the RustSec Advisory Database imminently:
Missing Sync bound on PyCFunction::new_closure closures
Possible out of bounds read in BoundTupleIterator::nth_back and BoundListIterator::nth_back
Any code using the above APIs is advised to update as soon as possible.
This release also contains several other minor breaking changes to close soundness holes uncovered by AI-assisted scanning. Our assessment as maintainers was that, excluding the two vulnerability cases listed above, these correctness issues would likely have crashed immediately upon user testing rather than leading to attacker-exploitable pathways. We nevertheless wanted to see them closed without the usual deprecation cycle. These cases are noted in the migration guide.
Other major themes in this release
New in this release is a CLI in pyo3-introspection to generate type stubs along with the experimental-inspect feature. Downstream, maturin has also gained support to generate type stubs using the feature. The feature is reaching a point where substantial amount of type stubs can be generated automatically. We would like to encourage users to begin using this feature and helping us find what functionality is missing, with a hope we can declare its API stable given sufficient feedback.
A substantial amount of effort has been invested in pyo3-ffi as part of the process of extending it with 3.15's new APIs. There have been many missing APIs from older Python versions added. There have also been a number of fixes to incorrect definitions (these are breaking changes, but also necessary for correctness); we hope there will be far fewer such cases in the future due to more comprehensive checking added to PyO3's CI. Finally, many private CPython APIs (those with _Py underscore-named prefix) have been removed from pyo3-ffi's public API.
In closing
There are also many other incremental improvements, bug fixes and smaller features; full detail can be found in the CHANGELOG.
Please consult the migration guide for help upgrading.
Thank you to everyone who contributed code, documentation, design ideas, bug reports, and feedback. The following contributors' commits are included in this release:
@Alc-Alc
@alex
@anuraaga
@BD103
@bschoenmaeckers
@Cheukting
@chirizxc
@ChristopherRabotin
@clin1234
@codeguru42
@davidhewitt
... (truncated)
Changelog
Sourced from pyo3's changelog.
[0.29.0] - 2026-06-11
Packaging
Support the new PEP 803 abi3t ABI with new abi3t and abi3t-py315 features. #5807
pyo3-macros-backend no longer depends on pyo3-build-config. #5809
Drop support for Python 3.13t (3.14t and above continue to be supported; CPython declared free-threading supported starting with Python 3.14). #5865
Drop support for Python 3.7. #5912
Extend range of supported versions of hashbrown optional dependency to include version 0.17. #5973
Support Python 3.15.0b1. #6014
pyo3-ffi is now no_std. #6022
Added
Add PyErr::set_traceback to set the traceback of an exception object. #5349
Add PyUnicodeDecodeError::new_err_from_utf8 to create a PyErr from a str::Utf8Error. #5668
experimental-inspect: implement INPUT_TYPE and OUTPUT_TYPE on optional third-party crate conversions. #5770
experimental-inspect: include doc comments in generated stubs. #5782
Add pyo3_build_config::PythonAbi, pyo3_build_config::PythonAbiKind, pyo3_build_config::PythonAbiBuilder, pyo3_build_config::InterpreterConfig::target_abi, and pyo3_build_config::InterpreterConfigBuilder::target_abi. #5807
Add Borrowed::get as an equivalent to Bound::get and Py::get. #5849
Add PyFrame::new, PyTraceBack::new, and PyFrameMethods::line_number. #5857
Add PyUntypedBuffer::obj to retrieve the Python object owning the buffer. #5870
Add PyCapsule::new_with_value and PyCapsule::new_with_value_and_destructor. #5881
Add PyErr::set_context and PyErr::context. #5887
Add a small CLI to pyo3-introspection to generate stubs. #5904
Add Python::version_str. #5921
Add TryFrom<&Bound
Open Graph Description: Bumps pyo3 from 0.28.3 to 0.29.0. Release notes Sourced from pyo3's releases. PyO3 0.29.0 This release is a relatively large release with improvements across many areas of PyO3's API. Bui...
X Description: Bumps pyo3 from 0.28.3 to 0.29.0. Release notes Sourced from pyo3's releases. PyO3 0.29.0 This release is a relatively large release with improvements across many areas of PyO3's ...
Opengraph URL: https://github.com/RustPython/RustPython/pull/8094
X: @github
Domain: github.com
| route-pattern | /:user_id/:repository/pull/:id/files(.:format) |
| route-controller | pull_requests |
| route-action | files |
| fetch-nonce | v2:05acdd0f-8524-527e-b1a1-2e24870c5122 |
| current-catalog-service-hash | ae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b |
| request-id | BB2E:2A399C:1D044B8:2666617:6A5AECF5 |
| html-safe-nonce | b140087a575ee1c37b248533d042233b4cf6bdc60de796003d68ab43f21c426d |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJCQjJFOjJBMzk5QzoxRDA0NEI4OjI2NjY2MTc6NkE1QUVDRjUiLCJ2aXNpdG9yX2lkIjoiNjQ0Nzc2ODI5OTk4MDM4NTUyNSIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | a38cef433f3ce0081764c58673330f878aa7bc4fdd5f7f1c294ccb60eda1fde2 |
| hovercard-subject-tag | pull_request:3857119846 |
| github-keyboard-shortcuts | repository,pull-request-list,pull-request-conversation,pull-request-files-changed,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/RustPython/RustPython/pull/8094/files |
| twitter:image | https://avatars.githubusercontent.com/in/29110?s=400&v=4 |
| twitter:card | summary_large_image |
| og:image | https://avatars.githubusercontent.com/in/29110?s=400&v=4 |
| og:image:alt | Bumps pyo3 from 0.28.3 to 0.29.0. Release notes Sourced from pyo3's releases. PyO3 0.29.0 This release is a relatively large release with improvements across many areas of PyO3's API. Bui... |
| og:site_name | GitHub |
| og:type | object |
| hostname | github.com |
| expected-hostname | github.com |
| None | 5290d7e14309ad1e76106a9c4237bd1041517e83ea182c8ab756752cb0c6940b |
| turbo-cache-control | no-preview |
| diff-view | unified |
| go-import | github.com/RustPython/RustPython git https://github.com/RustPython/RustPython.git |
| octolytics-dimension-user_id | 39710557 |
| octolytics-dimension-user_login | RustPython |
| octolytics-dimension-repository_id | 135201145 |
| octolytics-dimension-repository_nwo | RustPython/RustPython |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 135201145 |
| octolytics-dimension-repository_network_root_nwo | RustPython/RustPython |
| turbo-body-classes | logged-out env-production page-responsive full-width |
| disable-turbo | true |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 9c975978430e9ad293956f2bbdaf153b1bd84a99 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width