diff options
Diffstat (limited to 'docs/changelog.rst')
-rw-r--r-- | docs/changelog.rst | 1149 |
1 files changed, 1145 insertions, 4 deletions
diff --git a/docs/changelog.rst b/docs/changelog.rst index 157b2960..7bb115b9 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -6,6 +6,1146 @@ Changelog Starting with version 1.8.0, pybind11 releases use a `semantic versioning <http://semver.org>`_ policy. +Changes will be added here periodically from the "Suggested changelog entry" +block in pull request descriptions. + + +Version 2.11.0 (July 14, 2023) +----------------------------- + +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 <https://github.com/pybind/pybind11/pull/4631>`_ + +* Introduce ``recursive_container_traits``. + `#4623 <https://github.com/pybind/pybind11/pull/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 <https://github.com/pybind/pybind11/pull/4601>`_ + +* ``format_descriptor<>`` & ``npy_format_descriptor<>`` ``PyObject *`` + specializations were added. The latter enables ``py::array_t<PyObject *>`` + to/from-python conversions. + `#4674 <https://github.com/pybind/pybind11/pull/4674>`_ + +* ``buffer_info`` gained an ``item_type_is_equivalent_to<T>()`` member + function. + `#4674 <https://github.com/pybind/pybind11/pull/4674>`_ + +* The ``capsule`` API gained a user-friendly constructor + (``py::capsule(ptr, "name", dtor)``). + `#4720 <https://github.com/pybind/pybind11/pull/4720>`_ + +Changes: + +* ``PyGILState_Check()``'s in ``pybind11::handle``'s ``inc_ref()`` & + ``dec_ref()`` are now enabled by default again. + `#4246 <https://github.com/pybind/pybind11/pull/4246>`_ + +* ``py::initialize_interpreter()`` using ``PyConfig_InitPythonConfig()`` + instead of ``PyConfig_InitIsolatedConfig()``, to obtain complete + ``sys.path``. + `#4473 <https://github.com/pybind/pybind11/pull/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 <https://github.com/pybind/pybind11/pull/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 <https://github.com/pybind/pybind11/pull/4679>`_ + +* Setter return values (which are inaccessible for all practical purposes) are + no longer converted to Python (only to be discarded). + `#4621 <https://github.com/pybind/pybind11/pull/4621>`_ + +* Allow lambda specified to function definition to be ``noexcept(true)`` + in C++17. + `#4593 <https://github.com/pybind/pybind11/pull/4593>`_ + +* Get rid of recursive template instantiations for concatenating type + signatures on C++17 and higher. + `#4587 <https://github.com/pybind/pybind11/pull/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 <https://github.com/pybind/pybind11/pull/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 <https://github.com/pybind/pybind11/pull/4319>`_ + +* Python exception ``__notes__`` (introduced with Python 3.11) are now added to + the ``error_already_set::what()`` output. + `#4678 <https://github.com/pybind/pybind11/pull/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 <https://github.com/pybind/pybind11/pull/4719>`_ + +* Update clang-tidy to 15 in CI. + `#4387 <https://github.com/pybind/pybind11/pull/4387>`_ + +* Moved the linting framework over to Ruff. + `#4483 <https://github.com/pybind/pybind11/pull/4483>`_ + +* Skip ``lto`` checks and target generation when + ``CMAKE_INTERPROCEDURAL_OPTIMIZATION`` is defined. + `#4643 <https://github.com/pybind/pybind11/pull/4643>`_ + +* No longer inject ``-stdlib=libc++``, not needed for modern Pythons + (macOS 10.9+). + `#4639 <https://github.com/pybind/pybind11/pull/4639>`_ + +* PyPy 3.10 support was added, PyPy 3.7 support was dropped. + `#4728 <https://github.com/pybind/pybind11/pull/4728>`_ + +* Testing with Python 3.12 beta releases was added. + `#4713 <https://github.com/pybind/pybind11/pull/4713>`_ + + +Version 2.10.4 (Mar 16, 2023) +----------------------------- + +Changes: + +* ``python3 -m pybind11`` gained a ``--version`` option (prints the version and + exits). + `#4526 <https://github.com/pybind/pybind11/pull/4526>`_ + +Bug Fixes: + +* Fix a warning when pydebug is enabled on Python 3.11. + `#4461 <https://github.com/pybind/pybind11/pull/4461>`_ + +* Ensure ``gil_scoped_release`` RAII is non-copyable. + `#4490 <https://github.com/pybind/pybind11/pull/4490>`_ + +* Ensure the tests dir does not show up with new versions of setuptools. + `#4510 <https://github.com/pybind/pybind11/pull/4510>`_ + +* Better stacklevel for a warning in setuptools helpers. + `#4516 <https://github.com/pybind/pybind11/pull/4516>`_ + +Version 2.10.3 (Jan 3, 2023) +---------------------------- + +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 <https://github.com/pybind/pybind11/pull/4432>`_ + +* Improved error messages when ``inc_ref``/``dec_ref`` are called with an + invalid GIL state. + `#4427 <https://github.com/pybind/pybind11/pull/4427>`_ + `#4436 <https://github.com/pybind/pybind11/pull/4436>`_ + +Bug Fixes: + +* Some minor touchups found by static analyzers. + `#4440 <https://github.com/pybind/pybind11/pull/4440>`_ + + +Version 2.10.2 (Dec 20, 2022) +----------------------------- + +Changes: + +* ``scoped_interpreter`` constructor taking ``PyConfig``. + `#4330 <https://github.com/pybind/pybind11/pull/4330>`_ + +* ``pybind11/eigen/tensor.h`` adds converters to and from ``Eigen::Tensor`` and + ``Eigen::TensorMap``. + `#4201 <https://github.com/pybind/pybind11/pull/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. (Made non-default in 2.10.3, will be active in 2.11) + `#4246 <https://github.com/pybind/pybind11/pull/4246>`_ + +* Add option for enable/disable enum members in docstring. + `#2768 <https://github.com/pybind/pybind11/pull/2768>`_ + +* Fixed typing of ``KeysView``, ``ValuesView`` and ``ItemsView`` in ``bind_map``. + `#4353 <https://github.com/pybind/pybind11/pull/4353>`_ + +Bug fixes: + +* Bug fix affecting only Python 3.6 under very specific, uncommon conditions: + move ``PyEval_InitThreads()`` call to the correct location. + `#4350 <https://github.com/pybind/pybind11/pull/4350>`_ + +* Fix segfault bug when passing foreign native functions to functional.h. + `#4254 <https://github.com/pybind/pybind11/pull/4254>`_ + +Build system improvements: + +* Support setting PYTHON_LIBRARIES manually for Windows ARM cross-compilation + (classic mode). + `#4406 <https://github.com/pybind/pybind11/pull/4406>`_ + +* Extend IPO/LTO detection for ICX (a.k.a IntelLLVM) compiler. + `#4402 <https://github.com/pybind/pybind11/pull/4402>`_ + +* Allow calling ``find_package(pybind11 CONFIG)`` multiple times from separate + directories in the same CMake project and properly link Python (new mode). + `#4401 <https://github.com/pybind/pybind11/pull/4401>`_ + +* ``multiprocessing_set_spawn`` in pytest fixture for added safety. + `#4377 <https://github.com/pybind/pybind11/pull/4377>`_ + +* Fixed a bug in two pybind11/tools cmake scripts causing "Unknown arguments specified" errors. + `#4327 <https://github.com/pybind/pybind11/pull/4327>`_ + + + +Version 2.10.1 (Oct 31, 2022) +----------------------------- + +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. + `#4221 <https://github.com/pybind/pybind11/pull/4221>`_ + +* ``embed.h`` was changed so that ``PYTHONPATH`` is used also with Python 3.11 + (established behavior). + `#4119 <https://github.com/pybind/pybind11/pull/4119>`_ + +* 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 #4216 for + background. WARNING: Please be careful to not create ODR violations when + using the option: everything that is linked together with mutual symbol + visibility needs to be rebuilt. + `#4216 <https://github.com/pybind/pybind11/pull/4216>`_ + +* ``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. + `#4298 <https://github.com/pybind/pybind11/pull/4298>`_ + +Bug fixes: + +* Fixed a bug where ``UnicodeDecodeError`` was not propagated from various + ``py::str`` ctors when decoding surrogate utf characters. + `#4294 <https://github.com/pybind/pybind11/pull/4294>`_ + +* Revert perfect forwarding for ``make_iterator``. This broke at least one + valid use case. May revisit later. + `#4234 <https://github.com/pybind/pybind11/pull/4234>`_ + +* Fix support for safe casts to ``void*`` (regression in 2.10.0). + `#4275 <https://github.com/pybind/pybind11/pull/4275>`_ + +* Fix ``char8_t`` support (regression in 2.9). + `#4278 <https://github.com/pybind/pybind11/pull/4278>`_ + +* Unicode surrogate character in Python exception message leads to process + termination in ``error_already_set::what()``. + `#4297 <https://github.com/pybind/pybind11/pull/4297>`_ + +* Fix MSVC 2019 v.1924 & C++14 mode error for ``overload_cast``. + `#4188 <https://github.com/pybind/pybind11/pull/4188>`_ + +* Make augmented assignment operators non-const for the object-api. Behavior + was previously broken for augmented assignment operators. + `#4065 <https://github.com/pybind/pybind11/pull/4065>`_ + +* Add proper error checking to C++ bindings for Python list append and insert. + `#4208 <https://github.com/pybind/pybind11/pull/4208>`_ + +* Work-around for Nvidia's CUDA nvcc compiler in versions 11.4.0 - 11.8.0. + `#4220 <https://github.com/pybind/pybind11/pull/4220>`_ + +* A workaround for PyPy was added in the ``py::error_already_set`` + implementation, related to PR `#1895 <https://github.com/pybind/pybind11/pull/1895>`_ + released with v2.10.0. + `#4079 <https://github.com/pybind/pybind11/pull/4079>`_ + +* Fixed compiler errors when C++23 ``std::forward_like`` is available. + `#4136 <https://github.com/pybind/pybind11/pull/4136>`_ + +* Properly raise exceptions in contains methods (like when an object in unhashable). + `#4209 <https://github.com/pybind/pybind11/pull/4209>`_ + +* Further improve another error in exception handling. + `#4232 <https://github.com/pybind/pybind11/pull/4232>`_ + +* ``get_local_internals()`` was made compatible with + ``finalize_interpreter()``, fixing potential freezes during interpreter + finalization. + `#4192 <https://github.com/pybind/pybind11/pull/4192>`_ + +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. + `#4194 <https://github.com/pybind/pybind11/pull/4194>`_ + +* GIL RAII scopes are non-copyable to avoid potential bugs. + `#4183 <https://github.com/pybind/pybind11/pull/4183>`_ + +* 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. + `#4017 <https://github.com/pybind/pybind11/pull/4017>`_ + +* Optimize iterator advancement in C++ bindings. + `#4237 <https://github.com/pybind/pybind11/pull/4237>`_ + +* Use the modern ``PyObject_GenericGetDict`` and ``PyObject_GenericSetDict`` + for handling dynamic attribute dictionaries. + `#4106 <https://github.com/pybind/pybind11/pull/4106>`_ + +* 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. + `#4098 <https://github.com/pybind/pybind11/pull/4098>`_ + +* Mark ``detail::forward_like`` as constexpr. + `#4147 <https://github.com/pybind/pybind11/pull/4147>`_ + +* Optimize unpacking_collector when processing ``arg_v`` arguments. + `#4219 <https://github.com/pybind/pybind11/pull/4219>`_ + +* Optimize casting C++ object to ``None``. + `#4269 <https://github.com/pybind/pybind11/pull/4269>`_ + + +Build system improvements: + +* CMake: revert overwrite behavior, now opt-in with ``PYBIND11_PYTHONLIBS_OVERRWRITE OFF``. + `#4195 <https://github.com/pybind/pybind11/pull/4195>`_ + +* Include a pkg-config file when installing pybind11, such as in the Python + package. + `#4077 <https://github.com/pybind/pybind11/pull/4077>`_ + +* Avoid stripping debug symbols when ``CMAKE_BUILD_TYPE`` is set to ``DEBUG`` + instead of ``Debug``. + `#4078 <https://github.com/pybind/pybind11/pull/4078>`_ + +* Followup to `#3948 <https://github.com/pybind/pybind11/pull/3948>`_, fixing vcpkg again. + `#4123 <https://github.com/pybind/pybind11/pull/4123>`_ + +Version 2.10.0 (Jul 15, 2022) +----------------------------- + +Removed support for Python 2.7, Python 3.5, and MSVC 2015. Support for MSVC +2017 is limited due to availability of CI runners; we highly recommend MSVC +2019 or 2022 be used. Initial support added for Python 3.11. + +New features: + +* ``py::anyset`` & ``py::frozenset`` were added, with copying (cast) to + ``std::set`` (similar to ``set``). + `#3901 <https://github.com/pybind/pybind11/pull/3901>`_ + +* Support bytearray casting to string. + `#3707 <https://github.com/pybind/pybind11/pull/3707>`_ + +* ``type_caster<std::monostate>`` was added. ``std::monostate`` is a tag type + that allows ``std::variant`` to act as an optional, or allows default + construction of a ``std::variant`` holding a non-default constructible type. + `#3818 <https://github.com/pybind/pybind11/pull/3818>`_ + +* ``pybind11::capsule::set_name`` added to mutate the name of the capsule instance. + `#3866 <https://github.com/pybind/pybind11/pull/3866>`_ + +* NumPy: dtype constructor from type number added, accessors corresponding to + Python API ``dtype.num``, ``dtype.byteorder``, ``dtype.flags`` and + ``dtype.alignment`` added. + `#3868 <https://github.com/pybind/pybind11/pull/3868>`_ + + +Changes: + +* Python 3.6 is now the minimum supported version. + `#3688 <https://github.com/pybind/pybind11/pull/3688>`_ + `#3719 <https://github.com/pybind/pybind11/pull/3719>`_ + +* The minimum version for MSVC is now 2017. + `#3722 <https://github.com/pybind/pybind11/pull/3722>`_ + +* Fix issues with CPython 3.11 betas and add to supported test matrix. + `#3923 <https://github.com/pybind/pybind11/pull/3923>`_ + +* ``error_already_set`` is now safer and more performant, especially for + exceptions with long tracebacks, by delaying computation. + `#1895 <https://github.com/pybind/pybind11/pull/1895>`_ + +* Improve exception handling in python ``str`` bindings. + `#3826 <https://github.com/pybind/pybind11/pull/3826>`_ + +* The bindings for capsules now have more consistent exception handling. + `#3825 <https://github.com/pybind/pybind11/pull/3825>`_ + +* ``PYBIND11_OBJECT_CVT`` and ``PYBIND11_OBJECT_CVT_DEFAULT`` macro can now be + used to define classes in namespaces other than pybind11. + `#3797 <https://github.com/pybind/pybind11/pull/3797>`_ + +* Error printing code now uses ``PYBIND11_DETAILED_ERROR_MESSAGES`` instead of + requiring ``NDEBUG``, allowing use with release builds if desired. + `#3913 <https://github.com/pybind/pybind11/pull/3913>`_ + +* Implicit conversion of the literal ``0`` to ``pybind11::handle`` is now disabled. + `#4008 <https://github.com/pybind/pybind11/pull/4008>`_ + + +Bug fixes: + +* Fix exception handling when ``pybind11::weakref()`` fails. + `#3739 <https://github.com/pybind/pybind11/pull/3739>`_ + +* ``module_::def_submodule`` was missing proper error handling. This is fixed now. + `#3973 <https://github.com/pybind/pybind11/pull/3973>`_ + +* The behavior or ``error_already_set`` was made safer and the highly opaque + "Unknown internal error occurred" message was replaced with a more helpful + message. + `#3982 <https://github.com/pybind/pybind11/pull/3982>`_ + +* ``error_already_set::what()`` now handles non-normalized exceptions correctly. + `#3971 <https://github.com/pybind/pybind11/pull/3971>`_ + +* Support older C++ compilers where filesystem is not yet part of the standard + library and is instead included in ``std::experimental::filesystem``. + `#3840 <https://github.com/pybind/pybind11/pull/3840>`_ + +* Fix ``-Wfree-nonheap-object`` warnings produced by GCC by avoiding returning + pointers to static objects with ``return_value_policy::take_ownership``. + `#3946 <https://github.com/pybind/pybind11/pull/3946>`_ + +* Fix cast from pytype rvalue to another pytype. + `#3949 <https://github.com/pybind/pybind11/pull/3949>`_ + +* Ensure proper behavior when garbage collecting classes with dynamic attributes in Python >=3.9. + `#4051 <https://github.com/pybind/pybind11/pull/4051>`_ + +* A couple long-standing ``PYBIND11_NAMESPACE`` + ``__attribute__((visibility("hidden")))`` inconsistencies are now fixed + (affects only unusual environments). + `#4043 <https://github.com/pybind/pybind11/pull/4043>`_ + +* ``pybind11::detail::get_internals()`` is now resilient to in-flight Python + exceptions. + `#3981 <https://github.com/pybind/pybind11/pull/3981>`_ + +* Arrays with a dimension of size 0 are now properly converted to dynamic Eigen + matrices (more common in NumPy 1.23). + `#4038 <https://github.com/pybind/pybind11/pull/4038>`_ + +* Avoid catching unrelated errors when importing NumPy. + `#3974 <https://github.com/pybind/pybind11/pull/3974>`_ + +Performance and style: + +* Added an accessor overload of ``(object &&key)`` to reference steal the + object when using python types as keys. This prevents unnecessary reference + count overhead for attr, dictionary, tuple, and sequence look ups. Added + additional regression tests. Fixed a performance bug the caused accessor + assignments to potentially perform unnecessary copies. + `#3970 <https://github.com/pybind/pybind11/pull/3970>`_ + +* Perfect forward all args of ``make_iterator``. + `#3980 <https://github.com/pybind/pybind11/pull/3980>`_ + +* Avoid potential bug in pycapsule destructor by adding an ``error_guard`` to + one of the dtors. + `#3958 <https://github.com/pybind/pybind11/pull/3958>`_ + +* Optimize dictionary access in ``strip_padding`` for numpy. + `#3994 <https://github.com/pybind/pybind11/pull/3994>`_ + +* ``stl_bind.h`` bindings now take slice args as a const-ref. + `#3852 <https://github.com/pybind/pybind11/pull/3852>`_ + +* Made slice constructor more consistent, and improve performance of some + casters by allowing reference stealing. + `#3845 <https://github.com/pybind/pybind11/pull/3845>`_ + +* Change numpy dtype from_args method to use const ref. + `#3878 <https://github.com/pybind/pybind11/pull/3878>`_ + +* Follow rule of three to ensure ``PyErr_Restore`` is called only once. + `#3872 <https://github.com/pybind/pybind11/pull/3872>`_ + +* Added missing perfect forwarding for ``make_iterator`` functions. + `#3860 <https://github.com/pybind/pybind11/pull/3860>`_ + +* Optimize c++ to python function casting by using the rvalue caster. + `#3966 <https://github.com/pybind/pybind11/pull/3966>`_ + +* Optimize Eigen sparse matrix casting by removing unnecessary temporary. + `#4064 <https://github.com/pybind/pybind11/pull/4064>`_ + +* Avoid potential implicit copy/assignment constructors causing double free in + ``strdup_gaurd``. + `#3905 <https://github.com/pybind/pybind11/pull/3905>`_ + +* Enable clang-tidy checks ``misc-definitions-in-headers``, + ``modernize-loop-convert``, and ``modernize-use-nullptr``. + `#3881 <https://github.com/pybind/pybind11/pull/3881>`_ + `#3988 <https://github.com/pybind/pybind11/pull/3988>`_ + + +Build system improvements: + +* CMake: Fix file extension on Windows with cp36 and cp37 using FindPython. + `#3919 <https://github.com/pybind/pybind11/pull/3919>`_ + +* CMake: Support multiple Python targets (such as on vcpkg). + `#3948 <https://github.com/pybind/pybind11/pull/3948>`_ + +* CMake: Fix issue with NVCC on Windows. + `#3947 <https://github.com/pybind/pybind11/pull/3947>`_ + +* CMake: Drop the bitness check on cross compiles (like targeting WebAssembly + via Emscripten). + `#3959 <https://github.com/pybind/pybind11/pull/3959>`_ + +* Add MSVC builds in debug mode to CI. + `#3784 <https://github.com/pybind/pybind11/pull/3784>`_ + +* MSVC 2022 C++20 coverage was added to GitHub Actions, including Eigen. + `#3732 <https://github.com/pybind/pybind11/pull/3732>`_, + `#3741 <https://github.com/pybind/pybind11/pull/3741>`_ + + +Backend and tidying up: + +* New theme for the documentation. + `#3109 <https://github.com/pybind/pybind11/pull/3109>`_ + +* Remove idioms in code comments. Use more inclusive language. + `#3809 <https://github.com/pybind/pybind11/pull/3809>`_ + +* ``#include <iostream>`` was removed from the ``pybind11/stl.h`` header. Your + project may break if it has a transitive dependency on this include. The fix + is to "Include What You Use". + `#3928 <https://github.com/pybind/pybind11/pull/3928>`_ + +* Avoid ``setup.py <command>`` usage in internal tests. + `#3734 <https://github.com/pybind/pybind11/pull/3734>`_ + + +Version 2.9.2 (Mar 29, 2022) +---------------------------- + +Changes: + +* Enum now has an ``__index__`` method on Python <3.8 too. + `#3700 <https://github.com/pybind/pybind11/pull/3700>`_ + +* Local internals are now cleared after finalizing the interpreter. + `#3744 <https://github.com/pybind/pybind11/pull/3744>`_ + +Bug fixes: + +* Better support for Python 3.11 alphas. + `#3694 <https://github.com/pybind/pybind11/pull/3694>`_ + +* ``PYBIND11_TYPE_CASTER`` now uses fully qualified symbols, so it can be used + outside of ``pybind11::detail``. + `#3758 <https://github.com/pybind/pybind11/pull/3758>`_ + +* Some fixes for PyPy 3.9. + `#3768 <https://github.com/pybind/pybind11/pull/3768>`_ + +* Fixed a potential memleak in PyPy in ``get_type_override``. + `#3774 <https://github.com/pybind/pybind11/pull/3774>`_ + +* Fix usage of ``VISIBILITY_INLINES_HIDDEN``. + `#3721 <https://github.com/pybind/pybind11/pull/3721>`_ + + +Build system improvements: + +* Uses ``sysconfig`` module to determine installation locations on Python >= + 3.10, instead of ``distutils`` which has been deprecated. + `#3764 <https://github.com/pybind/pybind11/pull/3764>`_ + +* Support Catch 2.13.5+ (supporting GLIBC 2.34+). + `#3679 <https://github.com/pybind/pybind11/pull/3679>`_ + +* Fix test failures with numpy 1.22 by ignoring whitespace when comparing + ``str()`` of dtypes. + `#3682 <https://github.com/pybind/pybind11/pull/3682>`_ + + +Backend and tidying up: + +* clang-tidy: added ``readability-qualified-auto``, + ``readability-braces-around-statements``, + ``cppcoreguidelines-prefer-member-initializer``, + ``clang-analyzer-optin.performance.Padding``, + ``cppcoreguidelines-pro-type-static-cast-downcast``, and + ``readability-inconsistent-declaration-parameter-name``. + `#3702 <https://github.com/pybind/pybind11/pull/3702>`_, + `#3699 <https://github.com/pybind/pybind11/pull/3699>`_, + `#3716 <https://github.com/pybind/pybind11/pull/3716>`_, + `#3709 <https://github.com/pybind/pybind11/pull/3709>`_ + +* clang-format was added to the pre-commit actions, and the entire code base + automatically reformatted (after several iterations preparing for this leap). + `#3713 <https://github.com/pybind/pybind11/pull/3713>`_ + + +Version 2.9.1 (Feb 2, 2022) +--------------------------- + +Changes: + +* If possible, attach Python exception with ``py::raise_from`` to ``TypeError`` + when casting from C++ to Python. This will give additional info if Python + exceptions occur in the caster. Adds a test case of trying to convert a set + from C++ to Python when the hash function is not defined in Python. + `#3605 <https://github.com/pybind/pybind11/pull/3605>`_ + +* Add a mapping of C++11 nested exceptions to their Python exception + equivalent using ``py::raise_from``. This attaches the nested exceptions in + Python using the ``__cause__`` field. + `#3608 <https://github.com/pybind/pybind11/pull/3608>`_ + +* Propagate Python exception traceback using ``raise_from`` if a pybind11 + function runs out of overloads. + `#3671 <https://github.com/pybind/pybind11/pull/3671>`_ + +* ``py::multiple_inheritance`` is now only needed when C++ bases are hidden + from pybind11. + `#3650 <https://github.com/pybind/pybind11/pull/3650>`_ and + `#3659 <https://github.com/pybind/pybind11/pull/3659>`_ + + +Bug fixes: + +* Remove a boolean cast in ``numpy.h`` that causes MSVC C4800 warnings when + compiling against Python 3.10 or newer. + `#3669 <https://github.com/pybind/pybind11/pull/3669>`_ + +* Render ``py::bool_`` and ``py::float_`` as ``bool`` and ``float`` + respectively. + `#3622 <https://github.com/pybind/pybind11/pull/3622>`_ + +Build system improvements: + +* Fix CMake extension suffix computation on Python 3.10+. + `#3663 <https://github.com/pybind/pybind11/pull/3663>`_ + +* Allow ``CMAKE_ARGS`` to override CMake args in pybind11's own ``setup.py``. + `#3577 <https://github.com/pybind/pybind11/pull/3577>`_ + +* Remove a few deprecated c-headers. + `#3610 <https://github.com/pybind/pybind11/pull/3610>`_ + +* More uniform handling of test targets. + `#3590 <https://github.com/pybind/pybind11/pull/3590>`_ + +* Add clang-tidy readability check to catch potentially swapped function args. + `#3611 <https://github.com/pybind/pybind11/pull/3611>`_ + + +Version 2.9.0 (Dec 28, 2021) +---------------------------- + +This is the last version to support Python 2.7 and 3.5. + +New Features: + +* Allow ``py::args`` to be followed by other arguments; the remaining arguments + are implicitly keyword-only, as if a ``py::kw_only{}`` annotation had been + used. + `#3402 <https://github.com/pybind/pybind11/pull/3402>`_ + +Changes: + +* Make str/bytes/memoryview more interoperable with ``std::string_view``. + `#3521 <https://github.com/pybind/pybind11/pull/3521>`_ + +* Replace ``_`` with ``const_name`` in internals, avoid defining ``pybind::_`` + if ``_`` defined as macro (common gettext usage) + `#3423 <https://github.com/pybind/pybind11/pull/3423>`_ + + +Bug fixes: + +* Fix a rare warning about extra copy in an Eigen constructor. + `#3486 <https://github.com/pybind/pybind11/pull/3486>`_ + +* Fix caching of the C++ overrides. + `#3465 <https://github.com/pybind/pybind11/pull/3465>`_ + +* Add missing ``std::forward`` calls to some ``cpp_function`` overloads. + `#3443 <https://github.com/pybind/pybind11/pull/3443>`_ + +* Support PyPy 7.3.7 and the PyPy3.8 beta. Test python-3.11 on PRs with the + ``python dev`` label. + `#3419 <https://github.com/pybind/pybind11/pull/3419>`_ + +* Replace usage of deprecated ``Eigen::MappedSparseMatrix`` with + ``Eigen::Map<Eigen::SparseMatrix<...>>`` for Eigen 3.3+. + `#3499 <https://github.com/pybind/pybind11/pull/3499>`_ + +* Tweaks to support Microsoft Visual Studio 2022. + `#3497 <https://github.com/pybind/pybind11/pull/3497>`_ + +Build system improvements: + +* Nicer CMake printout and IDE organisation for pybind11's own tests. + `#3479 <https://github.com/pybind/pybind11/pull/3479>`_ + +* CMake: report version type as part of the version string to avoid a spurious + space in the package status message. + `#3472 <https://github.com/pybind/pybind11/pull/3472>`_ + +* Flags starting with ``-g`` in ``$CFLAGS`` and ``$CPPFLAGS`` are no longer + overridden by ``.Pybind11Extension``. + `#3436 <https://github.com/pybind/pybind11/pull/3436>`_ + +* Ensure ThreadPool is closed in ``setup_helpers``. + `#3548 <https://github.com/pybind/pybind11/pull/3548>`_ + +* Avoid LTS on ``mips64`` and ``ppc64le`` (reported broken). + `#3557 <https://github.com/pybind/pybind11/pull/3557>`_ + + +v2.8.1 (Oct 27, 2021) +--------------------- + +Changes and additions: + +* The simple namespace creation shortcut added in 2.8.0 was deprecated due to + usage of CPython internal API, and will be removed soon. Use + ``py::module_::import("types").attr("SimpleNamespace")``. + `#3374 <https://github.com/pybinyyd/pybind11/pull/3374>`_ + +* Add C++ Exception type to throw and catch ``AttributeError``. Useful for + defining custom ``__setattr__`` and ``__getattr__`` methods. + `#3387 <https://github.com/pybind/pybind11/pull/3387>`_ + +Fixes: + +* Fixed the potential for dangling references when using properties with + ``std::optional`` types. + `#3376 <https://github.com/pybind/pybind11/pull/3376>`_ + +* Modernize usage of ``PyCodeObject`` on Python 3.9+ (moving toward support for + Python 3.11a1) + `#3368 <https://github.com/pybind/pybind11/pull/3368>`_ + +* A long-standing bug in ``eigen.h`` was fixed (originally PR #3343). The bug + was unmasked by newly added ``static_assert``'s in the Eigen 3.4.0 release. + `#3352 <https://github.com/pybind/pybind11/pull/3352>`_ + +* Support multiple raw inclusion of CMake helper files (Conan.io does this for + multi-config generators). + `#3420 <https://github.com/pybind/pybind11/pull/3420>`_ + +* Fix harmless warning on upcoming CMake 3.22. + `#3368 <https://github.com/pybind/pybind11/pull/3368>`_ + +* Fix 2.8.0 regression with MSVC 2017 + C++17 mode + Python 3. + `#3407 <https://github.com/pybind/pybind11/pull/3407>`_ + +* Fix 2.8.0 regression that caused undefined behavior (typically + segfaults) in ``make_key_iterator``/``make_value_iterator`` if dereferencing + the iterator returned a temporary value instead of a reference. + `#3348 <https://github.com/pybind/pybind11/pull/3348>`_ + + +v2.8.0 (Oct 4, 2021) +-------------------- + +New features: + +* Added ``py::raise_from`` to enable chaining exceptions. + `#3215 <https://github.com/pybind/pybind11/pull/3215>`_ + +* Allow exception translators to be optionally registered local to a module + instead of applying globally across all pybind11 modules. Use + ``register_local_exception_translator(ExceptionTranslator&& translator)`` + instead of ``register_exception_translator(ExceptionTranslator&& + translator)`` to keep your exception remapping code local to the module. + `#2650 <https://github.com/pybinyyd/pybind11/pull/2650>`_ + +* Add ``make_simple_namespace`` function for instantiating Python + ``SimpleNamespace`` objects. **Deprecated in 2.8.1.** + `#2840 <https://github.com/pybind/pybind11/pull/2840>`_ + +* ``pybind11::scoped_interpreter`` and ``initialize_interpreter`` have new + arguments to allow ``sys.argv`` initialization. + `#2341 <https://github.com/pybind/pybind11/pull/2341>`_ + +* Allow Python builtins to be used as callbacks in CPython. + `#1413 <https://github.com/pybind/pybind11/pull/1413>`_ + +* Added ``view`` to view arrays with a different datatype. + `#987 <https://github.com/pybind/pybind11/pull/987>`_ + +* Implemented ``reshape`` on arrays. + `#984 <https://github.com/pybind/pybind11/pull/984>`_ + +* Enable defining custom ``__new__`` methods on classes by fixing bug + preventing overriding methods if they have non-pybind11 siblings. + `#3265 <https://github.com/pybind/pybind11/pull/3265>`_ + +* Add ``make_value_iterator()``, and fix ``make_key_iterator()`` to return + references instead of copies. + `#3293 <https://github.com/pybind/pybind11/pull/3293>`_ + +* Improve the classes generated by ``bind_map``: `#3310 <https://github.com/pybind/pybind11/pull/3310>`_ + + * Change ``.items`` from an iterator to a dictionary view. + * Add ``.keys`` and ``.values`` (both dictionary views). + * Allow ``__contains__`` to take any object. + +* ``pybind11::custom_type_setup`` was added, for customizing the + ``PyHeapTypeObject`` corresponding to a class, which may be useful for + enabling garbage collection support, among other things. + `#3287 <https://github.com/pybind/pybind11/pull/3287>`_ + + +Changes: + +* Set ``__file__`` constant when running ``eval_file`` in an embedded interpreter. + `#3233 <https://github.com/pybind/pybind11/pull/3233>`_ + +* Python objects and (C++17) ``std::optional`` now accepted in ``py::slice`` + constructor. + `#1101 <https://github.com/pybind/pybind11/pull/1101>`_ + +* The pybind11 proxy types ``str``, ``bytes``, ``bytearray``, ``tuple``, + ``list`` now consistently support passing ``ssize_t`` values for sizes and + indexes. Previously, only ``size_t`` was accepted in several interfaces. + `#3219 <https://github.com/pybind/pybind11/pull/3219>`_ + +* Avoid evaluating ``PYBIND11_TLS_REPLACE_VALUE`` arguments more than once. + `#3290 <https://github.com/pybind/pybind11/pull/3290>`_ + +Fixes: + +* Bug fix: enum value's ``__int__`` returning non-int when underlying type is + bool or of char type. + `#1334 <https://github.com/pybind/pybind11/pull/1334>`_ + +* Fixes bug in setting error state in Capsule's pointer methods. + `#3261 <https://github.com/pybind/pybind11/pull/3261>`_ + +* A long-standing memory leak in ``py::cpp_function::initialize`` was fixed. + `#3229 <https://github.com/pybind/pybind11/pull/3229>`_ + +* Fixes thread safety for some ``pybind11::type_caster`` which require lifetime + extension, such as for ``std::string_view``. + `#3237 <https://github.com/pybind/pybind11/pull/3237>`_ + +* Restore compatibility with gcc 4.8.4 as distributed by ubuntu-trusty, linuxmint-17. + `#3270 <https://github.com/pybind/pybind11/pull/3270>`_ + + +Build system improvements: + +* Fix regression in CMake Python package config: improper use of absolute path. + `#3144 <https://github.com/pybind/pybind11/pull/3144>`_ + +* Cached Python version information could become stale when CMake was re-run + with a different Python version. The build system now detects this and + updates this information. + `#3299 <https://github.com/pybind/pybind11/pull/3299>`_ + +* Specified UTF8-encoding in setup.py calls of open(). + `#3137 <https://github.com/pybind/pybind11/pull/3137>`_ + +* Fix a harmless warning from CMake 3.21 with the classic Python discovery. + `#3220 <https://github.com/pybind/pybind11/pull/3220>`_ + +* Eigen repo and version can now be specified as cmake options. + `#3324 <https://github.com/pybind/pybind11/pull/3324>`_ + + +Backend and tidying up: + +* Reduced thread-local storage required for keeping alive temporary data for + type conversion to one key per ABI version, rather than one key per extension + module. This makes the total thread-local storage required by pybind11 2 + keys per ABI version. + `#3275 <https://github.com/pybind/pybind11/pull/3275>`_ + +* Optimize NumPy array construction with additional moves. + `#3183 <https://github.com/pybind/pybind11/pull/3183>`_ + +* Conversion to ``std::string`` and ``std::string_view`` now avoids making an + extra copy of the data on Python >= 3.3. + `#3257 <https://github.com/pybind/pybind11/pull/3257>`_ + +* Remove const modifier from certain C++ methods on Python collections + (``list``, ``set``, ``dict``) such as (``clear()``, ``append()``, + ``insert()``, etc...) and annotated them with ``py-non-const``. + +* Enable readability ``clang-tidy-const-return`` and remove useless consts. + `#3254 <https://github.com/pybind/pybind11/pull/3254>`_ + `#3194 <https://github.com/pybind/pybind11/pull/3194>`_ + +* The clang-tidy ``google-explicit-constructor`` option was enabled. + `#3250 <https://github.com/pybind/pybind11/pull/3250>`_ + +* Mark a pytype move constructor as noexcept (perf). + `#3236 <https://github.com/pybind/pybind11/pull/3236>`_ + +* Enable clang-tidy check to guard against inheritance slicing. + `#3210 <https://github.com/pybind/pybind11/pull/3210>`_ + +* Legacy warning suppression pragma were removed from eigen.h. On Unix + platforms, please use -isystem for Eigen include directories, to suppress + compiler warnings originating from Eigen headers. Note that CMake does this + by default. No adjustments are needed for Windows. + `#3198 <https://github.com/pybind/pybind11/pull/3198>`_ + +* Format pybind11 with isort consistent ordering of imports + `#3195 <https://github.com/pybind/pybind11/pull/3195>`_ + +* The warnings-suppression "pragma clamp" at the top/bottom of pybind11 was + removed, clearing the path to refactoring and IWYU cleanup. + `#3186 <https://github.com/pybind/pybind11/pull/3186>`_ + +* Enable most bugprone checks in clang-tidy and fix the found potential bugs + and poor coding styles. + `#3166 <https://github.com/pybind/pybind11/pull/3166>`_ + +* Add ``clang-tidy-readability`` rules to make boolean casts explicit improving + code readability. Also enabled other misc and readability clang-tidy checks. + `#3148 <https://github.com/pybind/pybind11/pull/3148>`_ + +* Move object in ``.pop()`` for list. + `#3116 <https://github.com/pybind/pybind11/pull/3116>`_ + + + + +v2.7.1 (Aug 3, 2021) +--------------------- + +Minor missing functionality added: + +* Allow Python builtins to be used as callbacks in CPython. + `#1413 <https://github.com/pybind/pybind11/pull/1413>`_ + +Bug fixes: + +* Fix regression in CMake Python package config: improper use of absolute path. + `#3144 <https://github.com/pybind/pybind11/pull/3144>`_ + +* Fix Mingw64 and add to the CI testing matrix. + `#3132 <https://github.com/pybind/pybind11/pull/3132>`_ + +* Specified UTF8-encoding in setup.py calls of open(). + `#3137 <https://github.com/pybind/pybind11/pull/3137>`_ + +* Add clang-tidy-readability rules to make boolean casts explicit improving + code readability. Also enabled other misc and readability clang-tidy checks. + `#3148 <https://github.com/pybind/pybind11/pull/3148>`_ + +* Move object in ``.pop()`` for list. + `#3116 <https://github.com/pybind/pybind11/pull/3116>`_ + +Backend and tidying up: + +* Removed and fixed warning suppressions. + `#3127 <https://github.com/pybind/pybind11/pull/3127>`_ + `#3129 <https://github.com/pybind/pybind11/pull/3129>`_ + `#3135 <https://github.com/pybind/pybind11/pull/3135>`_ + `#3141 <https://github.com/pybind/pybind11/pull/3141>`_ + `#3142 <https://github.com/pybind/pybind11/pull/3142>`_ + `#3150 <https://github.com/pybind/pybind11/pull/3150>`_ + `#3152 <https://github.com/pybind/pybind11/pull/3152>`_ + `#3160 <https://github.com/pybind/pybind11/pull/3160>`_ + `#3161 <https://github.com/pybind/pybind11/pull/3161>`_ + + +v2.7.0 (Jul 16, 2021) +--------------------- + +New features: + +* Enable ``py::implicitly_convertible<py::none, ...>`` for + ``py::class_``-wrapped types. + `#3059 <https://github.com/pybind/pybind11/pull/3059>`_ + +* Allow function pointer extraction from overloaded functions. + `#2944 <https://github.com/pybind/pybind11/pull/2944>`_ + +* NumPy: added ``.char_()`` to type which gives the NumPy public ``char`` + result, which also distinguishes types by bit length (unlike ``.kind()``). + `#2864 <https://github.com/pybind/pybind11/pull/2864>`_ + +* Add ``pybind11::bytearray`` to manipulate ``bytearray`` similar to ``bytes``. + `#2799 <https://github.com/pybind/pybind11/pull/2799>`_ + +* ``pybind11/stl/filesystem.h`` registers a type caster that, on C++17/Python + 3.6+, converts ``std::filesystem::path`` to ``pathlib.Path`` and any + ``os.PathLike`` to ``std::filesystem::path``. + `#2730 <https://github.com/pybind/pybind11/pull/2730>`_ + +* A ``PYBIND11_VERSION_HEX`` define was added, similar to ``PY_VERSION_HEX``. + `#3120 <https://github.com/pybind/pybind11/pull/3120>`_ + + + +Changes: + +* ``py::str`` changed to exclusively hold ``PyUnicodeObject``. Previously + ``py::str`` could also hold ``bytes``, which is probably surprising, was + never documented, and can mask bugs (e.g. accidental use of ``py::str`` + instead of ``py::bytes``). + `#2409 <https://github.com/pybind/pybind11/pull/2409>`_ + +* Add a safety guard to ensure that the Python GIL is held when C++ calls back + into Python via ``object_api<>::operator()`` (e.g. ``py::function`` + ``__call__``). (This feature is available for Python 3.6+ only.) + `#2919 <https://github.com/pybind/pybind11/pull/2919>`_ + +* Catch a missing ``self`` argument in calls to ``__init__()``. + `#2914 <https://github.com/pybind/pybind11/pull/2914>`_ + +* Use ``std::string_view`` if available to avoid a copy when passing an object + to a ``std::ostream``. + `#3042 <https://github.com/pybind/pybind11/pull/3042>`_ + +* An important warning about thread safety was added to the ``iostream.h`` + documentation; attempts to make ``py::scoped_ostream_redirect`` thread safe + have been removed, as it was only partially effective. + `#2995 <https://github.com/pybind/pybind11/pull/2995>`_ + + +Fixes: + +* Performance: avoid unnecessary strlen calls. + `#3058 <https://github.com/pybind/pybind11/pull/3058>`_ + +* Fix auto-generated documentation string when using ``const T`` in + ``pyarray_t``. + `#3020 <https://github.com/pybind/pybind11/pull/3020>`_ + +* Unify error messages thrown by ``simple_collector``/``unpacking_collector``. + `#3013 <https://github.com/pybind/pybind11/pull/3013>`_ + +* ``pybind11::builtin_exception`` is now explicitly exported, which means the + types included/defined in different modules are identical, and exceptions + raised in different modules can be caught correctly. The documentation was + updated to explain that custom exceptions that are used across module + boundaries need to be explicitly exported as well. + `#2999 <https://github.com/pybind/pybind11/pull/2999>`_ + +* Fixed exception when printing UTF-8 to a ``scoped_ostream_redirect``. + `#2982 <https://github.com/pybind/pybind11/pull/2982>`_ + +* Pickle support enhancement: ``setstate`` implementation will attempt to + ``setattr`` ``__dict__`` only if the unpickled ``dict`` object is not empty, + to not force use of ``py::dynamic_attr()`` unnecessarily. + `#2972 <https://github.com/pybind/pybind11/pull/2972>`_ + +* Allow negative timedelta values to roundtrip. + `#2870 <https://github.com/pybind/pybind11/pull/2870>`_ + +* Fix unchecked errors could potentially swallow signals/other exceptions. + `#2863 <https://github.com/pybind/pybind11/pull/2863>`_ + +* Add null pointer check with ``std::localtime``. + `#2846 <https://github.com/pybind/pybind11/pull/2846>`_ + +* Fix the ``weakref`` constructor from ``py::object`` to create a new + ``weakref`` on conversion. + `#2832 <https://github.com/pybind/pybind11/pull/2832>`_ + +* Avoid relying on exceptions in C++17 when getting a ``shared_ptr`` holder + from a ``shared_from_this`` class. + `#2819 <https://github.com/pybind/pybind11/pull/2819>`_ + +* Allow the codec's exception to be raised instead of :code:`RuntimeError` when + casting from :code:`py::str` to :code:`std::string`. + `#2903 <https://github.com/pybind/pybind11/pull/2903>`_ + + +Build system improvements: + +* In ``setup_helpers.py``, test for platforms that have some multiprocessing + features but lack semaphores, which ``ParallelCompile`` requires. + `#3043 <https://github.com/pybind/pybind11/pull/3043>`_ + +* Fix ``pybind11_INCLUDE_DIR`` in case ``CMAKE_INSTALL_INCLUDEDIR`` is + absolute. + `#3005 <https://github.com/pybind/pybind11/pull/3005>`_ + +* Fix bug not respecting ``WITH_SOABI`` or ``WITHOUT_SOABI`` to CMake. + `#2938 <https://github.com/pybind/pybind11/pull/2938>`_ + +* Fix the default ``Pybind11Extension`` compilation flags with a Mingw64 python. + `#2921 <https://github.com/pybind/pybind11/pull/2921>`_ + +* Clang on Windows: do not pass ``/MP`` (ignored flag). + `#2824 <https://github.com/pybind/pybind11/pull/2824>`_ + +* ``pybind11.setup_helpers.intree_extensions`` can be used to generate + ``Pybind11Extension`` instances from cpp files placed in the Python package + source tree. + `#2831 <https://github.com/pybind/pybind11/pull/2831>`_ + +Backend and tidying up: + +* Enable clang-tidy performance, readability, and modernization checks + throughout the codebase to enforce best coding practices. + `#3046 <https://github.com/pybind/pybind11/pull/3046>`_, + `#3049 <https://github.com/pybind/pybind11/pull/3049>`_, + `#3051 <https://github.com/pybind/pybind11/pull/3051>`_, + `#3052 <https://github.com/pybind/pybind11/pull/3052>`_, + `#3080 <https://github.com/pybind/pybind11/pull/3080>`_, and + `#3094 <https://github.com/pybind/pybind11/pull/3094>`_ + + +* Checks for common misspellings were added to the pre-commit hooks. + `#3076 <https://github.com/pybind/pybind11/pull/3076>`_ + +* Changed ``Werror`` to stricter ``Werror-all`` for Intel compiler and fixed + minor issues. + `#2948 <https://github.com/pybind/pybind11/pull/2948>`_ + +* Fixed compilation with GCC < 5 when the user defines ``_GLIBCXX_USE_CXX11_ABI``. + `#2956 <https://github.com/pybind/pybind11/pull/2956>`_ + +* Added nox support for easier local testing and linting of contributions. + `#3101 <https://github.com/pybind/pybind11/pull/3101>`_ and + `#3121 <https://github.com/pybind/pybind11/pull/3121>`_ + +* Avoid RTD style issue with docutils 0.17+. + `#3119 <https://github.com/pybind/pybind11/pull/3119>`_ + +* Support pipx run, such as ``pipx run pybind11 --include`` for a quick compile. + `#3117 <https://github.com/pybind/pybind11/pull/3117>`_ + + v2.6.2 (Jan 26, 2021) --------------------- @@ -86,7 +1226,7 @@ Bug fixes: * Fix ``py::gil_scoped_acquire`` assert with CPython 3.9 debug build. `#2683 <https://github.com/pybind/pybind11/pull/2683>`_ -* Fix issue with a test failing on PyTest 6.2. +* Fix issue with a test failing on pytest 6.2. `#2741 <https://github.com/pybind/pybind11/pull/2741>`_ Warning fixes: @@ -263,7 +1403,7 @@ Packaging / building improvements: `#2338 <https://github.com/pybind/pybind11/pull/2338>`_ and `#2370 <https://github.com/pybind/pybind11/pull/2370>`_ - * Full integration with CMake’s C++ standard system and compile features + * Full integration with CMake's C++ standard system and compile features replaces ``PYBIND11_CPP_STANDARD``. * Generated config file is now portable to different Python/compiler/CMake @@ -495,7 +1635,7 @@ v2.4.0 (Sep 19, 2019) `#1888 <https://github.com/pybind/pybind11/pull/1888>`_. * ``py::details::overload_cast_impl`` is available in C++11 mode, can be used - like ``overload_cast`` with an additional set of parantheses. + like ``overload_cast`` with an additional set of parentheses. `#1581 <https://github.com/pybind/pybind11/pull/1581>`_. * Fixed ``get_include()`` on Conda. @@ -817,6 +1957,7 @@ v2.2.0 (August 31, 2017) from cpp_module import CppBase1, CppBase2 + class PyDerived(CppBase1, CppBase2): def __init__(self): CppBase1.__init__(self) # C++ bases must be initialized explicitly @@ -1029,7 +2170,7 @@ v2.2.0 (August 31, 2017) * Intel C++ compiler compatibility fixes. `#937 <https://github.com/pybind/pybind11/pull/937>`_. -* Fixed implicit conversion of `py::enum_` to integer types on Python 2.7. +* Fixed implicit conversion of ``py::enum_`` to integer types on Python 2.7. `#821 <https://github.com/pybind/pybind11/pull/821>`_. * Added ``py::hash`` to fetch the hash value of Python objects, and |