NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #437 most downloaded on crates.io
Build configuration for the PyO3 ecosystem
Last release 4 days ago
30 Sep 2026
Ships fairly regularly
a new release about every 2 months
Nearly every release is documented
notes for 59 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
5 years old
66 releases · first in 2021
One column per quarter.
Mark PyString::data as unsafe and disable it and some supporting PyUnicode FFI APIs (which depend on a C bitfield) on big-endian targets. #1834
PyString::data as unsafe and disable it and some supporting PyUnicode FFI APIs (which depend on a C bitfield) on big-endian targets. #1834Add PyString::data to access the raw bytes stored in a Python string. #1794
PyString::data to access the raw bytes stored in a Python string. #1794AttributeError to avoid panic when calling del on a #[setter] defined class property. #1779PyGILState_Check and Py_tracefunc to the unlimited API. #1787_type field to PyStatus struct definition. #1791num-complex optional dependency to support interop with rust-numpy and ndarray when building with the MSRV of 1.41 #1799Python::run_code. #1806PyModule::from_code. #1810pyo3:: in pyo3::types::datetime which broke builds using -Z avoid-dev-deps #1811Add indexmap feature to add ToPyObject, IntoPy and FromPyObject implementations for indexmap::IndexMap. #1728
indexmap feature to add ToPyObject, IntoPy and FromPyObject implementations for indexmap::IndexMap. #1728pyo3_build_config::add_extension_module_link_args to use in build scripts to set linker arguments (for macOS). #1755Python::with_gil_unchecked unsafe variation of Python::with_gil to allow obtaining a Python in scenarios where Python::with_gil would fail. #1769PyErr::new no longer acquires the Python GIL internally. #1724cargo:rustc-cdylib-link-arg in its build script, as Cargo unintentionally allowed crates to pass linker args to downstream crates in this way. Projects supporting macOS may need to restore .cargo/config.toml files. #1755#[doc(hidden)] on structs and functions annotated with PyO3 macros. #1722#[pyfunction]s. #1726Py_Buffer on PyPy. #1737dictoffset on 32-bit Windows. #1475Py_DecodeLocale. The 2nd argument is now *mut Py_ssize_t instead of Py_ssize_t. #1766Implement IntoPy for &PathBuf and &OsString. #1712
Deprecate FFI definition PyCFunction_Call for Python 3.9 and up. #1425
num-bigint optional dependency to 0.4. #1481num-complex optional dependency to 0.4. #1482hashbrown optional dependency supported versions to include 0.11. #1496[T; N] to all N using const generics (on Rust 1.51 and up). #1128OsStr/ OsString and Python strings. #1379Path/ PathBuf and Python strings (and pathlib.Path objects). #1379 #1654#[pyo3(...)] attributes to control various PyO3 macro functionality:
PyCFunction_CheckExact for Python 3.9 and later. #1425Py_IS_TYPE. #1429_Py_InitializeMain. #1473cpython/import.h.#1475#[pyclass] macro. #1504PyDateTime_TimeZone_UTC. #1572#[pyclass(extends=Exception)]. #1591PyErr::cause and PyErr::set_cause. #1679cpython/pystate.h. #1687wrap_pyfunction! macro to pyo3::prelude. #1695#[pymethods] block per #[pyclass] by default, to remove the dependency on inventory. Add a multiple-pymethods feature to opt-in the original behavior and dependency on inventory. #1457PyTimeAccess::get_fold to return a bool instead of a u8. #1397PyCFunction_Call for Python 3.9 and up. #1425PyModule_GetFilename. #1425auto-initialize feature is no longer enabled by default. #1443PyCFunction::new and PyCFunction::new_with_keywords to take &'static str arguments rather than implicitly copying (and leaking) them. #1450PyModule::call, PyModule::call0, PyModule::call1 and PyModule::get. #1492PyBufferErrors raised from PyBuffer::copy_to_slice and PyBuffer::copy_from_slice. #1534-undefined and dynamic_lookup linker arguments on macOS with the extension-module feature. #1539#[pyproto] methods which are easier to implement as #[pymethods]: #1560
PyBasicProtocol::__bytes__ and PyBasicProtocol::__format__PyContextProtocol::__enter__ and PyContextProtocol::__exit__PyDescrProtocol::__delete__ and PyDescrProtocol::__set_name__PyMappingProtocol::__reversed__PyNumberProtocol::__complex__ and PyNumberProtocol::__round__PyAsyncProtocol::__aenter__ and PyAsyncProtocol::__aexit__#[pyo3(...)] options:
PyEval_InitThreads in #[pymodule] init code. #1630METH_FASTCALL argument passing convention, when possible, to improve #[pyfunction] and method performance.
#1619, #1660BaseException etc. #1426Python::is_instance, Python::is_subclass, Python::release, Python::xdecref, and Py::from_owned_ptr_or_panic. #1426PyTypeInfo:
PYO3_CROSS_INCLUDE_DIR environment variable and the associated C header parsing functionality. #1521raw_pycfunction! macro. #1619PyClassAlloc trait. #1657PyList::get_parked_item. #1664PyCFunction_ClearFreeList for Python 3.9 and later. #1425PYO3_CROSS_LIB_DIR environment variable no long required when compiling for x86-64 Python from macOS arm64 and reverse. #1428_PyEval_RequestCodeExtraIndex, which took an argument of the wrong type. #1429PyIndex_Check missing with the abi3 feature. #1436TypeError raised when keyword-only argument passed along with a positional argument in *args. #1440&PyTuple of *args in #[pyfunction]. #1440#[pymethods] inside macro expansions. #1505__doc__ in __all__ generated for #[pymodule]. #1509PYO3_CROSS family of environment variables are set. #1514EnvironmentError, IOError, and WindowsError on PyPy. #1533cargo check and cargo clippy in a Python virtualenv. #1557ffi::PyDateTimeAPI without the GIL. #1563FromPyObject implementations for u128 and i128. #1638#[pyclass(extends=PyDict)] leaking the dict contents on drop. #1657PyList::get_item with negative indices. #1668PyEval_SetProfile/PyEval_SetTrace to take Option<Py_tracefunc> parameters. #1692ToPyObject impl for HashSet to accept non-default hashers. #1702Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →