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