v2.12.0
版本发布时间: 2024-03-28 07:49:11
pybind/pybind11最新发布版本:v2.13.6(2024-09-14 08:33:41)
New Features:
-
pybind11
now supports compiling for NumPy 2. Most code shouldn't change (seeupgrade-guide-2.12
for details). However, if you experience issues you can definePYBIND11_NUMPY_1_ONLY
to disable the new support for now, but this will be removed in the future. #5050 -
pybind11/gil_safe_call_once.h
was added (it needs to be included explicitly). The primary use case is GIL-safe initialization of C++static
variables. #4877 - Support move-only iterators in
py::make_iterator
,py::make_key_iterator
,py::make_value_iterator
. #4834 - Two simple
py::set_error()
functions were added and the documentation was updated accordingly. In particular,py::exception<>::operator()
was deprecated (use one of the new functions instead). The documentation forpy::exception<>
was further updated to not suggest code that may result in undefined behavior. #4772
Bug fixes:
- Removes potential for Undefined Behavior during process teardown. #4897
- Improve compatibility with the nvcc compiler (especially CUDA 12.1/12.2). #4893
-
pybind11/numpy.h
now imports NumPy'smultiarray
and_internal
submodules with paths depending on the installed version of NumPy (for compatibility with NumPy 2). #4857 - Builtins collections names in docstrings are now consistently rendered in lowercase (list, set, dict, tuple), in accordance with PEP 585. #4833
- Added
py::typing::Iterator<T>
,py::typing::Iterable<T>
. #4832 - Render
py::function
asCallable
in docstring. #4829 - Also bump
PYBIND11_INTERNALS_VERSION
for MSVC, which unlocks two new features without creating additional incompatibilities. #4819 - Guard against crashes/corruptions caused by modules built with different MSVC versions. #4779
- A long-standing bug in the handling of Python multiple inheritance was fixed. See PR #4762 for the rather complex details. #4762
- Fix
bind_map
withusing
declarations. #4952 - Qualify
py::detail::concat
usage to avoid ADL selecting one from somewhere else, such as modernjson's concat. #4955 - Use new PyCode API on Python 3.12+. #4916
- Minor cleanup from warnings reported by Clazy. #4988
- Remove typing and duplicate
class_
forKeysView
/ValuesView
/ItemsView
. #4985 - Use
PyObject_VisitManagedDict()
andPyObject_ClearManagedDict()
on Python 3.13 and newer. #4973 - Update
make_static_property_type()
to make it compatible with Python 3.13. #4971
- Render typed iterators for
make_iterator
,make_key_iterator
,make_value_iterator
. #4876 - Add several missing type name specializations. #5073
- Change docstring render for
py::buffer
,py::sequence
andpy::handle
(toBuffer
,Sequence
,Any
). #4831 - Fixed
base_enum.__str__
docstring. #4827 - Enforce single line docstring signatures. #4735
- Special 'typed' wrappers now available in
typing.h
to annotate tuple, dict, list, set, and function. #4259 - Create
handle_type_name
specialization to type-hint variable length tuples. #5051
- Setting
PYBIND11_FINDPYTHON
to OFF will force the old FindPythonLibs mechanism to be used. #5042 - Skip empty
PYBIND11_PYTHON_EXECUTABLE_LAST
for the first cmake run. #4856 - Fix FindPython mode exports & avoid
pkg_resources
ifimportlib.metadata
available. #4941 -
Python_ADDITIONAL_VERSIONS
(classic search) now includes 3.12. #4909 -
pybind11.pc
is now relocatable by default as long as install destinations are not absolute paths. #4830 - Correctly detect CMake FindPython removal when used as a subdirectory. #4806
- Don't require the libs component on CMake 3.18+ when using
PYBIND11_FINDPYTHON
(fixes manylinux builds). #4805 -
pybind11_strip
is no longer automatically applied whenCMAKE_BUILD_TYPE
is unset. #4780 - Support
DEBUG_POSFIX
correctly for debug builds. #4761 - Hardcode lto/thin lto for Emscripten cross-compiles. #4642
- Upgrade maximum supported CMake version to 3.27 to fix CMP0148 warnings. #4786
Documentation:
- Small fix to grammar in
functions.rst
. #4791 - Remove upper bound in example pyproject.toml for setuptools. #4774
CI:
- CI: Update NVHPC to 23.5 and Ubuntu 20.04. #4764
- Test on PyPy 3.10. #4714
Other:
- Use Ruff formatter instead of Black. #4912
- An
assert()
was added to help Coverty avoid generating a false positive. #4817