@@ -12,14 +12,30 @@ versioning](http://semver.org) policy.
1212Changes will be added here periodically from the "Suggested changelog
1313entry" block in pull request descriptions.
1414
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.
1935
2036New Features:
2137
22- - The ` smart-holder ` branch has been merged, enabling
38+ - The ` smart_holder ` branch has been merged, enabling
2339 ` py::class_<T, py::smart_holder> ` , which handles two-way conversion
2440 with ` std::unique_ptr<T> ` and ` std::shared_ptr<T> ` (simultaneously),
2541 disowning a Python object being passed to ` std::unique_ptr<T> ` ,
@@ -43,7 +59,11 @@ New Features:
4359 support ` py::mod_gil_not_used() ` ,
4460 ` py::multiple_interpreters::per_interpreter_gil() ` and
4561 ` 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 )
4767
4868- ` py::native_enum ` was added, for conversions between Python's native
4969 (stdlib) enum types and C++ enums.
@@ -52,7 +72,7 @@ New Features:
5272 - Add class doc string to ` py::native_enum ` .
5373 [ #5617 ] ( https://github.com/pybind/pybind11/pull/5617 ) .
5474
55- - Fix signature for functions with a native_enum in the signature.
75+ - Fix signature for functions with a ` native_enum ` in the signature.
5676 [ #5619 ] ( https://github.com/pybind/pybind11/pull/5619 )
5777
5878- A ` py::release_gil_before_calling_cpp_dtor ` option (for ` py::class_ ` )
@@ -70,7 +90,7 @@ New Features:
7090 Python warnings.
7191 [ #5291 ] ( https://github.com/pybind/pybind11/pull/5291 )
7292
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
7494 longer necessary to explicitly convert Python iterables to ` tuple() ` ,
7595 ` set() ` , or ` map() ` in many common situations.
7696 [ #4686 ] ( https://github.com/pybind/pybind11/pull/4686 )
@@ -94,7 +114,7 @@ New Features:
94114 update example for ` pybind11::custom_type_setup ` in documentation.
95115 [ #5669 ] ( https://github.com/pybind/pybind11/pull/5669 )
96116
97- New Features (typing):
117+ New Features / fixes (typing):
98118
99119- Added option for different arg/return type hints to ` type_caster ` .
100120 Updated ` stl/filesystem ` to use correct arg/return type hints. Updated
@@ -120,9 +140,6 @@ New Features (typing):
120140 [ #5357 ] ( https://github.com/pybind/pybind11/pull/5357 )
121141- Switched to ` numpy.typing.NDArray ` and ` numpy.typing.ArrayLike ` .
122142 [ #5212 ] ( https://github.com/pybind/pybind11/pull/5212 )
123-
124- <!-- -->
125-
126143- Use ` numpy.object_ ` instead of ` object ` .
127144 [ #5571 ] ( https://github.com/pybind/pybind11/pull/5571 )
128145- Fix module type hint.
@@ -132,6 +149,8 @@ New Features (typing):
132149- Added support for ` collections.abc ` in type hints and convertible
133150 checks of STL casters and ` py::buffer ` .
134151 [ #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 )
135154
136155Removals:
137156
@@ -200,7 +219,7 @@ Bug fixes:
200219
201220Bug fixes (CMake):
202221
203- - (CMake) Enable FindPython mode by default, with a ` COMPAT ` mode that
222+ - Enable FindPython mode by default, with a ` COMPAT ` mode that
204223 sets some of the old variables to ease transition.
205224 [ #5553 ] ( https://github.com/pybind/pybind11/pull/5553 )
206225- Add an author warning that auto-calculated ` PYTHON_MODULE_EXTENSION `
@@ -215,7 +234,8 @@ Bug fixes (CMake):
215234- Use CMake's warnings as errors if available (CMake 3.24+).
216235 [ #5612 ] ( https://github.com/pybind/pybind11/pull/5612 )
217236- 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 )
219239- Restructure venv support to support ` --fresh ` , make in build folder.
220240 [ #5668 ] ( https://github.com/pybind/pybind11/pull/5668 )
221241
@@ -264,9 +284,14 @@ Tests:
264284
265285- Test PyPy3.11 in CI.
266286 [ #5534 ] ( https://github.com/pybind/pybind11/pull/5534 )
287+
267288- CI testing now includes
268289 ` -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 )
270295
271296New and removed platforms:
272297
@@ -286,7 +311,8 @@ New and removed platforms:
286311- Use scikit-build-core for the build backend for the PyPI ` pybind11 ` .
287312 The CMake generation has been moved to the sdist-\> wheel step.
288313 ` 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 )
290316
291317## Version 2.13.6 (September 13, 2024)
292318
0 commit comments