Pybind11

Latest version: v2.13.6

Safety actively analyzes 682387 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 2 of 6

2.13.0

New Features:

- Support free-threaded CPython (3.13t). Add `py::mod_gil_not_used()` tag to indicate if a module supports running with the GIL disabled. 5148
- Support for Python 3.6 was removed. (Official end-of-life: 2021-12-23). 5177
- `py::list` gained a `.clear()` method. 5153
- Support for `Union`, `Optional`, `type[T]`, `typing.TypeGuard`, `typing.TypeIs`, `typing.Never`, `typing.NoReturn` and `typing.Literal` was added to `pybind11/typing.h`. 5166 5165 5194 5193 5192
- In CMake, if `PYBIND11_USE_CROSSCOMPILING` is enabled, then `CMAKE_CROSSCOMPILING` will be respected and will keep pybind11 from accessing the interpreter during configuration. Several CMake variables will be required in this case, but can be deduced from the environment variable `SETUPTOOLS_EXT_SUFFIX`. The default (currently `OFF`) may be changed in the future. 5083

Bug fixes:

- A refcount bug (leading to heap-use-after-free) involving trampoline functions with `PyObject *` return type was fixed. 5156
- Return `py::ssize_t` from `.ref_count()` instead of `int`. 5139
- A subtle bug involving C++ types with unusual `operator&` overrides was fixed. 5189
- Support Python 3.13 with minor fix, add to CI. 5127
- Fix mistake affecting old cmake and old boost. 5149

Documentation:

- Build docs updated to feature scikit-build-core and meson-python, and updated setuptools instructions. 5168

Tests:

- Avoid immortal objects in tests. 5150

CI:

- Compile against Python 3.13t in CI.
- Use `macos-13` (Intel) for CI jobs for now (will drop Python 3.7 soon). 5109
- Releases now have artifact attestations, visible at <https://github.com/pybind/pybind11/attestations>. #5196

Other:

- Some cleanup in preparation for 3.13 support. 5137
- Avoid a warning by ensuring an iterator end check is included in release mode. 5129
- Bump max cmake to 3.29. 5075
- Update docs and noxfile. 5071

2.12.1

New Features:

* A new `self._pybind11_conduit_v1_()` method is automatically added to all `py::class_`-wrapped types, to enable type-safe interoperability between different independent Python/C++ bindings systems, including pybind11 versions with different `PYBIND11_INTERNALS_VERSION`'s. Supported on pybind11 2.11.2, 2.12.1, and 2.13.6+. 5296

2.12.0

New Features:

- `pybind11` now supports compiling for [NumPy 2](https://numpy.org/devdocs/numpy_2_0_migration_guide.html). Most code shouldn't change (see `upgrade-guide-2.12` for details). However, if you experience issues you can define `PYBIND11_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 for `py::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's `multiarray` 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` as `Callable` 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` with `using` 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_` for `KeysView`/`ValuesView`/`ItemsView`. 4985
- Use `PyObject_VisitManagedDict()` and `PyObject_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` and `py::handle` (to `Buffer`, `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` if `importlib.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 when `CMAKE_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

2.11.2

New Features:

* A new `self._pybind11_conduit_v1_()` method is automatically added to all `py::class_`-wrapped types, to enable type-safe interoperability between different independent Python/C++ bindings systems, including pybind11 versions with different `PYBIND11_INTERNALS_VERSION`'s. Supported on pybind11 2.11.2, 2.12.1, and 2.13.6+. 5296

2.11.1

Changes:

* ``PYBIND11_NO_ASSERT_GIL_HELD_INCREF_DECREF`` is now provided as an option for disabling the default-on ``PyGILState_Check()``'s in ``pybind11::handle``'s ``inc_ref()`` & ``dec_ref()``. 4753

* ``PYBIND11_ASSERT_GIL_HELD_INCREF_DECREF`` was disabled for PyPy in general (not just PyPy Windows). 4751

________

NOTE: There was a version number mishap in the first attempt making this release. It was fixed within minutes with 4756 and the stable branch was re-tagged. The upload to PyPI only succeeded for the corrected release.

2.11.0

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

Page 2 of 6

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.