Blame external/pybind11/docs/changelog.rst

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