Path to this page:
Subject: CVS commit: pkgsrc/devel/py-pybind11
From: Adam Ciarcinski
Date: 2022-11-02 09:47:53
Message id: 20221102084753.17B45FA90@cvs.NetBSD.org
Log Message:
py-pybind11: updated to 2.10.1
Version 2.10.1
This is the first version to fully support embedding the newly released Python 3.11.
Changes:
Allow pybind11::capsule constructor to take null destructor pointers.
embed.h was changed so that PYTHONPATH is used also with Python 3.11 \
(established behavior).
A PYBIND11_SIMPLE_GIL_MANAGEMENT option was added (cmake, C++ define), along \
with many additional tests in test_gil_scoped.py. The option may be useful to \
try when debugging GIL-related issues, to determine if the more complex default \
implementation is or is not to blame. See
PYBIND11_EXPORT_EXCEPTION was made non-empty only under macOS. This makes Linux \
builds safer, and enables the removal of warning suppression pragmas for \
Windows.
Bug fixes:
Fixed a bug where UnicodeDecodeError was not propagated from various py::str \
ctors when decoding surrogate utf characters.
Revert perfect forwarding for make_iterator. This broke at least one valid use \
case. May revisit later.
Fix support for safe casts to void* (regression in 2.10.0).
Fix char8_t support (regression in 2.9).
Unicode surrogate character in Python exception message leads to process \
termination in error_already_set::what().
Fix MSVC 2019 v.1924 & C++14 mode error for overload_cast.
Make augmented assignment operators non-const for the object-api. Behavior was \
previously broken for augmented assignment operators.
Add proper error checking to C++ bindings for Python list append and insert.
Work-around for Nvidia's CUDA nvcc compiler in versions 11.4.0 - 11.8.0.
A workaround for PyPy was added in the py::error_already_set implementation, \
related to PR
Fixed compiler errors when C++23 std::forward_like is available.
Properly raise exceptions in contains methods (like when an object in unhashable).
Further improve another error in exception handling.
get_local_internals() was made compatible with finalize_interpreter(), fixing \
potential freezes during interpreter finalization.
Performance and style:
Reserve space in set and STL map casters if possible. This will prevent \
unnecessary rehashing / resizing by knowing the number of keys ahead of time for \
Python to C++ casting. This improvement will greatly speed up the casting of \
large unordered maps and sets.
GIL RAII scopes are non-copyable to avoid potential bugs.
Explicitly default all relevant ctors for pytypes in the PYBIND11_OBJECT macros \
and enforce the clang-tidy checks modernize-use-equals-default in macros as \
well.
Optimize iterator advancement in C++ bindings.
Use the modern PyObject_GenericGetDict and PyObject_GenericSetDict for handling \
dynamic attribute dictionaries.
Document that users should use PYBIND11_NAMESPACE instead of using pybind11 when \
opening namespaces. Using namespace declarations and namespace qualification \
remain the same as pybind11. This is done to ensure consistent symbol \
visibility.
Mark detail::forward_like as constexpr.
Optimize unpacking_collector when processing arg_v arguments.
Optimize casting C++ object to None.
Build system improvements:
CMake: revert overwrite behavior, now opt-in with PYBIND11_PYTHONLIBS_OVERRWRITE OFF.
Include a pkg-config file when installing pybind11, such as in the Python package.
Avoid stripping debug symbols when CMAKE_BUILD_TYPE is set to DEBUG instead of Debug.
Followup to
Files: