Pybind11

Latest version: v2.12.0

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

Scan your dependencies

Page 1 of 4

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.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

2.10.4

Changes:

- `python3 -m pybind11` gained a `--version` option (prints the version and exits). 4526

Bug Fixes:

- Fix a warning when pydebug is enabled on Python 3.11. 4461
- Ensure `gil_scoped_release` RAII is non-copyable. 4490
- Ensure the tests dir does not show up with new versions of setuptools. 4510
- Better stacklevel for a warning in setuptools helpers. 4516

2.10.3

Changes:

- Temporarily made our GIL status assertions (added in 2.10.2) disabled by default (re-enable manually by defining `PYBIND11_ASSERT_GIL_HELD_INCREF_DECREF`, will be enabled in 2.11). 4432
- Improved error messages when `inc_ref`/`dec_ref` are called with an invalid GIL state. 4427 4436

Bug Fixes:

- Some minor touchups found by static analyzers. 4440

2.10.2

Changes:

- `scoped_interpreter` constructor taking `PyConfig`. 4372
- `pybind11/eigen/tensor.h` adds converters to and from `Eigen::Tensor` and `Eigen::TensorMap` 4201
- `PyGILState_Check()`'s were integrated to `pybind11::handle` `inc_ref()` & `dec_ref()`. The added GIL checks are guarded by `PYBIND11_ASSERT_GIL_HELD_INCREF_DECREF`, which is the default only if `NDEBUG` is not defined. 4246
- Add option for enable/disable enum members in docstring. 2768
- Fixed typing of `KeysView`, `ValuesView` and `ItemsView` in `bind_map`. 4353

Bug fixes:

- Bug fix affecting only Python 3.6 under very specific, uncommon conditions: move `PyEval_InitThreads()` call to the correct location. 4350
- Fix segfault bug when passing foreign native functions to functional.h. 4254

Build system improvements:

- Support setting PYTHON_LIBRARIES manually for Windows ARM cross-compilation (classic mode). 4406
- Extend IPO/LTO detection for ICX (a.k.a IntelLLVM) compiler. 4402
- Allow calling `find_package(pybind11 CONFIG)` multiple times from separate directories in the same CMake project and properly link Python (new mode). 4401
- `multiprocessing_set_spawn` in pytest fixture for added safety. 4377
- Fixed a bug in two pybind11/tools cmake scripts causing "Unknown arguments specified" errors. 4327

Page 1 of 4

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.