changelog.rst revision 12391
111986Sandreas.sandberg@arm.com.. _changelog:
211986Sandreas.sandberg@arm.com
311986Sandreas.sandberg@arm.comChangelog
411986Sandreas.sandberg@arm.com#########
511986Sandreas.sandberg@arm.com
612037Sandreas.sandberg@arm.comStarting with version 1.8.0, pybind11 releases use a `semantic versioning
712037Sandreas.sandberg@arm.com<http://semver.org>`_ policy.
811986Sandreas.sandberg@arm.com
912391Sjason@lowepower.comv2.3.0 (Not yet released)
1012391Sjason@lowepower.com-----------------------------------------------------
1112391Sjason@lowepower.com
1212391Sjason@lowepower.com* TBD
1312391Sjason@lowepower.com
1412391Sjason@lowepower.comv2.2.1 (September 14, 2017)
1512391Sjason@lowepower.com-----------------------------------------------------
1612391Sjason@lowepower.com
1712391Sjason@lowepower.com* Added ``py::module::reload()`` member function for reloading a module.
1812391Sjason@lowepower.com  `#1040 <https://github.com/pybind/pybind11/pull/1040>`_.
1912391Sjason@lowepower.com
2012391Sjason@lowepower.com* Fixed a reference leak in the number converter.
2112391Sjason@lowepower.com  `#1078 <https://github.com/pybind/pybind11/pull/1078>`_.
2212391Sjason@lowepower.com
2312391Sjason@lowepower.com* Fixed compilation with Clang on host GCC < 5 (old libstdc++ which isn't fully
2412391Sjason@lowepower.com  C++11 compliant). `#1062 <https://github.com/pybind/pybind11/pull/1062>`_.
2512391Sjason@lowepower.com
2612391Sjason@lowepower.com* Fixed a regression where the automatic ``std::vector<bool>`` caster would
2712391Sjason@lowepower.com  fail to compile. The same fix also applies to any container which returns
2812391Sjason@lowepower.com  element proxies instead of references.
2912391Sjason@lowepower.com  `#1053 <https://github.com/pybind/pybind11/pull/1053>`_.
3012391Sjason@lowepower.com
3112391Sjason@lowepower.com* Fixed a regression where the ``py::keep_alive`` policy could not be applied
3212391Sjason@lowepower.com  to constructors. `#1065 <https://github.com/pybind/pybind11/pull/1065>`_.
3312391Sjason@lowepower.com
3412391Sjason@lowepower.com* Fixed a nullptr dereference when loading a ``py::module_local`` type
3512391Sjason@lowepower.com  that's only registered in an external module.
3612391Sjason@lowepower.com  `#1058 <https://github.com/pybind/pybind11/pull/1058>`_.
3712391Sjason@lowepower.com
3812391Sjason@lowepower.com* Fixed implicit conversion of accessors to types derived from ``py::object``.
3912391Sjason@lowepower.com  `#1076 <https://github.com/pybind/pybind11/pull/1076>`_.
4012391Sjason@lowepower.com
4112391Sjason@lowepower.com* The ``name`` in ``PYBIND11_MODULE(name, variable)`` can now be a macro.
4212391Sjason@lowepower.com  `#1082 <https://github.com/pybind/pybind11/pull/1082>`_.
4312391Sjason@lowepower.com
4412391Sjason@lowepower.com* Relaxed overly strict ``py::pickle()`` check for matching get and set types.
4512391Sjason@lowepower.com  `#1064 <https://github.com/pybind/pybind11/pull/1064>`_.
4612391Sjason@lowepower.com
4712391Sjason@lowepower.com* Conversion errors now try to be more informative when it's likely that
4812391Sjason@lowepower.com  a missing header is the cause (e.g. forgetting ``<pybind11/stl.h>``).
4912391Sjason@lowepower.com  `#1077 <https://github.com/pybind/pybind11/pull/1077>`_.
5012391Sjason@lowepower.com
5112391Sjason@lowepower.comv2.2.0 (August 31, 2017)
5212391Sjason@lowepower.com-----------------------------------------------------
5312391Sjason@lowepower.com
5412391Sjason@lowepower.com* Support for embedding the Python interpreter. See the
5512391Sjason@lowepower.com  :doc:`documentation page </advanced/embedding>` for a
5612391Sjason@lowepower.com  full overview of the new features.
5712391Sjason@lowepower.com  `#774 <https://github.com/pybind/pybind11/pull/774>`_,
5812391Sjason@lowepower.com  `#889 <https://github.com/pybind/pybind11/pull/889>`_,
5912391Sjason@lowepower.com  `#892 <https://github.com/pybind/pybind11/pull/892>`_,
6012391Sjason@lowepower.com  `#920 <https://github.com/pybind/pybind11/pull/920>`_.
6112391Sjason@lowepower.com
6212391Sjason@lowepower.com  .. code-block:: cpp
6312391Sjason@lowepower.com
6412391Sjason@lowepower.com      #include <pybind11/embed.h>
6512391Sjason@lowepower.com      namespace py = pybind11;
6612391Sjason@lowepower.com
6712391Sjason@lowepower.com      int main() {
6812391Sjason@lowepower.com          py::scoped_interpreter guard{}; // start the interpreter and keep it alive
6912391Sjason@lowepower.com
7012391Sjason@lowepower.com          py::print("Hello, World!"); // use the Python API
7112391Sjason@lowepower.com      }
7212391Sjason@lowepower.com
7312391Sjason@lowepower.com* Support for inheriting from multiple C++ bases in Python.
7412391Sjason@lowepower.com  `#693 <https://github.com/pybind/pybind11/pull/693>`_.
7512391Sjason@lowepower.com
7612391Sjason@lowepower.com  .. code-block:: python
7712391Sjason@lowepower.com
7812391Sjason@lowepower.com      from cpp_module import CppBase1, CppBase2
7912391Sjason@lowepower.com
8012391Sjason@lowepower.com      class PyDerived(CppBase1, CppBase2):
8112391Sjason@lowepower.com          def __init__(self):
8212391Sjason@lowepower.com              CppBase1.__init__(self)  # C++ bases must be initialized explicitly
8312391Sjason@lowepower.com              CppBase2.__init__(self)
8412391Sjason@lowepower.com
8512391Sjason@lowepower.com* ``PYBIND11_MODULE`` is now the preferred way to create module entry points.
8612391Sjason@lowepower.com  ``PYBIND11_PLUGIN`` is deprecated. See :ref:`macros` for details.
8712391Sjason@lowepower.com  `#879 <https://github.com/pybind/pybind11/pull/879>`_.
8812391Sjason@lowepower.com
8912391Sjason@lowepower.com  .. code-block:: cpp
9012391Sjason@lowepower.com
9112391Sjason@lowepower.com      // new
9212391Sjason@lowepower.com      PYBIND11_MODULE(example, m) {
9312391Sjason@lowepower.com          m.def("add", [](int a, int b) { return a + b; });
9412391Sjason@lowepower.com      }
9512391Sjason@lowepower.com
9612391Sjason@lowepower.com      // old
9712391Sjason@lowepower.com      PYBIND11_PLUGIN(example) {
9812391Sjason@lowepower.com          py::module m("example");
9912391Sjason@lowepower.com          m.def("add", [](int a, int b) { return a + b; });
10012391Sjason@lowepower.com          return m.ptr();
10112391Sjason@lowepower.com      }
10212391Sjason@lowepower.com
10312391Sjason@lowepower.com* pybind11's headers and build system now more strictly enforce hidden symbol
10412391Sjason@lowepower.com  visibility for extension modules. This should be seamless for most users,
10512391Sjason@lowepower.com  but see the :doc:`upgrade` if you use a custom build system.
10612391Sjason@lowepower.com  `#995 <https://github.com/pybind/pybind11/pull/995>`_.
10712391Sjason@lowepower.com
10812391Sjason@lowepower.com* Support for ``py::module_local`` types which allow multiple modules to
10912391Sjason@lowepower.com  export the same C++ types without conflicts. This is useful for opaque
11012391Sjason@lowepower.com  types like ``std::vector<int>``. ``py::bind_vector`` and ``py::bind_map``
11112391Sjason@lowepower.com  now default to ``py::module_local`` if their elements are builtins or
11212391Sjason@lowepower.com  local types. See :ref:`module_local` for details.
11312391Sjason@lowepower.com  `#949 <https://github.com/pybind/pybind11/pull/949>`_,
11412391Sjason@lowepower.com  `#981 <https://github.com/pybind/pybind11/pull/981>`_,
11512391Sjason@lowepower.com  `#995 <https://github.com/pybind/pybind11/pull/995>`_,
11612391Sjason@lowepower.com  `#997 <https://github.com/pybind/pybind11/pull/997>`_.
11712391Sjason@lowepower.com
11812391Sjason@lowepower.com* Custom constructors can now be added very easily using lambdas or factory
11912391Sjason@lowepower.com  functions which return a class instance by value, pointer or holder. This
12012391Sjason@lowepower.com  supersedes the old placement-new ``__init__`` technique.
12112391Sjason@lowepower.com  See :ref:`custom_constructors` for details.
12212391Sjason@lowepower.com  `#805 <https://github.com/pybind/pybind11/pull/805>`_,
12312391Sjason@lowepower.com  `#1014 <https://github.com/pybind/pybind11/pull/1014>`_.
12412391Sjason@lowepower.com
12512391Sjason@lowepower.com  .. code-block:: cpp
12612391Sjason@lowepower.com
12712391Sjason@lowepower.com      struct Example {
12812391Sjason@lowepower.com          Example(std::string);
12912391Sjason@lowepower.com      };
13012391Sjason@lowepower.com
13112391Sjason@lowepower.com      py::class_<Example>(m, "Example")
13212391Sjason@lowepower.com          .def(py::init<std::string>()) // existing constructor
13312391Sjason@lowepower.com          .def(py::init([](int n) { // custom constructor
13412391Sjason@lowepower.com              return std::make_unique<Example>(std::to_string(n));
13512391Sjason@lowepower.com          }));
13612391Sjason@lowepower.com
13712391Sjason@lowepower.com* Similarly to custom constructors, pickling support functions are now bound
13812391Sjason@lowepower.com  using the ``py::pickle()`` adaptor which improves type safety. See the
13912391Sjason@lowepower.com  :doc:`upgrade` and :ref:`pickling` for details.
14012391Sjason@lowepower.com  `#1038 <https://github.com/pybind/pybind11/pull/1038>`_.
14112391Sjason@lowepower.com
14212391Sjason@lowepower.com* Builtin support for converting C++17 standard library types and general
14312391Sjason@lowepower.com  conversion improvements:
14412391Sjason@lowepower.com
14512391Sjason@lowepower.com  1. C++17 ``std::variant`` is supported right out of the box. C++11/14
14612391Sjason@lowepower.com     equivalents (e.g. ``boost::variant``) can also be added with a simple
14712391Sjason@lowepower.com     user-defined specialization. See :ref:`cpp17_container_casters` for details.
14812391Sjason@lowepower.com     `#811 <https://github.com/pybind/pybind11/pull/811>`_,
14912391Sjason@lowepower.com     `#845 <https://github.com/pybind/pybind11/pull/845>`_,
15012391Sjason@lowepower.com     `#989 <https://github.com/pybind/pybind11/pull/989>`_.
15112391Sjason@lowepower.com
15212391Sjason@lowepower.com  2. Out-of-the-box support for C++17 ``std::string_view``.
15312391Sjason@lowepower.com     `#906 <https://github.com/pybind/pybind11/pull/906>`_.
15412391Sjason@lowepower.com
15512391Sjason@lowepower.com  3. Improved compatibility of the builtin ``optional`` converter.
15612391Sjason@lowepower.com     `#874 <https://github.com/pybind/pybind11/pull/874>`_.
15712391Sjason@lowepower.com
15812391Sjason@lowepower.com  4. The ``bool`` converter now accepts ``numpy.bool_`` and types which
15912391Sjason@lowepower.com     define ``__bool__`` (Python 3.x) or ``__nonzero__`` (Python 2.7).
16012391Sjason@lowepower.com     `#925 <https://github.com/pybind/pybind11/pull/925>`_.
16112391Sjason@lowepower.com
16212391Sjason@lowepower.com  5. C++-to-Python casters are now more efficient and move elements out
16312391Sjason@lowepower.com     of rvalue containers whenever possible.
16412391Sjason@lowepower.com     `#851 <https://github.com/pybind/pybind11/pull/851>`_,
16512391Sjason@lowepower.com     `#936 <https://github.com/pybind/pybind11/pull/936>`_,
16612391Sjason@lowepower.com     `#938 <https://github.com/pybind/pybind11/pull/938>`_.
16712391Sjason@lowepower.com
16812391Sjason@lowepower.com  6. Fixed ``bytes`` to ``std::string/char*`` conversion on Python 3.
16912391Sjason@lowepower.com     `#817 <https://github.com/pybind/pybind11/pull/817>`_.
17012391Sjason@lowepower.com
17112391Sjason@lowepower.com  7. Fixed lifetime of temporary C++ objects created in Python-to-C++ conversions.
17212391Sjason@lowepower.com     `#924 <https://github.com/pybind/pybind11/pull/924>`_.
17312391Sjason@lowepower.com
17412391Sjason@lowepower.com* Scope guard call policy for RAII types, e.g. ``py::call_guard<py::gil_scoped_release>()``,
17512391Sjason@lowepower.com  ``py::call_guard<py::scoped_ostream_redirect>()``. See :ref:`call_policies` for details.
17612391Sjason@lowepower.com  `#740 <https://github.com/pybind/pybind11/pull/740>`_.
17712391Sjason@lowepower.com
17812391Sjason@lowepower.com* Utility for redirecting C++ streams to Python (e.g. ``std::cout`` ->
17912391Sjason@lowepower.com  ``sys.stdout``). Scope guard ``py::scoped_ostream_redirect`` in C++ and
18012391Sjason@lowepower.com  a context manager in Python. See :ref:`ostream_redirect`.
18112391Sjason@lowepower.com  `#1009 <https://github.com/pybind/pybind11/pull/1009>`_.
18212391Sjason@lowepower.com
18312391Sjason@lowepower.com* Improved handling of types and exceptions across module boundaries.
18412391Sjason@lowepower.com  `#915 <https://github.com/pybind/pybind11/pull/915>`_,
18512391Sjason@lowepower.com  `#951 <https://github.com/pybind/pybind11/pull/951>`_,
18612391Sjason@lowepower.com  `#995 <https://github.com/pybind/pybind11/pull/995>`_.
18712391Sjason@lowepower.com
18812391Sjason@lowepower.com* Fixed destruction order of ``py::keep_alive`` nurse/patient objects
18912391Sjason@lowepower.com  in reference cycles.
19012391Sjason@lowepower.com  `#856 <https://github.com/pybind/pybind11/pull/856>`_.
19112391Sjason@lowepower.com
19212391Sjason@lowepower.com* Numpy and buffer protocol related improvements:
19312391Sjason@lowepower.com
19412391Sjason@lowepower.com  1. Support for negative strides in Python buffer objects/numpy arrays. This
19512391Sjason@lowepower.com     required changing integers from unsigned to signed for the related C++ APIs.
19612391Sjason@lowepower.com     Note: If you have compiler warnings enabled, you may notice some new conversion
19712391Sjason@lowepower.com     warnings after upgrading. These can be resolved with ``static_cast``.
19812391Sjason@lowepower.com     `#782 <https://github.com/pybind/pybind11/pull/782>`_.
19912391Sjason@lowepower.com
20012391Sjason@lowepower.com  2. Support ``std::complex`` and arrays inside ``PYBIND11_NUMPY_DTYPE``.
20112391Sjason@lowepower.com     `#831 <https://github.com/pybind/pybind11/pull/831>`_,
20212391Sjason@lowepower.com     `#832 <https://github.com/pybind/pybind11/pull/832>`_.
20312391Sjason@lowepower.com
20412391Sjason@lowepower.com  3. Support for constructing ``py::buffer_info`` and ``py::arrays`` using
20512391Sjason@lowepower.com     arbitrary containers or iterators instead of requiring a ``std::vector``.
20612391Sjason@lowepower.com     `#788 <https://github.com/pybind/pybind11/pull/788>`_,
20712391Sjason@lowepower.com     `#822 <https://github.com/pybind/pybind11/pull/822>`_,
20812391Sjason@lowepower.com     `#860 <https://github.com/pybind/pybind11/pull/860>`_.
20912391Sjason@lowepower.com
21012391Sjason@lowepower.com  4. Explicitly check numpy version and require >= 1.7.0.
21112391Sjason@lowepower.com     `#819 <https://github.com/pybind/pybind11/pull/819>`_.
21212391Sjason@lowepower.com
21312391Sjason@lowepower.com* Support for allowing/prohibiting ``None`` for specific arguments and improved
21412391Sjason@lowepower.com  ``None`` overload resolution order. See :ref:`none_arguments` for details.
21512391Sjason@lowepower.com  `#843 <https://github.com/pybind/pybind11/pull/843>`_.
21612391Sjason@lowepower.com  `#859 <https://github.com/pybind/pybind11/pull/859>`_.
21712391Sjason@lowepower.com
21812391Sjason@lowepower.com* Added ``py::exec()`` as a shortcut for ``py::eval<py::eval_statements>()``
21912391Sjason@lowepower.com  and support for C++11 raw string literals as input. See :ref:`eval`.
22012391Sjason@lowepower.com  `#766 <https://github.com/pybind/pybind11/pull/766>`_,
22112391Sjason@lowepower.com  `#827 <https://github.com/pybind/pybind11/pull/827>`_.
22212391Sjason@lowepower.com
22312391Sjason@lowepower.com* ``py::vectorize()`` ignores non-vectorizable arguments and supports
22412391Sjason@lowepower.com  member functions.
22512391Sjason@lowepower.com  `#762 <https://github.com/pybind/pybind11/pull/762>`_.
22612391Sjason@lowepower.com
22712391Sjason@lowepower.com* Support for bound methods as callbacks (``pybind11/functional.h``).
22812391Sjason@lowepower.com  `#815 <https://github.com/pybind/pybind11/pull/815>`_.
22912391Sjason@lowepower.com
23012391Sjason@lowepower.com* Allow aliasing pybind11 methods: ``cls.attr("foo") = cls.attr("bar")``.
23112391Sjason@lowepower.com  `#802 <https://github.com/pybind/pybind11/pull/802>`_.
23212391Sjason@lowepower.com
23312391Sjason@lowepower.com* Don't allow mixed static/non-static overloads.
23412391Sjason@lowepower.com  `#804 <https://github.com/pybind/pybind11/pull/804>`_.
23512391Sjason@lowepower.com
23612391Sjason@lowepower.com* Fixed overriding static properties in derived classes.
23712391Sjason@lowepower.com  `#784 <https://github.com/pybind/pybind11/pull/784>`_.
23812391Sjason@lowepower.com
23912391Sjason@lowepower.com* Improved deduction of member functions of a derived class when its bases
24012391Sjason@lowepower.com  aren't registered with pybind11.
24112391Sjason@lowepower.com  `#855 <https://github.com/pybind/pybind11/pull/855>`_.
24212391Sjason@lowepower.com
24312391Sjason@lowepower.com  .. code-block:: cpp
24412391Sjason@lowepower.com
24512391Sjason@lowepower.com      struct Base {
24612391Sjason@lowepower.com          int foo() { return 42; }
24712391Sjason@lowepower.com      }
24812391Sjason@lowepower.com
24912391Sjason@lowepower.com      struct Derived : Base {}
25012391Sjason@lowepower.com
25112391Sjason@lowepower.com      // Now works, but previously required also binding `Base`
25212391Sjason@lowepower.com      py::class_<Derived>(m, "Derived")
25312391Sjason@lowepower.com          .def("foo", &Derived::foo); // function is actually from `Base`
25412391Sjason@lowepower.com
25512391Sjason@lowepower.com* The implementation of ``py::init<>`` now uses C++11 brace initialization
25612391Sjason@lowepower.com  syntax to construct instances, which permits binding implicit constructors of
25712391Sjason@lowepower.com  aggregate types. `#1015 <https://github.com/pybind/pybind11/pull/1015>`_.
25812391Sjason@lowepower.com
25912391Sjason@lowepower.com    .. code-block:: cpp
26012391Sjason@lowepower.com
26112391Sjason@lowepower.com        struct Aggregate {
26212391Sjason@lowepower.com            int a;
26312391Sjason@lowepower.com            std::string b;
26412391Sjason@lowepower.com        };
26512391Sjason@lowepower.com
26612391Sjason@lowepower.com        py::class_<Aggregate>(m, "Aggregate")
26712391Sjason@lowepower.com            .def(py::init<int, const std::string &>());
26812391Sjason@lowepower.com
26912391Sjason@lowepower.com* Fixed issues with multiple inheritance with offset base/derived pointers.
27012391Sjason@lowepower.com  `#812 <https://github.com/pybind/pybind11/pull/812>`_,
27112391Sjason@lowepower.com  `#866 <https://github.com/pybind/pybind11/pull/866>`_,
27212391Sjason@lowepower.com  `#960 <https://github.com/pybind/pybind11/pull/960>`_.
27312391Sjason@lowepower.com
27412391Sjason@lowepower.com* Fixed reference leak of type objects.
27512391Sjason@lowepower.com  `#1030 <https://github.com/pybind/pybind11/pull/1030>`_.
27612391Sjason@lowepower.com
27712391Sjason@lowepower.com* Improved support for the ``/std:c++14`` and ``/std:c++latest`` modes
27812391Sjason@lowepower.com  on MSVC 2017.
27912391Sjason@lowepower.com  `#841 <https://github.com/pybind/pybind11/pull/841>`_,
28012391Sjason@lowepower.com  `#999 <https://github.com/pybind/pybind11/pull/999>`_.
28112391Sjason@lowepower.com
28212391Sjason@lowepower.com* Fixed detection of private operator new on MSVC.
28312391Sjason@lowepower.com  `#893 <https://github.com/pybind/pybind11/pull/893>`_,
28412391Sjason@lowepower.com  `#918 <https://github.com/pybind/pybind11/pull/918>`_.
28512391Sjason@lowepower.com
28612391Sjason@lowepower.com* Intel C++ compiler compatibility fixes.
28712391Sjason@lowepower.com  `#937 <https://github.com/pybind/pybind11/pull/937>`_.
28812391Sjason@lowepower.com
28912391Sjason@lowepower.com* Fixed implicit conversion of `py::enum_` to integer types on Python 2.7.
29012391Sjason@lowepower.com  `#821 <https://github.com/pybind/pybind11/pull/821>`_.
29112391Sjason@lowepower.com
29212391Sjason@lowepower.com* Added ``py::hash`` to fetch the hash value of Python objects, and
29312391Sjason@lowepower.com  ``.def(hash(py::self))`` to provide the C++ ``std::hash`` as the Python
29412391Sjason@lowepower.com  ``__hash__`` method.
29512391Sjason@lowepower.com  `#1034 <https://github.com/pybind/pybind11/pull/1034>`_.
29612391Sjason@lowepower.com
29712391Sjason@lowepower.com* Fixed ``__truediv__`` on Python 2 and ``__itruediv__`` on Python 3.
29812391Sjason@lowepower.com  `#867 <https://github.com/pybind/pybind11/pull/867>`_.
29912391Sjason@lowepower.com
30012391Sjason@lowepower.com* ``py::capsule`` objects now support the ``name`` attribute. This is useful
30112391Sjason@lowepower.com  for interfacing with ``scipy.LowLevelCallable``.
30212391Sjason@lowepower.com  `#902 <https://github.com/pybind/pybind11/pull/902>`_.
30312391Sjason@lowepower.com
30412391Sjason@lowepower.com* Fixed ``py::make_iterator``'s ``__next__()`` for past-the-end calls.
30512391Sjason@lowepower.com  `#897 <https://github.com/pybind/pybind11/pull/897>`_.
30612391Sjason@lowepower.com
30712391Sjason@lowepower.com* Added ``error_already_set::matches()`` for checking Python exceptions.
30812391Sjason@lowepower.com  `#772 <https://github.com/pybind/pybind11/pull/772>`_.
30912391Sjason@lowepower.com
31012391Sjason@lowepower.com* Deprecated ``py::error_already_set::clear()``. It's no longer needed
31112391Sjason@lowepower.com  following a simplification of the ``py::error_already_set`` class.
31212391Sjason@lowepower.com  `#954 <https://github.com/pybind/pybind11/pull/954>`_.
31312391Sjason@lowepower.com
31412391Sjason@lowepower.com* Deprecated ``py::handle::operator==()`` in favor of ``py::handle::is()``
31512391Sjason@lowepower.com  `#825 <https://github.com/pybind/pybind11/pull/825>`_.
31612391Sjason@lowepower.com
31712391Sjason@lowepower.com* Deprecated ``py::object::borrowed``/``py::object::stolen``.
31812391Sjason@lowepower.com  Use ``py::object::borrowed_t{}``/``py::object::stolen_t{}`` instead.
31912391Sjason@lowepower.com  `#771 <https://github.com/pybind/pybind11/pull/771>`_.
32012391Sjason@lowepower.com
32112391Sjason@lowepower.com* Changed internal data structure versioning to avoid conflicts between
32212391Sjason@lowepower.com  modules compiled with different revisions of pybind11.
32312391Sjason@lowepower.com  `#1012 <https://github.com/pybind/pybind11/pull/1012>`_.
32412391Sjason@lowepower.com
32512391Sjason@lowepower.com* Additional compile-time and run-time error checking and more informative messages.
32612391Sjason@lowepower.com  `#786 <https://github.com/pybind/pybind11/pull/786>`_,
32712391Sjason@lowepower.com  `#794 <https://github.com/pybind/pybind11/pull/794>`_,
32812391Sjason@lowepower.com  `#803 <https://github.com/pybind/pybind11/pull/803>`_.
32912391Sjason@lowepower.com
33012391Sjason@lowepower.com* Various minor improvements and fixes.
33112391Sjason@lowepower.com  `#764 <https://github.com/pybind/pybind11/pull/764>`_,
33212391Sjason@lowepower.com  `#791 <https://github.com/pybind/pybind11/pull/791>`_,
33312391Sjason@lowepower.com  `#795 <https://github.com/pybind/pybind11/pull/795>`_,
33412391Sjason@lowepower.com  `#840 <https://github.com/pybind/pybind11/pull/840>`_,
33512391Sjason@lowepower.com  `#844 <https://github.com/pybind/pybind11/pull/844>`_,
33612391Sjason@lowepower.com  `#846 <https://github.com/pybind/pybind11/pull/846>`_,
33712391Sjason@lowepower.com  `#849 <https://github.com/pybind/pybind11/pull/849>`_,
33812391Sjason@lowepower.com  `#858 <https://github.com/pybind/pybind11/pull/858>`_,
33912391Sjason@lowepower.com  `#862 <https://github.com/pybind/pybind11/pull/862>`_,
34012391Sjason@lowepower.com  `#871 <https://github.com/pybind/pybind11/pull/871>`_,
34112391Sjason@lowepower.com  `#872 <https://github.com/pybind/pybind11/pull/872>`_,
34212391Sjason@lowepower.com  `#881 <https://github.com/pybind/pybind11/pull/881>`_,
34312391Sjason@lowepower.com  `#888 <https://github.com/pybind/pybind11/pull/888>`_,
34412391Sjason@lowepower.com  `#899 <https://github.com/pybind/pybind11/pull/899>`_,
34512391Sjason@lowepower.com  `#928 <https://github.com/pybind/pybind11/pull/928>`_,
34612391Sjason@lowepower.com  `#931 <https://github.com/pybind/pybind11/pull/931>`_,
34712391Sjason@lowepower.com  `#944 <https://github.com/pybind/pybind11/pull/944>`_,
34812391Sjason@lowepower.com  `#950 <https://github.com/pybind/pybind11/pull/950>`_,
34912391Sjason@lowepower.com  `#952 <https://github.com/pybind/pybind11/pull/952>`_,
35012391Sjason@lowepower.com  `#962 <https://github.com/pybind/pybind11/pull/962>`_,
35112391Sjason@lowepower.com  `#965 <https://github.com/pybind/pybind11/pull/965>`_,
35212391Sjason@lowepower.com  `#970 <https://github.com/pybind/pybind11/pull/970>`_,
35312391Sjason@lowepower.com  `#978 <https://github.com/pybind/pybind11/pull/978>`_,
35412391Sjason@lowepower.com  `#979 <https://github.com/pybind/pybind11/pull/979>`_,
35512391Sjason@lowepower.com  `#986 <https://github.com/pybind/pybind11/pull/986>`_,
35612391Sjason@lowepower.com  `#1020 <https://github.com/pybind/pybind11/pull/1020>`_,
35712391Sjason@lowepower.com  `#1027 <https://github.com/pybind/pybind11/pull/1027>`_,
35812391Sjason@lowepower.com  `#1037 <https://github.com/pybind/pybind11/pull/1037>`_.
35912391Sjason@lowepower.com
36012391Sjason@lowepower.com* Testing improvements.
36112391Sjason@lowepower.com  `#798 <https://github.com/pybind/pybind11/pull/798>`_,
36212391Sjason@lowepower.com  `#882 <https://github.com/pybind/pybind11/pull/882>`_,
36312391Sjason@lowepower.com  `#898 <https://github.com/pybind/pybind11/pull/898>`_,
36412391Sjason@lowepower.com  `#900 <https://github.com/pybind/pybind11/pull/900>`_,
36512391Sjason@lowepower.com  `#921 <https://github.com/pybind/pybind11/pull/921>`_,
36612391Sjason@lowepower.com  `#923 <https://github.com/pybind/pybind11/pull/923>`_,
36712391Sjason@lowepower.com  `#963 <https://github.com/pybind/pybind11/pull/963>`_.
36812037Sandreas.sandberg@arm.com
36912037Sandreas.sandberg@arm.comv2.1.1 (April 7, 2017)
37011986Sandreas.sandberg@arm.com-----------------------------------------------------
37111986Sandreas.sandberg@arm.com
37212037Sandreas.sandberg@arm.com* Fixed minimum version requirement for MSVC 2015u3
37312037Sandreas.sandberg@arm.com  `#773 <https://github.com/pybind/pybind11/pull/773>`_.
37411986Sandreas.sandberg@arm.com
37512037Sandreas.sandberg@arm.comv2.1.0 (March 22, 2017)
37612037Sandreas.sandberg@arm.com-----------------------------------------------------
37712037Sandreas.sandberg@arm.com
37812037Sandreas.sandberg@arm.com* pybind11 now performs function overload resolution in two phases. The first
37912037Sandreas.sandberg@arm.com  phase only considers exact type matches, while the second allows for implicit
38012037Sandreas.sandberg@arm.com  conversions to take place. A special ``noconvert()`` syntax can be used to
38112037Sandreas.sandberg@arm.com  completely disable implicit conversions for specific arguments.
38212037Sandreas.sandberg@arm.com  `#643 <https://github.com/pybind/pybind11/pull/643>`_,
38312037Sandreas.sandberg@arm.com  `#634 <https://github.com/pybind/pybind11/pull/634>`_,
38412037Sandreas.sandberg@arm.com  `#650 <https://github.com/pybind/pybind11/pull/650>`_.
38512037Sandreas.sandberg@arm.com
38612037Sandreas.sandberg@arm.com* Fixed a regression where static properties no longer worked with classes
38712037Sandreas.sandberg@arm.com  using multiple inheritance. The ``py::metaclass`` attribute is no longer
38812037Sandreas.sandberg@arm.com  necessary (and deprecated as of this release) when binding classes with
38912037Sandreas.sandberg@arm.com  static properties.
39012037Sandreas.sandberg@arm.com  `#679 <https://github.com/pybind/pybind11/pull/679>`_,
39112037Sandreas.sandberg@arm.com
39212037Sandreas.sandberg@arm.com* Classes bound using ``pybind11`` can now use custom metaclasses.
39312037Sandreas.sandberg@arm.com  `#679 <https://github.com/pybind/pybind11/pull/679>`_,
39412037Sandreas.sandberg@arm.com
39512037Sandreas.sandberg@arm.com* ``py::args`` and ``py::kwargs`` can now be mixed with other positional
39612037Sandreas.sandberg@arm.com  arguments when binding functions using pybind11.
39712037Sandreas.sandberg@arm.com  `#611 <https://github.com/pybind/pybind11/pull/611>`_.
39812037Sandreas.sandberg@arm.com
39912037Sandreas.sandberg@arm.com* Improved support for C++11 unicode string and character types; added
40012037Sandreas.sandberg@arm.com  extensive documentation regarding pybind11's string conversion behavior.
40112037Sandreas.sandberg@arm.com  `#624 <https://github.com/pybind/pybind11/pull/624>`_,
40212037Sandreas.sandberg@arm.com  `#636 <https://github.com/pybind/pybind11/pull/636>`_,
40312037Sandreas.sandberg@arm.com  `#715 <https://github.com/pybind/pybind11/pull/715>`_.
40412037Sandreas.sandberg@arm.com
40512037Sandreas.sandberg@arm.com* pybind11 can now avoid expensive copies when converting Eigen arrays to NumPy
40612037Sandreas.sandberg@arm.com  arrays (and vice versa). `#610 <https://github.com/pybind/pybind11/pull/610>`_.
40712037Sandreas.sandberg@arm.com
40812037Sandreas.sandberg@arm.com* The "fast path" in ``py::vectorize`` now works for any full-size group of C or
40912037Sandreas.sandberg@arm.com  F-contiguous arrays. The non-fast path is also faster since it no longer performs
41012037Sandreas.sandberg@arm.com  copies of the input arguments (except when type conversions are necessary).
41112037Sandreas.sandberg@arm.com  `#610 <https://github.com/pybind/pybind11/pull/610>`_.
41212037Sandreas.sandberg@arm.com
41312037Sandreas.sandberg@arm.com* Added fast, unchecked access to NumPy arrays via a proxy object.
41412037Sandreas.sandberg@arm.com  `#746 <https://github.com/pybind/pybind11/pull/746>`_.
41512037Sandreas.sandberg@arm.com
41612037Sandreas.sandberg@arm.com* Transparent support for class-specific ``operator new`` and
41712037Sandreas.sandberg@arm.com  ``operator delete`` implementations.
41812037Sandreas.sandberg@arm.com  `#755 <https://github.com/pybind/pybind11/pull/755>`_.
41912037Sandreas.sandberg@arm.com
42012037Sandreas.sandberg@arm.com* Slimmer and more efficient STL-compatible iterator interface for sequence types.
42112037Sandreas.sandberg@arm.com  `#662 <https://github.com/pybind/pybind11/pull/662>`_.
42212037Sandreas.sandberg@arm.com
42312037Sandreas.sandberg@arm.com* Improved custom holder type support.
42412037Sandreas.sandberg@arm.com  `#607 <https://github.com/pybind/pybind11/pull/607>`_.
42512037Sandreas.sandberg@arm.com
42612037Sandreas.sandberg@arm.com* ``nullptr`` to ``None`` conversion fixed in various builtin type casters.
42712037Sandreas.sandberg@arm.com  `#732 <https://github.com/pybind/pybind11/pull/732>`_.
42812037Sandreas.sandberg@arm.com
42912037Sandreas.sandberg@arm.com* ``enum_`` now exposes its members via a special ``__members__`` attribute.
43012037Sandreas.sandberg@arm.com  `#666 <https://github.com/pybind/pybind11/pull/666>`_.
43112037Sandreas.sandberg@arm.com
43212037Sandreas.sandberg@arm.com* ``std::vector`` bindings created using ``stl_bind.h`` can now optionally
43312037Sandreas.sandberg@arm.com  implement the buffer protocol. `#488 <https://github.com/pybind/pybind11/pull/488>`_.
43412037Sandreas.sandberg@arm.com
43512037Sandreas.sandberg@arm.com* Automated C++ reference documentation using doxygen and breathe.
43612037Sandreas.sandberg@arm.com  `#598 <https://github.com/pybind/pybind11/pull/598>`_.
43712037Sandreas.sandberg@arm.com
43812037Sandreas.sandberg@arm.com* Added minimum compiler version assertions.
43912037Sandreas.sandberg@arm.com  `#727 <https://github.com/pybind/pybind11/pull/727>`_.
44012037Sandreas.sandberg@arm.com
44112037Sandreas.sandberg@arm.com* Improved compatibility with C++1z.
44212037Sandreas.sandberg@arm.com  `#677 <https://github.com/pybind/pybind11/pull/677>`_.
44312037Sandreas.sandberg@arm.com
44412037Sandreas.sandberg@arm.com* Improved ``py::capsule`` API. Can be used to implement cleanup
44512037Sandreas.sandberg@arm.com  callbacks that are involved at module destruction time.
44612037Sandreas.sandberg@arm.com  `#752 <https://github.com/pybind/pybind11/pull/752>`_.
44712037Sandreas.sandberg@arm.com
44812037Sandreas.sandberg@arm.com* Various minor improvements and fixes.
44912037Sandreas.sandberg@arm.com  `#595 <https://github.com/pybind/pybind11/pull/595>`_,
45012037Sandreas.sandberg@arm.com  `#588 <https://github.com/pybind/pybind11/pull/588>`_,
45112037Sandreas.sandberg@arm.com  `#589 <https://github.com/pybind/pybind11/pull/589>`_,
45212037Sandreas.sandberg@arm.com  `#603 <https://github.com/pybind/pybind11/pull/603>`_,
45312037Sandreas.sandberg@arm.com  `#619 <https://github.com/pybind/pybind11/pull/619>`_,
45412037Sandreas.sandberg@arm.com  `#648 <https://github.com/pybind/pybind11/pull/648>`_,
45512037Sandreas.sandberg@arm.com  `#695 <https://github.com/pybind/pybind11/pull/695>`_,
45612037Sandreas.sandberg@arm.com  `#720 <https://github.com/pybind/pybind11/pull/720>`_,
45712037Sandreas.sandberg@arm.com  `#723 <https://github.com/pybind/pybind11/pull/723>`_,
45812037Sandreas.sandberg@arm.com  `#729 <https://github.com/pybind/pybind11/pull/729>`_,
45912037Sandreas.sandberg@arm.com  `#724 <https://github.com/pybind/pybind11/pull/724>`_,
46012037Sandreas.sandberg@arm.com  `#742 <https://github.com/pybind/pybind11/pull/742>`_,
46112037Sandreas.sandberg@arm.com  `#753 <https://github.com/pybind/pybind11/pull/753>`_.
46212037Sandreas.sandberg@arm.com
46312037Sandreas.sandberg@arm.comv2.0.1 (Jan 4, 2017)
46412037Sandreas.sandberg@arm.com-----------------------------------------------------
46512037Sandreas.sandberg@arm.com
46612037Sandreas.sandberg@arm.com* Fix pointer to reference error in type_caster on MSVC
46712037Sandreas.sandberg@arm.com  `#583 <https://github.com/pybind/pybind11/pull/583>`_.
46812037Sandreas.sandberg@arm.com
46912037Sandreas.sandberg@arm.com* Fixed a segmentation in the test suite due to a typo
47012037Sandreas.sandberg@arm.com  `cd7eac <https://github.com/pybind/pybind11/commit/cd7eac>`_.
47112037Sandreas.sandberg@arm.com
47212037Sandreas.sandberg@arm.comv2.0.0 (Jan 1, 2017)
47312037Sandreas.sandberg@arm.com-----------------------------------------------------
47412037Sandreas.sandberg@arm.com
47512037Sandreas.sandberg@arm.com* Fixed a reference counting regression affecting types with custom metaclasses
47612037Sandreas.sandberg@arm.com  (introduced in v2.0.0-rc1).
47712037Sandreas.sandberg@arm.com  `#571 <https://github.com/pybind/pybind11/pull/571>`_.
47812037Sandreas.sandberg@arm.com
47912037Sandreas.sandberg@arm.com* Quenched a CMake policy warning.
48012037Sandreas.sandberg@arm.com  `#570 <https://github.com/pybind/pybind11/pull/570>`_.
48112037Sandreas.sandberg@arm.com
48212037Sandreas.sandberg@arm.comv2.0.0-rc1 (Dec 23, 2016)
48312037Sandreas.sandberg@arm.com-----------------------------------------------------
48412037Sandreas.sandberg@arm.com
48512037Sandreas.sandberg@arm.comThe pybind11 developers are excited to issue a release candidate of pybind11
48612037Sandreas.sandberg@arm.comwith a subsequent v2.0.0 release planned in early January next year.
48712037Sandreas.sandberg@arm.com
48812037Sandreas.sandberg@arm.comAn incredible amount of effort by went into pybind11 over the last ~5 months,
48912037Sandreas.sandberg@arm.comleading to a release that is jam-packed with exciting new features and numerous
49012037Sandreas.sandberg@arm.comusability improvements. The following list links PRs or individual commits
49112037Sandreas.sandberg@arm.comwhenever applicable.
49212037Sandreas.sandberg@arm.com
49312037Sandreas.sandberg@arm.comHappy Christmas!
49412037Sandreas.sandberg@arm.com
49512037Sandreas.sandberg@arm.com* Support for binding C++ class hierarchies that make use of multiple
49612037Sandreas.sandberg@arm.com  inheritance. `#410 <https://github.com/pybind/pybind11/pull/410>`_.
49712037Sandreas.sandberg@arm.com
49812037Sandreas.sandberg@arm.com* PyPy support: pybind11 now supports nightly builds of PyPy and will
49912037Sandreas.sandberg@arm.com  interoperate with the future 5.7 release. No code changes are necessary,
50012037Sandreas.sandberg@arm.com  everything "just" works as usual. Note that we only target the Python 2.7
50112037Sandreas.sandberg@arm.com  branch for now; support for 3.x will be added once its ``cpyext`` extension
50212037Sandreas.sandberg@arm.com  support catches up. A few minor features remain unsupported for the time
50312037Sandreas.sandberg@arm.com  being (notably dynamic attributes in custom types).
50412037Sandreas.sandberg@arm.com  `#527 <https://github.com/pybind/pybind11/pull/527>`_.
50512037Sandreas.sandberg@arm.com
50612037Sandreas.sandberg@arm.com* Significant work on the documentation -- in particular, the monolitic
50712037Sandreas.sandberg@arm.com  ``advanced.rst`` file was restructured into a easier to read hierarchical
50812037Sandreas.sandberg@arm.com  organization. `#448 <https://github.com/pybind/pybind11/pull/448>`_.
50912037Sandreas.sandberg@arm.com
51012037Sandreas.sandberg@arm.com* Many NumPy-related improvements:
51112037Sandreas.sandberg@arm.com
51212037Sandreas.sandberg@arm.com  1. Object-oriented API to access and modify NumPy ``ndarray`` instances,
51312037Sandreas.sandberg@arm.com     replicating much of the corresponding NumPy C API functionality.
51412037Sandreas.sandberg@arm.com     `#402 <https://github.com/pybind/pybind11/pull/402>`_.
51512037Sandreas.sandberg@arm.com
51612037Sandreas.sandberg@arm.com  2. NumPy array ``dtype`` array descriptors are now first-class citizens and
51712037Sandreas.sandberg@arm.com     are exposed via a new class ``py::dtype``.
51812037Sandreas.sandberg@arm.com
51912037Sandreas.sandberg@arm.com  3. Structured dtypes can be registered using the ``PYBIND11_NUMPY_DTYPE()``
52012037Sandreas.sandberg@arm.com     macro. Special ``array`` constructors accepting dtype objects were also
52112037Sandreas.sandberg@arm.com     added.
52212037Sandreas.sandberg@arm.com
52312037Sandreas.sandberg@arm.com     One potential caveat involving this change: format descriptor strings
52412037Sandreas.sandberg@arm.com     should now be accessed via ``format_descriptor::format()`` (however, for
52512037Sandreas.sandberg@arm.com     compatibility purposes, the old syntax ``format_descriptor::value`` will
52612037Sandreas.sandberg@arm.com     still work for non-structured data types). `#308
52712037Sandreas.sandberg@arm.com     <https://github.com/pybind/pybind11/pull/308>`_.
52812037Sandreas.sandberg@arm.com
52912037Sandreas.sandberg@arm.com  4. Further improvements to support structured dtypes throughout the system.
53012037Sandreas.sandberg@arm.com     `#472 <https://github.com/pybind/pybind11/pull/472>`_,
53112037Sandreas.sandberg@arm.com     `#474 <https://github.com/pybind/pybind11/pull/474>`_,
53212037Sandreas.sandberg@arm.com     `#459 <https://github.com/pybind/pybind11/pull/459>`_,
53312037Sandreas.sandberg@arm.com     `#453 <https://github.com/pybind/pybind11/pull/453>`_,
53412037Sandreas.sandberg@arm.com     `#452 <https://github.com/pybind/pybind11/pull/452>`_, and
53512037Sandreas.sandberg@arm.com     `#505 <https://github.com/pybind/pybind11/pull/505>`_.
53612037Sandreas.sandberg@arm.com
53712037Sandreas.sandberg@arm.com  5. Fast access operators. `#497 <https://github.com/pybind/pybind11/pull/497>`_.
53812037Sandreas.sandberg@arm.com
53912037Sandreas.sandberg@arm.com  6. Constructors for arrays whose storage is owned by another object.
54012037Sandreas.sandberg@arm.com     `#440 <https://github.com/pybind/pybind11/pull/440>`_.
54112037Sandreas.sandberg@arm.com
54212037Sandreas.sandberg@arm.com  7. Added constructors for ``array`` and ``array_t`` explicitly accepting shape
54312037Sandreas.sandberg@arm.com     and strides; if strides are not provided, they are deduced assuming
54412037Sandreas.sandberg@arm.com     C-contiguity. Also added simplified constructors for 1-dimensional case.
54512037Sandreas.sandberg@arm.com
54612037Sandreas.sandberg@arm.com  8. Added buffer/NumPy support for ``char[N]`` and ``std::array<char, N>`` types.
54712037Sandreas.sandberg@arm.com
54812037Sandreas.sandberg@arm.com  9. Added ``memoryview`` wrapper type which is constructible from ``buffer_info``.
54912037Sandreas.sandberg@arm.com
55012037Sandreas.sandberg@arm.com* Eigen: many additional conversions and support for non-contiguous
55112037Sandreas.sandberg@arm.com  arrays/slices.
55212037Sandreas.sandberg@arm.com  `#427 <https://github.com/pybind/pybind11/pull/427>`_,
55312037Sandreas.sandberg@arm.com  `#315 <https://github.com/pybind/pybind11/pull/315>`_,
55412037Sandreas.sandberg@arm.com  `#316 <https://github.com/pybind/pybind11/pull/316>`_,
55512037Sandreas.sandberg@arm.com  `#312 <https://github.com/pybind/pybind11/pull/312>`_, and
55612037Sandreas.sandberg@arm.com  `#267 <https://github.com/pybind/pybind11/pull/267>`_
55712037Sandreas.sandberg@arm.com
55812037Sandreas.sandberg@arm.com* Incompatible changes in ``class_<...>::class_()``:
55912037Sandreas.sandberg@arm.com
56012037Sandreas.sandberg@arm.com    1. Declarations of types that provide access via the buffer protocol must
56112037Sandreas.sandberg@arm.com       now include the ``py::buffer_protocol()`` annotation as an argument to
56212037Sandreas.sandberg@arm.com       the ``class_`` constructor.
56312037Sandreas.sandberg@arm.com
56412037Sandreas.sandberg@arm.com    2. Declarations of types that require a custom metaclass (i.e. all classes
56512037Sandreas.sandberg@arm.com       which include static properties via commands such as
56612037Sandreas.sandberg@arm.com       ``def_readwrite_static()``) must now include the ``py::metaclass()``
56712037Sandreas.sandberg@arm.com       annotation as an argument to the ``class_`` constructor.
56812037Sandreas.sandberg@arm.com
56912037Sandreas.sandberg@arm.com       These two changes were necessary to make type definitions in pybind11
57012037Sandreas.sandberg@arm.com       future-proof, and to support PyPy via its cpyext mechanism. `#527
57112037Sandreas.sandberg@arm.com       <https://github.com/pybind/pybind11/pull/527>`_.
57212037Sandreas.sandberg@arm.com
57312037Sandreas.sandberg@arm.com
57412037Sandreas.sandberg@arm.com    3. This version of pybind11 uses a redesigned mechnism for instantiating
57512037Sandreas.sandberg@arm.com       trempoline classes that are used to override virtual methods from within
57612037Sandreas.sandberg@arm.com       Python. This led to the following user-visible syntax change: instead of
57712037Sandreas.sandberg@arm.com
57812037Sandreas.sandberg@arm.com       .. code-block:: cpp
57912037Sandreas.sandberg@arm.com
58012037Sandreas.sandberg@arm.com           py::class_<TrampolineClass>("MyClass")
58112037Sandreas.sandberg@arm.com             .alias<MyClass>()
58212037Sandreas.sandberg@arm.com             ....
58312037Sandreas.sandberg@arm.com
58412037Sandreas.sandberg@arm.com       write
58512037Sandreas.sandberg@arm.com
58612037Sandreas.sandberg@arm.com       .. code-block:: cpp
58712037Sandreas.sandberg@arm.com
58812037Sandreas.sandberg@arm.com           py::class_<MyClass, TrampolineClass>("MyClass")
58912037Sandreas.sandberg@arm.com             ....
59012037Sandreas.sandberg@arm.com
59112037Sandreas.sandberg@arm.com       Importantly, both the original and the trampoline class are now
59212037Sandreas.sandberg@arm.com       specified as an arguments (in arbitrary order) to the ``py::class_``
59312037Sandreas.sandberg@arm.com       template, and the ``alias<..>()`` call is gone. The new scheme has zero
59412037Sandreas.sandberg@arm.com       overhead in cases when Python doesn't override any functions of the
59512037Sandreas.sandberg@arm.com       underlying C++ class. `rev. 86d825
59612037Sandreas.sandberg@arm.com       <https://github.com/pybind/pybind11/commit/86d825>`_.
59712037Sandreas.sandberg@arm.com
59811986Sandreas.sandberg@arm.com* Added ``eval`` and ``eval_file`` functions for evaluating expressions and
59912037Sandreas.sandberg@arm.com  statements from a string or file. `rev. 0d3fc3
60012037Sandreas.sandberg@arm.com  <https://github.com/pybind/pybind11/commit/0d3fc3>`_.
60112037Sandreas.sandberg@arm.com
60212037Sandreas.sandberg@arm.com* pybind11 can now create types with a modifiable dictionary.
60312037Sandreas.sandberg@arm.com  `#437 <https://github.com/pybind/pybind11/pull/437>`_ and
60412037Sandreas.sandberg@arm.com  `#444 <https://github.com/pybind/pybind11/pull/444>`_.
60512037Sandreas.sandberg@arm.com
60612037Sandreas.sandberg@arm.com* Support for translation of arbitrary C++ exceptions to Python counterparts.
60712037Sandreas.sandberg@arm.com  `#296 <https://github.com/pybind/pybind11/pull/296>`_ and
60812037Sandreas.sandberg@arm.com  `#273 <https://github.com/pybind/pybind11/pull/273>`_.
60912037Sandreas.sandberg@arm.com
61012037Sandreas.sandberg@arm.com* Report full backtraces through mixed C++/Python code, better reporting for
61112037Sandreas.sandberg@arm.com  import errors, fixed GIL management in exception processing.
61212037Sandreas.sandberg@arm.com  `#537 <https://github.com/pybind/pybind11/pull/537>`_,
61312037Sandreas.sandberg@arm.com  `#494 <https://github.com/pybind/pybind11/pull/494>`_,
61412037Sandreas.sandberg@arm.com  `rev. e72d95 <https://github.com/pybind/pybind11/commit/e72d95>`_, and
61512037Sandreas.sandberg@arm.com  `rev. 099d6e <https://github.com/pybind/pybind11/commit/099d6e>`_.
61612037Sandreas.sandberg@arm.com
61712037Sandreas.sandberg@arm.com* Support for bit-level operations, comparisons, and serialization of C++
61812037Sandreas.sandberg@arm.com  enumerations. `#503 <https://github.com/pybind/pybind11/pull/503>`_,
61912037Sandreas.sandberg@arm.com  `#508 <https://github.com/pybind/pybind11/pull/508>`_,
62012037Sandreas.sandberg@arm.com  `#380 <https://github.com/pybind/pybind11/pull/380>`_,
62112037Sandreas.sandberg@arm.com  `#309 <https://github.com/pybind/pybind11/pull/309>`_.
62212037Sandreas.sandberg@arm.com  `#311 <https://github.com/pybind/pybind11/pull/311>`_.
62312037Sandreas.sandberg@arm.com
62412037Sandreas.sandberg@arm.com* The ``class_`` constructor now accepts its template arguments in any order.
62512037Sandreas.sandberg@arm.com  `#385 <https://github.com/pybind/pybind11/pull/385>`_.
62612037Sandreas.sandberg@arm.com
62712037Sandreas.sandberg@arm.com* Attribute and item accessors now have a more complete interface which makes
62812037Sandreas.sandberg@arm.com  it possible to chain attributes as in
62912037Sandreas.sandberg@arm.com  ``obj.attr("a")[key].attr("b").attr("method")(1, 2, 3)``. `#425
63012037Sandreas.sandberg@arm.com  <https://github.com/pybind/pybind11/pull/425>`_.
63112037Sandreas.sandberg@arm.com
63212037Sandreas.sandberg@arm.com* Major redesign of the default and conversion constructors in ``pytypes.h``.
63312037Sandreas.sandberg@arm.com  `#464 <https://github.com/pybind/pybind11/pull/464>`_.
63412037Sandreas.sandberg@arm.com
63512037Sandreas.sandberg@arm.com* Added built-in support for ``std::shared_ptr`` holder type. It is no longer
63612037Sandreas.sandberg@arm.com  necessary to to include a declaration of the form
63712037Sandreas.sandberg@arm.com  ``PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>)`` (though continuing to
63812037Sandreas.sandberg@arm.com  do so won't cause an error).
63912037Sandreas.sandberg@arm.com  `#454 <https://github.com/pybind/pybind11/pull/454>`_.
64012037Sandreas.sandberg@arm.com
64112037Sandreas.sandberg@arm.com* New ``py::overload_cast`` casting operator to select among multiple possible
64212037Sandreas.sandberg@arm.com  overloads of a function. An example:
64312037Sandreas.sandberg@arm.com
64412037Sandreas.sandberg@arm.com    .. code-block:: cpp
64512037Sandreas.sandberg@arm.com
64612037Sandreas.sandberg@arm.com        py::class_<Pet>(m, "Pet")
64712037Sandreas.sandberg@arm.com            .def("set", py::overload_cast<int>(&Pet::set), "Set the pet's age")
64812037Sandreas.sandberg@arm.com            .def("set", py::overload_cast<const std::string &>(&Pet::set), "Set the pet's name");
64912037Sandreas.sandberg@arm.com
65012037Sandreas.sandberg@arm.com  This feature only works on C++14-capable compilers.
65112037Sandreas.sandberg@arm.com  `#541 <https://github.com/pybind/pybind11/pull/541>`_.
65212037Sandreas.sandberg@arm.com
65312037Sandreas.sandberg@arm.com* C++ types are automatically cast to Python types, e.g. when assigning
65412037Sandreas.sandberg@arm.com  them as an attribute. For instance, the following is now legal:
65512037Sandreas.sandberg@arm.com
65612037Sandreas.sandberg@arm.com    .. code-block:: cpp
65712037Sandreas.sandberg@arm.com
65812037Sandreas.sandberg@arm.com        py::module m = /* ... */
65912037Sandreas.sandberg@arm.com        m.attr("constant") = 123;
66012037Sandreas.sandberg@arm.com
66112037Sandreas.sandberg@arm.com  (Previously, a ``py::cast`` call was necessary to avoid a compilation error.)
66212037Sandreas.sandberg@arm.com  `#551 <https://github.com/pybind/pybind11/pull/551>`_.
66312037Sandreas.sandberg@arm.com
66412037Sandreas.sandberg@arm.com* Redesigned ``pytest``-based test suite. `#321 <https://github.com/pybind/pybind11/pull/321>`_.
66512037Sandreas.sandberg@arm.com
66612037Sandreas.sandberg@arm.com* Instance tracking to detect reference leaks in test suite. `#324 <https://github.com/pybind/pybind11/pull/324>`_
66712037Sandreas.sandberg@arm.com
66812037Sandreas.sandberg@arm.com* pybind11 can now distinguish between multiple different instances that are
66912037Sandreas.sandberg@arm.com  located at the same memory address, but which have different types.
67012037Sandreas.sandberg@arm.com  `#329 <https://github.com/pybind/pybind11/pull/329>`_.
67112037Sandreas.sandberg@arm.com
67212037Sandreas.sandberg@arm.com* Improved logic in ``move`` return value policy.
67312037Sandreas.sandberg@arm.com  `#510 <https://github.com/pybind/pybind11/pull/510>`_,
67412037Sandreas.sandberg@arm.com  `#297 <https://github.com/pybind/pybind11/pull/297>`_.
67512037Sandreas.sandberg@arm.com
67612037Sandreas.sandberg@arm.com* Generalized unpacking API to permit calling Python functions from C++ using
67712037Sandreas.sandberg@arm.com  notation such as ``foo(a1, a2, *args, "ka"_a=1, "kb"_a=2, **kwargs)``. `#372 <https://github.com/pybind/pybind11/pull/372>`_.
67812037Sandreas.sandberg@arm.com
67912037Sandreas.sandberg@arm.com* ``py::print()`` function whose behavior matches that of the native Python
68012037Sandreas.sandberg@arm.com  ``print()`` function. `#372 <https://github.com/pybind/pybind11/pull/372>`_.
68112037Sandreas.sandberg@arm.com
68212037Sandreas.sandberg@arm.com* Added ``py::dict`` keyword constructor:``auto d = dict("number"_a=42,
68312037Sandreas.sandberg@arm.com  "name"_a="World");``. `#372 <https://github.com/pybind/pybind11/pull/372>`_.
68412037Sandreas.sandberg@arm.com
68512037Sandreas.sandberg@arm.com* Added ``py::str::format()`` method and ``_s`` literal: ``py::str s = "1 + 2
68612037Sandreas.sandberg@arm.com  = {}"_s.format(3);``. `#372 <https://github.com/pybind/pybind11/pull/372>`_.
68712037Sandreas.sandberg@arm.com
68812037Sandreas.sandberg@arm.com* Added ``py::repr()`` function which is equivalent to Python's builtin
68912037Sandreas.sandberg@arm.com  ``repr()``. `#333 <https://github.com/pybind/pybind11/pull/333>`_.
69012037Sandreas.sandberg@arm.com
69112037Sandreas.sandberg@arm.com* Improved construction and destruction logic for holder types. It is now
69212037Sandreas.sandberg@arm.com  possible to reference instances with smart pointer holder types without
69312037Sandreas.sandberg@arm.com  constructing the holder if desired. The ``PYBIND11_DECLARE_HOLDER_TYPE``
69412037Sandreas.sandberg@arm.com  macro now accepts an optional second parameter to indicate whether the holder
69512037Sandreas.sandberg@arm.com  type uses intrusive reference counting.
69612037Sandreas.sandberg@arm.com  `#533 <https://github.com/pybind/pybind11/pull/533>`_ and
69712037Sandreas.sandberg@arm.com  `#561 <https://github.com/pybind/pybind11/pull/561>`_.
69812037Sandreas.sandberg@arm.com
69912037Sandreas.sandberg@arm.com* Mapping a stateless C++ function to Python and back is now "for free" (i.e.
70012037Sandreas.sandberg@arm.com  no extra indirections or argument conversion overheads). `rev. 954b79
70112037Sandreas.sandberg@arm.com  <https://github.com/pybind/pybind11/commit/954b79>`_.
70212037Sandreas.sandberg@arm.com
70312037Sandreas.sandberg@arm.com* Bindings for ``std::valarray<T>``.
70412037Sandreas.sandberg@arm.com  `#545 <https://github.com/pybind/pybind11/pull/545>`_.
70512037Sandreas.sandberg@arm.com
70612037Sandreas.sandberg@arm.com* Improved support for C++17 capable compilers.
70712037Sandreas.sandberg@arm.com  `#562 <https://github.com/pybind/pybind11/pull/562>`_.
70812037Sandreas.sandberg@arm.com
70912037Sandreas.sandberg@arm.com* Bindings for ``std::optional<t>``.
71012037Sandreas.sandberg@arm.com  `#475 <https://github.com/pybind/pybind11/pull/475>`_,
71112037Sandreas.sandberg@arm.com  `#476 <https://github.com/pybind/pybind11/pull/476>`_,
71212037Sandreas.sandberg@arm.com  `#479 <https://github.com/pybind/pybind11/pull/479>`_,
71312037Sandreas.sandberg@arm.com  `#499 <https://github.com/pybind/pybind11/pull/499>`_, and
71412037Sandreas.sandberg@arm.com  `#501 <https://github.com/pybind/pybind11/pull/501>`_.
71512037Sandreas.sandberg@arm.com
71612037Sandreas.sandberg@arm.com* ``stl_bind.h``: general improvements and support for ``std::map`` and
71712037Sandreas.sandberg@arm.com  ``std::unordered_map``.
71812037Sandreas.sandberg@arm.com  `#490 <https://github.com/pybind/pybind11/pull/490>`_,
71912037Sandreas.sandberg@arm.com  `#282 <https://github.com/pybind/pybind11/pull/282>`_,
72012037Sandreas.sandberg@arm.com  `#235 <https://github.com/pybind/pybind11/pull/235>`_.
72112037Sandreas.sandberg@arm.com
72212037Sandreas.sandberg@arm.com* The ``std::tuple``, ``std::pair``, ``std::list``, and ``std::vector`` type
72312037Sandreas.sandberg@arm.com  casters now accept any Python sequence type as input. `rev. 107285
72412037Sandreas.sandberg@arm.com  <https://github.com/pybind/pybind11/commit/107285>`_.
72512037Sandreas.sandberg@arm.com
72612037Sandreas.sandberg@arm.com* Improved CMake Python detection on multi-architecture Linux.
72712037Sandreas.sandberg@arm.com  `#532 <https://github.com/pybind/pybind11/pull/532>`_.
72812037Sandreas.sandberg@arm.com
72912037Sandreas.sandberg@arm.com* Infrastructure to selectively disable or enable parts of the automatically
73012037Sandreas.sandberg@arm.com  generated docstrings. `#486 <https://github.com/pybind/pybind11/pull/486>`_.
73112037Sandreas.sandberg@arm.com
73212037Sandreas.sandberg@arm.com* ``reference`` and ``reference_internal`` are now the default return value
73312037Sandreas.sandberg@arm.com  properties for static and non-static properties, respectively. `#473
73412037Sandreas.sandberg@arm.com  <https://github.com/pybind/pybind11/pull/473>`_. (the previous defaults
73512037Sandreas.sandberg@arm.com  were ``automatic``). `#473 <https://github.com/pybind/pybind11/pull/473>`_.
73612037Sandreas.sandberg@arm.com
73712037Sandreas.sandberg@arm.com* Support for ``std::unique_ptr`` with non-default deleters or no deleter at
73812037Sandreas.sandberg@arm.com  all (``py::nodelete``). `#384 <https://github.com/pybind/pybind11/pull/384>`_.
73912037Sandreas.sandberg@arm.com
74012037Sandreas.sandberg@arm.com* Deprecated ``handle::call()`` method. The new syntax to call Python
74112037Sandreas.sandberg@arm.com  functions is simply ``handle()``. It can also be invoked explicitly via
74212037Sandreas.sandberg@arm.com  ``handle::operator<X>()``, where ``X`` is an optional return value policy.
74312037Sandreas.sandberg@arm.com
74412037Sandreas.sandberg@arm.com* Print more informative error messages when ``make_tuple()`` or ``cast()``
74512037Sandreas.sandberg@arm.com  fail. `#262 <https://github.com/pybind/pybind11/pull/262>`_.
74612037Sandreas.sandberg@arm.com
74712037Sandreas.sandberg@arm.com* Creation of holder types for classes deriving from
74812037Sandreas.sandberg@arm.com  ``std::enable_shared_from_this<>`` now also works for ``const`` values.
74912037Sandreas.sandberg@arm.com  `#260 <https://github.com/pybind/pybind11/pull/260>`_.
75012037Sandreas.sandberg@arm.com
75112037Sandreas.sandberg@arm.com* ``make_iterator()`` improvements for better compatibility with various
75212037Sandreas.sandberg@arm.com  types (now uses prefix increment operator); it now also accepts iterators
75312037Sandreas.sandberg@arm.com  with different begin/end types as long as they are equality comparable.
75412037Sandreas.sandberg@arm.com  `#247 <https://github.com/pybind/pybind11/pull/247>`_.
75512037Sandreas.sandberg@arm.com
75612037Sandreas.sandberg@arm.com* ``arg()`` now accepts a wider range of argument types for default values.
75712037Sandreas.sandberg@arm.com  `#244 <https://github.com/pybind/pybind11/pull/244>`_.
75812037Sandreas.sandberg@arm.com
75912037Sandreas.sandberg@arm.com* Support ``keep_alive`` where the nurse object may be ``None``. `#341
76012037Sandreas.sandberg@arm.com  <https://github.com/pybind/pybind11/pull/341>`_.
76112037Sandreas.sandberg@arm.com
76212037Sandreas.sandberg@arm.com* Added constructors for ``str`` and ``bytes`` from zero-terminated char
76312037Sandreas.sandberg@arm.com  pointers, and from char pointers and length. Added constructors for ``str``
76412037Sandreas.sandberg@arm.com  from ``bytes`` and for ``bytes`` from ``str``, which will perform UTF-8
76512037Sandreas.sandberg@arm.com  decoding/encoding as required.
76612037Sandreas.sandberg@arm.com
76712037Sandreas.sandberg@arm.com* Many other improvements of library internals without user-visible changes
76812037Sandreas.sandberg@arm.com
76911986Sandreas.sandberg@arm.com
77011986Sandreas.sandberg@arm.com1.8.1 (July 12, 2016)
77111986Sandreas.sandberg@arm.com----------------------
77211986Sandreas.sandberg@arm.com* Fixed a rare but potentially very severe issue when the garbage collector ran
77311986Sandreas.sandberg@arm.com  during pybind11 type creation.
77411986Sandreas.sandberg@arm.com
77511986Sandreas.sandberg@arm.com1.8.0 (June 14, 2016)
77611986Sandreas.sandberg@arm.com----------------------
77711986Sandreas.sandberg@arm.com* Redesigned CMake build system which exports a convenient
77811986Sandreas.sandberg@arm.com  ``pybind11_add_module`` function to parent projects.
77911986Sandreas.sandberg@arm.com* ``std::vector<>`` type bindings analogous to Boost.Python's ``indexing_suite``
78011986Sandreas.sandberg@arm.com* Transparent conversion of sparse and dense Eigen matrices and vectors (``eigen.h``)
78111986Sandreas.sandberg@arm.com* Added an ``ExtraFlags`` template argument to the NumPy ``array_t<>`` wrapper
78211986Sandreas.sandberg@arm.com  to disable an enforced cast that may lose precision, e.g. to create overloads
78311986Sandreas.sandberg@arm.com  for different precisions and complex vs real-valued matrices.
78411986Sandreas.sandberg@arm.com* Prevent implicit conversion of floating point values to integral types in
78511986Sandreas.sandberg@arm.com  function arguments
78611986Sandreas.sandberg@arm.com* Fixed incorrect default return value policy for functions returning a shared
78711986Sandreas.sandberg@arm.com  pointer
78811986Sandreas.sandberg@arm.com* Don't allow registering a type via ``class_`` twice
78911986Sandreas.sandberg@arm.com* Don't allow casting a ``None`` value into a C++ lvalue reference
79011986Sandreas.sandberg@arm.com* Fixed a crash in ``enum_::operator==`` that was triggered by the ``help()`` command
79111986Sandreas.sandberg@arm.com* Improved detection of whether or not custom C++ types can be copy/move-constructed
79211986Sandreas.sandberg@arm.com* Extended ``str`` type to also work with ``bytes`` instances
79311986Sandreas.sandberg@arm.com* Added a ``"name"_a`` user defined string literal that is equivalent to ``py::arg("name")``.
79411986Sandreas.sandberg@arm.com* When specifying function arguments via ``py::arg``, the test that verifies
79511986Sandreas.sandberg@arm.com  the number of arguments now runs at compile time.
79611986Sandreas.sandberg@arm.com* Added ``[[noreturn]]`` attribute to ``pybind11_fail()`` to quench some
79711986Sandreas.sandberg@arm.com  compiler warnings
79811986Sandreas.sandberg@arm.com* List function arguments in exception text when the dispatch code cannot find
79911986Sandreas.sandberg@arm.com  a matching overload
80011986Sandreas.sandberg@arm.com* Added ``PYBIND11_OVERLOAD_NAME`` and ``PYBIND11_OVERLOAD_PURE_NAME`` macros which
80111986Sandreas.sandberg@arm.com  can be used to override virtual methods whose name differs in C++ and Python
80211986Sandreas.sandberg@arm.com  (e.g. ``__call__`` and ``operator()``)
80311986Sandreas.sandberg@arm.com* Various minor ``iterator`` and ``make_iterator()`` improvements
80411986Sandreas.sandberg@arm.com* Transparently support ``__bool__`` on Python 2.x and Python 3.x
80511986Sandreas.sandberg@arm.com* Fixed issue with destructor of unpickled object not being called
80611986Sandreas.sandberg@arm.com* Minor CMake build system improvements on Windows
80711986Sandreas.sandberg@arm.com* New ``pybind11::args`` and ``pybind11::kwargs`` types to create functions which
80811986Sandreas.sandberg@arm.com  take an arbitrary number of arguments and keyword arguments
80911986Sandreas.sandberg@arm.com* New syntax to call a Python function from C++ using ``*args`` and ``*kwargs``
81011986Sandreas.sandberg@arm.com* The functions ``def_property_*`` now correctly process docstring arguments (these
81111986Sandreas.sandberg@arm.com  formerly caused a segmentation fault)
81211986Sandreas.sandberg@arm.com* Many ``mkdoc.py`` improvements (enumerations, template arguments, ``DOC()``
81311986Sandreas.sandberg@arm.com  macro accepts more arguments)
81411986Sandreas.sandberg@arm.com* Cygwin support
81511986Sandreas.sandberg@arm.com* Documentation improvements (pickling support, ``keep_alive``, macro usage)
81611986Sandreas.sandberg@arm.com
81711986Sandreas.sandberg@arm.com1.7 (April 30, 2016)
81811986Sandreas.sandberg@arm.com----------------------
81911986Sandreas.sandberg@arm.com* Added a new ``move`` return value policy that triggers C++11 move semantics.
82011986Sandreas.sandberg@arm.com  The automatic return value policy falls back to this case whenever a rvalue
82111986Sandreas.sandberg@arm.com  reference is encountered
82211986Sandreas.sandberg@arm.com* Significantly more general GIL state routines that are used instead of
82311986Sandreas.sandberg@arm.com  Python's troublesome ``PyGILState_Ensure`` and ``PyGILState_Release`` API
82411986Sandreas.sandberg@arm.com* Redesign of opaque types that drastically simplifies their usage
82511986Sandreas.sandberg@arm.com* Extended ability to pass values of type ``[const] void *``
82611986Sandreas.sandberg@arm.com* ``keep_alive`` fix: don't fail when there is no patient
82711986Sandreas.sandberg@arm.com* ``functional.h``: acquire the GIL before calling a Python function
82811986Sandreas.sandberg@arm.com* Added Python RAII type wrappers ``none`` and ``iterable``
82911986Sandreas.sandberg@arm.com* Added ``*args`` and ``*kwargs`` pass-through parameters to
83011986Sandreas.sandberg@arm.com  ``pybind11.get_include()`` function
83111986Sandreas.sandberg@arm.com* Iterator improvements and fixes
83211986Sandreas.sandberg@arm.com* Documentation on return value policies and opaque types improved
83311986Sandreas.sandberg@arm.com
83411986Sandreas.sandberg@arm.com1.6 (April 30, 2016)
83511986Sandreas.sandberg@arm.com----------------------
83611986Sandreas.sandberg@arm.com* Skipped due to upload to PyPI gone wrong and inability to recover
83711986Sandreas.sandberg@arm.com  (https://github.com/pypa/packaging-problems/issues/74)
83811986Sandreas.sandberg@arm.com
83911986Sandreas.sandberg@arm.com1.5 (April 21, 2016)
84011986Sandreas.sandberg@arm.com----------------------
84111986Sandreas.sandberg@arm.com* For polymorphic types, use RTTI to try to return the closest type registered with pybind11
84211986Sandreas.sandberg@arm.com* Pickling support for serializing and unserializing C++ instances to a byte stream in Python
84311986Sandreas.sandberg@arm.com* Added a convenience routine ``make_iterator()`` which turns a range indicated
84411986Sandreas.sandberg@arm.com  by a pair of C++ iterators into a iterable Python object
84511986Sandreas.sandberg@arm.com* Added ``len()`` and a variadic ``make_tuple()`` function
84611986Sandreas.sandberg@arm.com* Addressed a rare issue that could confuse the current virtual function
84711986Sandreas.sandberg@arm.com  dispatcher and another that could lead to crashes in multi-threaded
84811986Sandreas.sandberg@arm.com  applications
84911986Sandreas.sandberg@arm.com* Added a ``get_include()`` function to the Python module that returns the path
85011986Sandreas.sandberg@arm.com  of the directory containing the installed pybind11 header files
85111986Sandreas.sandberg@arm.com* Documentation improvements: import issues, symbol visibility, pickling, limitations
85211986Sandreas.sandberg@arm.com* Added casting support for ``std::reference_wrapper<>``
85311986Sandreas.sandberg@arm.com
85411986Sandreas.sandberg@arm.com1.4 (April 7, 2016)
85511986Sandreas.sandberg@arm.com--------------------------
85611986Sandreas.sandberg@arm.com* Transparent type conversion for ``std::wstring`` and ``wchar_t``
85711986Sandreas.sandberg@arm.com* Allow passing ``nullptr``-valued strings
85811986Sandreas.sandberg@arm.com* Transparent passing of ``void *`` pointers using capsules
85911986Sandreas.sandberg@arm.com* Transparent support for returning values wrapped in ``std::unique_ptr<>``
86011986Sandreas.sandberg@arm.com* Improved docstring generation for compatibility with Sphinx
86111986Sandreas.sandberg@arm.com* Nicer debug error message when default parameter construction fails
86211986Sandreas.sandberg@arm.com* Support for "opaque" types that bypass the transparent conversion layer for STL containers
86311986Sandreas.sandberg@arm.com* Redesigned type casting interface to avoid ambiguities that could occasionally cause compiler errors
86411986Sandreas.sandberg@arm.com* Redesigned property implementation; fixes crashes due to an unfortunate default return value policy
86511986Sandreas.sandberg@arm.com* Anaconda package generation support
86611986Sandreas.sandberg@arm.com
86711986Sandreas.sandberg@arm.com1.3 (March 8, 2016)
86811986Sandreas.sandberg@arm.com--------------------------
86911986Sandreas.sandberg@arm.com
87011986Sandreas.sandberg@arm.com* Added support for the Intel C++ compiler (v15+)
87111986Sandreas.sandberg@arm.com* Added support for the STL unordered set/map data structures
87211986Sandreas.sandberg@arm.com* Added support for the STL linked list data structure
87311986Sandreas.sandberg@arm.com* NumPy-style broadcasting support in ``pybind11::vectorize``
87411986Sandreas.sandberg@arm.com* pybind11 now displays more verbose error messages when ``arg::operator=()`` fails
87511986Sandreas.sandberg@arm.com* pybind11 internal data structures now live in a version-dependent namespace to avoid ABI issues
87611986Sandreas.sandberg@arm.com* Many, many bugfixes involving corner cases and advanced usage
87711986Sandreas.sandberg@arm.com
87811986Sandreas.sandberg@arm.com1.2 (February 7, 2016)
87911986Sandreas.sandberg@arm.com--------------------------
88011986Sandreas.sandberg@arm.com
88111986Sandreas.sandberg@arm.com* Optional: efficient generation of function signatures at compile time using C++14
88211986Sandreas.sandberg@arm.com* Switched to a simpler and more general way of dealing with function default
88311986Sandreas.sandberg@arm.com  arguments. Unused keyword arguments in function calls are now detected and
88411986Sandreas.sandberg@arm.com  cause errors as expected
88511986Sandreas.sandberg@arm.com* New ``keep_alive`` call policy analogous to Boost.Python's ``with_custodian_and_ward``
88611986Sandreas.sandberg@arm.com* New ``pybind11::base<>`` attribute to indicate a subclass relationship
88711986Sandreas.sandberg@arm.com* Improved interface for RAII type wrappers in ``pytypes.h``
88811986Sandreas.sandberg@arm.com* Use RAII type wrappers consistently within pybind11 itself. This
88911986Sandreas.sandberg@arm.com  fixes various potential refcount leaks when exceptions occur
89011986Sandreas.sandberg@arm.com* Added new ``bytes`` RAII type wrapper (maps to ``string`` in Python 2.7)
89111986Sandreas.sandberg@arm.com* Made handle and related RAII classes const correct, using them more
89211986Sandreas.sandberg@arm.com  consistently everywhere now
89311986Sandreas.sandberg@arm.com* Got rid of the ugly ``__pybind11__`` attributes on the Python side---they are
89411986Sandreas.sandberg@arm.com  now stored in a C++ hash table that is not visible in Python
89511986Sandreas.sandberg@arm.com* Fixed refcount leaks involving NumPy arrays and bound functions
89611986Sandreas.sandberg@arm.com* Vastly improved handling of shared/smart pointers
89711986Sandreas.sandberg@arm.com* Removed an unnecessary copy operation in ``pybind11::vectorize``
89811986Sandreas.sandberg@arm.com* Fixed naming clashes when both pybind11 and NumPy headers are included
89911986Sandreas.sandberg@arm.com* Added conversions for additional exception types
90011986Sandreas.sandberg@arm.com* Documentation improvements (using multiple extension modules, smart pointers,
90111986Sandreas.sandberg@arm.com  other minor clarifications)
90211986Sandreas.sandberg@arm.com* unified infrastructure for parsing variadic arguments in ``class_`` and cpp_function
90311986Sandreas.sandberg@arm.com* Fixed license text (was: ZLIB, should have been: 3-clause BSD)
90411986Sandreas.sandberg@arm.com* Python 3.2 compatibility
90511986Sandreas.sandberg@arm.com* Fixed remaining issues when accessing types in another plugin module
90611986Sandreas.sandberg@arm.com* Added enum comparison and casting methods
90711986Sandreas.sandberg@arm.com* Improved SFINAE-based detection of whether types are copy-constructible
90811986Sandreas.sandberg@arm.com* Eliminated many warnings about unused variables and the use of ``offsetof()``
90911986Sandreas.sandberg@arm.com* Support for ``std::array<>`` conversions
91011986Sandreas.sandberg@arm.com
91111986Sandreas.sandberg@arm.com1.1 (December 7, 2015)
91211986Sandreas.sandberg@arm.com--------------------------
91311986Sandreas.sandberg@arm.com
91411986Sandreas.sandberg@arm.com* Documentation improvements (GIL, wrapping functions, casting, fixed many typos)
91511986Sandreas.sandberg@arm.com* Generalized conversion of integer types
91611986Sandreas.sandberg@arm.com* Improved support for casting function objects
91711986Sandreas.sandberg@arm.com* Improved support for ``std::shared_ptr<>`` conversions
91811986Sandreas.sandberg@arm.com* Initial support for ``std::set<>`` conversions
91911986Sandreas.sandberg@arm.com* Fixed type resolution issue for types defined in a separate plugin module
92011986Sandreas.sandberg@arm.com* Cmake build system improvements
92111986Sandreas.sandberg@arm.com* Factored out generic functionality to non-templated code (smaller code size)
92211986Sandreas.sandberg@arm.com* Added a code size / compile time benchmark vs Boost.Python
92311986Sandreas.sandberg@arm.com* Added an appveyor CI script
92411986Sandreas.sandberg@arm.com
92511986Sandreas.sandberg@arm.com1.0 (October 15, 2015)
92611986Sandreas.sandberg@arm.com------------------------
92711986Sandreas.sandberg@arm.com* Initial release
928