From dff972320287043777fd77063175d23879fef90f Mon Sep 17 00:00:00 2001 From: David Hewitt Date: Fri, 11 Oct 2024 15:54:44 +0100 Subject: [PATCH] release: 0.22.4 --- CHANGELOG.md | 23 ++++++++++++++++++- Cargo.toml | 8 +++---- README.md | 4 ++-- examples/decorator/.template/pre-script.rhai | 2 +- .../maturin-starter/.template/pre-script.rhai | 2 +- examples/plugin/.template/pre-script.rhai | 2 +- .../.template/pre-script.rhai | 2 +- examples/word-count/.template/pre-script.rhai | 2 +- newsfragments/4450.changed.md | 1 - newsfragments/4528.added.md | 2 -- newsfragments/4563.fixed.md | 1 - newsfragments/4574.fixed.md | 2 -- newsfragments/4590.changed.md | 1 - newsfragments/4590.fixed.md | 1 - newsfragments/4599.fixed.md | 1 - pyo3-build-config/Cargo.toml | 2 +- pyo3-ffi/Cargo.toml | 4 ++-- pyo3-macros-backend/Cargo.toml | 6 ++--- pyo3-macros/Cargo.toml | 4 ++-- pyproject.toml | 2 +- tests/ui/reject_generics.stderr | 4 ++-- 21 files changed, 44 insertions(+), 32 deletions(-) delete mode 100644 newsfragments/4450.changed.md delete mode 100644 newsfragments/4528.added.md delete mode 100644 newsfragments/4563.fixed.md delete mode 100644 newsfragments/4574.fixed.md delete mode 100644 newsfragments/4590.changed.md delete mode 100644 newsfragments/4590.fixed.md delete mode 100644 newsfragments/4599.fixed.md diff --git a/CHANGELOG.md b/CHANGELOG.md index 1b8975d79a2..7079ce2feee 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,25 @@ To see unreleased changes, please see the [CHANGELOG on the main branch guide](h +## [0.22.4] - 2024-10-12 + +### Added + +- Add FFI definition `PyWeakref_GetRef` and `compat::PyWeakref_GetRef`. [#4528](https://github.com/PyO3/pyo3/pull/4528) + +### Changed + +- Deprecate `_borrowed` methods on `PyWeakRef` and `PyWeakrefProxy` (just use the owning forms). [#4590](https://github.com/PyO3/pyo3/pull/4590) + +### Fixed + +- Revert removal of private FFI function `_PyLong_NumBits` on Python 3.13 and later. [#4450](https://github.com/PyO3/pyo3/pull/4450) +- Fix `__traverse__` functions for base classes not being called by subclasses created with `#[pyclass(extends = ...)]`. [#4563](https://github.com/PyO3/pyo3/pull/4563) +- Fix regression in 0.22.3 failing compiles under `#![forbid(unsafe_code)]`. [#4574](https://github.com/PyO3/pyo3/pull/4574) +- Workaround possible use-after-free in `_borrowed` methods on `PyWeakRef` and `PyWeakrefProxy` by leaking their contents. [#4590](https://github.com/PyO3/pyo3/pull/4590) +- Fix crash calling `PyType_GetSlot` on static types before Python 3.10. [#4599](https://github.com/PyO3/pyo3/pull/4599) + + ## [0.22.3] - 2024-09-15 ### Added @@ -1875,7 +1894,9 @@ Yanked - Initial release -[Unreleased]: https://github.com/pyo3/pyo3/compare/v0.22.2...HEAD +[Unreleased]: https://github.com/pyo3/pyo3/compare/v0.22.4...HEAD +[0.22.4]: https://github.com/pyo3/pyo3/compare/v0.22.3...v0.22.4 +[0.22.3]: https://github.com/pyo3/pyo3/compare/v0.22.2...v0.22.3 [0.22.2]: https://github.com/pyo3/pyo3/compare/v0.22.1...v0.22.2 [0.22.1]: https://github.com/pyo3/pyo3/compare/v0.22.0...v0.22.1 [0.22.0]: https://github.com/pyo3/pyo3/compare/v0.21.2...v0.22.0 diff --git a/Cargo.toml b/Cargo.toml index ee260f1bfc1..c38b32d2c6b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pyo3" -version = "0.22.3" +version = "0.22.4" description = "Bindings to Python interpreter" authors = ["PyO3 Project and Contributors "] readme = "README.md" @@ -21,10 +21,10 @@ memoffset = "0.9" once_cell = "1.13" # ffi bindings to the python interpreter, split into a separate crate so they can be used independently -pyo3-ffi = { path = "pyo3-ffi", version = "=0.22.3" } +pyo3-ffi = { path = "pyo3-ffi", version = "=0.22.4" } # support crates for macros feature -pyo3-macros = { path = "pyo3-macros", version = "=0.22.3", optional = true } +pyo3-macros = { path = "pyo3-macros", version = "=0.22.4", optional = true } indoc = { version = "2.0.1", optional = true } unindent = { version = "0.2.1", optional = true } @@ -64,7 +64,7 @@ futures = "0.3.28" static_assertions = "1.1.0" [build-dependencies] -pyo3-build-config = { path = "pyo3-build-config", version = "=0.22.3", features = ["resolve-config"] } +pyo3-build-config = { path = "pyo3-build-config", version = "=0.22.4", features = ["resolve-config"] } [features] default = ["macros"] diff --git a/README.md b/README.md index 198872acf85..de490722499 100644 --- a/README.md +++ b/README.md @@ -68,7 +68,7 @@ name = "string_sum" crate-type = ["cdylib"] [dependencies] -pyo3 = { version = "0.22.3", features = ["extension-module"] } +pyo3 = { version = "0.22.4", features = ["extension-module"] } ``` **`src/lib.rs`** @@ -137,7 +137,7 @@ Start a new project with `cargo new` and add `pyo3` to the `Cargo.toml` like th ```toml [dependencies.pyo3] -version = "0.22.3" +version = "0.22.4" features = ["auto-initialize"] ``` diff --git a/examples/decorator/.template/pre-script.rhai b/examples/decorator/.template/pre-script.rhai index 32b20a55d17..29b5f4d09c5 100644 --- a/examples/decorator/.template/pre-script.rhai +++ b/examples/decorator/.template/pre-script.rhai @@ -1,4 +1,4 @@ -variable::set("PYO3_VERSION", "0.22.3"); +variable::set("PYO3_VERSION", "0.22.4"); file::rename(".template/Cargo.toml", "Cargo.toml"); file::rename(".template/pyproject.toml", "pyproject.toml"); file::delete(".template"); diff --git a/examples/maturin-starter/.template/pre-script.rhai b/examples/maturin-starter/.template/pre-script.rhai index 32b20a55d17..29b5f4d09c5 100644 --- a/examples/maturin-starter/.template/pre-script.rhai +++ b/examples/maturin-starter/.template/pre-script.rhai @@ -1,4 +1,4 @@ -variable::set("PYO3_VERSION", "0.22.3"); +variable::set("PYO3_VERSION", "0.22.4"); file::rename(".template/Cargo.toml", "Cargo.toml"); file::rename(".template/pyproject.toml", "pyproject.toml"); file::delete(".template"); diff --git a/examples/plugin/.template/pre-script.rhai b/examples/plugin/.template/pre-script.rhai index ee37346e10d..ee4c26ae8b3 100644 --- a/examples/plugin/.template/pre-script.rhai +++ b/examples/plugin/.template/pre-script.rhai @@ -1,4 +1,4 @@ -variable::set("PYO3_VERSION", "0.22.3"); +variable::set("PYO3_VERSION", "0.22.4"); file::rename(".template/Cargo.toml", "Cargo.toml"); file::rename(".template/plugin_api/Cargo.toml", "plugin_api/Cargo.toml"); file::delete(".template"); diff --git a/examples/setuptools-rust-starter/.template/pre-script.rhai b/examples/setuptools-rust-starter/.template/pre-script.rhai index 8ceb8df28bb..e743211006c 100644 --- a/examples/setuptools-rust-starter/.template/pre-script.rhai +++ b/examples/setuptools-rust-starter/.template/pre-script.rhai @@ -1,4 +1,4 @@ -variable::set("PYO3_VERSION", "0.22.3"); +variable::set("PYO3_VERSION", "0.22.4"); file::rename(".template/Cargo.toml", "Cargo.toml"); file::rename(".template/setup.cfg", "setup.cfg"); file::delete(".template"); diff --git a/examples/word-count/.template/pre-script.rhai b/examples/word-count/.template/pre-script.rhai index 32b20a55d17..29b5f4d09c5 100644 --- a/examples/word-count/.template/pre-script.rhai +++ b/examples/word-count/.template/pre-script.rhai @@ -1,4 +1,4 @@ -variable::set("PYO3_VERSION", "0.22.3"); +variable::set("PYO3_VERSION", "0.22.4"); file::rename(".template/Cargo.toml", "Cargo.toml"); file::rename(".template/pyproject.toml", "pyproject.toml"); file::delete(".template"); diff --git a/newsfragments/4450.changed.md b/newsfragments/4450.changed.md deleted file mode 100644 index efc02fc3032..00000000000 --- a/newsfragments/4450.changed.md +++ /dev/null @@ -1 +0,0 @@ -Restore `_PyLong_NumBits` on Python 3.13 and later diff --git a/newsfragments/4528.added.md b/newsfragments/4528.added.md deleted file mode 100644 index 0991f9a5261..00000000000 --- a/newsfragments/4528.added.md +++ /dev/null @@ -1,2 +0,0 @@ -* Added bindings for `pyo3_ffi::PyWeakref_GetRef` on Python 3.13 and newer and - `py03_ffi::compat::PyWeakref_GetRef` for older Python versions. diff --git a/newsfragments/4563.fixed.md b/newsfragments/4563.fixed.md deleted file mode 100644 index c0249a81a8b..00000000000 --- a/newsfragments/4563.fixed.md +++ /dev/null @@ -1 +0,0 @@ -Fix `__traverse__` functions for base classes not being called by subclasses created with `#[pyclass(extends = ...)]`. diff --git a/newsfragments/4574.fixed.md b/newsfragments/4574.fixed.md deleted file mode 100644 index c996e927289..00000000000 --- a/newsfragments/4574.fixed.md +++ /dev/null @@ -1,2 +0,0 @@ -Fixes `#[forbid(unsafe_code)]` regression by reverting #4396. -Fixes unintentional `unsafe_code` trigger by adjusting macro hygiene. \ No newline at end of file diff --git a/newsfragments/4590.changed.md b/newsfragments/4590.changed.md deleted file mode 100644 index 3891da6fa9d..00000000000 --- a/newsfragments/4590.changed.md +++ /dev/null @@ -1 +0,0 @@ -* Deprecate `_borrowed` methods on `PyWeakRef` and `PyWeakrefProxy` (just use the owning forms). diff --git a/newsfragments/4590.fixed.md b/newsfragments/4590.fixed.md deleted file mode 100644 index afa16b6892b..00000000000 --- a/newsfragments/4590.fixed.md +++ /dev/null @@ -1 +0,0 @@ -* Workaround possible use-after-free in `_borrowed` methods on `PyWeakRef` and `PyWeakrefProxy` by leaking their contents. diff --git a/newsfragments/4599.fixed.md b/newsfragments/4599.fixed.md deleted file mode 100644 index 6ed2dea323b..00000000000 --- a/newsfragments/4599.fixed.md +++ /dev/null @@ -1 +0,0 @@ -Fix crash calling `PyType_GetSlot` on static types before Python 3.10. diff --git a/pyo3-build-config/Cargo.toml b/pyo3-build-config/Cargo.toml index 2140592312a..57feff9d806 100644 --- a/pyo3-build-config/Cargo.toml +++ b/pyo3-build-config/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pyo3-build-config" -version = "0.22.3" +version = "0.22.4" description = "Build configuration for the PyO3 ecosystem" authors = ["PyO3 Project and Contributors "] keywords = ["pyo3", "python", "cpython", "ffi"] diff --git a/pyo3-ffi/Cargo.toml b/pyo3-ffi/Cargo.toml index bbd5ac26100..73322ac6951 100644 --- a/pyo3-ffi/Cargo.toml +++ b/pyo3-ffi/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pyo3-ffi" -version = "0.22.3" +version = "0.22.4" description = "Python-API bindings for the PyO3 ecosystem" authors = ["PyO3 Project and Contributors "] keywords = ["pyo3", "python", "cpython", "ffi"] @@ -41,7 +41,7 @@ generate-import-lib = ["pyo3-build-config/python3-dll-a"] paste = "1" [build-dependencies] -pyo3-build-config = { path = "../pyo3-build-config", version = "=0.22.3", features = ["resolve-config"] } +pyo3-build-config = { path = "../pyo3-build-config", version = "=0.22.4", features = ["resolve-config"] } [lints] workspace = true diff --git a/pyo3-macros-backend/Cargo.toml b/pyo3-macros-backend/Cargo.toml index a9d3ac92d2a..7c98dce1bb4 100644 --- a/pyo3-macros-backend/Cargo.toml +++ b/pyo3-macros-backend/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pyo3-macros-backend" -version = "0.22.3" +version = "0.22.4" description = "Code generation for PyO3 package" authors = ["PyO3 Project and Contributors "] keywords = ["pyo3", "python", "cpython", "ffi"] @@ -16,7 +16,7 @@ edition = "2021" [dependencies] heck = "0.5" proc-macro2 = { version = "1.0.60", default-features = false } -pyo3-build-config = { path = "../pyo3-build-config", version = "=0.22.3", features = ["resolve-config"] } +pyo3-build-config = { path = "../pyo3-build-config", version = "=0.22.4", features = ["resolve-config"] } quote = { version = "1", default-features = false } [dependencies.syn] @@ -25,7 +25,7 @@ default-features = false features = ["derive", "parsing", "printing", "clone-impls", "full", "extra-traits"] [build-dependencies] -pyo3-build-config = { path = "../pyo3-build-config", version = "=0.22.3" } +pyo3-build-config = { path = "../pyo3-build-config", version = "=0.22.4" } [lints] workspace = true diff --git a/pyo3-macros/Cargo.toml b/pyo3-macros/Cargo.toml index eb1ae6ded97..8006356771e 100644 --- a/pyo3-macros/Cargo.toml +++ b/pyo3-macros/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pyo3-macros" -version = "0.22.3" +version = "0.22.4" description = "Proc macros for PyO3 package" authors = ["PyO3 Project and Contributors "] keywords = ["pyo3", "python", "cpython", "ffi"] @@ -22,7 +22,7 @@ gil-refs = ["pyo3-macros-backend/gil-refs"] proc-macro2 = { version = "1.0.60", default-features = false } quote = "1" syn = { version = "2", features = ["full", "extra-traits"] } -pyo3-macros-backend = { path = "../pyo3-macros-backend", version = "=0.22.3" } +pyo3-macros-backend = { path = "../pyo3-macros-backend", version = "=0.22.4" } [lints] workspace = true diff --git a/pyproject.toml b/pyproject.toml index 585b822d4bb..24f874041c2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,7 +3,7 @@ [tool.towncrier] filename = "CHANGELOG.md" -version = "0.22.3" +version = "0.22.4" start_string = "\n" template = ".towncrier.template.md" title_format = "## [{version}] - {project_date}" diff --git a/tests/ui/reject_generics.stderr b/tests/ui/reject_generics.stderr index bab410cc25d..85ffbf688b1 100644 --- a/tests/ui/reject_generics.stderr +++ b/tests/ui/reject_generics.stderr @@ -1,10 +1,10 @@ -error: #[pyclass] cannot have generic parameters. For an explanation, see https://pyo3.rs/v0.22.3/class.html#no-generic-parameters +error: #[pyclass] cannot have generic parameters. For an explanation, see https://pyo3.rs/v0.22.4/class.html#no-generic-parameters --> tests/ui/reject_generics.rs:4:25 | 4 | struct ClassWithGenerics { | ^ -error: #[pyclass] cannot have lifetime parameters. For an explanation, see https://pyo3.rs/v0.22.3/class.html#no-lifetime-parameters +error: #[pyclass] cannot have lifetime parameters. For an explanation, see https://pyo3.rs/v0.22.4/class.html#no-lifetime-parameters --> tests/ui/reject_generics.rs:9:27 | 9 | struct ClassWithLifetimes<'a> {