mirror of
https://github.com/pybind/pybind11.git
synced 2026-04-20 06:49:25 +00:00
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>
This commit is contained in:
committed by
GitHub
parent
5a6edc9998
commit
6c836071ad
@@ -13,6 +13,161 @@ Changes will be added here periodically from the "Suggested changelog
|
||||
entry" block in pull request descriptions.
|
||||
|
||||
|
||||
## Version 3.0.2 (release date TBD)
|
||||
|
||||
Bug fixes:
|
||||
|
||||
- MSVC 19.16 and earlier were blocked from using `std::launder` due to internal compiler errors.
|
||||
[#5968](https://github.com/pybind/pybind11/pull/5968)
|
||||
|
||||
- Internals destructors were updated to check the owning interpreter before clearing Python objects.
|
||||
[#5965](https://github.com/pybind/pybind11/pull/5965)
|
||||
|
||||
- pybind11 internals were updated to be deallocated during (sub-)interpreter shutdown to avoid memory leaks.
|
||||
[#5958](https://github.com/pybind/pybind11/pull/5958)
|
||||
|
||||
- Fixed ambiguous `str(handle)` construction for `object`-derived types like `kwargs` or `dict` by templatizing the constructor with SFINAE.
|
||||
[#5949](https://github.com/pybind/pybind11/pull/5949)
|
||||
|
||||
- Fixed concurrency consistency for `internals_pp_manager` under multiple-interpreters.
|
||||
[#5947](https://github.com/pybind/pybind11/pull/5947)
|
||||
|
||||
- Fixed MSVC LNK2001 in C++20 builds when /GL (whole program optimization) is enabled.
|
||||
[#5939](https://github.com/pybind/pybind11/pull/5939)
|
||||
|
||||
- Added per-interpreter storage for `gil_safe_call_once_and_store` to make it safe under multi-interpreters.
|
||||
[#5933](https://github.com/pybind/pybind11/pull/5933)
|
||||
|
||||
- A workaround for a GCC `-Warray-bounds` false positive in `argument_vector` was added.
|
||||
[#5908](https://github.com/pybind/pybind11/pull/5908)
|
||||
|
||||
- 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.
|
||||
[#5891](https://github.com/pybind/pybind11/pull/5891)
|
||||
|
||||
- Fixed `*args/**kwargs` return types. Added type hinting to `py::make_tuple`.
|
||||
[#5881](https://github.com/pybind/pybind11/pull/5881)
|
||||
|
||||
- Fixed compiler error in `type_caster_generic` when casting a `T` implicitly convertible from `T*`.
|
||||
[#5873](https://github.com/pybind/pybind11/pull/5873)
|
||||
|
||||
- Updated `py::native_enum` bindings to unregister enum types on destruction, preventing a use-after-free when returning a destroyed enum instance.
|
||||
[#5871](https://github.com/pybind/pybind11/pull/5871)
|
||||
|
||||
- Fixed undefined behavior that occurred when importing pybind11 modules from non-main threads created by C API modules or embedded python interpreters.
|
||||
[#5870](https://github.com/pybind/pybind11/pull/5870)
|
||||
|
||||
- Fixed dangling pointer in `internals::registered_types_cpp_fast`.
|
||||
[#5867](https://github.com/pybind/pybind11/pull/5867)
|
||||
|
||||
- Added support for `std::shared_ptr<T>` when loading module-local or conduit types from other modules.
|
||||
[#5862](https://github.com/pybind/pybind11/pull/5862)
|
||||
|
||||
- Fixed thread-safety issues if types were concurrently registered while `get_local_type_info()` was called in free threaded Python.
|
||||
[#5856](https://github.com/pybind/pybind11/pull/5856)
|
||||
|
||||
- Fixed py::float_ casting and py::int_ and py::float_ type hints.
|
||||
[#5839](https://github.com/pybind/pybind11/pull/5839)
|
||||
|
||||
- Fixed two `smart_holder` bugs in `shared_ptr` and `unique_ptr` adoption with multiple/virtual inheritance:
|
||||
- `shared_ptr` to-Python caster was updated to register the correct subobject pointer (fixes #5786).
|
||||
- `unique_ptr` adoption was updated to own the proper object start while aliasing subobject pointers for registration, which fixed MSVC crashes during destruction.
|
||||
[#5836](https://github.com/pybind/pybind11/pull/5836)
|
||||
|
||||
- Constrained `accessor::operator=` templates to avoid obscuring special members.
|
||||
[#5832](https://github.com/pybind/pybind11/pull/5832)
|
||||
|
||||
- Fixed crash that can occur when finalizers acquire and release the GIL.
|
||||
[#5828](https://github.com/pybind/pybind11/pull/5828)
|
||||
|
||||
- Fixed compiler detection in `pybind11/detail/pybind11_namespace_macros.h` for clang-cl on Windows, to address warning suppression macros.
|
||||
[#5816](https://github.com/pybind/pybind11/pull/5816)
|
||||
|
||||
- Fixed compatibility with CMake policy CMP0190 by not always requiring a Python interpreter when cross-compiling.
|
||||
[#5829](https://github.com/pybind/pybind11/pull/5829)
|
||||
|
||||
- Added a static assertion to disallow `keep_alive` and `call_guard` on properties.
|
||||
[#5533](https://github.com/pybind/pybind11/pull/5533)
|
||||
|
||||
Internal:
|
||||
|
||||
- CMake policy limit was set to 4.1.
|
||||
[#5944](https://github.com/pybind/pybind11/pull/5944)
|
||||
|
||||
- Improved performance of function calls between Python and C++ by switching to the "vectorcall" calling protocol.
|
||||
[#5948](https://github.com/pybind/pybind11/pull/5948)
|
||||
|
||||
- Many C-style casts were replaced with C++-style casts.
|
||||
[#5930](https://github.com/pybind/pybind11/pull/5930)
|
||||
|
||||
- Added `cast_sources` abstraction to `type_caster_generic`.
|
||||
[#5866](https://github.com/pybind/pybind11/pull/5866)
|
||||
|
||||
- Improved the performance of from-Python conversions of legacy pybind11 enum objects bound by `py::enum_`.
|
||||
[#5860](https://github.com/pybind/pybind11/pull/5860)
|
||||
|
||||
- Reduced size overhead by deduplicating functions' readable signatures and type information.
|
||||
[#5857](https://github.com/pybind/pybind11/pull/5857)
|
||||
|
||||
- Used new Python 3.14 C APIs when available.
|
||||
[#5854](https://github.com/pybind/pybind11/pull/5854)
|
||||
|
||||
- Improved performance of function dispatch and type casting by porting two-level type info lookup strategy from nanobind.
|
||||
[#5842](https://github.com/pybind/pybind11/pull/5842)
|
||||
|
||||
- Updated `.gitignore` to exclude `__pycache__/` directories.
|
||||
[#5838](https://github.com/pybind/pybind11/pull/5838)
|
||||
|
||||
- Changed internals to use `thread_local` instead of `thread_specific_storage` for increased performance.
|
||||
[#5834](https://github.com/pybind/pybind11/pull/5834)
|
||||
|
||||
- Reduced function call overhead by using thread_local for loader_life_support when possible.
|
||||
[#5830](https://github.com/pybind/pybind11/pull/5830)
|
||||
|
||||
- Removed heap allocation for the C++ argument array when dispatching functions with 6 or fewer arguments.
|
||||
[#5824](https://github.com/pybind/pybind11/pull/5824)
|
||||
|
||||
|
||||
Documentation:
|
||||
|
||||
- Fixed docstring for `long double` complex types to use `numpy.clongdouble` instead of the deprecated `numpy.longcomplex` (removed in NumPy 2.0).
|
||||
[#5952](https://github.com/pybind/pybind11/pull/5952)
|
||||
|
||||
- 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.
|
||||
[#5910](https://github.com/pybind/pybind11/pull/5910)
|
||||
|
||||
- Fixed documentation formatting.
|
||||
[#5903](https://github.com/pybind/pybind11/pull/5903)
|
||||
|
||||
- Updated upgrade notes for `py::native_enum`.
|
||||
[#5885](https://github.com/pybind/pybind11/pull/5885)
|
||||
|
||||
- Clarified in the docs to what extent bindings are global.
|
||||
[#5859](https://github.com/pybind/pybind11/pull/5859)
|
||||
|
||||
|
||||
Tests:
|
||||
|
||||
- Calls to `env.deprecated_call()` were replaced with direct calls to `pytest.deprecated_call()`.
|
||||
[#5893](https://github.com/pybind/pybind11/pull/5893)
|
||||
|
||||
- Updated pytest configuration to use `log_level` instead of `log_cli_level`.
|
||||
[#5890](https://github.com/pybind/pybind11/pull/5890)
|
||||
|
||||
|
||||
CI:
|
||||
|
||||
- Added CI tests for windows-11-arm with clang/MSVC (currently python 3.13), windows-11-arm with clang/mingw (currently python 3.12).
|
||||
[#5932](https://github.com/pybind/pybind11/pull/5932)
|
||||
|
||||
- These clang-tidy rules were added: `readability-redundant-casting`, `readability-redundant-inline-specifier`, `readability-redundant-member-init`
|
||||
[#5924](https://github.com/pybind/pybind11/pull/5924)
|
||||
|
||||
- Replaced deprecated macos-13 runners with macos-15-intel in CI.
|
||||
[#5916](https://github.com/pybind/pybind11/pull/5916)
|
||||
|
||||
- Restored `runs-on: windows-latest` in CI.
|
||||
[#5835](https://github.com/pybind/pybind11/pull/5835)
|
||||
|
||||
## Version 3.0.1 (August 22, 2025)
|
||||
|
||||
Bug fixes:
|
||||
|
||||
Reference in New Issue
Block a user