Skip to content

Commit 6c83607

Browse files
rwgkhenryiii
andauthored
Changelog updates (#5967)
* docs: seed 3.0.2 changelog from needs-changelog PRs Collect suggested entries early to streamline release prep. * Misc trivial manual fixes. * Shorten changelog entry for PR 5862 * Remove mention of a minor doc formatting fix. * Cursor-generated "all past-tense" style * Restore the meaning of the 5958 entry using the "... now ..." trick, and restore a couple other entries that also use the "now" trick. * Replace ... now ... style with ... updated to ... style * [skip ci] docs: group 3.0.2 entries under Internal heading Align changelog categories with recent releases for review. * Update changelog with CMake policy compatibility fix Fix compatibility with CMake policy CMP0190 for cross-compiling. * Add changelog entries for 5965 and 5968 * docs: make CMP0190 changelog entry past tense Align 3.0.2 bug-fix entry with changelog style. * [skip ci] docs: add missing 3.0.2 changelog entries Capture remaining needs-changelog PRs across categories. (These slipped through the cracks somehow.) --------- Co-authored-by: Henry Schreiner <HenrySchreinerIII@gmail.com>
1 parent 5a6edc9 commit 6c83607

1 file changed

Lines changed: 155 additions & 0 deletions

File tree

docs/changelog.md

Lines changed: 155 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,161 @@ Changes will be added here periodically from the "Suggested changelog
1313
entry" 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

18173
Bug fixes:

0 commit comments

Comments
 (0)