@@ -12,13 +12,7 @@ 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 3) (June 4, 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.
15+ ## Version 3.0.0 (July 10, 2025)
2216
2317Pybind11 3.0 includes an ABI bump, the first required bump in many years
2418on Unix (Windows has had required bumps more often). This release contains
@@ -42,6 +36,18 @@ New Features:
4236 trampoline objects, and ` std::enable_shared_from_this ` .
4337 [ #5542 ] ( https://github.com/pybind/pybind11/pull/5542 )
4438
39+ - Added support for ` std::shared_ptr<const T> ` in ` py::init() ` when using
40+ ` py::smart_holder ` , complementing existing support for
41+ ` std::unique_ptr<const T> ` .
42+ [ #5731 ] ( https://github.com/pybind/pybind11/pull/5731 )
43+
44+ - Support const-only smart pointers.
45+ [ #5718 ] ( https://github.com/pybind/pybind11/pull/5718 )
46+
47+ - Eliminate cross-DSO RTTI reliance from ` trampoline_self_life_support ` functionality, ` smart_holder ` deleter detection, and other
48+ ` smart_holder ` bookkeeping. Resolves platform-specific issues on macOS related to cross-DSO ` dynamic_cast ` and ` typeid ` mismatches.
49+ [ #5728 ] ( https://github.com/pybind/pybind11/pull/5728 ) (replaces [ #5700 ] ( https://github.com/pybind/pybind11/pull/5700 ) )
50+
4551- Changed ` PYBIND11_MODULE ` macro implementation to perform multi-phase
4652 module initialization (PEP 489) behind the scenes.
4753 [ #5574 ] ( https://github.com/pybind/pybind11/pull/5574 ) and avoid destruction
@@ -64,6 +70,9 @@ New Features:
6470 - Modify internals pointer-to-pointer implementation to not use ` thread_local ` (better iOS support).
6571 [ #5709 ] ( https://github.com/pybind/pybind11/pull/5709 )
6672
73+ - Support implementations without subinterpreter support.
74+ [ #5732 ] ( https://github.com/pybind/pybind11/pull/5732 )
75+
6776- Changed ` PYBIND11_EMBEDDED_MODULE ` macro implementation to perform
6877 multi-phase module initialization (PEP 489) behind the scenes and to
6978 support ` py::mod_gil_not_used() ` ,
@@ -85,6 +94,9 @@ New Features:
8594 - Fix signature for functions with a ` native_enum ` in the signature.
8695 [ #5619 ] ( https://github.com/pybind/pybind11/pull/5619 )
8796
97+ - Support ` py::numpy_scalar<> ` / ` py::make_scalar() ` for NumPy types.
98+ [ #5726 ] ( https://github.com/pybind/pybind11/pull/5726 )
99+
88100- A ` py::release_gil_before_calling_cpp_dtor ` option (for ` py::class_ ` )
89101 was added to resolve the long-standing issue \# 1446.
90102 [ #5522 ] ( https://github.com/pybind/pybind11/pull/5522 )
@@ -111,8 +123,10 @@ New Features:
111123
112124- ` pybind11/conduit/pybind11_platform_abi_id.h ` was factored out, to
113125 maximize reusability of ` PYBIND11_PLATFORM_ABI_ID ` (for other
114- Python/C++ binding systems).
115- [ #5375 ] ( https://github.com/pybind/pybind11/pull/5375 )
126+ Python/C++ binding systems). Separately, a note was added to explain
127+ that the conduit feature only covers from-Python-to-C++ conversions.
128+ [ #5375 ] ( https://github.com/pybind/pybind11/pull/5375 ) \|
129+ [ #5740 ] ( https://github.com/pybind/pybind11/pull/5740 )
116130
117131- Added support for finding pybind11 using pkgconf distributed on pypi.
118132 [ #5552 ] ( https://github.com/pybind/pybind11/pull/5552 )
@@ -124,7 +138,7 @@ New Features:
124138 update example for ` pybind11::custom_type_setup ` in documentation.
125139 [ #5669 ] ( https://github.com/pybind/pybind11/pull/5669 )
126140
127- * Added ` py::scoped_critical_section ` to support free-threaded mode.
141+ - Added ` py::scoped_critical_section ` to support free-threaded mode.
128142 [ #5684 ] ( https://github.com/pybind/pybind11/pull/5684 ) \|
129143 [ #5706 ] ( https://github.com/pybind/pybind11/pull/5706 )
130144
@@ -216,12 +230,6 @@ Bug fixes:
216230 [ #5381 ] ( https://github.com/pybind/pybind11/pull/5381 )
217231- Disable false-positive GCC 12 Bound Check warning.
218232 [ #5355 ] ( https://github.com/pybind/pybind11/pull/5355 )
219- - fix: using ` __cpp_nontype_template_args ` instead of
220- ` __cpp_nontype_template_parameter_class ` .
221- [ #5330 ] ( https://github.com/pybind/pybind11/pull/5330 )
222- - Properly translate C++ exception to Python exception when creating
223- Python buffer from wrapped object.
224- [ #5324 ] ( https://github.com/pybind/pybind11/pull/5324 )
225233- Update the dict when restoring pickles, instead of assigning a
226234 replacement dict.
227235 [ #5658 ] ( https://github.com/pybind/pybind11/pull/5658 )
@@ -232,8 +240,6 @@ Bug fixes:
232240- Change the behavior of the default constructor of ` py::slice ` to be
233241 equivalent to ` :: ` in Python.
234242 [ #5620 ] ( https://github.com/pybind/pybind11/pull/5620 )
235- - Expose required symbol when using clang.
236- [ #5700 ] ( https://github.com/pybind/pybind11/pull/5700 )
237243
238244Bug fixes and features (CMake):
239245
@@ -254,10 +260,9 @@ Bug fixes and features (CMake):
254260- Add support for running pybind11's tests via presets in CMake 3.25+.
255261 [ #5655 ] ( https://github.com/pybind/pybind11/pull/5655 ) and support ` --fresh ` .
256262 [ #5668 ] ( https://github.com/pybind/pybind11/pull/5668 )
257- - Restructure venv support to support ` --fresh ` , make in build folder.
258- [ #5668 ] ( https://github.com/pybind/pybind11/pull/5668 )
259-
260- * Presets now generate ` compile_commands.json ` .
263+ - Experimental CMake support for Android.
264+ [ #5733 ] ( https://github.com/pybind/pybind11/pull/5733 )
265+ - Presets now generate ` compile_commands.json ` .
261266 [ #5685 ] ( https://github.com/pybind/pybind11/pull/5685 )
262267
263268Bug fixes (free-threading):
@@ -282,7 +287,7 @@ Internals:
282287 that it can easily be reused.
283288 [ #5614 ] ( https://github.com/pybind/pybind11/pull/5614 )
284289
285- * Use CPython macros to construct ` PYBIND11_VERSION_HEX ` .
290+ - Use CPython macros to construct ` PYBIND11_VERSION_HEX ` .
286291 [ #5683 ] ( https://github.com/pybind/pybind11/pull/5683 )
287292
288293Documentation:
@@ -293,10 +298,6 @@ Documentation:
293298- A new "Double locking, deadlocking, GIL" document was added.
294299 [ #5394 ] ( https://github.com/pybind/pybind11/pull/5394 )
295300
296- - Adds an answer (FAQ) for "What is a highly conclusive and simple way
297- to find memory leaks?".
298- [ #5340 ] ( https://github.com/pybind/pybind11/pull/5340 )
299-
300301- Add documenting for free-threading and subinterpreters.
301302 [ #5659 ] ( https://github.com/pybind/pybind11/pull/5659 )
302303
@@ -309,20 +310,20 @@ Tests:
309310 compiling using ` clang ` on Linux with the ` -funsigned-char ` flag.
310311 [ #5545 ] ( https://github.com/pybind/pybind11/pull/5545 )
311312
312- - Test PyPy3.11 in CI.
313- [ #5534 ] ( https://github.com/pybind/pybind11/pull/5534 )
314-
315313- CI testing now includes
316314 ` -Wwrite-strings -Wunreachable-code -Wpointer-arith -Wredundant-decls `
317315 in some jobs.
318316 [ #5523 ] ( https://github.com/pybind/pybind11/pull/5523 )
319317
320- * Add nightly wheels to scientific-python's nightly wheelhouse.
318+ - Add nightly wheels to scientific-python's nightly wheelhouse.
321319 [ #5675 ] ( https://github.com/pybind/pybind11/pull/5675 )
322320
323- * Expect free-threaded warning when loading a non-free-threaded module.
321+ - Expect free-threaded warning when loading a non-free-threaded module.
324322 [ #5680 ] ( https://github.com/pybind/pybind11/pull/5680 )
325323
324+ - Run pytest under Python devmode.
325+ [ #5715 ] ( https://github.com/pybind/pybind11/pull/5715 )
326+
326327New and removed platforms:
327328
328329- Support Python 3.14 (beta 1+).
@@ -337,15 +338,18 @@ New and removed platforms:
337338
338339- Support for PyPy 3.11 added.
339340 [ #5508 ] ( https://github.com/pybind/pybind11/pull/5508 )
341+ And test in ci.
342+ [ #5534 ] ( https://github.com/pybind/pybind11/pull/5534 )
340343
341344- Support for PyPy 3.8 and 3.9 was dropped.
342345 [ #5578 ] ( https://github.com/pybind/pybind11/pull/5578 )
343346
344347- Support for Python 3.7 was removed. (Official end-of-life:
345- 2023-06-27). [ #5191 ] ( https://github.com/pybind/pybind11/pull/5191 )
348+ 2023-06-27).
349+ [ #5191 ] ( https://github.com/pybind/pybind11/pull/5191 )
346350
347351- Support for CMake older than 3.15 removed. CMake 3.15-4.0 supported.
348- [ #5304 ] ( https://github.com/pybind/pybind11/pull/5304 ) and fix regression [ #5688 ] ( https://github.com/pybind/pybind11/pull/5688 ) .
352+ [ #5304 ] ( https://github.com/pybind/pybind11/pull/5304 ) and fix regression [ #5691 ] ( https://github.com/pybind/pybind11/pull/5691 ) .
349353
350354- Use scikit-build-core for the build backend for the PyPI ` pybind11 ` .
351355 The CMake generation has been moved to the sdist-\> wheel step.
@@ -362,7 +366,6 @@ New and removed platforms:
362366- Support Windows C++20 and Linux C++23 in tests.
363367 [ #5707 ] ( https://github.com/pybind/pybind11/pull/5707 )
364368
365-
366369## Version 2.13.6 (September 13, 2024)
367370
368371New Features:
0 commit comments