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:
RevisionActionfile
1.13modifypkgsrc/devel/py-pybind11/Makefile
1.5modifypkgsrc/devel/py-pybind11/PLIST
1.13modifypkgsrc/devel/py-pybind11/distinfo