github pybind/pybind11 v2.11.0
Version 2.11.0

latest releases: v2.12.0, v2.11.1
10 months ago

New features:

  • The newly added pybind11::detail::is_move_constructible trait can be specialized for cases in which std::is_move_constructible does not work as needed. This is very similar to the long-established pybind11::detail::is_copy_constructible. #4631
  • Introduce recursive_container_traits. #4623
  • pybind11/type_caster_pyobject_ptr.h was added to support automatic wrapping of APIs that make use of PyObject *. This header needs to included explicitly (i.e. it is not included implicitly with pybind/pybind11.h). #4601
  • format_descriptor<> & npy_format_descriptor<> PyObject * specializations were added. The latter enables py::array_t<PyObject *> to/from-python conversions. #4674
  • buffer_info gained an item_type_is_equivalent_to<T>() member function. #4674
  • The capsule API gained a user-friendly constructor (py::capsule(ptr, "name", dtor)). #4720

Changes:

  • PyGILState_Check()'s in pybind11::handle's inc_ref() & dec_ref() are now enabled by default again. #4246
  • py::initialize_interpreter() using PyConfig_InitPythonConfig() instead of PyConfig_InitIsolatedConfig(), to obtain complete sys.path. #4473
  • Cast errors now always include Python type information, even if PYBIND11_DETAILED_ERROR_MESSAGES is not defined. This increases binary sizes slightly (~1.5%) but the error messages are much more informative. #4463
  • The docstring generation for the std::array-list caster was fixed. Previously, signatures included the size of the list in a non-standard, non-spec compliant way. The new format conforms to PEP 593. Tooling for processing the docstrings may need to be updated accordingly. #4679
  • Setter return values (which are inaccessible for all practical purposes) are no longer converted to Python (only to be discarded). #4621
  • Allow lambda specified to function definition to be noexcept(true) in C++17. #4593
  • Get rid of recursive template instantiations for concatenating type signatures on C++17 and higher. #4587
  • Compatibility with Python 3.12 (beta). Note that the minimum pybind11 ABI version for Python 3.12 is version 5. (The default ABI version for Python versions up to and including 3.11 is still version 4.). #4570
  • With PYBIND11_INTERNALS_VERSION 5 (default for Python 3.12+), MSVC builds use std::hash<std::type_index> and std::equal_to<std::type_index> instead of string-based type comparisons. This resolves issues when binding types defined in the unnamed namespace. #4319
  • Python exception __notes__ (introduced with Python 3.11) are now added to the error_already_set::what() output. #4678

Build system improvements:

  • CMake 3.27 support was added, CMake 3.4 support was dropped. FindPython will be used if FindPythonInterp is not present. #4719
  • Update clang-tidy to 15 in CI. #4387
  • Moved the linting framework over to Ruff. #4483
  • Skip lto checks and target generation when CMAKE_INTERPROCEDURAL_OPTIMIZATION is defined. #4643
  • No longer inject -stdlib=libc++, not needed for modern Pythons (macOS 10.9+). #4639
  • PyPy 3.10 support was added, PyPy 3.7 support was dropped. #4728
  • Testing with Python 3.12 beta releases was added. #4713

Don't miss a new pybind11 release

NewReleases is sending notifications on new releases.