@@ -12,14 +12,30 @@ versioning](http://semver.org) policy.
12
12
Changes will be added here periodically from the "Suggested changelog
13
13
entry" block in pull request descriptions.
14
14
15
- ## 3.0.0 RC 1
16
-
17
- We may add one more opt-in feature (embedded subinterperters) before the
18
- final release.
15
+ ## 3.0.0 RC 1 (May 21, 2025)
16
+
17
+ Since this is a large release, we are providing a release candidate to give
18
+ projects time to test! We also now provide
19
+ [ SPEC 4] ( https://scientific-python.org/specs/spec-0004/ ) nightly wheels. We
20
+ are hoping to split up ` std.h ` ; that work is approved to be added during the
21
+ RC phase if it's ready in time. We expect the RC phase to last around a week.
22
+
23
+ Pybind11 3.0 includes an ABI bump, the first required bump in many years
24
+ on Unix (Windows has had required bumps more often). This release contains
25
+ the smart-holder branch, multi-phase init and subinterpreter support,
26
+ ` py::native_enum ` , an interface to warnings, typing improvements, and more.
27
+ CMake now defaults to FindPython mode. Please check our upgrade guide for
28
+ more info on upgrading!
29
+
30
+ Support for Python 3.14, 3.14t, GraalPy, and PyPy 3.11 has been added, while
31
+ legacy support for Python 3.7, PyPy 3.8/3.9, and CMake \< 3.15 has been removed.
32
+ Most deprecated features have been kept for this release, but anything
33
+ producing a warning in 3.0 may be removed in a future 3.x version. We also now
34
+ have a deprecation page.
19
35
20
36
New Features:
21
37
22
- - The ` smart-holder ` branch has been merged, enabling
38
+ - The ` smart_holder ` branch has been merged, enabling
23
39
` py::class_<T, py::smart_holder> ` , which handles two-way conversion
24
40
with ` std::unique_ptr<T> ` and ` std::shared_ptr<T> ` (simultaneously),
25
41
disowning a Python object being passed to ` std::unique_ptr<T> ` ,
@@ -43,7 +59,11 @@ New Features:
43
59
support ` py::mod_gil_not_used() ` ,
44
60
` py::multiple_interpreters::per_interpreter_gil() ` and
45
61
` py::multiple_interpreters::shared_gil() ` .
46
- [ #5665 ] ( https://github.com/pybind/pybind11/pull/5665 )
62
+ [ #5665 ] ( https://github.com/pybind/pybind11/pull/5665 ) and consolidate code
63
+ [ #5670 ] ( https://github.com/pybind/pybind11/pull/5670 )
64
+
65
+ * Added API in ` pybind11/subinterpreter.h ` for embedding sub-intepreters (requires Python 3.12+).
66
+ [ #5666 ] ( https://github.com/pybind/pybind11/pull/5666 )
47
67
48
68
- ` py::native_enum ` was added, for conversions between Python's native
49
69
(stdlib) enum types and C++ enums.
@@ -52,7 +72,7 @@ New Features:
52
72
- Add class doc string to ` py::native_enum ` .
53
73
[ #5617 ] ( https://github.com/pybind/pybind11/pull/5617 ) .
54
74
55
- - Fix signature for functions with a native_enum in the signature.
75
+ - Fix signature for functions with a ` native_enum ` in the signature.
56
76
[ #5619 ] ( https://github.com/pybind/pybind11/pull/5619 )
57
77
58
78
- A ` py::release_gil_before_calling_cpp_dtor ` option (for ` py::class_ ` )
@@ -70,7 +90,7 @@ New Features:
70
90
Python warnings.
71
91
[ #5291 ] ( https://github.com/pybind/pybind11/pull/5291 )
72
92
73
- - stl.h ` list|set|map_caster ` were made more user friendly: it is no
93
+ - ` stl.h ` ` list|set|map_caster ` were made more user friendly: it is no
74
94
longer necessary to explicitly convert Python iterables to ` tuple() ` ,
75
95
` set() ` , or ` map() ` in many common situations.
76
96
[ #4686 ] ( https://github.com/pybind/pybind11/pull/4686 )
@@ -94,7 +114,7 @@ New Features:
94
114
update example for ` pybind11::custom_type_setup ` in documentation.
95
115
[ #5669 ] ( https://github.com/pybind/pybind11/pull/5669 )
96
116
97
- New Features (typing):
117
+ New Features / fixes (typing):
98
118
99
119
- Added option for different arg/return type hints to ` type_caster ` .
100
120
Updated ` stl/filesystem ` to use correct arg/return type hints. Updated
@@ -120,9 +140,6 @@ New Features (typing):
120
140
[ #5357 ] ( https://github.com/pybind/pybind11/pull/5357 )
121
141
- Switched to ` numpy.typing.NDArray ` and ` numpy.typing.ArrayLike ` .
122
142
[ #5212 ] ( https://github.com/pybind/pybind11/pull/5212 )
123
-
124
- <!-- -->
125
-
126
143
- Use ` numpy.object_ ` instead of ` object ` .
127
144
[ #5571 ] ( https://github.com/pybind/pybind11/pull/5571 )
128
145
- Fix module type hint.
@@ -132,6 +149,8 @@ New Features (typing):
132
149
- Added support for ` collections.abc ` in type hints and convertible
133
150
checks of STL casters and ` py::buffer ` .
134
151
[ #5566 ] ( https://github.com/pybind/pybind11/pull/5566 )
152
+ - Fix ` typing ` and ` collections.abc ` type hint ambiguity.
153
+ [ #5663 ] ( https://github.com/pybind/pybind11/pull/5663 )
135
154
136
155
Removals:
137
156
@@ -200,7 +219,7 @@ Bug fixes:
200
219
201
220
Bug fixes (CMake):
202
221
203
- - (CMake) Enable FindPython mode by default, with a ` COMPAT ` mode that
222
+ - Enable FindPython mode by default, with a ` COMPAT ` mode that
204
223
sets some of the old variables to ease transition.
205
224
[ #5553 ] ( https://github.com/pybind/pybind11/pull/5553 )
206
225
- Add an author warning that auto-calculated ` PYTHON_MODULE_EXTENSION `
@@ -215,7 +234,8 @@ Bug fixes (CMake):
215
234
- Use CMake's warnings as errors if available (CMake 3.24+).
216
235
[ #5612 ] ( https://github.com/pybind/pybind11/pull/5612 )
217
236
- Add support for running pybind11's tests via presets in CMake 3.25+.
218
- [ #5655 ] ( https://github.com/pybind/pybind11/pull/5655 )
237
+ [ #5655 ] ( https://github.com/pybind/pybind11/pull/5655 ) and support ` --fresh ` .
238
+ [ #5668 ] ( https://github.com/pybind/pybind11/pull/5668 )
219
239
- Restructure venv support to support ` --fresh ` , make in build folder.
220
240
[ #5668 ] ( https://github.com/pybind/pybind11/pull/5668 )
221
241
@@ -264,9 +284,14 @@ Tests:
264
284
265
285
- Test PyPy3.11 in CI.
266
286
[ #5534 ] ( https://github.com/pybind/pybind11/pull/5534 )
287
+
267
288
- CI testing now includes
268
289
` -Wwrite-strings -Wunreachable-code -Wpointer-arith -Wredundant-decls `
269
- in some jobs. [ #5523 ] ( https://github.com/pybind/pybind11/pull/5523 )
290
+ in some jobs.
291
+ [ #5523 ] ( https://github.com/pybind/pybind11/pull/5523 )
292
+
293
+ * Add nightly wheels to scientific-python's nightly wheelhouse.
294
+ [ #5675 ] ( https://github.com/pybind/pybind11/pull/5675 )
270
295
271
296
New and removed platforms:
272
297
@@ -286,7 +311,8 @@ New and removed platforms:
286
311
- Use scikit-build-core for the build backend for the PyPI ` pybind11 ` .
287
312
The CMake generation has been moved to the sdist-\> wheel step.
288
313
` PYBIND11_GLOBAL_SDIST ` has been removed.
289
- [ #5598 ] ( https://github.com/pybind/pybind11/pull/5598 )
314
+ [ #5598 ] ( https://github.com/pybind/pybind11/pull/5598 ) and updated
315
+ docs/ci. [ #5676 ] ( https://github.com/pybind/pybind11/pull/5676 )
290
316
291
317
## Version 2.13.6 (September 13, 2024)
292
318
0 commit comments