Skip to content

Commit f2a8460

Browse files
committed
release: 0.23.4
1 parent 0c10e34 commit f2a8460

File tree

29 files changed

+54
-45
lines changed

29 files changed

+54
-45
lines changed

CHANGELOG.md

+30-1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,34 @@ To see unreleased changes, please see the [CHANGELOG on the main branch guide](h
1010

1111
<!-- towncrier release notes start -->
1212

13+
## [0.23.4] - 2025-01-10
14+
15+
### Added
16+
17+
- Add `PyList::locked_for_each`, which uses a critical section to lock the list on the free-threaded build. [#4789](https://github.com/PyO3/pyo3/pull/4789)
18+
- Add `pyo3_build_config::add_python_framework_link_args` build script API to set rpath when using macOS system Python. [#4833](https://github.com/PyO3/pyo3/pull/4833)
19+
20+
### Changed
21+
22+
- Use `datetime.fold` to distinguish ambiguous datetimes when converting to and from `chrono::DateTime<Tz>` (rather than erroring). [#4791](https://github.com/PyO3/pyo3/pull/4791)
23+
- Optimize PyList iteration on the free-threaded build. [#4789](https://github.com/PyO3/pyo3/pull/4789)
24+
25+
### Fixed
26+
27+
- Fix unnecessary internal `py.allow_threads` GIL-switch when attempting to access contents of a `PyErr` which originated from Python (could lead to unintended deadlocks). [#4766](https://github.com/PyO3/pyo3/pull/4766)
28+
- Fix thread-unsafe access of dict internals in `BoundDictIterator` on the free-threaded build. [#4788](https://github.com/PyO3/pyo3/pull/4788)
29+
* Fix unnecessary critical sections in `BoundDictIterator` on the free-threaded build. [#4788](https://github.com/PyO3/pyo3/pull/4788)
30+
- Fix time-of-check to time-of-use issues with list iteration on the free-threaded build. [#4789](https://github.com/PyO3/pyo3/pull/4789)
31+
- Fix `chrono::DateTime<Tz>` to-Python conversion when `Tz` is `chrono_tz::Tz`. [#4790](https://github.com/PyO3/pyo3/pull/4790)
32+
- Fix `#[pyclass]` not being able to be named `Probe`. [#4794](https://github.com/PyO3/pyo3/pull/4794)
33+
- Fix not treating cross-compilation from x64 to aarch64 on Windows as a cross-compile. [#4800](https://github.com/PyO3/pyo3/pull/4800)
34+
- Fix missing struct fields on GraalPy when subclassing builtin classes. [#4802](https://github.com/PyO3/pyo3/pull/4802)
35+
- Fix generating import lib for PyPy when `abi3` feature is enabled. [#4806](https://github.com/PyO3/pyo3/pull/4806)
36+
- Fix generating import lib for python3.13t when `abi3` feature is enabled. [#4808](https://github.com/PyO3/pyo3/pull/4808)
37+
- Fix compile failure for raw identifiers like `r#box` in `derive(FromPyObject)`. [#4814](https://github.com/PyO3/pyo3/pull/4814)
38+
- Fix compile failure for `#[pyclass]` enum variants with more than 12 fields. [#4832](https://github.com/PyO3/pyo3/pull/4832)
39+
40+
1341
## [0.23.3] - 2024-12-03
1442

1543
### Packaging
@@ -2026,7 +2054,8 @@ Yanked
20262054

20272055
- Initial release
20282056

2029-
[Unreleased]: https://github.com/pyo3/pyo3/compare/v0.23.3...HEAD
2057+
[Unreleased]: https://github.com/pyo3/pyo3/compare/v0.23.4...HEAD
2058+
[0.23.4]: https://github.com/pyo3/pyo3/compare/v0.23.3...v0.23.4
20302059
[0.23.3]: https://github.com/pyo3/pyo3/compare/v0.23.2...v0.23.3
20312060
[0.23.2]: https://github.com/pyo3/pyo3/compare/v0.23.1...v0.23.2
20322061
[0.23.1]: https://github.com/pyo3/pyo3/compare/v0.23.0...v0.23.1

Cargo.toml

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "pyo3"
3-
version = "0.23.3"
3+
version = "0.23.4"
44
description = "Bindings to Python interpreter"
55
authors = ["PyO3 Project and Contributors <https://github.com/PyO3>"]
66
readme = "README.md"
@@ -21,10 +21,10 @@ memoffset = "0.9"
2121
once_cell = "1.13"
2222

2323
# ffi bindings to the python interpreter, split into a separate crate so they can be used independently
24-
pyo3-ffi = { path = "pyo3-ffi", version = "=0.23.3" }
24+
pyo3-ffi = { path = "pyo3-ffi", version = "=0.23.4" }
2525

2626
# support crates for macros feature
27-
pyo3-macros = { path = "pyo3-macros", version = "=0.23.3", optional = true }
27+
pyo3-macros = { path = "pyo3-macros", version = "=0.23.4", optional = true }
2828
indoc = { version = "2.0.1", optional = true }
2929
unindent = { version = "0.2.1", optional = true }
3030

@@ -66,7 +66,7 @@ static_assertions = "1.1.0"
6666
uuid = {version = "1.10.0", features = ["v4"] }
6767

6868
[build-dependencies]
69-
pyo3-build-config = { path = "pyo3-build-config", version = "=0.23.3", features = ["resolve-config"] }
69+
pyo3-build-config = { path = "pyo3-build-config", version = "=0.23.4", features = ["resolve-config"] }
7070

7171
[features]
7272
default = ["macros"]

README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ name = "string_sum"
7171
crate-type = ["cdylib"]
7272

7373
[dependencies]
74-
pyo3 = { version = "0.23.3", features = ["extension-module"] }
74+
pyo3 = { version = "0.23.4", features = ["extension-module"] }
7575
```
7676

7777
**`src/lib.rs`**
@@ -140,7 +140,7 @@ Start a new project with `cargo new` and add `pyo3` to the `Cargo.toml` like th
140140

141141
```toml
142142
[dependencies.pyo3]
143-
version = "0.23.3"
143+
version = "0.23.4"
144144
features = ["auto-initialize"]
145145
```
146146

Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
variable::set("PYO3_VERSION", "0.23.3");
1+
variable::set("PYO3_VERSION", "0.23.4");
22
file::rename(".template/Cargo.toml", "Cargo.toml");
33
file::rename(".template/pyproject.toml", "pyproject.toml");
44
file::delete(".template");
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
variable::set("PYO3_VERSION", "0.23.3");
1+
variable::set("PYO3_VERSION", "0.23.4");
22
file::rename(".template/Cargo.toml", "Cargo.toml");
33
file::rename(".template/pyproject.toml", "pyproject.toml");
44
file::delete(".template");
+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
variable::set("PYO3_VERSION", "0.23.3");
1+
variable::set("PYO3_VERSION", "0.23.4");
22
file::rename(".template/Cargo.toml", "Cargo.toml");
33
file::rename(".template/plugin_api/Cargo.toml", "plugin_api/Cargo.toml");
44
file::delete(".template");
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
variable::set("PYO3_VERSION", "0.23.3");
1+
variable::set("PYO3_VERSION", "0.23.4");
22
file::rename(".template/Cargo.toml", "Cargo.toml");
33
file::rename(".template/setup.cfg", "setup.cfg");
44
file::delete(".template");
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
variable::set("PYO3_VERSION", "0.23.3");
1+
variable::set("PYO3_VERSION", "0.23.4");
22
file::rename(".template/Cargo.toml", "Cargo.toml");
33
file::rename(".template/pyproject.toml", "pyproject.toml");
44
file::delete(".template");

newsfragments/4766.fixed.md

-1
This file was deleted.

newsfragments/4788.fixed.md

-4
This file was deleted.

newsfragments/4789.added.md

-3
This file was deleted.

newsfragments/4789.changed.md

-2
This file was deleted.

newsfragments/4790.fixed.md

-1
This file was deleted.

newsfragments/4791.fixed.md

-1
This file was deleted.

newsfragments/4794.fixed.md

-1
This file was deleted.

newsfragments/4800.fixed.md

-1
This file was deleted.

newsfragments/4802.fixed.md

-1
This file was deleted.

newsfragments/4806.fixed.md

-1
This file was deleted.

newsfragments/4808.fixed.md

-1
This file was deleted.

newsfragments/4814.fixed.md

-1
This file was deleted.

newsfragments/4832.fixed.md

-1
This file was deleted.

newsfragments/4833.added.md

-1
This file was deleted.

pyo3-build-config/Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "pyo3-build-config"
3-
version = "0.23.3"
3+
version = "0.23.4"
44
description = "Build configuration for the PyO3 ecosystem"
55
authors = ["PyO3 Project and Contributors <https://github.com/PyO3>"]
66
keywords = ["pyo3", "python", "cpython", "ffi"]

pyo3-ffi/Cargo.toml

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "pyo3-ffi"
3-
version = "0.23.3"
3+
version = "0.23.4"
44
description = "Python-API bindings for the PyO3 ecosystem"
55
authors = ["PyO3 Project and Contributors <https://github.com/PyO3>"]
66
keywords = ["pyo3", "python", "cpython", "ffi"]
@@ -42,7 +42,7 @@ generate-import-lib = ["pyo3-build-config/python3-dll-a"]
4242
paste = "1"
4343

4444
[build-dependencies]
45-
pyo3-build-config = { path = "../pyo3-build-config", version = "=0.23.3", features = ["resolve-config"] }
45+
pyo3-build-config = { path = "../pyo3-build-config", version = "=0.23.4", features = ["resolve-config"] }
4646

4747
[lints]
4848
workspace = true

pyo3-ffi/README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -41,13 +41,13 @@ name = "string_sum"
4141
crate-type = ["cdylib"]
4242

4343
[dependencies.pyo3-ffi]
44-
version = "0.23.3"
44+
version = "0.23.4"
4545
features = ["extension-module"]
4646

4747
[build-dependencies]
4848
# This is only necessary if you need to configure your build based on
4949
# the Python version or the compile-time configuration for the interpreter.
50-
pyo3_build_config = "0.23.3"
50+
pyo3_build_config = "0.23.4"
5151
```
5252

5353
If you need to use conditional compilation based on Python version or how

pyo3-macros-backend/Cargo.toml

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "pyo3-macros-backend"
3-
version = "0.23.3"
3+
version = "0.23.4"
44
description = "Code generation for PyO3 package"
55
authors = ["PyO3 Project and Contributors <https://github.com/PyO3>"]
66
keywords = ["pyo3", "python", "cpython", "ffi"]
@@ -17,7 +17,7 @@ rust-version = "1.63"
1717
[dependencies]
1818
heck = "0.5"
1919
proc-macro2 = { version = "1.0.60", default-features = false }
20-
pyo3-build-config = { path = "../pyo3-build-config", version = "=0.23.3", features = ["resolve-config"] }
20+
pyo3-build-config = { path = "../pyo3-build-config", version = "=0.23.4", features = ["resolve-config"] }
2121
quote = { version = "1", default-features = false }
2222

2323
[dependencies.syn]
@@ -26,7 +26,7 @@ default-features = false
2626
features = ["derive", "parsing", "printing", "clone-impls", "full", "extra-traits"]
2727

2828
[build-dependencies]
29-
pyo3-build-config = { path = "../pyo3-build-config", version = "=0.23.3" }
29+
pyo3-build-config = { path = "../pyo3-build-config", version = "=0.23.4" }
3030

3131
[lints]
3232
workspace = true

pyo3-macros/Cargo.toml

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "pyo3-macros"
3-
version = "0.23.3"
3+
version = "0.23.4"
44
description = "Proc macros for PyO3 package"
55
authors = ["PyO3 Project and Contributors <https://github.com/PyO3>"]
66
keywords = ["pyo3", "python", "cpython", "ffi"]
@@ -22,7 +22,7 @@ experimental-async = ["pyo3-macros-backend/experimental-async"]
2222
proc-macro2 = { version = "1.0.60", default-features = false }
2323
quote = "1"
2424
syn = { version = "2", features = ["full", "extra-traits"] }
25-
pyo3-macros-backend = { path = "../pyo3-macros-backend", version = "=0.23.3" }
25+
pyo3-macros-backend = { path = "../pyo3-macros-backend", version = "=0.23.4" }
2626

2727
[lints]
2828
workspace = true

pyproject.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
[tool.towncrier]
55
filename = "CHANGELOG.md"
6-
version = "0.23.3"
6+
version = "0.23.4"
77
start_string = "<!-- towncrier release notes start -->\n"
88
template = ".towncrier.template.md"
99
title_format = "## [{version}] - {project_date}"

tests/ui/reject_generics.stderr

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
error: #[pyclass] cannot have generic parameters. For an explanation, see https://pyo3.rs/v0.23.3/class.html#no-generic-parameters
1+
error: #[pyclass] cannot have generic parameters. For an explanation, see https://pyo3.rs/v0.23.4/class.html#no-generic-parameters
22
--> tests/ui/reject_generics.rs:4:25
33
|
44
4 | struct ClassWithGenerics<A> {
55
| ^
66

7-
error: #[pyclass] cannot have lifetime parameters. For an explanation, see https://pyo3.rs/v0.23.3/class.html#no-lifetime-parameters
7+
error: #[pyclass] cannot have lifetime parameters. For an explanation, see https://pyo3.rs/v0.23.4/class.html#no-lifetime-parameters
88
--> tests/ui/reject_generics.rs:9:27
99
|
1010
9 | struct ClassWithLifetimes<'a> {

0 commit comments

Comments
 (0)