@@ -13,6 +13,161 @@ Changes will be added here periodically from the "Suggested changelog
1313entry" block in pull request descriptions.
1414
1515
16+ ## Version 3.0.2 (release date TBD)
17+
18+ Bug fixes:
19+
20+ - MSVC 19.16 and earlier were blocked from using ` std::launder ` due to internal compiler errors.
21+ [ #5968 ] ( https://github.com/pybind/pybind11/pull/5968 )
22+
23+ - Internals destructors were updated to check the owning interpreter before clearing Python objects.
24+ [ #5965 ] ( https://github.com/pybind/pybind11/pull/5965 )
25+
26+ - pybind11 internals were updated to be deallocated during (sub-)interpreter shutdown to avoid memory leaks.
27+ [ #5958 ] ( https://github.com/pybind/pybind11/pull/5958 )
28+
29+ - Fixed ambiguous ` str(handle) ` construction for ` object ` -derived types like ` kwargs ` or ` dict ` by templatizing the constructor with SFINAE.
30+ [ #5949 ] ( https://github.com/pybind/pybind11/pull/5949 )
31+
32+ - Fixed concurrency consistency for ` internals_pp_manager ` under multiple-interpreters.
33+ [ #5947 ] ( https://github.com/pybind/pybind11/pull/5947 )
34+
35+ - Fixed MSVC LNK2001 in C++20 builds when /GL (whole program optimization) is enabled.
36+ [ #5939 ] ( https://github.com/pybind/pybind11/pull/5939 )
37+
38+ - Added per-interpreter storage for ` gil_safe_call_once_and_store ` to make it safe under multi-interpreters.
39+ [ #5933 ] ( https://github.com/pybind/pybind11/pull/5933 )
40+
41+ - A workaround for a GCC ` -Warray-bounds ` false positive in ` argument_vector ` was added.
42+ [ #5908 ] ( https://github.com/pybind/pybind11/pull/5908 )
43+
44+ - Corrected a mistake where support for ` __index__ ` was added, but the type hints did not reflect acceptance of ` SupportsIndex ` objects. Also fixed a long-standing bug: the complex-caster did not accept ` __index__ ` in ` convert ` mode.
45+ [ #5891 ] ( https://github.com/pybind/pybind11/pull/5891 )
46+
47+ - Fixed ` *args/**kwargs ` return types. Added type hinting to ` py::make_tuple ` .
48+ [ #5881 ] ( https://github.com/pybind/pybind11/pull/5881 )
49+
50+ - Fixed compiler error in ` type_caster_generic ` when casting a ` T ` implicitly convertible from ` T* ` .
51+ [ #5873 ] ( https://github.com/pybind/pybind11/pull/5873 )
52+
53+ - Updated ` py::native_enum ` bindings to unregister enum types on destruction, preventing a use-after-free when returning a destroyed enum instance.
54+ [ #5871 ] ( https://github.com/pybind/pybind11/pull/5871 )
55+
56+ - Fixed undefined behavior that occurred when importing pybind11 modules from non-main threads created by C API modules or embedded python interpreters.
57+ [ #5870 ] ( https://github.com/pybind/pybind11/pull/5870 )
58+
59+ - Fixed dangling pointer in ` internals::registered_types_cpp_fast ` .
60+ [ #5867 ] ( https://github.com/pybind/pybind11/pull/5867 )
61+
62+ - Added support for ` std::shared_ptr<T> ` when loading module-local or conduit types from other modules.
63+ [ #5862 ] ( https://github.com/pybind/pybind11/pull/5862 )
64+
65+ - Fixed thread-safety issues if types were concurrently registered while ` get_local_type_info() ` was called in free threaded Python.
66+ [ #5856 ] ( https://github.com/pybind/pybind11/pull/5856 )
67+
68+ - Fixed py::float_ casting and py::int_ and py::float_ type hints.
69+ [ #5839 ] ( https://github.com/pybind/pybind11/pull/5839 )
70+
71+ - Fixed two ` smart_holder ` bugs in ` shared_ptr ` and ` unique_ptr ` adoption with multiple/virtual inheritance:
72+ - ` shared_ptr ` to-Python caster was updated to register the correct subobject pointer (fixes #5786 ).
73+ - ` unique_ptr ` adoption was updated to own the proper object start while aliasing subobject pointers for registration, which fixed MSVC crashes during destruction.
74+ [ #5836 ] ( https://github.com/pybind/pybind11/pull/5836 )
75+
76+ - Constrained ` accessor::operator= ` templates to avoid obscuring special members.
77+ [ #5832 ] ( https://github.com/pybind/pybind11/pull/5832 )
78+
79+ - Fixed crash that can occur when finalizers acquire and release the GIL.
80+ [ #5828 ] ( https://github.com/pybind/pybind11/pull/5828 )
81+
82+ - Fixed compiler detection in ` pybind11/detail/pybind11_namespace_macros.h ` for clang-cl on Windows, to address warning suppression macros.
83+ [ #5816 ] ( https://github.com/pybind/pybind11/pull/5816 )
84+
85+ - Fixed compatibility with CMake policy CMP0190 by not always requiring a Python interpreter when cross-compiling.
86+ [ #5829 ] ( https://github.com/pybind/pybind11/pull/5829 )
87+
88+ - Added a static assertion to disallow ` keep_alive ` and ` call_guard ` on properties.
89+ [ #5533 ] ( https://github.com/pybind/pybind11/pull/5533 )
90+
91+ Internal:
92+
93+ - CMake policy limit was set to 4.1.
94+ [ #5944 ] ( https://github.com/pybind/pybind11/pull/5944 )
95+
96+ - Improved performance of function calls between Python and C++ by switching to the "vectorcall" calling protocol.
97+ [ #5948 ] ( https://github.com/pybind/pybind11/pull/5948 )
98+
99+ - Many C-style casts were replaced with C++-style casts.
100+ [ #5930 ] ( https://github.com/pybind/pybind11/pull/5930 )
101+
102+ - Added ` cast_sources ` abstraction to ` type_caster_generic ` .
103+ [ #5866 ] ( https://github.com/pybind/pybind11/pull/5866 )
104+
105+ - Improved the performance of from-Python conversions of legacy pybind11 enum objects bound by ` py::enum_ ` .
106+ [ #5860 ] ( https://github.com/pybind/pybind11/pull/5860 )
107+
108+ - Reduced size overhead by deduplicating functions' readable signatures and type information.
109+ [ #5857 ] ( https://github.com/pybind/pybind11/pull/5857 )
110+
111+ - Used new Python 3.14 C APIs when available.
112+ [ #5854 ] ( https://github.com/pybind/pybind11/pull/5854 )
113+
114+ - Improved performance of function dispatch and type casting by porting two-level type info lookup strategy from nanobind.
115+ [ #5842 ] ( https://github.com/pybind/pybind11/pull/5842 )
116+
117+ - Updated ` .gitignore ` to exclude ` __pycache__/ ` directories.
118+ [ #5838 ] ( https://github.com/pybind/pybind11/pull/5838 )
119+
120+ - Changed internals to use ` thread_local ` instead of ` thread_specific_storage ` for increased performance.
121+ [ #5834 ] ( https://github.com/pybind/pybind11/pull/5834 )
122+
123+ - Reduced function call overhead by using thread_local for loader_life_support when possible.
124+ [ #5830 ] ( https://github.com/pybind/pybind11/pull/5830 )
125+
126+ - Removed heap allocation for the C++ argument array when dispatching functions with 6 or fewer arguments.
127+ [ #5824 ] ( https://github.com/pybind/pybind11/pull/5824 )
128+
129+
130+ Documentation:
131+
132+ - Fixed docstring for ` long double ` complex types to use ` numpy.clongdouble ` instead of the deprecated ` numpy.longcomplex ` (removed in NumPy 2.0).
133+ [ #5952 ] ( https://github.com/pybind/pybind11/pull/5952 )
134+
135+ - The "Supported compilers" and "Supported platforms" sections in the main ` README.rst ` were replaced with a new "Supported platforms & compilers" section that points to the CI test matrix as the living source of truth.
136+ [ #5910 ] ( https://github.com/pybind/pybind11/pull/5910 )
137+
138+ - Fixed documentation formatting.
139+ [ #5903 ] ( https://github.com/pybind/pybind11/pull/5903 )
140+
141+ - Updated upgrade notes for ` py::native_enum ` .
142+ [ #5885 ] ( https://github.com/pybind/pybind11/pull/5885 )
143+
144+ - Clarified in the docs to what extent bindings are global.
145+ [ #5859 ] ( https://github.com/pybind/pybind11/pull/5859 )
146+
147+
148+ Tests:
149+
150+ - Calls to ` env.deprecated_call() ` were replaced with direct calls to ` pytest.deprecated_call() ` .
151+ [ #5893 ] ( https://github.com/pybind/pybind11/pull/5893 )
152+
153+ - Updated pytest configuration to use ` log_level ` instead of ` log_cli_level ` .
154+ [ #5890 ] ( https://github.com/pybind/pybind11/pull/5890 )
155+
156+
157+ CI:
158+
159+ - Added CI tests for windows-11-arm with clang/MSVC (currently python 3.13), windows-11-arm with clang/mingw (currently python 3.12).
160+ [ #5932 ] ( https://github.com/pybind/pybind11/pull/5932 )
161+
162+ - These clang-tidy rules were added: ` readability-redundant-casting ` , ` readability-redundant-inline-specifier ` , ` readability-redundant-member-init `
163+ [ #5924 ] ( https://github.com/pybind/pybind11/pull/5924 )
164+
165+ - Replaced deprecated macos-13 runners with macos-15-intel in CI.
166+ [ #5916 ] ( https://github.com/pybind/pybind11/pull/5916 )
167+
168+ - Restored ` runs-on: windows-latest ` in CI.
169+ [ #5835 ] ( https://github.com/pybind/pybind11/pull/5835 )
170+
16171## Version 3.0.1 (August 22, 2025)
17172
18173Bug fixes:
0 commit comments