changelog.rst revision 12037:d28054ac6ec9
1.. _changelog:
2
3Changelog
4#########
5
6Starting with version 1.8.0, pybind11 releases use a `semantic versioning
7<http://semver.org>`_ policy.
8
9
10v2.1.1 (April 7, 2017)
11-----------------------------------------------------
12
13* Fixed minimum version requirement for MSVC 2015u3
14  `#773 <https://github.com/pybind/pybind11/pull/773>`_.
15
16v2.1.0 (March 22, 2017)
17-----------------------------------------------------
18
19* pybind11 now performs function overload resolution in two phases. The first
20  phase only considers exact type matches, while the second allows for implicit
21  conversions to take place. A special ``noconvert()`` syntax can be used to
22  completely disable implicit conversions for specific arguments.
23  `#643 <https://github.com/pybind/pybind11/pull/643>`_,
24  `#634 <https://github.com/pybind/pybind11/pull/634>`_,
25  `#650 <https://github.com/pybind/pybind11/pull/650>`_.
26
27* Fixed a regression where static properties no longer worked with classes
28  using multiple inheritance. The ``py::metaclass`` attribute is no longer
29  necessary (and deprecated as of this release) when binding classes with
30  static properties.
31  `#679 <https://github.com/pybind/pybind11/pull/679>`_,
32
33* Classes bound using ``pybind11`` can now use custom metaclasses.
34  `#679 <https://github.com/pybind/pybind11/pull/679>`_,
35
36* ``py::args`` and ``py::kwargs`` can now be mixed with other positional
37  arguments when binding functions using pybind11.
38  `#611 <https://github.com/pybind/pybind11/pull/611>`_.
39
40* Improved support for C++11 unicode string and character types; added
41  extensive documentation regarding pybind11's string conversion behavior.
42  `#624 <https://github.com/pybind/pybind11/pull/624>`_,
43  `#636 <https://github.com/pybind/pybind11/pull/636>`_,
44  `#715 <https://github.com/pybind/pybind11/pull/715>`_.
45
46* pybind11 can now avoid expensive copies when converting Eigen arrays to NumPy
47  arrays (and vice versa). `#610 <https://github.com/pybind/pybind11/pull/610>`_.
48
49* The "fast path" in ``py::vectorize`` now works for any full-size group of C or
50  F-contiguous arrays. The non-fast path is also faster since it no longer performs
51  copies of the input arguments (except when type conversions are necessary).
52  `#610 <https://github.com/pybind/pybind11/pull/610>`_.
53
54* Added fast, unchecked access to NumPy arrays via a proxy object.
55  `#746 <https://github.com/pybind/pybind11/pull/746>`_.
56
57* Transparent support for class-specific ``operator new`` and
58  ``operator delete`` implementations.
59  `#755 <https://github.com/pybind/pybind11/pull/755>`_.
60
61* Slimmer and more efficient STL-compatible iterator interface for sequence types.
62  `#662 <https://github.com/pybind/pybind11/pull/662>`_.
63
64* Improved custom holder type support.
65  `#607 <https://github.com/pybind/pybind11/pull/607>`_.
66
67* ``nullptr`` to ``None`` conversion fixed in various builtin type casters.
68  `#732 <https://github.com/pybind/pybind11/pull/732>`_.
69
70* ``enum_`` now exposes its members via a special ``__members__`` attribute.
71  `#666 <https://github.com/pybind/pybind11/pull/666>`_.
72
73* ``std::vector`` bindings created using ``stl_bind.h`` can now optionally
74  implement the buffer protocol. `#488 <https://github.com/pybind/pybind11/pull/488>`_.
75
76* Automated C++ reference documentation using doxygen and breathe.
77  `#598 <https://github.com/pybind/pybind11/pull/598>`_.
78
79* Added minimum compiler version assertions.
80  `#727 <https://github.com/pybind/pybind11/pull/727>`_.
81
82* Improved compatibility with C++1z.
83  `#677 <https://github.com/pybind/pybind11/pull/677>`_.
84
85* Improved ``py::capsule`` API. Can be used to implement cleanup
86  callbacks that are involved at module destruction time.
87  `#752 <https://github.com/pybind/pybind11/pull/752>`_.
88
89* Various minor improvements and fixes.
90  `#595 <https://github.com/pybind/pybind11/pull/595>`_,
91  `#588 <https://github.com/pybind/pybind11/pull/588>`_,
92  `#589 <https://github.com/pybind/pybind11/pull/589>`_,
93  `#603 <https://github.com/pybind/pybind11/pull/603>`_,
94  `#619 <https://github.com/pybind/pybind11/pull/619>`_,
95  `#648 <https://github.com/pybind/pybind11/pull/648>`_,
96  `#695 <https://github.com/pybind/pybind11/pull/695>`_,
97  `#720 <https://github.com/pybind/pybind11/pull/720>`_,
98  `#723 <https://github.com/pybind/pybind11/pull/723>`_,
99  `#729 <https://github.com/pybind/pybind11/pull/729>`_,
100  `#724 <https://github.com/pybind/pybind11/pull/724>`_,
101  `#742 <https://github.com/pybind/pybind11/pull/742>`_,
102  `#753 <https://github.com/pybind/pybind11/pull/753>`_.
103
104v2.0.1 (Jan 4, 2017)
105-----------------------------------------------------
106
107* Fix pointer to reference error in type_caster on MSVC
108  `#583 <https://github.com/pybind/pybind11/pull/583>`_.
109
110* Fixed a segmentation in the test suite due to a typo
111  `cd7eac <https://github.com/pybind/pybind11/commit/cd7eac>`_.
112
113v2.0.0 (Jan 1, 2017)
114-----------------------------------------------------
115
116* Fixed a reference counting regression affecting types with custom metaclasses
117  (introduced in v2.0.0-rc1).
118  `#571 <https://github.com/pybind/pybind11/pull/571>`_.
119
120* Quenched a CMake policy warning.
121  `#570 <https://github.com/pybind/pybind11/pull/570>`_.
122
123v2.0.0-rc1 (Dec 23, 2016)
124-----------------------------------------------------
125
126The pybind11 developers are excited to issue a release candidate of pybind11
127with a subsequent v2.0.0 release planned in early January next year.
128
129An incredible amount of effort by went into pybind11 over the last ~5 months,
130leading to a release that is jam-packed with exciting new features and numerous
131usability improvements. The following list links PRs or individual commits
132whenever applicable.
133
134Happy Christmas!
135
136* Support for binding C++ class hierarchies that make use of multiple
137  inheritance. `#410 <https://github.com/pybind/pybind11/pull/410>`_.
138
139* PyPy support: pybind11 now supports nightly builds of PyPy and will
140  interoperate with the future 5.7 release. No code changes are necessary,
141  everything "just" works as usual. Note that we only target the Python 2.7
142  branch for now; support for 3.x will be added once its ``cpyext`` extension
143  support catches up. A few minor features remain unsupported for the time
144  being (notably dynamic attributes in custom types).
145  `#527 <https://github.com/pybind/pybind11/pull/527>`_.
146
147* Significant work on the documentation -- in particular, the monolitic
148  ``advanced.rst`` file was restructured into a easier to read hierarchical
149  organization. `#448 <https://github.com/pybind/pybind11/pull/448>`_.
150
151* Many NumPy-related improvements:
152
153  1. Object-oriented API to access and modify NumPy ``ndarray`` instances,
154     replicating much of the corresponding NumPy C API functionality.
155     `#402 <https://github.com/pybind/pybind11/pull/402>`_.
156
157  2. NumPy array ``dtype`` array descriptors are now first-class citizens and
158     are exposed via a new class ``py::dtype``.
159
160  3. Structured dtypes can be registered using the ``PYBIND11_NUMPY_DTYPE()``
161     macro. Special ``array`` constructors accepting dtype objects were also
162     added.
163
164     One potential caveat involving this change: format descriptor strings
165     should now be accessed via ``format_descriptor::format()`` (however, for
166     compatibility purposes, the old syntax ``format_descriptor::value`` will
167     still work for non-structured data types). `#308
168     <https://github.com/pybind/pybind11/pull/308>`_.
169
170  4. Further improvements to support structured dtypes throughout the system.
171     `#472 <https://github.com/pybind/pybind11/pull/472>`_,
172     `#474 <https://github.com/pybind/pybind11/pull/474>`_,
173     `#459 <https://github.com/pybind/pybind11/pull/459>`_,
174     `#453 <https://github.com/pybind/pybind11/pull/453>`_,
175     `#452 <https://github.com/pybind/pybind11/pull/452>`_, and
176     `#505 <https://github.com/pybind/pybind11/pull/505>`_.
177
178  5. Fast access operators. `#497 <https://github.com/pybind/pybind11/pull/497>`_.
179
180  6. Constructors for arrays whose storage is owned by another object.
181     `#440 <https://github.com/pybind/pybind11/pull/440>`_.
182
183  7. Added constructors for ``array`` and ``array_t`` explicitly accepting shape
184     and strides; if strides are not provided, they are deduced assuming
185     C-contiguity. Also added simplified constructors for 1-dimensional case.
186
187  8. Added buffer/NumPy support for ``char[N]`` and ``std::array<char, N>`` types.
188
189  9. Added ``memoryview`` wrapper type which is constructible from ``buffer_info``.
190
191* Eigen: many additional conversions and support for non-contiguous
192  arrays/slices.
193  `#427 <https://github.com/pybind/pybind11/pull/427>`_,
194  `#315 <https://github.com/pybind/pybind11/pull/315>`_,
195  `#316 <https://github.com/pybind/pybind11/pull/316>`_,
196  `#312 <https://github.com/pybind/pybind11/pull/312>`_, and
197  `#267 <https://github.com/pybind/pybind11/pull/267>`_
198
199* Incompatible changes in ``class_<...>::class_()``:
200
201    1. Declarations of types that provide access via the buffer protocol must
202       now include the ``py::buffer_protocol()`` annotation as an argument to
203       the ``class_`` constructor.
204
205    2. Declarations of types that require a custom metaclass (i.e. all classes
206       which include static properties via commands such as
207       ``def_readwrite_static()``) must now include the ``py::metaclass()``
208       annotation as an argument to the ``class_`` constructor.
209
210       These two changes were necessary to make type definitions in pybind11
211       future-proof, and to support PyPy via its cpyext mechanism. `#527
212       <https://github.com/pybind/pybind11/pull/527>`_.
213
214
215    3. This version of pybind11 uses a redesigned mechnism for instantiating
216       trempoline classes that are used to override virtual methods from within
217       Python. This led to the following user-visible syntax change: instead of
218
219       .. code-block:: cpp
220
221           py::class_<TrampolineClass>("MyClass")
222             .alias<MyClass>()
223             ....
224
225       write
226
227       .. code-block:: cpp
228
229           py::class_<MyClass, TrampolineClass>("MyClass")
230             ....
231
232       Importantly, both the original and the trampoline class are now
233       specified as an arguments (in arbitrary order) to the ``py::class_``
234       template, and the ``alias<..>()`` call is gone. The new scheme has zero
235       overhead in cases when Python doesn't override any functions of the
236       underlying C++ class. `rev. 86d825
237       <https://github.com/pybind/pybind11/commit/86d825>`_.
238
239* Added ``eval`` and ``eval_file`` functions for evaluating expressions and
240  statements from a string or file. `rev. 0d3fc3
241  <https://github.com/pybind/pybind11/commit/0d3fc3>`_.
242
243* pybind11 can now create types with a modifiable dictionary.
244  `#437 <https://github.com/pybind/pybind11/pull/437>`_ and
245  `#444 <https://github.com/pybind/pybind11/pull/444>`_.
246
247* Support for translation of arbitrary C++ exceptions to Python counterparts.
248  `#296 <https://github.com/pybind/pybind11/pull/296>`_ and
249  `#273 <https://github.com/pybind/pybind11/pull/273>`_.
250
251* Report full backtraces through mixed C++/Python code, better reporting for
252  import errors, fixed GIL management in exception processing.
253  `#537 <https://github.com/pybind/pybind11/pull/537>`_,
254  `#494 <https://github.com/pybind/pybind11/pull/494>`_,
255  `rev. e72d95 <https://github.com/pybind/pybind11/commit/e72d95>`_, and
256  `rev. 099d6e <https://github.com/pybind/pybind11/commit/099d6e>`_.
257
258* Support for bit-level operations, comparisons, and serialization of C++
259  enumerations. `#503 <https://github.com/pybind/pybind11/pull/503>`_,
260  `#508 <https://github.com/pybind/pybind11/pull/508>`_,
261  `#380 <https://github.com/pybind/pybind11/pull/380>`_,
262  `#309 <https://github.com/pybind/pybind11/pull/309>`_.
263  `#311 <https://github.com/pybind/pybind11/pull/311>`_.
264
265* The ``class_`` constructor now accepts its template arguments in any order.
266  `#385 <https://github.com/pybind/pybind11/pull/385>`_.
267
268* Attribute and item accessors now have a more complete interface which makes
269  it possible to chain attributes as in
270  ``obj.attr("a")[key].attr("b").attr("method")(1, 2, 3)``. `#425
271  <https://github.com/pybind/pybind11/pull/425>`_.
272
273* Major redesign of the default and conversion constructors in ``pytypes.h``.
274  `#464 <https://github.com/pybind/pybind11/pull/464>`_.
275
276* Added built-in support for ``std::shared_ptr`` holder type. It is no longer
277  necessary to to include a declaration of the form
278  ``PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>)`` (though continuing to
279  do so won't cause an error).
280  `#454 <https://github.com/pybind/pybind11/pull/454>`_.
281
282* New ``py::overload_cast`` casting operator to select among multiple possible
283  overloads of a function. An example:
284
285    .. code-block:: cpp
286
287        py::class_<Pet>(m, "Pet")
288            .def("set", py::overload_cast<int>(&Pet::set), "Set the pet's age")
289            .def("set", py::overload_cast<const std::string &>(&Pet::set), "Set the pet's name");
290
291  This feature only works on C++14-capable compilers.
292  `#541 <https://github.com/pybind/pybind11/pull/541>`_.
293
294* C++ types are automatically cast to Python types, e.g. when assigning
295  them as an attribute. For instance, the following is now legal:
296
297    .. code-block:: cpp
298
299        py::module m = /* ... */
300        m.attr("constant") = 123;
301
302  (Previously, a ``py::cast`` call was necessary to avoid a compilation error.)
303  `#551 <https://github.com/pybind/pybind11/pull/551>`_.
304
305* Redesigned ``pytest``-based test suite. `#321 <https://github.com/pybind/pybind11/pull/321>`_.
306
307* Instance tracking to detect reference leaks in test suite. `#324 <https://github.com/pybind/pybind11/pull/324>`_
308
309* pybind11 can now distinguish between multiple different instances that are
310  located at the same memory address, but which have different types.
311  `#329 <https://github.com/pybind/pybind11/pull/329>`_.
312
313* Improved logic in ``move`` return value policy.
314  `#510 <https://github.com/pybind/pybind11/pull/510>`_,
315  `#297 <https://github.com/pybind/pybind11/pull/297>`_.
316
317* Generalized unpacking API to permit calling Python functions from C++ using
318  notation such as ``foo(a1, a2, *args, "ka"_a=1, "kb"_a=2, **kwargs)``. `#372 <https://github.com/pybind/pybind11/pull/372>`_.
319
320* ``py::print()`` function whose behavior matches that of the native Python
321  ``print()`` function. `#372 <https://github.com/pybind/pybind11/pull/372>`_.
322
323* Added ``py::dict`` keyword constructor:``auto d = dict("number"_a=42,
324  "name"_a="World");``. `#372 <https://github.com/pybind/pybind11/pull/372>`_.
325
326* Added ``py::str::format()`` method and ``_s`` literal: ``py::str s = "1 + 2
327  = {}"_s.format(3);``. `#372 <https://github.com/pybind/pybind11/pull/372>`_.
328
329* Added ``py::repr()`` function which is equivalent to Python's builtin
330  ``repr()``. `#333 <https://github.com/pybind/pybind11/pull/333>`_.
331
332* Improved construction and destruction logic for holder types. It is now
333  possible to reference instances with smart pointer holder types without
334  constructing the holder if desired. The ``PYBIND11_DECLARE_HOLDER_TYPE``
335  macro now accepts an optional second parameter to indicate whether the holder
336  type uses intrusive reference counting.
337  `#533 <https://github.com/pybind/pybind11/pull/533>`_ and
338  `#561 <https://github.com/pybind/pybind11/pull/561>`_.
339
340* Mapping a stateless C++ function to Python and back is now "for free" (i.e.
341  no extra indirections or argument conversion overheads). `rev. 954b79
342  <https://github.com/pybind/pybind11/commit/954b79>`_.
343
344* Bindings for ``std::valarray<T>``.
345  `#545 <https://github.com/pybind/pybind11/pull/545>`_.
346
347* Improved support for C++17 capable compilers.
348  `#562 <https://github.com/pybind/pybind11/pull/562>`_.
349
350* Bindings for ``std::optional<t>``.
351  `#475 <https://github.com/pybind/pybind11/pull/475>`_,
352  `#476 <https://github.com/pybind/pybind11/pull/476>`_,
353  `#479 <https://github.com/pybind/pybind11/pull/479>`_,
354  `#499 <https://github.com/pybind/pybind11/pull/499>`_, and
355  `#501 <https://github.com/pybind/pybind11/pull/501>`_.
356
357* ``stl_bind.h``: general improvements and support for ``std::map`` and
358  ``std::unordered_map``.
359  `#490 <https://github.com/pybind/pybind11/pull/490>`_,
360  `#282 <https://github.com/pybind/pybind11/pull/282>`_,
361  `#235 <https://github.com/pybind/pybind11/pull/235>`_.
362
363* The ``std::tuple``, ``std::pair``, ``std::list``, and ``std::vector`` type
364  casters now accept any Python sequence type as input. `rev. 107285
365  <https://github.com/pybind/pybind11/commit/107285>`_.
366
367* Improved CMake Python detection on multi-architecture Linux.
368  `#532 <https://github.com/pybind/pybind11/pull/532>`_.
369
370* Infrastructure to selectively disable or enable parts of the automatically
371  generated docstrings. `#486 <https://github.com/pybind/pybind11/pull/486>`_.
372
373* ``reference`` and ``reference_internal`` are now the default return value
374  properties for static and non-static properties, respectively. `#473
375  <https://github.com/pybind/pybind11/pull/473>`_. (the previous defaults
376  were ``automatic``). `#473 <https://github.com/pybind/pybind11/pull/473>`_.
377
378* Support for ``std::unique_ptr`` with non-default deleters or no deleter at
379  all (``py::nodelete``). `#384 <https://github.com/pybind/pybind11/pull/384>`_.
380
381* Deprecated ``handle::call()`` method. The new syntax to call Python
382  functions is simply ``handle()``. It can also be invoked explicitly via
383  ``handle::operator<X>()``, where ``X`` is an optional return value policy.
384
385* Print more informative error messages when ``make_tuple()`` or ``cast()``
386  fail. `#262 <https://github.com/pybind/pybind11/pull/262>`_.
387
388* Creation of holder types for classes deriving from
389  ``std::enable_shared_from_this<>`` now also works for ``const`` values.
390  `#260 <https://github.com/pybind/pybind11/pull/260>`_.
391
392* ``make_iterator()`` improvements for better compatibility with various
393  types (now uses prefix increment operator); it now also accepts iterators
394  with different begin/end types as long as they are equality comparable.
395  `#247 <https://github.com/pybind/pybind11/pull/247>`_.
396
397* ``arg()`` now accepts a wider range of argument types for default values.
398  `#244 <https://github.com/pybind/pybind11/pull/244>`_.
399
400* Support ``keep_alive`` where the nurse object may be ``None``. `#341
401  <https://github.com/pybind/pybind11/pull/341>`_.
402
403* Added constructors for ``str`` and ``bytes`` from zero-terminated char
404  pointers, and from char pointers and length. Added constructors for ``str``
405  from ``bytes`` and for ``bytes`` from ``str``, which will perform UTF-8
406  decoding/encoding as required.
407
408* Many other improvements of library internals without user-visible changes
409
410
4111.8.1 (July 12, 2016)
412----------------------
413* Fixed a rare but potentially very severe issue when the garbage collector ran
414  during pybind11 type creation.
415
4161.8.0 (June 14, 2016)
417----------------------
418* Redesigned CMake build system which exports a convenient
419  ``pybind11_add_module`` function to parent projects.
420* ``std::vector<>`` type bindings analogous to Boost.Python's ``indexing_suite``
421* Transparent conversion of sparse and dense Eigen matrices and vectors (``eigen.h``)
422* Added an ``ExtraFlags`` template argument to the NumPy ``array_t<>`` wrapper
423  to disable an enforced cast that may lose precision, e.g. to create overloads
424  for different precisions and complex vs real-valued matrices.
425* Prevent implicit conversion of floating point values to integral types in
426  function arguments
427* Fixed incorrect default return value policy for functions returning a shared
428  pointer
429* Don't allow registering a type via ``class_`` twice
430* Don't allow casting a ``None`` value into a C++ lvalue reference
431* Fixed a crash in ``enum_::operator==`` that was triggered by the ``help()`` command
432* Improved detection of whether or not custom C++ types can be copy/move-constructed
433* Extended ``str`` type to also work with ``bytes`` instances
434* Added a ``"name"_a`` user defined string literal that is equivalent to ``py::arg("name")``.
435* When specifying function arguments via ``py::arg``, the test that verifies
436  the number of arguments now runs at compile time.
437* Added ``[[noreturn]]`` attribute to ``pybind11_fail()`` to quench some
438  compiler warnings
439* List function arguments in exception text when the dispatch code cannot find
440  a matching overload
441* Added ``PYBIND11_OVERLOAD_NAME`` and ``PYBIND11_OVERLOAD_PURE_NAME`` macros which
442  can be used to override virtual methods whose name differs in C++ and Python
443  (e.g. ``__call__`` and ``operator()``)
444* Various minor ``iterator`` and ``make_iterator()`` improvements
445* Transparently support ``__bool__`` on Python 2.x and Python 3.x
446* Fixed issue with destructor of unpickled object not being called
447* Minor CMake build system improvements on Windows
448* New ``pybind11::args`` and ``pybind11::kwargs`` types to create functions which
449  take an arbitrary number of arguments and keyword arguments
450* New syntax to call a Python function from C++ using ``*args`` and ``*kwargs``
451* The functions ``def_property_*`` now correctly process docstring arguments (these
452  formerly caused a segmentation fault)
453* Many ``mkdoc.py`` improvements (enumerations, template arguments, ``DOC()``
454  macro accepts more arguments)
455* Cygwin support
456* Documentation improvements (pickling support, ``keep_alive``, macro usage)
457
4581.7 (April 30, 2016)
459----------------------
460* Added a new ``move`` return value policy that triggers C++11 move semantics.
461  The automatic return value policy falls back to this case whenever a rvalue
462  reference is encountered
463* Significantly more general GIL state routines that are used instead of
464  Python's troublesome ``PyGILState_Ensure`` and ``PyGILState_Release`` API
465* Redesign of opaque types that drastically simplifies their usage
466* Extended ability to pass values of type ``[const] void *``
467* ``keep_alive`` fix: don't fail when there is no patient
468* ``functional.h``: acquire the GIL before calling a Python function
469* Added Python RAII type wrappers ``none`` and ``iterable``
470* Added ``*args`` and ``*kwargs`` pass-through parameters to
471  ``pybind11.get_include()`` function
472* Iterator improvements and fixes
473* Documentation on return value policies and opaque types improved
474
4751.6 (April 30, 2016)
476----------------------
477* Skipped due to upload to PyPI gone wrong and inability to recover
478  (https://github.com/pypa/packaging-problems/issues/74)
479
4801.5 (April 21, 2016)
481----------------------
482* For polymorphic types, use RTTI to try to return the closest type registered with pybind11
483* Pickling support for serializing and unserializing C++ instances to a byte stream in Python
484* Added a convenience routine ``make_iterator()`` which turns a range indicated
485  by a pair of C++ iterators into a iterable Python object
486* Added ``len()`` and a variadic ``make_tuple()`` function
487* Addressed a rare issue that could confuse the current virtual function
488  dispatcher and another that could lead to crashes in multi-threaded
489  applications
490* Added a ``get_include()`` function to the Python module that returns the path
491  of the directory containing the installed pybind11 header files
492* Documentation improvements: import issues, symbol visibility, pickling, limitations
493* Added casting support for ``std::reference_wrapper<>``
494
4951.4 (April 7, 2016)
496--------------------------
497* Transparent type conversion for ``std::wstring`` and ``wchar_t``
498* Allow passing ``nullptr``-valued strings
499* Transparent passing of ``void *`` pointers using capsules
500* Transparent support for returning values wrapped in ``std::unique_ptr<>``
501* Improved docstring generation for compatibility with Sphinx
502* Nicer debug error message when default parameter construction fails
503* Support for "opaque" types that bypass the transparent conversion layer for STL containers
504* Redesigned type casting interface to avoid ambiguities that could occasionally cause compiler errors
505* Redesigned property implementation; fixes crashes due to an unfortunate default return value policy
506* Anaconda package generation support
507
5081.3 (March 8, 2016)
509--------------------------
510
511* Added support for the Intel C++ compiler (v15+)
512* Added support for the STL unordered set/map data structures
513* Added support for the STL linked list data structure
514* NumPy-style broadcasting support in ``pybind11::vectorize``
515* pybind11 now displays more verbose error messages when ``arg::operator=()`` fails
516* pybind11 internal data structures now live in a version-dependent namespace to avoid ABI issues
517* Many, many bugfixes involving corner cases and advanced usage
518
5191.2 (February 7, 2016)
520--------------------------
521
522* Optional: efficient generation of function signatures at compile time using C++14
523* Switched to a simpler and more general way of dealing with function default
524  arguments. Unused keyword arguments in function calls are now detected and
525  cause errors as expected
526* New ``keep_alive`` call policy analogous to Boost.Python's ``with_custodian_and_ward``
527* New ``pybind11::base<>`` attribute to indicate a subclass relationship
528* Improved interface for RAII type wrappers in ``pytypes.h``
529* Use RAII type wrappers consistently within pybind11 itself. This
530  fixes various potential refcount leaks when exceptions occur
531* Added new ``bytes`` RAII type wrapper (maps to ``string`` in Python 2.7)
532* Made handle and related RAII classes const correct, using them more
533  consistently everywhere now
534* Got rid of the ugly ``__pybind11__`` attributes on the Python side---they are
535  now stored in a C++ hash table that is not visible in Python
536* Fixed refcount leaks involving NumPy arrays and bound functions
537* Vastly improved handling of shared/smart pointers
538* Removed an unnecessary copy operation in ``pybind11::vectorize``
539* Fixed naming clashes when both pybind11 and NumPy headers are included
540* Added conversions for additional exception types
541* Documentation improvements (using multiple extension modules, smart pointers,
542  other minor clarifications)
543* unified infrastructure for parsing variadic arguments in ``class_`` and cpp_function
544* Fixed license text (was: ZLIB, should have been: 3-clause BSD)
545* Python 3.2 compatibility
546* Fixed remaining issues when accessing types in another plugin module
547* Added enum comparison and casting methods
548* Improved SFINAE-based detection of whether types are copy-constructible
549* Eliminated many warnings about unused variables and the use of ``offsetof()``
550* Support for ``std::array<>`` conversions
551
5521.1 (December 7, 2015)
553--------------------------
554
555* Documentation improvements (GIL, wrapping functions, casting, fixed many typos)
556* Generalized conversion of integer types
557* Improved support for casting function objects
558* Improved support for ``std::shared_ptr<>`` conversions
559* Initial support for ``std::set<>`` conversions
560* Fixed type resolution issue for types defined in a separate plugin module
561* Cmake build system improvements
562* Factored out generic functionality to non-templated code (smaller code size)
563* Added a code size / compile time benchmark vs Boost.Python
564* Added an appveyor CI script
565
5661.0 (October 15, 2015)
567------------------------
568* Initial release
569