Spaces:
Runtime error
Runtime error
| .. _changelog: | |
| Changelog | |
| ######### | |
| Starting with version 1.8.0, pybind11 releases use a `semantic versioning | |
| <http://semver.org>`_ policy. | |
| v2.6.0 (IN PROGRESS) | |
| -------------------- | |
| See :ref:`upgrade-guide-2.6` for help upgrading to the new version. | |
| * Keyword only argument supported in Python 2 or 3 with ``py::kwonly()``. | |
| `#2100 <https://github.com/pybind/pybind11/pull/2100>`_ | |
| * Perfect forwarding support for methods. | |
| `#2048 <https://github.com/pybind/pybind11/pull/2048>`_ | |
| * Added ``py::error_already_set::discard_as_unraisable()``. | |
| `#2372 <https://github.com/pybind/pybind11/pull/2372>`_ | |
| * ``py::hash`` is now public. | |
| `#2217 <https://github.com/pybind/pybind11/pull/2217>`_ | |
| * ``py::is_final()`` class modifier to block subclassing (CPython only). | |
| `#2151 <https://github.com/pybind/pybind11/pull/2151>`_ | |
| * ``py::memoryview`` update and documentation. | |
| `#2223 <https://github.com/pybind/pybind11/pull/2223>`_ | |
| * Minimum CMake required increased to 3.4. | |
| `#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 replaces | |
| ``PYBIND11_CPP_STANDARD``. | |
| * Generated config file is now portable to different Python/compiler/CMake | |
| versions. | |
| * Virtual environments prioritized if ``PYTHON_EXECUTABLE`` is not set | |
| (``venv``, ``virtualenv``, and ``conda``) (similar to the new FindPython | |
| mode). | |
| * Other CMake features now natively supported, like | |
| ``CMAKE_INTERPROCEDURAL_OPTIMIZATION``, ``set(CMAKE_CXX_VISIBILITY_PRESET | |
| hidden)``. | |
| * Optional :ref:`find-python-mode` and :ref:`nopython-mode` with CMake. | |
| `#2370 <https://github.com/pybind/pybind11/pull/2370>`_ | |
| * Uninstall target added. | |
| `#2265 <https://github.com/pybind/pybind11/pull/2265>`_ and | |
| `#2346 <https://github.com/pybind/pybind11/pull/2346>`_ | |
| Smaller or developer focused features: | |
| * Error now thrown when ``__init__`` is forgotten on subclasses. | |
| `#2152 <https://github.com/pybind/pybind11/pull/2152>`_ | |
| * If ``__eq__`` defined but not ``__hash__``, ``__hash__`` is now set to | |
| ``None``. | |
| `#2291 <https://github.com/pybind/pybind11/pull/2291>`_ | |
| * ``py::ellipsis`` now also works on Python 2 | |
| `#2360 <https://github.com/pybind/pybind11/pull/2360>`_ | |
| * Added missing signature for ``py::array`` | |
| `#2363 <https://github.com/pybind/pybind11/pull/2363>`_ | |
| * Bugfixes related to more extensive testing | |
| `#2321 <https://github.com/pybind/pybind11/pull/2321>`_ | |
| * Pointer to ``std::tuple`` & ``std::pair`` supported in cast. | |
| `#2334 <https://github.com/pybind/pybind11/pull/2334>`_ | |
| * Small fixes in NumPy support. ``py::array`` now uses ``py::ssize_t`` as first | |
| argument type. | |
| `#2293 <https://github.com/pybind/pybind11/pull/2293>`_ | |
| * PyPy fixes, including support for PyPy3 and PyPy 7. | |
| `#2146 <https://github.com/pybind/pybind11/pull/2146>`_ | |
| * CPython 3.9 fixes. | |
| `#2253 <https://github.com/pybind/pybind11/pull/2253>`_ | |
| * Debug Python interpreter support. | |
| `#2025 <https://github.com/pybind/pybind11/pull/2025>`_ | |
| v2.5.0 (Mar 31, 2020) | |
| ----------------------------------------------------- | |
| * Use C++17 fold expressions in type casters, if available. This can | |
| improve performance during overload resolution when functions have | |
| multiple arguments. | |
| `#2043 <https://github.com/pybind/pybind11/pull/2043>`_. | |
| * Changed include directory resolution in ``pybind11/__init__.py`` | |
| and installation in ``setup.py``. This fixes a number of open issues | |
| where pybind11 headers could not be found in certain environments. | |
| `#1995 <https://github.com/pybind/pybind11/pull/1995>`_. | |
| * C++20 ``char8_t`` and ``u8string`` support. `#2026 | |
| <https://github.com/pybind/pybind11/pull/2026>`_. | |
| * CMake: search for Python 3.9. `bb9c91 | |
| <https://github.com/pybind/pybind11/commit/bb9c91>`_. | |
| * Fixes for MSYS-based build environments. | |
| `#2087 <https://github.com/pybind/pybind11/pull/2087>`_, | |
| `#2053 <https://github.com/pybind/pybind11/pull/2053>`_. | |
| * STL bindings for ``std::vector<...>::clear``. `#2074 | |
| <https://github.com/pybind/pybind11/pull/2074>`_. | |
| * Read-only flag for ``py::buffer``. `#1466 | |
| <https://github.com/pybind/pybind11/pull/1466>`_. | |
| * Exception handling during module initialization. | |
| `bf2b031 <https://github.com/pybind/pybind11/commit/bf2b031>`_. | |
| * Support linking against a CPython debug build. | |
| `#2025 <https://github.com/pybind/pybind11/pull/2025>`_. | |
| * Fixed issues involving the availability and use of aligned ``new`` and | |
| ``delete``. `#1988 <https://github.com/pybind/pybind11/pull/1988>`_, | |
| `759221 <https://github.com/pybind/pybind11/commit/759221>`_. | |
| * Fixed a resource leak upon interpreter shutdown. | |
| `#2020 <https://github.com/pybind/pybind11/pull/2020>`_. | |
| * Fixed error handling in the boolean caster. | |
| `#1976 <https://github.com/pybind/pybind11/pull/1976>`_. | |
| v2.4.3 (Oct 15, 2019) | |
| ----------------------------------------------------- | |
| * Adapt pybind11 to a C API convention change in Python 3.8. `#1950 | |
| <https://github.com/pybind/pybind11/pull/1950>`_. | |
| v2.4.2 (Sep 21, 2019) | |
| ----------------------------------------------------- | |
| * Replaced usage of a C++14 only construct. `#1929 | |
| <https://github.com/pybind/pybind11/pull/1929>`_. | |
| * Made an ifdef future-proof for Python >= 4. `f3109d | |
| <https://github.com/pybind/pybind11/commit/f3109d>`_. | |
| v2.4.1 (Sep 20, 2019) | |
| ----------------------------------------------------- | |
| * Fixed a problem involving implicit conversion from enumerations to integers | |
| on Python 3.8. `#1780 <https://github.com/pybind/pybind11/pull/1780>`_. | |
| v2.4.0 (Sep 19, 2019) | |
| ----------------------------------------------------- | |
| * Try harder to keep pybind11-internal data structures separate when there | |
| are potential ABI incompatibilities. Fixes crashes that occurred when loading | |
| multiple pybind11 extensions that were e.g. compiled by GCC (libstdc++) | |
| and Clang (libc++). | |
| `#1588 <https://github.com/pybind/pybind11/pull/1588>`_ and | |
| `c9f5a <https://github.com/pybind/pybind11/commit/c9f5a>`_. | |
| * Added support for ``__await__``, ``__aiter__``, and ``__anext__`` protocols. | |
| `#1842 <https://github.com/pybind/pybind11/pull/1842>`_. | |
| * ``pybind11_add_module()``: don't strip symbols when compiling in | |
| ``RelWithDebInfo`` mode. `#1980 | |
| <https://github.com/pybind/pybind11/pull/1980>`_. | |
| * ``enum_``: Reproduce Python behavior when comparing against invalid values | |
| (e.g. ``None``, strings, etc.). Add back support for ``__invert__()``. | |
| `#1912 <https://github.com/pybind/pybind11/pull/1912>`_, | |
| `#1907 <https://github.com/pybind/pybind11/pull/1907>`_. | |
| * List insertion operation for ``py::list``. | |
| Added ``.empty()`` to all collection types. | |
| Added ``py::set::contains()`` and ``py::dict::contains()``. | |
| `#1887 <https://github.com/pybind/pybind11/pull/1887>`_, | |
| `#1884 <https://github.com/pybind/pybind11/pull/1884>`_, | |
| `#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. | |
| `#1581 <https://github.com/pybind/pybind11/pull/1581>`_. | |
| * Fixed ``get_include()`` on Conda. | |
| `#1877 <https://github.com/pybind/pybind11/pull/1877>`_. | |
| * ``stl_bind.h``: negative indexing support. | |
| `#1882 <https://github.com/pybind/pybind11/pull/1882>`_. | |
| * Minor CMake fix to add MinGW compatibility. | |
| `#1851 <https://github.com/pybind/pybind11/pull/1851>`_. | |
| * GIL-related fixes. | |
| `#1836 <https://github.com/pybind/pybind11/pull/1836>`_, | |
| `8b90b <https://github.com/pybind/pybind11/commit/8b90b>`_. | |
| * Other very minor/subtle fixes and improvements. | |
| `#1329 <https://github.com/pybind/pybind11/pull/1329>`_, | |
| `#1910 <https://github.com/pybind/pybind11/pull/1910>`_, | |
| `#1863 <https://github.com/pybind/pybind11/pull/1863>`_, | |
| `#1847 <https://github.com/pybind/pybind11/pull/1847>`_, | |
| `#1890 <https://github.com/pybind/pybind11/pull/1890>`_, | |
| `#1860 <https://github.com/pybind/pybind11/pull/1860>`_, | |
| `#1848 <https://github.com/pybind/pybind11/pull/1848>`_, | |
| `#1821 <https://github.com/pybind/pybind11/pull/1821>`_, | |
| `#1837 <https://github.com/pybind/pybind11/pull/1837>`_, | |
| `#1833 <https://github.com/pybind/pybind11/pull/1833>`_, | |
| `#1748 <https://github.com/pybind/pybind11/pull/1748>`_, | |
| `#1852 <https://github.com/pybind/pybind11/pull/1852>`_. | |
| v2.3.0 (June 11, 2019) | |
| ----------------------------------------------------- | |
| * Significantly reduced module binary size (10-20%) when compiled in C++11 mode | |
| with GCC/Clang, or in any mode with MSVC. Function signatures are now always | |
| precomputed at compile time (this was previously only available in C++14 mode | |
| for non-MSVC compilers). | |
| `#934 <https://github.com/pybind/pybind11/pull/934>`_. | |
| * Add basic support for tag-based static polymorphism, where classes | |
| provide a method to returns the desired type of an instance. | |
| `#1326 <https://github.com/pybind/pybind11/pull/1326>`_. | |
| * Python type wrappers (``py::handle``, ``py::object``, etc.) | |
| now support map Python's number protocol onto C++ arithmetic | |
| operators such as ``operator+``, ``operator/=``, etc. | |
| `#1511 <https://github.com/pybind/pybind11/pull/1511>`_. | |
| * A number of improvements related to enumerations: | |
| 1. The ``enum_`` implementation was rewritten from scratch to reduce | |
| code bloat. Rather than instantiating a full implementation for each | |
| enumeration, most code is now contained in a generic base class. | |
| `#1511 <https://github.com/pybind/pybind11/pull/1511>`_. | |
| 2. The ``value()`` method of ``py::enum_`` now accepts an optional | |
| docstring that will be shown in the documentation of the associated | |
| enumeration. `#1160 <https://github.com/pybind/pybind11/pull/1160>`_. | |
| 3. check for already existing enum value and throw an error if present. | |
| `#1453 <https://github.com/pybind/pybind11/pull/1453>`_. | |
| * Support for over-aligned type allocation via C++17's aligned ``new`` | |
| statement. `#1582 <https://github.com/pybind/pybind11/pull/1582>`_. | |
| * Added ``py::ellipsis()`` method for slicing of multidimensional NumPy arrays | |
| `#1502 <https://github.com/pybind/pybind11/pull/1502>`_. | |
| * Numerous Improvements to the ``mkdoc.py`` script for extracting documentation | |
| from C++ header files. | |
| `#1788 <https://github.com/pybind/pybind11/pull/1788>`_. | |
| * ``pybind11_add_module()``: allow including Python as a ``SYSTEM`` include path. | |
| `#1416 <https://github.com/pybind/pybind11/pull/1416>`_. | |
| * ``pybind11/stl.h`` does not convert strings to ``vector<string>`` anymore. | |
| `#1258 <https://github.com/pybind/pybind11/issues/1258>`_. | |
| * Mark static methods as such to fix auto-generated Sphinx documentation. | |
| `#1732 <https://github.com/pybind/pybind11/pull/1732>`_. | |
| * Re-throw forced unwind exceptions (e.g. during pthread termination). | |
| `#1208 <https://github.com/pybind/pybind11/pull/1208>`_. | |
| * Added ``__contains__`` method to the bindings of maps (``std::map``, | |
| ``std::unordered_map``). | |
| `#1767 <https://github.com/pybind/pybind11/pull/1767>`_. | |
| * Improvements to ``gil_scoped_acquire``. | |
| `#1211 <https://github.com/pybind/pybind11/pull/1211>`_. | |
| * Type caster support for ``std::deque<T>``. | |
| `#1609 <https://github.com/pybind/pybind11/pull/1609>`_. | |
| * Support for ``std::unique_ptr`` holders, whose deleters differ between a base and derived | |
| class. `#1353 <https://github.com/pybind/pybind11/pull/1353>`_. | |
| * Construction of STL array/vector-like data structures from | |
| iterators. Added an ``extend()`` operation. | |
| `#1709 <https://github.com/pybind/pybind11/pull/1709>`_, | |
| * CMake build system improvements for projects that include non-C++ | |
| files (e.g. plain C, CUDA) in ``pybind11_add_module`` et al. | |
| `#1678 <https://github.com/pybind/pybind11/pull/1678>`_. | |
| * Fixed asynchronous invocation and deallocation of Python functions | |
| wrapped in ``std::function``. | |
| `#1595 <https://github.com/pybind/pybind11/pull/1595>`_. | |
| * Fixes regarding return value policy propagation in STL type casters. | |
| `#1603 <https://github.com/pybind/pybind11/pull/1603>`_. | |
| * Fixed scoped enum comparisons. | |
| `#1571 <https://github.com/pybind/pybind11/pull/1571>`_. | |
| * Fixed iostream redirection for code that releases the GIL. | |
| `#1368 <https://github.com/pybind/pybind11/pull/1368>`_, | |
| * A number of CI-related fixes. | |
| `#1757 <https://github.com/pybind/pybind11/pull/1757>`_, | |
| `#1744 <https://github.com/pybind/pybind11/pull/1744>`_, | |
| `#1670 <https://github.com/pybind/pybind11/pull/1670>`_. | |
| v2.2.4 (September 11, 2018) | |
| ----------------------------------------------------- | |
| * Use new Python 3.7 Thread Specific Storage (TSS) implementation if available. | |
| `#1454 <https://github.com/pybind/pybind11/pull/1454>`_, | |
| `#1517 <https://github.com/pybind/pybind11/pull/1517>`_. | |
| * Fixes for newer MSVC versions and C++17 mode. | |
| `#1347 <https://github.com/pybind/pybind11/pull/1347>`_, | |
| `#1462 <https://github.com/pybind/pybind11/pull/1462>`_. | |
| * Propagate return value policies to type-specific casters | |
| when casting STL containers. | |
| `#1455 <https://github.com/pybind/pybind11/pull/1455>`_. | |
| * Allow ostream-redirection of more than 1024 characters. | |
| `#1479 <https://github.com/pybind/pybind11/pull/1479>`_. | |
| * Set ``Py_DEBUG`` define when compiling against a debug Python build. | |
| `#1438 <https://github.com/pybind/pybind11/pull/1438>`_. | |
| * Untangle integer logic in number type caster to work for custom | |
| types that may only be castable to a restricted set of builtin types. | |
| `#1442 <https://github.com/pybind/pybind11/pull/1442>`_. | |
| * CMake build system: Remember Python version in cache file. | |
| `#1434 <https://github.com/pybind/pybind11/pull/1434>`_. | |
| * Fix for custom smart pointers: use ``std::addressof`` to obtain holder | |
| address instead of ``operator&``. | |
| `#1435 <https://github.com/pybind/pybind11/pull/1435>`_. | |
| * Properly report exceptions thrown during module initialization. | |
| `#1362 <https://github.com/pybind/pybind11/pull/1362>`_. | |
| * Fixed a segmentation fault when creating empty-shaped NumPy array. | |
| `#1371 <https://github.com/pybind/pybind11/pull/1371>`_. | |
| * The version of Intel C++ compiler must be >= 2017, and this is now checked by | |
| the header files. `#1363 <https://github.com/pybind/pybind11/pull/1363>`_. | |
| * A few minor typo fixes and improvements to the test suite, and | |
| patches that silence compiler warnings. | |
| * Vectors now support construction from generators, as well as ``extend()`` from a | |
| list or generator. | |
| `#1496 <https://github.com/pybind/pybind11/pull/1496>`_. | |
| v2.2.3 (April 29, 2018) | |
| ----------------------------------------------------- | |
| * The pybind11 header location detection was replaced by a new implementation | |
| that no longer depends on ``pip`` internals (the recently released ``pip`` | |
| 10 has restricted access to this API). | |
| `#1190 <https://github.com/pybind/pybind11/pull/1190>`_. | |
| * Small adjustment to an implementation detail to work around a compiler segmentation fault in Clang 3.3/3.4. | |
| `#1350 <https://github.com/pybind/pybind11/pull/1350>`_. | |
| * The minimal supported version of the Intel compiler was >= 17.0 since | |
| pybind11 v2.1. This check is now explicit, and a compile-time error is raised | |
| if the compiler meet the requirement. | |
| `#1363 <https://github.com/pybind/pybind11/pull/1363>`_. | |
| * Fixed an endianness-related fault in the test suite. | |
| `#1287 <https://github.com/pybind/pybind11/pull/1287>`_. | |
| v2.2.2 (February 7, 2018) | |
| ----------------------------------------------------- | |
| * Fixed a segfault when combining embedded interpreter | |
| shutdown/reinitialization with external loaded pybind11 modules. | |
| `#1092 <https://github.com/pybind/pybind11/pull/1092>`_. | |
| * Eigen support: fixed a bug where Nx1/1xN numpy inputs couldn't be passed as | |
| arguments to Eigen vectors (which for Eigen are simply compile-time fixed | |
| Nx1/1xN matrices). | |
| `#1106 <https://github.com/pybind/pybind11/pull/1106>`_. | |
| * Clarified to license by moving the licensing of contributions from | |
| ``LICENSE`` into ``CONTRIBUTING.md``: the licensing of contributions is not | |
| actually part of the software license as distributed. This isn't meant to be | |
| a substantial change in the licensing of the project, but addresses concerns | |
| that the clause made the license non-standard. | |
| `#1109 <https://github.com/pybind/pybind11/issues/1109>`_. | |
| * Fixed a regression introduced in 2.1 that broke binding functions with lvalue | |
| character literal arguments. | |
| `#1128 <https://github.com/pybind/pybind11/pull/1128>`_. | |
| * MSVC: fix for compilation failures under /permissive-, and added the flag to | |
| the appveyor test suite. | |
| `#1155 <https://github.com/pybind/pybind11/pull/1155>`_. | |
| * Fixed ``__qualname__`` generation, and in turn, fixes how class names | |
| (especially nested class names) are shown in generated docstrings. | |
| `#1171 <https://github.com/pybind/pybind11/pull/1171>`_. | |
| * Updated the FAQ with a suggested project citation reference. | |
| `#1189 <https://github.com/pybind/pybind11/pull/1189>`_. | |
| * Added fixes for deprecation warnings when compiled under C++17 with | |
| ``-Wdeprecated`` turned on, and add ``-Wdeprecated`` to the test suite | |
| compilation flags. | |
| `#1191 <https://github.com/pybind/pybind11/pull/1191>`_. | |
| * Fixed outdated PyPI URLs in ``setup.py``. | |
| `#1213 <https://github.com/pybind/pybind11/pull/1213>`_. | |
| * Fixed a refcount leak for arguments that end up in a ``py::args`` argument | |
| for functions with both fixed positional and ``py::args`` arguments. | |
| `#1216 <https://github.com/pybind/pybind11/pull/1216>`_. | |
| * Fixed a potential segfault resulting from possible premature destruction of | |
| ``py::args``/``py::kwargs`` arguments with overloaded functions. | |
| `#1223 <https://github.com/pybind/pybind11/pull/1223>`_. | |
| * Fixed ``del map[item]`` for a ``stl_bind.h`` bound stl map. | |
| `#1229 <https://github.com/pybind/pybind11/pull/1229>`_. | |
| * Fixed a regression from v2.1.x where the aggregate initialization could | |
| unintentionally end up at a constructor taking a templated | |
| ``std::initializer_list<T>`` argument. | |
| `#1249 <https://github.com/pybind/pybind11/pull/1249>`_. | |
| * Fixed an issue where calling a function with a keep_alive policy on the same | |
| nurse/patient pair would cause the internal patient storage to needlessly | |
| grow (unboundedly, if the nurse is long-lived). | |
| `#1251 <https://github.com/pybind/pybind11/issues/1251>`_. | |
| * Various other minor fixes. | |
| v2.2.1 (September 14, 2017) | |
| ----------------------------------------------------- | |
| * Added ``py::module::reload()`` member function for reloading a module. | |
| `#1040 <https://github.com/pybind/pybind11/pull/1040>`_. | |
| * Fixed a reference leak in the number converter. | |
| `#1078 <https://github.com/pybind/pybind11/pull/1078>`_. | |
| * Fixed compilation with Clang on host GCC < 5 (old libstdc++ which isn't fully | |
| C++11 compliant). `#1062 <https://github.com/pybind/pybind11/pull/1062>`_. | |
| * Fixed a regression where the automatic ``std::vector<bool>`` caster would | |
| fail to compile. The same fix also applies to any container which returns | |
| element proxies instead of references. | |
| `#1053 <https://github.com/pybind/pybind11/pull/1053>`_. | |
| * Fixed a regression where the ``py::keep_alive`` policy could not be applied | |
| to constructors. `#1065 <https://github.com/pybind/pybind11/pull/1065>`_. | |
| * Fixed a nullptr dereference when loading a ``py::module_local`` type | |
| that's only registered in an external module. | |
| `#1058 <https://github.com/pybind/pybind11/pull/1058>`_. | |
| * Fixed implicit conversion of accessors to types derived from ``py::object``. | |
| `#1076 <https://github.com/pybind/pybind11/pull/1076>`_. | |
| * The ``name`` in ``PYBIND11_MODULE(name, variable)`` can now be a macro. | |
| `#1082 <https://github.com/pybind/pybind11/pull/1082>`_. | |
| * Relaxed overly strict ``py::pickle()`` check for matching get and set types. | |
| `#1064 <https://github.com/pybind/pybind11/pull/1064>`_. | |
| * Conversion errors now try to be more informative when it's likely that | |
| a missing header is the cause (e.g. forgetting ``<pybind11/stl.h>``). | |
| `#1077 <https://github.com/pybind/pybind11/pull/1077>`_. | |
| v2.2.0 (August 31, 2017) | |
| ----------------------------------------------------- | |
| * Support for embedding the Python interpreter. See the | |
| :doc:`documentation page </advanced/embedding>` for a | |
| full overview of the new features. | |
| `#774 <https://github.com/pybind/pybind11/pull/774>`_, | |
| `#889 <https://github.com/pybind/pybind11/pull/889>`_, | |
| `#892 <https://github.com/pybind/pybind11/pull/892>`_, | |
| `#920 <https://github.com/pybind/pybind11/pull/920>`_. | |
| .. code-block:: cpp | |
| #include <pybind11/embed.h> | |
| namespace py = pybind11; | |
| int main() { | |
| py::scoped_interpreter guard{}; // start the interpreter and keep it alive | |
| py::print("Hello, World!"); // use the Python API | |
| } | |
| * Support for inheriting from multiple C++ bases in Python. | |
| `#693 <https://github.com/pybind/pybind11/pull/693>`_. | |
| .. code-block:: python | |
| from cpp_module import CppBase1, CppBase2 | |
| class PyDerived(CppBase1, CppBase2): | |
| def __init__(self): | |
| CppBase1.__init__(self) # C++ bases must be initialized explicitly | |
| CppBase2.__init__(self) | |
| * ``PYBIND11_MODULE`` is now the preferred way to create module entry points. | |
| ``PYBIND11_PLUGIN`` is deprecated. See :ref:`macros` for details. | |
| `#879 <https://github.com/pybind/pybind11/pull/879>`_. | |
| .. code-block:: cpp | |
| // new | |
| PYBIND11_MODULE(example, m) { | |
| m.def("add", [](int a, int b) { return a + b; }); | |
| } | |
| // old | |
| PYBIND11_PLUGIN(example) { | |
| py::module m("example"); | |
| m.def("add", [](int a, int b) { return a + b; }); | |
| return m.ptr(); | |
| } | |
| * pybind11's headers and build system now more strictly enforce hidden symbol | |
| visibility for extension modules. This should be seamless for most users, | |
| but see the :doc:`upgrade` if you use a custom build system. | |
| `#995 <https://github.com/pybind/pybind11/pull/995>`_. | |
| * Support for ``py::module_local`` types which allow multiple modules to | |
| export the same C++ types without conflicts. This is useful for opaque | |
| types like ``std::vector<int>``. ``py::bind_vector`` and ``py::bind_map`` | |
| now default to ``py::module_local`` if their elements are builtins or | |
| local types. See :ref:`module_local` for details. | |
| `#949 <https://github.com/pybind/pybind11/pull/949>`_, | |
| `#981 <https://github.com/pybind/pybind11/pull/981>`_, | |
| `#995 <https://github.com/pybind/pybind11/pull/995>`_, | |
| `#997 <https://github.com/pybind/pybind11/pull/997>`_. | |
| * Custom constructors can now be added very easily using lambdas or factory | |
| functions which return a class instance by value, pointer or holder. This | |
| supersedes the old placement-new ``__init__`` technique. | |
| See :ref:`custom_constructors` for details. | |
| `#805 <https://github.com/pybind/pybind11/pull/805>`_, | |
| `#1014 <https://github.com/pybind/pybind11/pull/1014>`_. | |
| .. code-block:: cpp | |
| struct Example { | |
| Example(std::string); | |
| }; | |
| py::class_<Example>(m, "Example") | |
| .def(py::init<std::string>()) // existing constructor | |
| .def(py::init([](int n) { // custom constructor | |
| return std::make_unique<Example>(std::to_string(n)); | |
| })); | |
| * Similarly to custom constructors, pickling support functions are now bound | |
| using the ``py::pickle()`` adaptor which improves type safety. See the | |
| :doc:`upgrade` and :ref:`pickling` for details. | |
| `#1038 <https://github.com/pybind/pybind11/pull/1038>`_. | |
| * Builtin support for converting C++17 standard library types and general | |
| conversion improvements: | |
| 1. C++17 ``std::variant`` is supported right out of the box. C++11/14 | |
| equivalents (e.g. ``boost::variant``) can also be added with a simple | |
| user-defined specialization. See :ref:`cpp17_container_casters` for details. | |
| `#811 <https://github.com/pybind/pybind11/pull/811>`_, | |
| `#845 <https://github.com/pybind/pybind11/pull/845>`_, | |
| `#989 <https://github.com/pybind/pybind11/pull/989>`_. | |
| 2. Out-of-the-box support for C++17 ``std::string_view``. | |
| `#906 <https://github.com/pybind/pybind11/pull/906>`_. | |
| 3. Improved compatibility of the builtin ``optional`` converter. | |
| `#874 <https://github.com/pybind/pybind11/pull/874>`_. | |
| 4. The ``bool`` converter now accepts ``numpy.bool_`` and types which | |
| define ``__bool__`` (Python 3.x) or ``__nonzero__`` (Python 2.7). | |
| `#925 <https://github.com/pybind/pybind11/pull/925>`_. | |
| 5. C++-to-Python casters are now more efficient and move elements out | |
| of rvalue containers whenever possible. | |
| `#851 <https://github.com/pybind/pybind11/pull/851>`_, | |
| `#936 <https://github.com/pybind/pybind11/pull/936>`_, | |
| `#938 <https://github.com/pybind/pybind11/pull/938>`_. | |
| 6. Fixed ``bytes`` to ``std::string/char*`` conversion on Python 3. | |
| `#817 <https://github.com/pybind/pybind11/pull/817>`_. | |
| 7. Fixed lifetime of temporary C++ objects created in Python-to-C++ conversions. | |
| `#924 <https://github.com/pybind/pybind11/pull/924>`_. | |
| * Scope guard call policy for RAII types, e.g. ``py::call_guard<py::gil_scoped_release>()``, | |
| ``py::call_guard<py::scoped_ostream_redirect>()``. See :ref:`call_policies` for details. | |
| `#740 <https://github.com/pybind/pybind11/pull/740>`_. | |
| * Utility for redirecting C++ streams to Python (e.g. ``std::cout`` -> | |
| ``sys.stdout``). Scope guard ``py::scoped_ostream_redirect`` in C++ and | |
| a context manager in Python. See :ref:`ostream_redirect`. | |
| `#1009 <https://github.com/pybind/pybind11/pull/1009>`_. | |
| * Improved handling of types and exceptions across module boundaries. | |
| `#915 <https://github.com/pybind/pybind11/pull/915>`_, | |
| `#951 <https://github.com/pybind/pybind11/pull/951>`_, | |
| `#995 <https://github.com/pybind/pybind11/pull/995>`_. | |
| * Fixed destruction order of ``py::keep_alive`` nurse/patient objects | |
| in reference cycles. | |
| `#856 <https://github.com/pybind/pybind11/pull/856>`_. | |
| * Numpy and buffer protocol related improvements: | |
| 1. Support for negative strides in Python buffer objects/numpy arrays. This | |
| required changing integers from unsigned to signed for the related C++ APIs. | |
| Note: If you have compiler warnings enabled, you may notice some new conversion | |
| warnings after upgrading. These can be resolved with ``static_cast``. | |
| `#782 <https://github.com/pybind/pybind11/pull/782>`_. | |
| 2. Support ``std::complex`` and arrays inside ``PYBIND11_NUMPY_DTYPE``. | |
| `#831 <https://github.com/pybind/pybind11/pull/831>`_, | |
| `#832 <https://github.com/pybind/pybind11/pull/832>`_. | |
| 3. Support for constructing ``py::buffer_info`` and ``py::arrays`` using | |
| arbitrary containers or iterators instead of requiring a ``std::vector``. | |
| `#788 <https://github.com/pybind/pybind11/pull/788>`_, | |
| `#822 <https://github.com/pybind/pybind11/pull/822>`_, | |
| `#860 <https://github.com/pybind/pybind11/pull/860>`_. | |
| 4. Explicitly check numpy version and require >= 1.7.0. | |
| `#819 <https://github.com/pybind/pybind11/pull/819>`_. | |
| * Support for allowing/prohibiting ``None`` for specific arguments and improved | |
| ``None`` overload resolution order. See :ref:`none_arguments` for details. | |
| `#843 <https://github.com/pybind/pybind11/pull/843>`_. | |
| `#859 <https://github.com/pybind/pybind11/pull/859>`_. | |
| * Added ``py::exec()`` as a shortcut for ``py::eval<py::eval_statements>()`` | |
| and support for C++11 raw string literals as input. See :ref:`eval`. | |
| `#766 <https://github.com/pybind/pybind11/pull/766>`_, | |
| `#827 <https://github.com/pybind/pybind11/pull/827>`_. | |
| * ``py::vectorize()`` ignores non-vectorizable arguments and supports | |
| member functions. | |
| `#762 <https://github.com/pybind/pybind11/pull/762>`_. | |
| * Support for bound methods as callbacks (``pybind11/functional.h``). | |
| `#815 <https://github.com/pybind/pybind11/pull/815>`_. | |
| * Allow aliasing pybind11 methods: ``cls.attr("foo") = cls.attr("bar")``. | |
| `#802 <https://github.com/pybind/pybind11/pull/802>`_. | |
| * Don't allow mixed static/non-static overloads. | |
| `#804 <https://github.com/pybind/pybind11/pull/804>`_. | |
| * Fixed overriding static properties in derived classes. | |
| `#784 <https://github.com/pybind/pybind11/pull/784>`_. | |
| * Added support for write only properties. | |
| `#1144 <https://github.com/pybind/pybind11/pull/1144>`_. | |
| * Improved deduction of member functions of a derived class when its bases | |
| aren't registered with pybind11. | |
| `#855 <https://github.com/pybind/pybind11/pull/855>`_. | |
| .. code-block:: cpp | |
| struct Base { | |
| int foo() { return 42; } | |
| } | |
| struct Derived : Base {} | |
| // Now works, but previously required also binding `Base` | |
| py::class_<Derived>(m, "Derived") | |
| .def("foo", &Derived::foo); // function is actually from `Base` | |
| * The implementation of ``py::init<>`` now uses C++11 brace initialization | |
| syntax to construct instances, which permits binding implicit constructors of | |
| aggregate types. `#1015 <https://github.com/pybind/pybind11/pull/1015>`_. | |
| .. code-block:: cpp | |
| struct Aggregate { | |
| int a; | |
| std::string b; | |
| }; | |
| py::class_<Aggregate>(m, "Aggregate") | |
| .def(py::init<int, const std::string &>()); | |
| * Fixed issues with multiple inheritance with offset base/derived pointers. | |
| `#812 <https://github.com/pybind/pybind11/pull/812>`_, | |
| `#866 <https://github.com/pybind/pybind11/pull/866>`_, | |
| `#960 <https://github.com/pybind/pybind11/pull/960>`_. | |
| * Fixed reference leak of type objects. | |
| `#1030 <https://github.com/pybind/pybind11/pull/1030>`_. | |
| * Improved support for the ``/std:c++14`` and ``/std:c++latest`` modes | |
| on MSVC 2017. | |
| `#841 <https://github.com/pybind/pybind11/pull/841>`_, | |
| `#999 <https://github.com/pybind/pybind11/pull/999>`_. | |
| * Fixed detection of private operator new on MSVC. | |
| `#893 <https://github.com/pybind/pybind11/pull/893>`_, | |
| `#918 <https://github.com/pybind/pybind11/pull/918>`_. | |
| * 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. | |
| `#821 <https://github.com/pybind/pybind11/pull/821>`_. | |
| * Added ``py::hash`` to fetch the hash value of Python objects, and | |
| ``.def(hash(py::self))`` to provide the C++ ``std::hash`` as the Python | |
| ``__hash__`` method. | |
| `#1034 <https://github.com/pybind/pybind11/pull/1034>`_. | |
| * Fixed ``__truediv__`` on Python 2 and ``__itruediv__`` on Python 3. | |
| `#867 <https://github.com/pybind/pybind11/pull/867>`_. | |
| * ``py::capsule`` objects now support the ``name`` attribute. This is useful | |
| for interfacing with ``scipy.LowLevelCallable``. | |
| `#902 <https://github.com/pybind/pybind11/pull/902>`_. | |
| * Fixed ``py::make_iterator``'s ``__next__()`` for past-the-end calls. | |
| `#897 <https://github.com/pybind/pybind11/pull/897>`_. | |
| * Added ``error_already_set::matches()`` for checking Python exceptions. | |
| `#772 <https://github.com/pybind/pybind11/pull/772>`_. | |
| * Deprecated ``py::error_already_set::clear()``. It's no longer needed | |
| following a simplification of the ``py::error_already_set`` class. | |
| `#954 <https://github.com/pybind/pybind11/pull/954>`_. | |
| * Deprecated ``py::handle::operator==()`` in favor of ``py::handle::is()`` | |
| `#825 <https://github.com/pybind/pybind11/pull/825>`_. | |
| * Deprecated ``py::object::borrowed``/``py::object::stolen``. | |
| Use ``py::object::borrowed_t{}``/``py::object::stolen_t{}`` instead. | |
| `#771 <https://github.com/pybind/pybind11/pull/771>`_. | |
| * Changed internal data structure versioning to avoid conflicts between | |
| modules compiled with different revisions of pybind11. | |
| `#1012 <https://github.com/pybind/pybind11/pull/1012>`_. | |
| * Additional compile-time and run-time error checking and more informative messages. | |
| `#786 <https://github.com/pybind/pybind11/pull/786>`_, | |
| `#794 <https://github.com/pybind/pybind11/pull/794>`_, | |
| `#803 <https://github.com/pybind/pybind11/pull/803>`_. | |
| * Various minor improvements and fixes. | |
| `#764 <https://github.com/pybind/pybind11/pull/764>`_, | |
| `#791 <https://github.com/pybind/pybind11/pull/791>`_, | |
| `#795 <https://github.com/pybind/pybind11/pull/795>`_, | |
| `#840 <https://github.com/pybind/pybind11/pull/840>`_, | |
| `#844 <https://github.com/pybind/pybind11/pull/844>`_, | |
| `#846 <https://github.com/pybind/pybind11/pull/846>`_, | |
| `#849 <https://github.com/pybind/pybind11/pull/849>`_, | |
| `#858 <https://github.com/pybind/pybind11/pull/858>`_, | |
| `#862 <https://github.com/pybind/pybind11/pull/862>`_, | |
| `#871 <https://github.com/pybind/pybind11/pull/871>`_, | |
| `#872 <https://github.com/pybind/pybind11/pull/872>`_, | |
| `#881 <https://github.com/pybind/pybind11/pull/881>`_, | |
| `#888 <https://github.com/pybind/pybind11/pull/888>`_, | |
| `#899 <https://github.com/pybind/pybind11/pull/899>`_, | |
| `#928 <https://github.com/pybind/pybind11/pull/928>`_, | |
| `#931 <https://github.com/pybind/pybind11/pull/931>`_, | |
| `#944 <https://github.com/pybind/pybind11/pull/944>`_, | |
| `#950 <https://github.com/pybind/pybind11/pull/950>`_, | |
| `#952 <https://github.com/pybind/pybind11/pull/952>`_, | |
| `#962 <https://github.com/pybind/pybind11/pull/962>`_, | |
| `#965 <https://github.com/pybind/pybind11/pull/965>`_, | |
| `#970 <https://github.com/pybind/pybind11/pull/970>`_, | |
| `#978 <https://github.com/pybind/pybind11/pull/978>`_, | |
| `#979 <https://github.com/pybind/pybind11/pull/979>`_, | |
| `#986 <https://github.com/pybind/pybind11/pull/986>`_, | |
| `#1020 <https://github.com/pybind/pybind11/pull/1020>`_, | |
| `#1027 <https://github.com/pybind/pybind11/pull/1027>`_, | |
| `#1037 <https://github.com/pybind/pybind11/pull/1037>`_. | |
| * Testing improvements. | |
| `#798 <https://github.com/pybind/pybind11/pull/798>`_, | |
| `#882 <https://github.com/pybind/pybind11/pull/882>`_, | |
| `#898 <https://github.com/pybind/pybind11/pull/898>`_, | |
| `#900 <https://github.com/pybind/pybind11/pull/900>`_, | |
| `#921 <https://github.com/pybind/pybind11/pull/921>`_, | |
| `#923 <https://github.com/pybind/pybind11/pull/923>`_, | |
| `#963 <https://github.com/pybind/pybind11/pull/963>`_. | |
| v2.1.1 (April 7, 2017) | |
| ----------------------------------------------------- | |
| * Fixed minimum version requirement for MSVC 2015u3 | |
| `#773 <https://github.com/pybind/pybind11/pull/773>`_. | |
| v2.1.0 (March 22, 2017) | |
| ----------------------------------------------------- | |
| * pybind11 now performs function overload resolution in two phases. The first | |
| phase only considers exact type matches, while the second allows for implicit | |
| conversions to take place. A special ``noconvert()`` syntax can be used to | |
| completely disable implicit conversions for specific arguments. | |
| `#643 <https://github.com/pybind/pybind11/pull/643>`_, | |
| `#634 <https://github.com/pybind/pybind11/pull/634>`_, | |
| `#650 <https://github.com/pybind/pybind11/pull/650>`_. | |
| * Fixed a regression where static properties no longer worked with classes | |
| using multiple inheritance. The ``py::metaclass`` attribute is no longer | |
| necessary (and deprecated as of this release) when binding classes with | |
| static properties. | |
| `#679 <https://github.com/pybind/pybind11/pull/679>`_, | |
| * Classes bound using ``pybind11`` can now use custom metaclasses. | |
| `#679 <https://github.com/pybind/pybind11/pull/679>`_, | |
| * ``py::args`` and ``py::kwargs`` can now be mixed with other positional | |
| arguments when binding functions using pybind11. | |
| `#611 <https://github.com/pybind/pybind11/pull/611>`_. | |
| * Improved support for C++11 unicode string and character types; added | |
| extensive documentation regarding pybind11's string conversion behavior. | |
| `#624 <https://github.com/pybind/pybind11/pull/624>`_, | |
| `#636 <https://github.com/pybind/pybind11/pull/636>`_, | |
| `#715 <https://github.com/pybind/pybind11/pull/715>`_. | |
| * pybind11 can now avoid expensive copies when converting Eigen arrays to NumPy | |
| arrays (and vice versa). `#610 <https://github.com/pybind/pybind11/pull/610>`_. | |
| * The "fast path" in ``py::vectorize`` now works for any full-size group of C or | |
| F-contiguous arrays. The non-fast path is also faster since it no longer performs | |
| copies of the input arguments (except when type conversions are necessary). | |
| `#610 <https://github.com/pybind/pybind11/pull/610>`_. | |
| * Added fast, unchecked access to NumPy arrays via a proxy object. | |
| `#746 <https://github.com/pybind/pybind11/pull/746>`_. | |
| * Transparent support for class-specific ``operator new`` and | |
| ``operator delete`` implementations. | |
| `#755 <https://github.com/pybind/pybind11/pull/755>`_. | |
| * Slimmer and more efficient STL-compatible iterator interface for sequence types. | |
| `#662 <https://github.com/pybind/pybind11/pull/662>`_. | |
| * Improved custom holder type support. | |
| `#607 <https://github.com/pybind/pybind11/pull/607>`_. | |
| * ``nullptr`` to ``None`` conversion fixed in various builtin type casters. | |
| `#732 <https://github.com/pybind/pybind11/pull/732>`_. | |
| * ``enum_`` now exposes its members via a special ``__members__`` attribute. | |
| `#666 <https://github.com/pybind/pybind11/pull/666>`_. | |
| * ``std::vector`` bindings created using ``stl_bind.h`` can now optionally | |
| implement the buffer protocol. `#488 <https://github.com/pybind/pybind11/pull/488>`_. | |
| * Automated C++ reference documentation using doxygen and breathe. | |
| `#598 <https://github.com/pybind/pybind11/pull/598>`_. | |
| * Added minimum compiler version assertions. | |
| `#727 <https://github.com/pybind/pybind11/pull/727>`_. | |
| * Improved compatibility with C++1z. | |
| `#677 <https://github.com/pybind/pybind11/pull/677>`_. | |
| * Improved ``py::capsule`` API. Can be used to implement cleanup | |
| callbacks that are involved at module destruction time. | |
| `#752 <https://github.com/pybind/pybind11/pull/752>`_. | |
| * Various minor improvements and fixes. | |
| `#595 <https://github.com/pybind/pybind11/pull/595>`_, | |
| `#588 <https://github.com/pybind/pybind11/pull/588>`_, | |
| `#589 <https://github.com/pybind/pybind11/pull/589>`_, | |
| `#603 <https://github.com/pybind/pybind11/pull/603>`_, | |
| `#619 <https://github.com/pybind/pybind11/pull/619>`_, | |
| `#648 <https://github.com/pybind/pybind11/pull/648>`_, | |
| `#695 <https://github.com/pybind/pybind11/pull/695>`_, | |
| `#720 <https://github.com/pybind/pybind11/pull/720>`_, | |
| `#723 <https://github.com/pybind/pybind11/pull/723>`_, | |
| `#729 <https://github.com/pybind/pybind11/pull/729>`_, | |
| `#724 <https://github.com/pybind/pybind11/pull/724>`_, | |
| `#742 <https://github.com/pybind/pybind11/pull/742>`_, | |
| `#753 <https://github.com/pybind/pybind11/pull/753>`_. | |
| v2.0.1 (Jan 4, 2017) | |
| ----------------------------------------------------- | |
| * Fix pointer to reference error in type_caster on MSVC | |
| `#583 <https://github.com/pybind/pybind11/pull/583>`_. | |
| * Fixed a segmentation in the test suite due to a typo | |
| `cd7eac <https://github.com/pybind/pybind11/commit/cd7eac>`_. | |
| v2.0.0 (Jan 1, 2017) | |
| ----------------------------------------------------- | |
| * Fixed a reference counting regression affecting types with custom metaclasses | |
| (introduced in v2.0.0-rc1). | |
| `#571 <https://github.com/pybind/pybind11/pull/571>`_. | |
| * Quenched a CMake policy warning. | |
| `#570 <https://github.com/pybind/pybind11/pull/570>`_. | |
| v2.0.0-rc1 (Dec 23, 2016) | |
| ----------------------------------------------------- | |
| The pybind11 developers are excited to issue a release candidate of pybind11 | |
| with a subsequent v2.0.0 release planned in early January next year. | |
| An incredible amount of effort by went into pybind11 over the last ~5 months, | |
| leading to a release that is jam-packed with exciting new features and numerous | |
| usability improvements. The following list links PRs or individual commits | |
| whenever applicable. | |
| Happy Christmas! | |
| * Support for binding C++ class hierarchies that make use of multiple | |
| inheritance. `#410 <https://github.com/pybind/pybind11/pull/410>`_. | |
| * PyPy support: pybind11 now supports nightly builds of PyPy and will | |
| interoperate with the future 5.7 release. No code changes are necessary, | |
| everything "just" works as usual. Note that we only target the Python 2.7 | |
| branch for now; support for 3.x will be added once its ``cpyext`` extension | |
| support catches up. A few minor features remain unsupported for the time | |
| being (notably dynamic attributes in custom types). | |
| `#527 <https://github.com/pybind/pybind11/pull/527>`_. | |
| * Significant work on the documentation -- in particular, the monolithic | |
| ``advanced.rst`` file was restructured into a easier to read hierarchical | |
| organization. `#448 <https://github.com/pybind/pybind11/pull/448>`_. | |
| * Many NumPy-related improvements: | |
| 1. Object-oriented API to access and modify NumPy ``ndarray`` instances, | |
| replicating much of the corresponding NumPy C API functionality. | |
| `#402 <https://github.com/pybind/pybind11/pull/402>`_. | |
| 2. NumPy array ``dtype`` array descriptors are now first-class citizens and | |
| are exposed via a new class ``py::dtype``. | |
| 3. Structured dtypes can be registered using the ``PYBIND11_NUMPY_DTYPE()`` | |
| macro. Special ``array`` constructors accepting dtype objects were also | |
| added. | |
| One potential caveat involving this change: format descriptor strings | |
| should now be accessed via ``format_descriptor::format()`` (however, for | |
| compatibility purposes, the old syntax ``format_descriptor::value`` will | |
| still work for non-structured data types). `#308 | |
| <https://github.com/pybind/pybind11/pull/308>`_. | |
| 4. Further improvements to support structured dtypes throughout the system. | |
| `#472 <https://github.com/pybind/pybind11/pull/472>`_, | |
| `#474 <https://github.com/pybind/pybind11/pull/474>`_, | |
| `#459 <https://github.com/pybind/pybind11/pull/459>`_, | |
| `#453 <https://github.com/pybind/pybind11/pull/453>`_, | |
| `#452 <https://github.com/pybind/pybind11/pull/452>`_, and | |
| `#505 <https://github.com/pybind/pybind11/pull/505>`_. | |
| 5. Fast access operators. `#497 <https://github.com/pybind/pybind11/pull/497>`_. | |
| 6. Constructors for arrays whose storage is owned by another object. | |
| `#440 <https://github.com/pybind/pybind11/pull/440>`_. | |
| 7. Added constructors for ``array`` and ``array_t`` explicitly accepting shape | |
| and strides; if strides are not provided, they are deduced assuming | |
| C-contiguity. Also added simplified constructors for 1-dimensional case. | |
| 8. Added buffer/NumPy support for ``char[N]`` and ``std::array<char, N>`` types. | |
| 9. Added ``memoryview`` wrapper type which is constructible from ``buffer_info``. | |
| * Eigen: many additional conversions and support for non-contiguous | |
| arrays/slices. | |
| `#427 <https://github.com/pybind/pybind11/pull/427>`_, | |
| `#315 <https://github.com/pybind/pybind11/pull/315>`_, | |
| `#316 <https://github.com/pybind/pybind11/pull/316>`_, | |
| `#312 <https://github.com/pybind/pybind11/pull/312>`_, and | |
| `#267 <https://github.com/pybind/pybind11/pull/267>`_ | |
| * Incompatible changes in ``class_<...>::class_()``: | |
| 1. Declarations of types that provide access via the buffer protocol must | |
| now include the ``py::buffer_protocol()`` annotation as an argument to | |
| the ``class_`` constructor. | |
| 2. Declarations of types that require a custom metaclass (i.e. all classes | |
| which include static properties via commands such as | |
| ``def_readwrite_static()``) must now include the ``py::metaclass()`` | |
| annotation as an argument to the ``class_`` constructor. | |
| These two changes were necessary to make type definitions in pybind11 | |
| future-proof, and to support PyPy via its cpyext mechanism. `#527 | |
| <https://github.com/pybind/pybind11/pull/527>`_. | |
| 3. This version of pybind11 uses a redesigned mechanism for instantiating | |
| trampoline classes that are used to override virtual methods from within | |
| Python. This led to the following user-visible syntax change: instead of | |
| .. code-block:: cpp | |
| py::class_<TrampolineClass>("MyClass") | |
| .alias<MyClass>() | |
| .... | |
| write | |
| .. code-block:: cpp | |
| py::class_<MyClass, TrampolineClass>("MyClass") | |
| .... | |
| Importantly, both the original and the trampoline class are now | |
| specified as an arguments (in arbitrary order) to the ``py::class_`` | |
| template, and the ``alias<..>()`` call is gone. The new scheme has zero | |
| overhead in cases when Python doesn't override any functions of the | |
| underlying C++ class. `rev. 86d825 | |
| <https://github.com/pybind/pybind11/commit/86d825>`_. | |
| * Added ``eval`` and ``eval_file`` functions for evaluating expressions and | |
| statements from a string or file. `rev. 0d3fc3 | |
| <https://github.com/pybind/pybind11/commit/0d3fc3>`_. | |
| * pybind11 can now create types with a modifiable dictionary. | |
| `#437 <https://github.com/pybind/pybind11/pull/437>`_ and | |
| `#444 <https://github.com/pybind/pybind11/pull/444>`_. | |
| * Support for translation of arbitrary C++ exceptions to Python counterparts. | |
| `#296 <https://github.com/pybind/pybind11/pull/296>`_ and | |
| `#273 <https://github.com/pybind/pybind11/pull/273>`_. | |
| * Report full backtraces through mixed C++/Python code, better reporting for | |
| import errors, fixed GIL management in exception processing. | |
| `#537 <https://github.com/pybind/pybind11/pull/537>`_, | |
| `#494 <https://github.com/pybind/pybind11/pull/494>`_, | |
| `rev. e72d95 <https://github.com/pybind/pybind11/commit/e72d95>`_, and | |
| `rev. 099d6e <https://github.com/pybind/pybind11/commit/099d6e>`_. | |
| * Support for bit-level operations, comparisons, and serialization of C++ | |
| enumerations. `#503 <https://github.com/pybind/pybind11/pull/503>`_, | |
| `#508 <https://github.com/pybind/pybind11/pull/508>`_, | |
| `#380 <https://github.com/pybind/pybind11/pull/380>`_, | |
| `#309 <https://github.com/pybind/pybind11/pull/309>`_. | |
| `#311 <https://github.com/pybind/pybind11/pull/311>`_. | |
| * The ``class_`` constructor now accepts its template arguments in any order. | |
| `#385 <https://github.com/pybind/pybind11/pull/385>`_. | |
| * Attribute and item accessors now have a more complete interface which makes | |
| it possible to chain attributes as in | |
| ``obj.attr("a")[key].attr("b").attr("method")(1, 2, 3)``. `#425 | |
| <https://github.com/pybind/pybind11/pull/425>`_. | |
| * Major redesign of the default and conversion constructors in ``pytypes.h``. | |
| `#464 <https://github.com/pybind/pybind11/pull/464>`_. | |
| * Added built-in support for ``std::shared_ptr`` holder type. It is no longer | |
| necessary to to include a declaration of the form | |
| ``PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>)`` (though continuing to | |
| do so won't cause an error). | |
| `#454 <https://github.com/pybind/pybind11/pull/454>`_. | |
| * New ``py::overload_cast`` casting operator to select among multiple possible | |
| overloads of a function. An example: | |
| .. code-block:: cpp | |
| py::class_<Pet>(m, "Pet") | |
| .def("set", py::overload_cast<int>(&Pet::set), "Set the pet's age") | |
| .def("set", py::overload_cast<const std::string &>(&Pet::set), "Set the pet's name"); | |
| This feature only works on C++14-capable compilers. | |
| `#541 <https://github.com/pybind/pybind11/pull/541>`_. | |
| * C++ types are automatically cast to Python types, e.g. when assigning | |
| them as an attribute. For instance, the following is now legal: | |
| .. code-block:: cpp | |
| py::module m = /* ... */ | |
| m.attr("constant") = 123; | |
| (Previously, a ``py::cast`` call was necessary to avoid a compilation error.) | |
| `#551 <https://github.com/pybind/pybind11/pull/551>`_. | |
| * Redesigned ``pytest``-based test suite. `#321 <https://github.com/pybind/pybind11/pull/321>`_. | |
| * Instance tracking to detect reference leaks in test suite. `#324 <https://github.com/pybind/pybind11/pull/324>`_ | |
| * pybind11 can now distinguish between multiple different instances that are | |
| located at the same memory address, but which have different types. | |
| `#329 <https://github.com/pybind/pybind11/pull/329>`_. | |
| * Improved logic in ``move`` return value policy. | |
| `#510 <https://github.com/pybind/pybind11/pull/510>`_, | |
| `#297 <https://github.com/pybind/pybind11/pull/297>`_. | |
| * Generalized unpacking API to permit calling Python functions from C++ using | |
| notation such as ``foo(a1, a2, *args, "ka"_a=1, "kb"_a=2, **kwargs)``. `#372 <https://github.com/pybind/pybind11/pull/372>`_. | |
| * ``py::print()`` function whose behavior matches that of the native Python | |
| ``print()`` function. `#372 <https://github.com/pybind/pybind11/pull/372>`_. | |
| * Added ``py::dict`` keyword constructor:``auto d = dict("number"_a=42, | |
| "name"_a="World");``. `#372 <https://github.com/pybind/pybind11/pull/372>`_. | |
| * Added ``py::str::format()`` method and ``_s`` literal: ``py::str s = "1 + 2 | |
| = {}"_s.format(3);``. `#372 <https://github.com/pybind/pybind11/pull/372>`_. | |
| * Added ``py::repr()`` function which is equivalent to Python's builtin | |
| ``repr()``. `#333 <https://github.com/pybind/pybind11/pull/333>`_. | |
| * Improved construction and destruction logic for holder types. It is now | |
| possible to reference instances with smart pointer holder types without | |
| constructing the holder if desired. The ``PYBIND11_DECLARE_HOLDER_TYPE`` | |
| macro now accepts an optional second parameter to indicate whether the holder | |
| type uses intrusive reference counting. | |
| `#533 <https://github.com/pybind/pybind11/pull/533>`_ and | |
| `#561 <https://github.com/pybind/pybind11/pull/561>`_. | |
| * Mapping a stateless C++ function to Python and back is now "for free" (i.e. | |
| no extra indirections or argument conversion overheads). `rev. 954b79 | |
| <https://github.com/pybind/pybind11/commit/954b79>`_. | |
| * Bindings for ``std::valarray<T>``. | |
| `#545 <https://github.com/pybind/pybind11/pull/545>`_. | |
| * Improved support for C++17 capable compilers. | |
| `#562 <https://github.com/pybind/pybind11/pull/562>`_. | |
| * Bindings for ``std::optional<t>``. | |
| `#475 <https://github.com/pybind/pybind11/pull/475>`_, | |
| `#476 <https://github.com/pybind/pybind11/pull/476>`_, | |
| `#479 <https://github.com/pybind/pybind11/pull/479>`_, | |
| `#499 <https://github.com/pybind/pybind11/pull/499>`_, and | |
| `#501 <https://github.com/pybind/pybind11/pull/501>`_. | |
| * ``stl_bind.h``: general improvements and support for ``std::map`` and | |
| ``std::unordered_map``. | |
| `#490 <https://github.com/pybind/pybind11/pull/490>`_, | |
| `#282 <https://github.com/pybind/pybind11/pull/282>`_, | |
| `#235 <https://github.com/pybind/pybind11/pull/235>`_. | |
| * The ``std::tuple``, ``std::pair``, ``std::list``, and ``std::vector`` type | |
| casters now accept any Python sequence type as input. `rev. 107285 | |
| <https://github.com/pybind/pybind11/commit/107285>`_. | |
| * Improved CMake Python detection on multi-architecture Linux. | |
| `#532 <https://github.com/pybind/pybind11/pull/532>`_. | |
| * Infrastructure to selectively disable or enable parts of the automatically | |
| generated docstrings. `#486 <https://github.com/pybind/pybind11/pull/486>`_. | |
| * ``reference`` and ``reference_internal`` are now the default return value | |
| properties for static and non-static properties, respectively. `#473 | |
| <https://github.com/pybind/pybind11/pull/473>`_. (the previous defaults | |
| were ``automatic``). `#473 <https://github.com/pybind/pybind11/pull/473>`_. | |
| * Support for ``std::unique_ptr`` with non-default deleters or no deleter at | |
| all (``py::nodelete``). `#384 <https://github.com/pybind/pybind11/pull/384>`_. | |
| * Deprecated ``handle::call()`` method. The new syntax to call Python | |
| functions is simply ``handle()``. It can also be invoked explicitly via | |
| ``handle::operator<X>()``, where ``X`` is an optional return value policy. | |
| * Print more informative error messages when ``make_tuple()`` or ``cast()`` | |
| fail. `#262 <https://github.com/pybind/pybind11/pull/262>`_. | |
| * Creation of holder types for classes deriving from | |
| ``std::enable_shared_from_this<>`` now also works for ``const`` values. | |
| `#260 <https://github.com/pybind/pybind11/pull/260>`_. | |
| * ``make_iterator()`` improvements for better compatibility with various | |
| types (now uses prefix increment operator); it now also accepts iterators | |
| with different begin/end types as long as they are equality comparable. | |
| `#247 <https://github.com/pybind/pybind11/pull/247>`_. | |
| * ``arg()`` now accepts a wider range of argument types for default values. | |
| `#244 <https://github.com/pybind/pybind11/pull/244>`_. | |
| * Support ``keep_alive`` where the nurse object may be ``None``. `#341 | |
| <https://github.com/pybind/pybind11/pull/341>`_. | |
| * Added constructors for ``str`` and ``bytes`` from zero-terminated char | |
| pointers, and from char pointers and length. Added constructors for ``str`` | |
| from ``bytes`` and for ``bytes`` from ``str``, which will perform UTF-8 | |
| decoding/encoding as required. | |
| * Many other improvements of library internals without user-visible changes | |
| 1.8.1 (July 12, 2016) | |
| ---------------------- | |
| * Fixed a rare but potentially very severe issue when the garbage collector ran | |
| during pybind11 type creation. | |
| 1.8.0 (June 14, 2016) | |
| ---------------------- | |
| * Redesigned CMake build system which exports a convenient | |
| ``pybind11_add_module`` function to parent projects. | |
| * ``std::vector<>`` type bindings analogous to Boost.Python's ``indexing_suite`` | |
| * Transparent conversion of sparse and dense Eigen matrices and vectors (``eigen.h``) | |
| * Added an ``ExtraFlags`` template argument to the NumPy ``array_t<>`` wrapper | |
| to disable an enforced cast that may lose precision, e.g. to create overloads | |
| for different precisions and complex vs real-valued matrices. | |
| * Prevent implicit conversion of floating point values to integral types in | |
| function arguments | |
| * Fixed incorrect default return value policy for functions returning a shared | |
| pointer | |
| * Don't allow registering a type via ``class_`` twice | |
| * Don't allow casting a ``None`` value into a C++ lvalue reference | |
| * Fixed a crash in ``enum_::operator==`` that was triggered by the ``help()`` command | |
| * Improved detection of whether or not custom C++ types can be copy/move-constructed | |
| * Extended ``str`` type to also work with ``bytes`` instances | |
| * Added a ``"name"_a`` user defined string literal that is equivalent to ``py::arg("name")``. | |
| * When specifying function arguments via ``py::arg``, the test that verifies | |
| the number of arguments now runs at compile time. | |
| * Added ``[[noreturn]]`` attribute to ``pybind11_fail()`` to quench some | |
| compiler warnings | |
| * List function arguments in exception text when the dispatch code cannot find | |
| a matching overload | |
| * Added ``PYBIND11_OVERLOAD_NAME`` and ``PYBIND11_OVERLOAD_PURE_NAME`` macros which | |
| can be used to override virtual methods whose name differs in C++ and Python | |
| (e.g. ``__call__`` and ``operator()``) | |
| * Various minor ``iterator`` and ``make_iterator()`` improvements | |
| * Transparently support ``__bool__`` on Python 2.x and Python 3.x | |
| * Fixed issue with destructor of unpickled object not being called | |
| * Minor CMake build system improvements on Windows | |
| * New ``pybind11::args`` and ``pybind11::kwargs`` types to create functions which | |
| take an arbitrary number of arguments and keyword arguments | |
| * New syntax to call a Python function from C++ using ``*args`` and ``*kwargs`` | |
| * The functions ``def_property_*`` now correctly process docstring arguments (these | |
| formerly caused a segmentation fault) | |
| * Many ``mkdoc.py`` improvements (enumerations, template arguments, ``DOC()`` | |
| macro accepts more arguments) | |
| * Cygwin support | |
| * Documentation improvements (pickling support, ``keep_alive``, macro usage) | |
| 1.7 (April 30, 2016) | |
| ---------------------- | |
| * Added a new ``move`` return value policy that triggers C++11 move semantics. | |
| The automatic return value policy falls back to this case whenever a rvalue | |
| reference is encountered | |
| * Significantly more general GIL state routines that are used instead of | |
| Python's troublesome ``PyGILState_Ensure`` and ``PyGILState_Release`` API | |
| * Redesign of opaque types that drastically simplifies their usage | |
| * Extended ability to pass values of type ``[const] void *`` | |
| * ``keep_alive`` fix: don't fail when there is no patient | |
| * ``functional.h``: acquire the GIL before calling a Python function | |
| * Added Python RAII type wrappers ``none`` and ``iterable`` | |
| * Added ``*args`` and ``*kwargs`` pass-through parameters to | |
| ``pybind11.get_include()`` function | |
| * Iterator improvements and fixes | |
| * Documentation on return value policies and opaque types improved | |
| 1.6 (April 30, 2016) | |
| ---------------------- | |
| * Skipped due to upload to PyPI gone wrong and inability to recover | |
| (https://github.com/pypa/packaging-problems/issues/74) | |
| 1.5 (April 21, 2016) | |
| ---------------------- | |
| * For polymorphic types, use RTTI to try to return the closest type registered with pybind11 | |
| * Pickling support for serializing and unserializing C++ instances to a byte stream in Python | |
| * Added a convenience routine ``make_iterator()`` which turns a range indicated | |
| by a pair of C++ iterators into a iterable Python object | |
| * Added ``len()`` and a variadic ``make_tuple()`` function | |
| * Addressed a rare issue that could confuse the current virtual function | |
| dispatcher and another that could lead to crashes in multi-threaded | |
| applications | |
| * Added a ``get_include()`` function to the Python module that returns the path | |
| of the directory containing the installed pybind11 header files | |
| * Documentation improvements: import issues, symbol visibility, pickling, limitations | |
| * Added casting support for ``std::reference_wrapper<>`` | |
| 1.4 (April 7, 2016) | |
| -------------------------- | |
| * Transparent type conversion for ``std::wstring`` and ``wchar_t`` | |
| * Allow passing ``nullptr``-valued strings | |
| * Transparent passing of ``void *`` pointers using capsules | |
| * Transparent support for returning values wrapped in ``std::unique_ptr<>`` | |
| * Improved docstring generation for compatibility with Sphinx | |
| * Nicer debug error message when default parameter construction fails | |
| * Support for "opaque" types that bypass the transparent conversion layer for STL containers | |
| * Redesigned type casting interface to avoid ambiguities that could occasionally cause compiler errors | |
| * Redesigned property implementation; fixes crashes due to an unfortunate default return value policy | |
| * Anaconda package generation support | |
| 1.3 (March 8, 2016) | |
| -------------------------- | |
| * Added support for the Intel C++ compiler (v15+) | |
| * Added support for the STL unordered set/map data structures | |
| * Added support for the STL linked list data structure | |
| * NumPy-style broadcasting support in ``pybind11::vectorize`` | |
| * pybind11 now displays more verbose error messages when ``arg::operator=()`` fails | |
| * pybind11 internal data structures now live in a version-dependent namespace to avoid ABI issues | |
| * Many, many bugfixes involving corner cases and advanced usage | |
| 1.2 (February 7, 2016) | |
| -------------------------- | |
| * Optional: efficient generation of function signatures at compile time using C++14 | |
| * Switched to a simpler and more general way of dealing with function default | |
| arguments. Unused keyword arguments in function calls are now detected and | |
| cause errors as expected | |
| * New ``keep_alive`` call policy analogous to Boost.Python's ``with_custodian_and_ward`` | |
| * New ``pybind11::base<>`` attribute to indicate a subclass relationship | |
| * Improved interface for RAII type wrappers in ``pytypes.h`` | |
| * Use RAII type wrappers consistently within pybind11 itself. This | |
| fixes various potential refcount leaks when exceptions occur | |
| * Added new ``bytes`` RAII type wrapper (maps to ``string`` in Python 2.7) | |
| * Made handle and related RAII classes const correct, using them more | |
| consistently everywhere now | |
| * Got rid of the ugly ``__pybind11__`` attributes on the Python side---they are | |
| now stored in a C++ hash table that is not visible in Python | |
| * Fixed refcount leaks involving NumPy arrays and bound functions | |
| * Vastly improved handling of shared/smart pointers | |
| * Removed an unnecessary copy operation in ``pybind11::vectorize`` | |
| * Fixed naming clashes when both pybind11 and NumPy headers are included | |
| * Added conversions for additional exception types | |
| * Documentation improvements (using multiple extension modules, smart pointers, | |
| other minor clarifications) | |
| * unified infrastructure for parsing variadic arguments in ``class_`` and cpp_function | |
| * Fixed license text (was: ZLIB, should have been: 3-clause BSD) | |
| * Python 3.2 compatibility | |
| * Fixed remaining issues when accessing types in another plugin module | |
| * Added enum comparison and casting methods | |
| * Improved SFINAE-based detection of whether types are copy-constructible | |
| * Eliminated many warnings about unused variables and the use of ``offsetof()`` | |
| * Support for ``std::array<>`` conversions | |
| 1.1 (December 7, 2015) | |
| -------------------------- | |
| * Documentation improvements (GIL, wrapping functions, casting, fixed many typos) | |
| * Generalized conversion of integer types | |
| * Improved support for casting function objects | |
| * Improved support for ``std::shared_ptr<>`` conversions | |
| * Initial support for ``std::set<>`` conversions | |
| * Fixed type resolution issue for types defined in a separate plugin module | |
| * Cmake build system improvements | |
| * Factored out generic functionality to non-templated code (smaller code size) | |
| * Added a code size / compile time benchmark vs Boost.Python | |
| * Added an appveyor CI script | |
| 1.0 (October 15, 2015) | |
| ------------------------ | |
| * Initial release | |