blob: b0d958d491020e8b3d802498ff20ff9b2bbb4306 [file] [log] [blame]
Wenzel Jakob1ae77fe2016-01-17 22:36:43 +01001.. _changelog:
2
3Changelog
4#########
5
Wenzel Jakobed52f462016-12-26 13:18:26 +01006Starting with version 1.8.0, pybind11 releases use a `semantic versioning
Wenzel Jakobd3549d62016-12-23 16:01:04 +01007<http://semver.org>`_ policy.
Wenzel Jakobf9502152016-06-14 15:00:46 +02008
Wenzel Jakob8cf091a2017-08-31 14:01:08 +02009v2.3.0 (Not yet released)
10-----------------------------------------------------
11
Dean Moldovan56613942017-07-02 12:52:00 +020012* Significantly reduced module binary size (10-20%) when compiled in C++11 mode
13 with GCC/Clang, or in any mode with MSVC. Function signatures are now always
14 precomputed at compile time (this was previously only available in C++14 mode
15 for non-MSVC compilers).
16 `#934 <https://github.com/pybind/pybind11/pull/934>`_.
Wenzel Jakob8cf091a2017-08-31 14:01:08 +020017
Ted Drain0a0758c2017-11-07 08:35:27 -080018* Added support for write only properties.
19 `#1144 <https://github.com/pybind/pybind11/pull/1144>`_.
20
Wenzel Jakobf94d7592017-09-14 08:49:47 +020021v2.2.1 (September 14, 2017)
Dean Moldovan7939f4b2017-09-04 13:49:19 +020022-----------------------------------------------------
23
Dean Moldovan27680302017-09-13 19:04:25 +020024* Added ``py::module::reload()`` member function for reloading a module.
25 `#1040 <https://github.com/pybind/pybind11/pull/1040>`_.
Dean Moldovanb0a0e4a2017-09-04 21:16:09 +020026
Dean Moldovan953d2422017-09-10 16:53:02 +020027* Fixed a reference leak in the number converter.
28 `#1078 <https://github.com/pybind/pybind11/pull/1078>`_.
29
Dean Moldovan27680302017-09-13 19:04:25 +020030* Fixed compilation with Clang on host GCC < 5 (old libstdc++ which isn't fully
31 C++11 compliant). `#1062 <https://github.com/pybind/pybind11/pull/1062>`_.
32
Dean Moldovan3c4933c2017-09-01 21:42:20 +020033* Fixed a regression where the automatic ``std::vector<bool>`` caster would
34 fail to compile. The same fix also applies to any container which returns
35 element proxies instead of references.
36 `#1053 <https://github.com/pybind/pybind11/pull/1053>`_.
37
Dean Moldovan7939f4b2017-09-04 13:49:19 +020038* Fixed a regression where the ``py::keep_alive`` policy could not be applied
39 to constructors. `#1065 <https://github.com/pybind/pybind11/pull/1065>`_.
40
Dean Moldovan7b1de1e2017-09-03 01:31:47 +020041* Fixed a nullptr dereference when loading a ``py::module_local`` type
42 that's only registered in an external module.
43 `#1058 <https://github.com/pybind/pybind11/pull/1058>`_.
44
Dean Moldovan27680302017-09-13 19:04:25 +020045* Fixed implicit conversion of accessors to types derived from ``py::object``.
46 `#1076 <https://github.com/pybind/pybind11/pull/1076>`_.
47
48* The ``name`` in ``PYBIND11_MODULE(name, variable)`` can now be a macro.
49 `#1082 <https://github.com/pybind/pybind11/pull/1082>`_.
50
51* Relaxed overly strict ``py::pickle()`` check for matching get and set types.
52 `#1064 <https://github.com/pybind/pybind11/pull/1064>`_.
53
Dean Moldovan2b4477e2017-09-09 20:21:34 +020054* Conversion errors now try to be more informative when it's likely that
55 a missing header is the cause (e.g. forgetting ``<pybind11/stl.h>``).
56 `#1077 <https://github.com/pybind/pybind11/pull/1077>`_.
57
Wenzel Jakob2a5a5ec2017-08-31 13:58:24 +020058v2.2.0 (August 31, 2017)
Wenzel Jakobd405b1b2017-03-22 22:20:07 +010059-----------------------------------------------------
60
Dean Moldovandb46a892017-08-13 22:25:15 +020061* Support for embedding the Python interpreter. See the
62 :doc:`documentation page </advanced/embedding>` for a
63 full overview of the new features.
64 `#774 <https://github.com/pybind/pybind11/pull/774>`_,
65 `#889 <https://github.com/pybind/pybind11/pull/889>`_,
66 `#892 <https://github.com/pybind/pybind11/pull/892>`_,
67 `#920 <https://github.com/pybind/pybind11/pull/920>`_.
68
69 .. code-block:: cpp
70
71 #include <pybind11/embed.h>
72 namespace py = pybind11;
73
74 int main() {
75 py::scoped_interpreter guard{}; // start the interpreter and keep it alive
76
77 py::print("Hello, World!"); // use the Python API
78 }
79
80* Support for inheriting from multiple C++ bases in Python.
81 `#693 <https://github.com/pybind/pybind11/pull/693>`_.
82
83 .. code-block:: python
84
85 from cpp_module import CppBase1, CppBase2
86
87 class PyDerived(CppBase1, CppBase2):
88 def __init__(self):
89 CppBase1.__init__(self) # C++ bases must be initialized explicitly
90 CppBase2.__init__(self)
91
92* ``PYBIND11_MODULE`` is now the preferred way to create module entry points.
93 ``PYBIND11_PLUGIN`` is deprecated. See :ref:`macros` for details.
94 `#879 <https://github.com/pybind/pybind11/pull/879>`_.
95
96 .. code-block:: cpp
97
98 // new
99 PYBIND11_MODULE(example, m) {
100 m.def("add", [](int a, int b) { return a + b; });
101 }
102
103 // old
104 PYBIND11_PLUGIN(example) {
105 py::module m("example");
106 m.def("add", [](int a, int b) { return a + b; });
107 return m.ptr();
108 }
109
110* pybind11's headers and build system now more strictly enforce hidden symbol
111 visibility for extension modules. This should be seamless for most users,
Dean Moldovan1fb9df62017-08-18 19:26:49 +0200112 but see the :doc:`upgrade` if you use a custom build system.
113 `#995 <https://github.com/pybind/pybind11/pull/995>`_.
Dean Moldovandb46a892017-08-13 22:25:15 +0200114
115* Support for ``py::module_local`` types which allow multiple modules to
116 export the same C++ types without conflicts. This is useful for opaque
117 types like ``std::vector<int>``. ``py::bind_vector`` and ``py::bind_map``
118 now default to ``py::module_local`` if their elements are builtins or
119 local types. See :ref:`module_local` for details.
120 `#949 <https://github.com/pybind/pybind11/pull/949>`_,
121 `#981 <https://github.com/pybind/pybind11/pull/981>`_,
122 `#995 <https://github.com/pybind/pybind11/pull/995>`_,
123 `#997 <https://github.com/pybind/pybind11/pull/997>`_.
124
125* Custom constructors can now be added very easily using lambdas or factory
126 functions which return a class instance by value, pointer or holder. This
127 supersedes the old placement-new ``__init__`` technique.
128 See :ref:`custom_constructors` for details.
Dean Moldovan4c540442017-08-30 21:53:08 +0200129 `#805 <https://github.com/pybind/pybind11/pull/805>`_,
130 `#1014 <https://github.com/pybind/pybind11/pull/1014>`_.
Dean Moldovandb46a892017-08-13 22:25:15 +0200131
132 .. code-block:: cpp
133
134 struct Example {
135 Example(std::string);
136 };
137
138 py::class_<Example>(m, "Example")
139 .def(py::init<std::string>()) // existing constructor
140 .def(py::init([](int n) { // custom constructor
141 return std::make_unique<Example>(std::to_string(n));
142 }));
143
Dean Moldovan1e5a7da2017-08-24 01:53:15 +0200144* Similarly to custom constructors, pickling support functions are now bound
145 using the ``py::pickle()`` adaptor which improves type safety. See the
146 :doc:`upgrade` and :ref:`pickling` for details.
147 `#1038 <https://github.com/pybind/pybind11/pull/1038>`_.
148
Dean Moldovandb46a892017-08-13 22:25:15 +0200149* Builtin support for converting C++17 standard library types and general
150 conversion improvements:
151
152 1. C++17 ``std::variant`` is supported right out of the box. C++11/14
153 equivalents (e.g. ``boost::variant``) can also be added with a simple
154 user-defined specialization. See :ref:`cpp17_container_casters` for details.
155 `#811 <https://github.com/pybind/pybind11/pull/811>`_,
156 `#845 <https://github.com/pybind/pybind11/pull/845>`_,
157 `#989 <https://github.com/pybind/pybind11/pull/989>`_.
158
159 2. Out-of-the-box support for C++17 ``std::string_view``.
160 `#906 <https://github.com/pybind/pybind11/pull/906>`_.
161
162 3. Improved compatibility of the builtin ``optional`` converter.
163 `#874 <https://github.com/pybind/pybind11/pull/874>`_.
164
165 4. The ``bool`` converter now accepts ``numpy.bool_`` and types which
166 define ``__bool__`` (Python 3.x) or ``__nonzero__`` (Python 2.7).
167 `#925 <https://github.com/pybind/pybind11/pull/925>`_.
168
169 5. C++-to-Python casters are now more efficient and move elements out
170 of rvalue containers whenever possible.
171 `#851 <https://github.com/pybind/pybind11/pull/851>`_,
172 `#936 <https://github.com/pybind/pybind11/pull/936>`_,
173 `#938 <https://github.com/pybind/pybind11/pull/938>`_.
174
175 6. Fixed ``bytes`` to ``std::string/char*`` conversion on Python 3.
176 `#817 <https://github.com/pybind/pybind11/pull/817>`_.
177
178 7. Fixed lifetime of temporary C++ objects created in Python-to-C++ conversions.
179 `#924 <https://github.com/pybind/pybind11/pull/924>`_.
180
Henry Schreiner8b405052017-08-24 17:12:43 -0700181* Scope guard call policy for RAII types, e.g. ``py::call_guard<py::gil_scoped_release>()``,
182 ``py::call_guard<py::scoped_ostream_redirect>()``. See :ref:`call_policies` for details.
Dean Moldovandb46a892017-08-13 22:25:15 +0200183 `#740 <https://github.com/pybind/pybind11/pull/740>`_.
184
Henry Schreiner8b405052017-08-24 17:12:43 -0700185* Utility for redirecting C++ streams to Python (e.g. ``std::cout`` ->
186 ``sys.stdout``). Scope guard ``py::scoped_ostream_redirect`` in C++ and
187 a context manager in Python. See :ref:`ostream_redirect`.
188 `#1009 <https://github.com/pybind/pybind11/pull/1009>`_.
189
Dean Moldovandb46a892017-08-13 22:25:15 +0200190* Improved handling of types and exceptions across module boundaries.
191 `#915 <https://github.com/pybind/pybind11/pull/915>`_,
192 `#951 <https://github.com/pybind/pybind11/pull/951>`_,
193 `#995 <https://github.com/pybind/pybind11/pull/995>`_.
194
195* Fixed destruction order of ``py::keep_alive`` nurse/patient objects
196 in reference cycles.
197 `#856 <https://github.com/pybind/pybind11/pull/856>`_.
198
199* Numpy and buffer protocol related improvements:
200
201 1. Support for negative strides in Python buffer objects/numpy arrays. This
202 required changing integers from unsigned to signed for the related C++ APIs.
203 Note: If you have compiler warnings enabled, you may notice some new conversion
204 warnings after upgrading. These can be resolved with ``static_cast``.
205 `#782 <https://github.com/pybind/pybind11/pull/782>`_.
206
207 2. Support ``std::complex`` and arrays inside ``PYBIND11_NUMPY_DTYPE``.
208 `#831 <https://github.com/pybind/pybind11/pull/831>`_,
209 `#832 <https://github.com/pybind/pybind11/pull/832>`_.
210
211 3. Support for constructing ``py::buffer_info`` and ``py::arrays`` using
212 arbitrary containers or iterators instead of requiring a ``std::vector``.
213 `#788 <https://github.com/pybind/pybind11/pull/788>`_,
214 `#822 <https://github.com/pybind/pybind11/pull/822>`_,
215 `#860 <https://github.com/pybind/pybind11/pull/860>`_.
216
217 4. Explicitly check numpy version and require >= 1.7.0.
218 `#819 <https://github.com/pybind/pybind11/pull/819>`_.
219
220* Support for allowing/prohibiting ``None`` for specific arguments and improved
221 ``None`` overload resolution order. See :ref:`none_arguments` for details.
222 `#843 <https://github.com/pybind/pybind11/pull/843>`_.
223 `#859 <https://github.com/pybind/pybind11/pull/859>`_.
224
225* Added ``py::exec()`` as a shortcut for ``py::eval<py::eval_statements>()``
226 and support for C++11 raw string literals as input. See :ref:`eval`.
227 `#766 <https://github.com/pybind/pybind11/pull/766>`_,
228 `#827 <https://github.com/pybind/pybind11/pull/827>`_.
229
230* ``py::vectorize()`` ignores non-vectorizable arguments and supports
231 member functions.
232 `#762 <https://github.com/pybind/pybind11/pull/762>`_.
233
234* Support for bound methods as callbacks (``pybind11/functional.h``).
235 `#815 <https://github.com/pybind/pybind11/pull/815>`_.
236
237* Allow aliasing pybind11 methods: ``cls.attr("foo") = cls.attr("bar")``.
238 `#802 <https://github.com/pybind/pybind11/pull/802>`_.
239
240* Don't allow mixed static/non-static overloads.
241 `#804 <https://github.com/pybind/pybind11/pull/804>`_.
242
243* Fixed overriding static properties in derived classes.
244 `#784 <https://github.com/pybind/pybind11/pull/784>`_.
245
Dean Moldovan4c540442017-08-30 21:53:08 +0200246* Improved deduction of member functions of a derived class when its bases
247 aren't registered with pybind11.
Dean Moldovandb46a892017-08-13 22:25:15 +0200248 `#855 <https://github.com/pybind/pybind11/pull/855>`_.
249
250 .. code-block:: cpp
251
252 struct Base {
253 int foo() { return 42; }
254 }
255
256 struct Derived : Base {}
257
258 // Now works, but previously required also binding `Base`
259 py::class_<Derived>(m, "Derived")
260 .def("foo", &Derived::foo); // function is actually from `Base`
261
Wenzel Jakobb12a9d62017-08-23 16:30:56 +0200262* The implementation of ``py::init<>`` now uses C++11 brace initialization
263 syntax to construct instances, which permits binding implicit constructors of
264 aggregate types. `#1015 <https://github.com/pybind/pybind11/pull/1015>`_.
265
266 .. code-block:: cpp
267
268 struct Aggregate {
269 int a;
270 std::string b;
271 };
272
273 py::class_<Aggregate>(m, "Aggregate")
274 .def(py::init<int, const std::string &>());
275
Dean Moldovandb46a892017-08-13 22:25:15 +0200276* Fixed issues with multiple inheritance with offset base/derived pointers.
277 `#812 <https://github.com/pybind/pybind11/pull/812>`_,
278 `#866 <https://github.com/pybind/pybind11/pull/866>`_,
279 `#960 <https://github.com/pybind/pybind11/pull/960>`_.
280
Dean Moldovan4c540442017-08-30 21:53:08 +0200281* Fixed reference leak of type objects.
282 `#1030 <https://github.com/pybind/pybind11/pull/1030>`_.
283
Dean Moldovandb46a892017-08-13 22:25:15 +0200284* Improved support for the ``/std:c++14`` and ``/std:c++latest`` modes
285 on MSVC 2017.
286 `#841 <https://github.com/pybind/pybind11/pull/841>`_,
287 `#999 <https://github.com/pybind/pybind11/pull/999>`_.
288
289* Fixed detection of private operator new on MSVC.
290 `#893 <https://github.com/pybind/pybind11/pull/893>`_,
291 `#918 <https://github.com/pybind/pybind11/pull/918>`_.
292
293* Intel C++ compiler compatibility fixes.
294 `#937 <https://github.com/pybind/pybind11/pull/937>`_.
295
296* Fixed implicit conversion of `py::enum_` to integer types on Python 2.7.
297 `#821 <https://github.com/pybind/pybind11/pull/821>`_.
298
Bruce Merry37de2da2017-08-30 14:22:00 +0200299* Added ``py::hash`` to fetch the hash value of Python objects, and
300 ``.def(hash(py::self))`` to provide the C++ ``std::hash`` as the Python
301 ``__hash__`` method.
302 `#1034 <https://github.com/pybind/pybind11/pull/1034>`_.
303
Dean Moldovandb46a892017-08-13 22:25:15 +0200304* Fixed ``__truediv__`` on Python 2 and ``__itruediv__`` on Python 3.
305 `#867 <https://github.com/pybind/pybind11/pull/867>`_.
306
307* ``py::capsule`` objects now support the ``name`` attribute. This is useful
308 for interfacing with ``scipy.LowLevelCallable``.
309 `#902 <https://github.com/pybind/pybind11/pull/902>`_.
310
311* Fixed ``py::make_iterator``'s ``__next__()`` for past-the-end calls.
312 `#897 <https://github.com/pybind/pybind11/pull/897>`_.
313
314* Added ``error_already_set::matches()`` for checking Python exceptions.
315 `#772 <https://github.com/pybind/pybind11/pull/772>`_.
316
317* Deprecated ``py::error_already_set::clear()``. It's no longer needed
318 following a simplification of the ``py::error_already_set`` class.
319 `#954 <https://github.com/pybind/pybind11/pull/954>`_.
320
321* Deprecated ``py::handle::operator==()`` in favor of ``py::handle::is()``
322 `#825 <https://github.com/pybind/pybind11/pull/825>`_.
323
324* Deprecated ``py::object::borrowed``/``py::object::stolen``.
325 Use ``py::object::borrowed_t{}``/``py::object::stolen_t{}`` instead.
326 `#771 <https://github.com/pybind/pybind11/pull/771>`_.
327
Dean Moldovan4c540442017-08-30 21:53:08 +0200328* Changed internal data structure versioning to avoid conflicts between
329 modules compiled with different revisions of pybind11.
330 `#1012 <https://github.com/pybind/pybind11/pull/1012>`_.
331
Dean Moldovandb46a892017-08-13 22:25:15 +0200332* Additional compile-time and run-time error checking and more informative messages.
333 `#786 <https://github.com/pybind/pybind11/pull/786>`_,
334 `#794 <https://github.com/pybind/pybind11/pull/794>`_,
335 `#803 <https://github.com/pybind/pybind11/pull/803>`_.
336
337* Various minor improvements and fixes.
338 `#764 <https://github.com/pybind/pybind11/pull/764>`_,
339 `#791 <https://github.com/pybind/pybind11/pull/791>`_,
340 `#795 <https://github.com/pybind/pybind11/pull/795>`_,
341 `#840 <https://github.com/pybind/pybind11/pull/840>`_,
342 `#844 <https://github.com/pybind/pybind11/pull/844>`_,
343 `#846 <https://github.com/pybind/pybind11/pull/846>`_,
344 `#849 <https://github.com/pybind/pybind11/pull/849>`_,
345 `#858 <https://github.com/pybind/pybind11/pull/858>`_,
346 `#862 <https://github.com/pybind/pybind11/pull/862>`_,
347 `#871 <https://github.com/pybind/pybind11/pull/871>`_,
348 `#872 <https://github.com/pybind/pybind11/pull/872>`_,
349 `#881 <https://github.com/pybind/pybind11/pull/881>`_,
350 `#888 <https://github.com/pybind/pybind11/pull/888>`_,
351 `#899 <https://github.com/pybind/pybind11/pull/899>`_,
352 `#928 <https://github.com/pybind/pybind11/pull/928>`_,
353 `#931 <https://github.com/pybind/pybind11/pull/931>`_,
354 `#944 <https://github.com/pybind/pybind11/pull/944>`_,
355 `#950 <https://github.com/pybind/pybind11/pull/950>`_,
356 `#952 <https://github.com/pybind/pybind11/pull/952>`_,
357 `#962 <https://github.com/pybind/pybind11/pull/962>`_,
358 `#965 <https://github.com/pybind/pybind11/pull/965>`_,
359 `#970 <https://github.com/pybind/pybind11/pull/970>`_,
Dean Moldovandb46a892017-08-13 22:25:15 +0200360 `#978 <https://github.com/pybind/pybind11/pull/978>`_,
Dean Moldovan4c540442017-08-30 21:53:08 +0200361 `#979 <https://github.com/pybind/pybind11/pull/979>`_,
Wenzel Jakoba1041192017-08-28 16:35:32 +0200362 `#986 <https://github.com/pybind/pybind11/pull/986>`_,
Dean Moldovan4c540442017-08-30 21:53:08 +0200363 `#1020 <https://github.com/pybind/pybind11/pull/1020>`_,
364 `#1027 <https://github.com/pybind/pybind11/pull/1027>`_,
Wenzel Jakoba1041192017-08-28 16:35:32 +0200365 `#1037 <https://github.com/pybind/pybind11/pull/1037>`_.
Dean Moldovandb46a892017-08-13 22:25:15 +0200366
367* Testing improvements.
368 `#798 <https://github.com/pybind/pybind11/pull/798>`_,
369 `#882 <https://github.com/pybind/pybind11/pull/882>`_,
370 `#898 <https://github.com/pybind/pybind11/pull/898>`_,
371 `#900 <https://github.com/pybind/pybind11/pull/900>`_,
372 `#921 <https://github.com/pybind/pybind11/pull/921>`_,
373 `#923 <https://github.com/pybind/pybind11/pull/923>`_,
374 `#963 <https://github.com/pybind/pybind11/pull/963>`_.
375
Wenzel Jakobdb200952017-04-07 02:03:46 +0200376v2.1.1 (April 7, 2017)
377-----------------------------------------------------
378
379* Fixed minimum version requirement for MSVC 2015u3
380 `#773 <https://github.com/pybind/pybind11/pull/773>`_.
381
Wenzel Jakobd405b1b2017-03-22 22:20:07 +0100382v2.1.0 (March 22, 2017)
Wenzel Jakoba9730be2017-01-06 14:18:44 +0100383-----------------------------------------------------
384
Wenzel Jakob62e5fef2017-03-22 22:07:45 +0100385* pybind11 now performs function overload resolution in two phases. The first
386 phase only considers exact type matches, while the second allows for implicit
387 conversions to take place. A special ``noconvert()`` syntax can be used to
388 completely disable implicit conversions for specific arguments.
389 `#643 <https://github.com/pybind/pybind11/pull/643>`_,
390 `#634 <https://github.com/pybind/pybind11/pull/634>`_,
391 `#650 <https://github.com/pybind/pybind11/pull/650>`_.
392
393* Fixed a regression where static properties no longer worked with classes
394 using multiple inheritance. The ``py::metaclass`` attribute is no longer
395 necessary (and deprecated as of this release) when binding classes with
396 static properties.
397 `#679 <https://github.com/pybind/pybind11/pull/679>`_,
398
399* Classes bound using ``pybind11`` can now use custom metaclasses.
400 `#679 <https://github.com/pybind/pybind11/pull/679>`_,
401
402* ``py::args`` and ``py::kwargs`` can now be mixed with other positional
403 arguments when binding functions using pybind11.
404 `#611 <https://github.com/pybind/pybind11/pull/611>`_.
405
406* Improved support for C++11 unicode string and character types; added
407 extensive documentation regarding pybind11's string conversion behavior.
408 `#624 <https://github.com/pybind/pybind11/pull/624>`_,
409 `#636 <https://github.com/pybind/pybind11/pull/636>`_,
410 `#715 <https://github.com/pybind/pybind11/pull/715>`_.
411
412* pybind11 can now avoid expensive copies when converting Eigen arrays to NumPy
413 arrays (and vice versa). `#610 <https://github.com/pybind/pybind11/pull/610>`_.
414
415* The "fast path" in ``py::vectorize`` now works for any full-size group of C or
416 F-contiguous arrays. The non-fast path is also faster since it no longer performs
417 copies of the input arguments (except when type conversions are necessary).
418 `#610 <https://github.com/pybind/pybind11/pull/610>`_.
419
420* Added fast, unchecked access to NumPy arrays via a proxy object.
421 `#746 <https://github.com/pybind/pybind11/pull/746>`_.
422
Wenzel Jakob0d929382017-03-22 22:52:29 +0100423* Transparent support for class-specific ``operator new`` and
Wenzel Jakob62e5fef2017-03-22 22:07:45 +0100424 ``operator delete`` implementations.
425 `#755 <https://github.com/pybind/pybind11/pull/755>`_.
426
427* Slimmer and more efficient STL-compatible iterator interface for sequence types.
428 `#662 <https://github.com/pybind/pybind11/pull/662>`_.
429
430* Improved custom holder type support.
431 `#607 <https://github.com/pybind/pybind11/pull/607>`_.
432
433* ``nullptr`` to ``None`` conversion fixed in various builtin type casters.
434 `#732 <https://github.com/pybind/pybind11/pull/732>`_.
435
436* ``enum_`` now exposes its members via a special ``__members__`` attribute.
437 `#666 <https://github.com/pybind/pybind11/pull/666>`_.
438
439* ``std::vector`` bindings created using ``stl_bind.h`` can now optionally
440 implement the buffer protocol. `#488 <https://github.com/pybind/pybind11/pull/488>`_.
441
442* Automated C++ reference documentation using doxygen and breathe.
443 `#598 <https://github.com/pybind/pybind11/pull/598>`_.
444
445* Added minimum compiler version assertions.
446 `#727 <https://github.com/pybind/pybind11/pull/727>`_.
447
448* Improved compatibility with C++1z.
449 `#677 <https://github.com/pybind/pybind11/pull/677>`_.
450
451* Improved ``py::capsule`` API. Can be used to implement cleanup
452 callbacks that are involved at module destruction time.
453 `#752 <https://github.com/pybind/pybind11/pull/752>`_.
454
455* Various minor improvements and fixes.
456 `#595 <https://github.com/pybind/pybind11/pull/595>`_,
457 `#588 <https://github.com/pybind/pybind11/pull/588>`_,
458 `#589 <https://github.com/pybind/pybind11/pull/589>`_,
459 `#603 <https://github.com/pybind/pybind11/pull/603>`_,
460 `#619 <https://github.com/pybind/pybind11/pull/619>`_,
461 `#648 <https://github.com/pybind/pybind11/pull/648>`_,
462 `#695 <https://github.com/pybind/pybind11/pull/695>`_,
463 `#720 <https://github.com/pybind/pybind11/pull/720>`_,
464 `#723 <https://github.com/pybind/pybind11/pull/723>`_,
465 `#729 <https://github.com/pybind/pybind11/pull/729>`_,
466 `#724 <https://github.com/pybind/pybind11/pull/724>`_,
467 `#742 <https://github.com/pybind/pybind11/pull/742>`_,
468 `#753 <https://github.com/pybind/pybind11/pull/753>`_.
Wenzel Jakoba9730be2017-01-06 14:18:44 +0100469
Wenzel Jakobf8dafe92017-01-04 15:09:49 +0100470v2.0.1 (Jan 4, 2017)
471-----------------------------------------------------
472
473* Fix pointer to reference error in type_caster on MSVC
474 `#583 <https://github.com/pybind/pybind11/pull/583>`_.
475
476* Fixed a segmentation in the test suite due to a typo
477 `cd7eac <https://github.com/pybind/pybind11/commit/cd7eac>`_.
478
Wenzel Jakobe33ef9c2017-01-01 13:55:06 +0100479v2.0.0 (Jan 1, 2017)
Wenzel Jakobed52f462016-12-26 13:18:26 +0100480-----------------------------------------------------
481
482* Fixed a reference counting regression affecting types with custom metaclasses
483 (introduced in v2.0.0-rc1).
484 `#571 <https://github.com/pybind/pybind11/pull/571>`_.
485
486* Quenched a CMake policy warning.
487 `#570 <https://github.com/pybind/pybind11/pull/570>`_.
488
Wenzel Jakobe33ef9c2017-01-01 13:55:06 +0100489v2.0.0-rc1 (Dec 23, 2016)
Wenzel Jakobf88af0c2016-06-22 13:52:31 +0200490-----------------------------------------------------
Wenzel Jakob1cbe7ef2016-06-14 14:55:10 +0200491
Wenzel Jakobd3549d62016-12-23 16:01:04 +0100492The pybind11 developers are excited to issue a release candidate of pybind11
493with a subsequent v2.0.0 release planned in early January next year.
Wenzel Jakob1cbe7ef2016-06-14 14:55:10 +0200494
Wenzel Jakobd3549d62016-12-23 16:01:04 +0100495An incredible amount of effort by went into pybind11 over the last ~5 months,
496leading to a release that is jam-packed with exciting new features and numerous
Wenzel Jakobf8dafe92017-01-04 15:09:49 +0100497usability improvements. The following list links PRs or individual commits
Wenzel Jakobed52f462016-12-26 13:18:26 +0100498whenever applicable.
Wenzel Jakobd3549d62016-12-23 16:01:04 +0100499
500Happy Christmas!
501
502* Support for binding C++ class hierarchies that make use of multiple
503 inheritance. `#410 <https://github.com/pybind/pybind11/pull/410>`_.
504
505* PyPy support: pybind11 now supports nightly builds of PyPy and will
506 interoperate with the future 5.7 release. No code changes are necessary,
507 everything "just" works as usual. Note that we only target the Python 2.7
508 branch for now; support for 3.x will be added once its ``cpyext`` extension
Wenzel Jakobed52f462016-12-26 13:18:26 +0100509 support catches up. A few minor features remain unsupported for the time
510 being (notably dynamic attributes in custom types).
511 `#527 <https://github.com/pybind/pybind11/pull/527>`_.
Wenzel Jakobd3549d62016-12-23 16:01:04 +0100512
513* Significant work on the documentation -- in particular, the monolitic
514 ``advanced.rst`` file was restructured into a easier to read hierarchical
515 organization. `#448 <https://github.com/pybind/pybind11/pull/448>`_.
516
517* Many NumPy-related improvements:
518
519 1. Object-oriented API to access and modify NumPy ``ndarray`` instances,
520 replicating much of the corresponding NumPy C API functionality.
521 `#402 <https://github.com/pybind/pybind11/pull/402>`_.
522
523 2. NumPy array ``dtype`` array descriptors are now first-class citizens and
524 are exposed via a new class ``py::dtype``.
525
526 3. Structured dtypes can be registered using the ``PYBIND11_NUMPY_DTYPE()``
527 macro. Special ``array`` constructors accepting dtype objects were also
528 added.
529
530 One potential caveat involving this change: format descriptor strings
531 should now be accessed via ``format_descriptor::format()`` (however, for
532 compatibility purposes, the old syntax ``format_descriptor::value`` will
533 still work for non-structured data types). `#308
534 <https://github.com/pybind/pybind11/pull/308>`_.
535
536 4. Further improvements to support structured dtypes throughout the system.
537 `#472 <https://github.com/pybind/pybind11/pull/472>`_,
538 `#474 <https://github.com/pybind/pybind11/pull/474>`_,
539 `#459 <https://github.com/pybind/pybind11/pull/459>`_,
540 `#453 <https://github.com/pybind/pybind11/pull/453>`_,
541 `#452 <https://github.com/pybind/pybind11/pull/452>`_, and
542 `#505 <https://github.com/pybind/pybind11/pull/505>`_.
543
544 5. Fast access operators. `#497 <https://github.com/pybind/pybind11/pull/497>`_.
545
546 6. Constructors for arrays whose storage is owned by another object.
547 `#440 <https://github.com/pybind/pybind11/pull/440>`_.
548
549 7. Added constructors for ``array`` and ``array_t`` explicitly accepting shape
550 and strides; if strides are not provided, they are deduced assuming
551 C-contiguity. Also added simplified constructors for 1-dimensional case.
552
553 8. Added buffer/NumPy support for ``char[N]`` and ``std::array<char, N>`` types.
554
555 9. Added ``memoryview`` wrapper type which is constructible from ``buffer_info``.
556
557* Eigen: many additional conversions and support for non-contiguous
558 arrays/slices.
559 `#427 <https://github.com/pybind/pybind11/pull/427>`_,
560 `#315 <https://github.com/pybind/pybind11/pull/315>`_,
561 `#316 <https://github.com/pybind/pybind11/pull/316>`_,
562 `#312 <https://github.com/pybind/pybind11/pull/312>`_, and
563 `#267 <https://github.com/pybind/pybind11/pull/267>`_
564
565* Incompatible changes in ``class_<...>::class_()``:
566
567 1. Declarations of types that provide access via the buffer protocol must
568 now include the ``py::buffer_protocol()`` annotation as an argument to
569 the ``class_`` constructor.
570
571 2. Declarations of types that require a custom metaclass (i.e. all classes
572 which include static properties via commands such as
573 ``def_readwrite_static()``) must now include the ``py::metaclass()``
574 annotation as an argument to the ``class_`` constructor.
575
576 These two changes were necessary to make type definitions in pybind11
577 future-proof, and to support PyPy via its cpyext mechanism. `#527
578 <https://github.com/pybind/pybind11/pull/527>`_.
579
580
581 3. This version of pybind11 uses a redesigned mechnism for instantiating
582 trempoline classes that are used to override virtual methods from within
583 Python. This led to the following user-visible syntax change: instead of
584
585 .. code-block:: cpp
586
587 py::class_<TrampolineClass>("MyClass")
588 .alias<MyClass>()
589 ....
590
591 write
592
593 .. code-block:: cpp
594
595 py::class_<MyClass, TrampolineClass>("MyClass")
596 ....
597
598 Importantly, both the original and the trampoline class are now
599 specified as an arguments (in arbitrary order) to the ``py::class_``
600 template, and the ``alias<..>()`` call is gone. The new scheme has zero
601 overhead in cases when Python doesn't override any functions of the
602 underlying C++ class. `rev. 86d825
603 <https://github.com/pybind/pybind11/commit/86d825>`_.
604
Wenzel Jakobe6b2f752016-07-10 10:54:46 +0200605* Added ``eval`` and ``eval_file`` functions for evaluating expressions and
Wenzel Jakobd3549d62016-12-23 16:01:04 +0100606 statements from a string or file. `rev. 0d3fc3
607 <https://github.com/pybind/pybind11/commit/0d3fc3>`_.
608
609* pybind11 can now create types with a modifiable dictionary.
610 `#437 <https://github.com/pybind/pybind11/pull/437>`_ and
611 `#444 <https://github.com/pybind/pybind11/pull/444>`_.
612
613* Support for translation of arbitrary C++ exceptions to Python counterparts.
614 `#296 <https://github.com/pybind/pybind11/pull/296>`_ and
615 `#273 <https://github.com/pybind/pybind11/pull/273>`_.
616
617* Report full backtraces through mixed C++/Python code, better reporting for
618 import errors, fixed GIL management in exception processing.
619 `#537 <https://github.com/pybind/pybind11/pull/537>`_,
620 `#494 <https://github.com/pybind/pybind11/pull/494>`_,
621 `rev. e72d95 <https://github.com/pybind/pybind11/commit/e72d95>`_, and
622 `rev. 099d6e <https://github.com/pybind/pybind11/commit/099d6e>`_.
623
624* Support for bit-level operations, comparisons, and serialization of C++
625 enumerations. `#503 <https://github.com/pybind/pybind11/pull/503>`_,
626 `#508 <https://github.com/pybind/pybind11/pull/508>`_,
627 `#380 <https://github.com/pybind/pybind11/pull/380>`_,
628 `#309 <https://github.com/pybind/pybind11/pull/309>`_.
629 `#311 <https://github.com/pybind/pybind11/pull/311>`_.
630
631* The ``class_`` constructor now accepts its template arguments in any order.
632 `#385 <https://github.com/pybind/pybind11/pull/385>`_.
633
634* Attribute and item accessors now have a more complete interface which makes
635 it possible to chain attributes as in
636 ``obj.attr("a")[key].attr("b").attr("method")(1, 2, 3)``. `#425
637 <https://github.com/pybind/pybind11/pull/425>`_.
638
639* Major redesign of the default and conversion constructors in ``pytypes.h``.
640 `#464 <https://github.com/pybind/pybind11/pull/464>`_.
641
642* Added built-in support for ``std::shared_ptr`` holder type. It is no longer
643 necessary to to include a declaration of the form
644 ``PYBIND11_DECLARE_HOLDER_TYPE(T, std::shared_ptr<T>)`` (though continuing to
645 do so won't cause an error).
646 `#454 <https://github.com/pybind/pybind11/pull/454>`_.
647
648* New ``py::overload_cast`` casting operator to select among multiple possible
649 overloads of a function. An example:
650
651 .. code-block:: cpp
652
653 py::class_<Pet>(m, "Pet")
654 .def("set", py::overload_cast<int>(&Pet::set), "Set the pet's age")
655 .def("set", py::overload_cast<const std::string &>(&Pet::set), "Set the pet's name");
656
657 This feature only works on C++14-capable compilers.
658 `#541 <https://github.com/pybind/pybind11/pull/541>`_.
659
660* C++ types are automatically cast to Python types, e.g. when assigning
661 them as an attribute. For instance, the following is now legal:
662
663 .. code-block:: cpp
664
665 py::module m = /* ... */
666 m.attr("constant") = 123;
667
668 (Previously, a ``py::cast`` call was necessary to avoid a compilation error.)
669 `#551 <https://github.com/pybind/pybind11/pull/551>`_.
670
671* Redesigned ``pytest``-based test suite. `#321 <https://github.com/pybind/pybind11/pull/321>`_.
672
673* Instance tracking to detect reference leaks in test suite. `#324 <https://github.com/pybind/pybind11/pull/324>`_
674
675* pybind11 can now distinguish between multiple different instances that are
676 located at the same memory address, but which have different types.
677 `#329 <https://github.com/pybind/pybind11/pull/329>`_.
678
679* Improved logic in ``move`` return value policy.
680 `#510 <https://github.com/pybind/pybind11/pull/510>`_,
681 `#297 <https://github.com/pybind/pybind11/pull/297>`_.
682
683* Generalized unpacking API to permit calling Python functions from C++ using
684 notation such as ``foo(a1, a2, *args, "ka"_a=1, "kb"_a=2, **kwargs)``. `#372 <https://github.com/pybind/pybind11/pull/372>`_.
685
686* ``py::print()`` function whose behavior matches that of the native Python
687 ``print()`` function. `#372 <https://github.com/pybind/pybind11/pull/372>`_.
688
689* Added ``py::dict`` keyword constructor:``auto d = dict("number"_a=42,
690 "name"_a="World");``. `#372 <https://github.com/pybind/pybind11/pull/372>`_.
691
692* Added ``py::str::format()`` method and ``_s`` literal: ``py::str s = "1 + 2
693 = {}"_s.format(3);``. `#372 <https://github.com/pybind/pybind11/pull/372>`_.
694
695* Added ``py::repr()`` function which is equivalent to Python's builtin
696 ``repr()``. `#333 <https://github.com/pybind/pybind11/pull/333>`_.
697
698* Improved construction and destruction logic for holder types. It is now
699 possible to reference instances with smart pointer holder types without
700 constructing the holder if desired. The ``PYBIND11_DECLARE_HOLDER_TYPE``
701 macro now accepts an optional second parameter to indicate whether the holder
702 type uses intrusive reference counting.
703 `#533 <https://github.com/pybind/pybind11/pull/533>`_ and
704 `#561 <https://github.com/pybind/pybind11/pull/561>`_.
705
706* Mapping a stateless C++ function to Python and back is now "for free" (i.e.
707 no extra indirections or argument conversion overheads). `rev. 954b79
708 <https://github.com/pybind/pybind11/commit/954b79>`_.
709
710* Bindings for ``std::valarray<T>``.
711 `#545 <https://github.com/pybind/pybind11/pull/545>`_.
712
713* Improved support for C++17 capable compilers.
714 `#562 <https://github.com/pybind/pybind11/pull/562>`_.
715
716* Bindings for ``std::optional<t>``.
717 `#475 <https://github.com/pybind/pybind11/pull/475>`_,
718 `#476 <https://github.com/pybind/pybind11/pull/476>`_,
719 `#479 <https://github.com/pybind/pybind11/pull/479>`_,
720 `#499 <https://github.com/pybind/pybind11/pull/499>`_, and
721 `#501 <https://github.com/pybind/pybind11/pull/501>`_.
722
723* ``stl_bind.h``: general improvements and support for ``std::map`` and
724 ``std::unordered_map``.
725 `#490 <https://github.com/pybind/pybind11/pull/490>`_,
726 `#282 <https://github.com/pybind/pybind11/pull/282>`_,
727 `#235 <https://github.com/pybind/pybind11/pull/235>`_.
728
729* The ``std::tuple``, ``std::pair``, ``std::list``, and ``std::vector`` type
730 casters now accept any Python sequence type as input. `rev. 107285
731 <https://github.com/pybind/pybind11/commit/107285>`_.
732
733* Improved CMake Python detection on multi-architecture Linux.
734 `#532 <https://github.com/pybind/pybind11/pull/532>`_.
735
736* Infrastructure to selectively disable or enable parts of the automatically
737 generated docstrings. `#486 <https://github.com/pybind/pybind11/pull/486>`_.
738
739* ``reference`` and ``reference_internal`` are now the default return value
740 properties for static and non-static properties, respectively. `#473
741 <https://github.com/pybind/pybind11/pull/473>`_. (the previous defaults
742 were ``automatic``). `#473 <https://github.com/pybind/pybind11/pull/473>`_.
743
744* Support for ``std::unique_ptr`` with non-default deleters or no deleter at
745 all (``py::nodelete``). `#384 <https://github.com/pybind/pybind11/pull/384>`_.
746
Wenzel Jakob3c796712016-12-23 16:19:36 +0100747* Deprecated ``handle::call()`` method. The new syntax to call Python
748 functions is simply ``handle()``. It can also be invoked explicitly via
Wenzel Jakobd3549d62016-12-23 16:01:04 +0100749 ``handle::operator<X>()``, where ``X`` is an optional return value policy.
750
751* Print more informative error messages when ``make_tuple()`` or ``cast()``
752 fail. `#262 <https://github.com/pybind/pybind11/pull/262>`_.
753
754* Creation of holder types for classes deriving from
755 ``std::enable_shared_from_this<>`` now also works for ``const`` values.
756 `#260 <https://github.com/pybind/pybind11/pull/260>`_.
757
758* ``make_iterator()`` improvements for better compatibility with various
759 types (now uses prefix increment operator); it now also accepts iterators
760 with different begin/end types as long as they are equality comparable.
761 `#247 <https://github.com/pybind/pybind11/pull/247>`_.
762
763* ``arg()`` now accepts a wider range of argument types for default values.
764 `#244 <https://github.com/pybind/pybind11/pull/244>`_.
765
766* Support ``keep_alive`` where the nurse object may be ``None``. `#341
767 <https://github.com/pybind/pybind11/pull/341>`_.
768
769* Added constructors for ``str`` and ``bytes`` from zero-terminated char
770 pointers, and from char pointers and length. Added constructors for ``str``
771 from ``bytes`` and for ``bytes`` from ``str``, which will perform UTF-8
772 decoding/encoding as required.
773
774* Many other improvements of library internals without user-visible changes
775
Wenzel Jakoba720a602016-07-12 18:02:13 +0200776
7771.8.1 (July 12, 2016)
778----------------------
Wenzel Jakobc47d4982016-07-11 23:40:28 +0200779* Fixed a rare but potentially very severe issue when the garbage collector ran
780 during pybind11 type creation.
Wenzel Jakob1cbe7ef2016-06-14 14:55:10 +0200781
Wenzel Jakobf9502152016-06-14 15:00:46 +02007821.8.0 (June 14, 2016)
Wenzel Jakob1cbe7ef2016-06-14 14:55:10 +0200783----------------------
784* Redesigned CMake build system which exports a convenient
785 ``pybind11_add_module`` function to parent projects.
786* ``std::vector<>`` type bindings analogous to Boost.Python's ``indexing_suite``
787* Transparent conversion of sparse and dense Eigen matrices and vectors (``eigen.h``)
788* Added an ``ExtraFlags`` template argument to the NumPy ``array_t<>`` wrapper
789 to disable an enforced cast that may lose precision, e.g. to create overloads
790 for different precisions and complex vs real-valued matrices.
Wenzel Jakob3f200fa2016-05-17 15:35:29 +0200791* Prevent implicit conversion of floating point values to integral types in
792 function arguments
Wenzel Jakob163ac2e2016-05-03 14:16:18 +0200793* Fixed incorrect default return value policy for functions returning a shared
794 pointer
Wenzel Jakob38d8b8c2016-05-31 09:53:28 +0200795* Don't allow registering a type via ``class_`` twice
Wenzel Jakob163ac2e2016-05-03 14:16:18 +0200796* Don't allow casting a ``None`` value into a C++ lvalue reference
797* Fixed a crash in ``enum_::operator==`` that was triggered by the ``help()`` command
798* Improved detection of whether or not custom C++ types can be copy/move-constructed
799* Extended ``str`` type to also work with ``bytes`` instances
Wenzel Jakob1cbe7ef2016-06-14 14:55:10 +0200800* Added a ``"name"_a`` user defined string literal that is equivalent to ``py::arg("name")``.
801* When specifying function arguments via ``py::arg``, the test that verifies
802 the number of arguments now runs at compile time.
Wenzel Jakob163ac2e2016-05-03 14:16:18 +0200803* Added ``[[noreturn]]`` attribute to ``pybind11_fail()`` to quench some
804 compiler warnings
Wenzel Jakob86d825f2016-05-26 13:19:27 +0200805* List function arguments in exception text when the dispatch code cannot find
806 a matching overload
Wenzel Jakob1cbe7ef2016-06-14 14:55:10 +0200807* Added ``PYBIND11_OVERLOAD_NAME`` and ``PYBIND11_OVERLOAD_PURE_NAME`` macros which
Wenzel Jakobf9502152016-06-14 15:00:46 +0200808 can be used to override virtual methods whose name differs in C++ and Python
Wenzel Jakob1cbe7ef2016-06-14 14:55:10 +0200809 (e.g. ``__call__`` and ``operator()``)
Wenzel Jakob163ac2e2016-05-03 14:16:18 +0200810* Various minor ``iterator`` and ``make_iterator()`` improvements
Wenzel Jakob86d825f2016-05-26 13:19:27 +0200811* Transparently support ``__bool__`` on Python 2.x and Python 3.x
812* Fixed issue with destructor of unpickled object not being called
Wenzel Jakob163ac2e2016-05-03 14:16:18 +0200813* Minor CMake build system improvements on Windows
Wenzel Jakob86d825f2016-05-26 13:19:27 +0200814* New ``pybind11::args`` and ``pybind11::kwargs`` types to create functions which
815 take an arbitrary number of arguments and keyword arguments
816* New syntax to call a Python function from C++ using ``*args`` and ``*kwargs``
Wenzel Jakob1cbe7ef2016-06-14 14:55:10 +0200817* The functions ``def_property_*`` now correctly process docstring arguments (these
818 formerly caused a segmentation fault)
819* Many ``mkdoc.py`` improvements (enumerations, template arguments, ``DOC()``
820 macro accepts more arguments)
821* Cygwin support
822* Documentation improvements (pickling support, ``keep_alive``, macro usage)
Wenzel Jakobc4d7ccd2016-04-30 22:00:44 +0200823
Wenzel Jakobe70b2ab2016-04-30 19:58:33 +02008241.7 (April 30, 2016)
Wenzel Jakobbb79d7b2016-04-21 12:23:20 +0200825----------------------
Wenzel Jakob1ac22e32016-04-25 23:25:40 +0200826* Added a new ``move`` return value policy that triggers C++11 move semantics.
Wenzel Jakobdd7ec342016-04-29 10:06:24 +0200827 The automatic return value policy falls back to this case whenever a rvalue
Wenzel Jakob1ac22e32016-04-25 23:25:40 +0200828 reference is encountered
Wenzel Jakobe84f5572016-04-26 23:19:19 +0200829* Significantly more general GIL state routines that are used instead of
830 Python's troublesome ``PyGILState_Ensure`` and ``PyGILState_Release`` API
Wenzel Jakobdd7ec342016-04-29 10:06:24 +0200831* Redesign of opaque types that drastically simplifies their usage
Wenzel Jakobe70b2ab2016-04-30 19:58:33 +0200832* Extended ability to pass values of type ``[const] void *``
Wenzel Jakob1ac22e32016-04-25 23:25:40 +0200833* ``keep_alive`` fix: don't fail when there is no patient
Wenzel Jakobdd7ec342016-04-29 10:06:24 +0200834* ``functional.h``: acquire the GIL before calling a Python function
Wenzel Jakob1ac22e32016-04-25 23:25:40 +0200835* Added Python RAII type wrappers ``none`` and ``iterable``
836* Added ``*args`` and ``*kwargs`` pass-through parameters to
837 ``pybind11.get_include()`` function
Wenzel Jakobdd7ec342016-04-29 10:06:24 +0200838* Iterator improvements and fixes
839* Documentation on return value policies and opaque types improved
Wenzel Jakobbb79d7b2016-04-21 12:23:20 +0200840
Wenzel Jakobe70b2ab2016-04-30 19:58:33 +02008411.6 (April 30, 2016)
842----------------------
843* Skipped due to upload to PyPI gone wrong and inability to recover
844 (https://github.com/pypa/packaging-problems/issues/74)
845
Wenzel Jakobbb79d7b2016-04-21 12:23:20 +02008461.5 (April 21, 2016)
Wenzel Jakob2c5d5602016-04-11 18:46:11 +0200847----------------------
Wenzel Jakobc79dbe42016-04-17 21:54:31 +0200848* For polymorphic types, use RTTI to try to return the closest type registered with pybind11
Wenzel Jakobd7efa4f2016-04-13 13:45:09 +0200849* Pickling support for serializing and unserializing C++ instances to a byte stream in Python
Wenzel Jakobb2825952016-04-13 23:33:00 +0200850* Added a convenience routine ``make_iterator()`` which turns a range indicated
851 by a pair of C++ iterators into a iterable Python object
852* Added ``len()`` and a variadic ``make_tuple()`` function
Wenzel Jakobb2b44a92016-04-15 17:50:40 +0200853* Addressed a rare issue that could confuse the current virtual function
854 dispatcher and another that could lead to crashes in multi-threaded
855 applications
Wenzel Jakobb2825952016-04-13 23:33:00 +0200856* Added a ``get_include()`` function to the Python module that returns the path
857 of the directory containing the installed pybind11 header files
Wenzel Jakob1c329aa2016-04-13 02:37:36 +0200858* Documentation improvements: import issues, symbol visibility, pickling, limitations
Wenzel Jakobdbe43ff2016-04-21 12:21:14 +0200859* Added casting support for ``std::reference_wrapper<>``
Wenzel Jakob2c5d5602016-04-11 18:46:11 +0200860
Wenzel Jakob33c2a042016-04-07 09:06:49 +02008611.4 (April 7, 2016)
Wenzel Jakobd2385e82016-03-08 18:04:43 +0100862--------------------------
Wenzel Jakob81dfd2c2016-03-08 19:40:32 +0100863* Transparent type conversion for ``std::wstring`` and ``wchar_t``
Wenzel Jakob0e6ca592016-04-07 08:49:37 +0200864* Allow passing ``nullptr``-valued strings
Wenzel Jakob34116732016-04-06 17:55:41 +0200865* Transparent passing of ``void *`` pointers using capsules
Wenzel Jakob0e6ca592016-04-07 08:49:37 +0200866* Transparent support for returning values wrapped in ``std::unique_ptr<>``
Wenzel Jakob4e455dd2016-03-09 16:38:28 +0100867* Improved docstring generation for compatibility with Sphinx
Wenzel Jakob34116732016-04-06 17:55:41 +0200868* Nicer debug error message when default parameter construction fails
869* Support for "opaque" types that bypass the transparent conversion layer for STL containers
870* Redesigned type casting interface to avoid ambiguities that could occasionally cause compiler errors
Wenzel Jakob2c5d5602016-04-11 18:46:11 +0200871* Redesigned property implementation; fixes crashes due to an unfortunate default return value policy
Wenzel Jakob4e455dd2016-03-09 16:38:28 +0100872* Anaconda package generation support
Wenzel Jakobd2385e82016-03-08 18:04:43 +0100873
8741.3 (March 8, 2016)
Wenzel Jakob8ed28082016-02-07 17:32:37 +0100875--------------------------
Wenzel Jakobcf2b87a2016-02-22 17:32:44 +0100876
877* Added support for the Intel C++ compiler (v15+)
878* Added support for the STL unordered set/map data structures
Wenzel Jakobd2385e82016-03-08 18:04:43 +0100879* Added support for the STL linked list data structure
Wenzel Jakobcf2b87a2016-02-22 17:32:44 +0100880* NumPy-style broadcasting support in ``pybind11::vectorize``
Wenzel Jakob2c5d5602016-04-11 18:46:11 +0200881* pybind11 now displays more verbose error messages when ``arg::operator=()`` fails
Wenzel Jakobd2385e82016-03-08 18:04:43 +0100882* pybind11 internal data structures now live in a version-dependent namespace to avoid ABI issues
883* Many, many bugfixes involving corner cases and advanced usage
Wenzel Jakob8ed28082016-02-07 17:32:37 +0100884
8851.2 (February 7, 2016)
Wenzel Jakob1ae77fe2016-01-17 22:36:43 +0100886--------------------------
Wenzel Jakob48548ea2016-01-17 22:36:44 +0100887
Wenzel Jakob1ae77fe2016-01-17 22:36:43 +0100888* Optional: efficient generation of function signatures at compile time using C++14
Wenzel Jakob48548ea2016-01-17 22:36:44 +0100889* Switched to a simpler and more general way of dealing with function default
890 arguments. Unused keyword arguments in function calls are now detected and
891 cause errors as expected
Wenzel Jakob1ae77fe2016-01-17 22:36:43 +0100892* New ``keep_alive`` call policy analogous to Boost.Python's ``with_custodian_and_ward``
Wenzel Jakob48548ea2016-01-17 22:36:44 +0100893* New ``pybind11::base<>`` attribute to indicate a subclass relationship
Wenzel Jakob1ae77fe2016-01-17 22:36:43 +0100894* Improved interface for RAII type wrappers in ``pytypes.h``
895* Use RAII type wrappers consistently within pybind11 itself. This
896 fixes various potential refcount leaks when exceptions occur
Wenzel Jakob2c5d5602016-04-11 18:46:11 +0200897* Added new ``bytes`` RAII type wrapper (maps to ``string`` in Python 2.7)
Wenzel Jakob48548ea2016-01-17 22:36:44 +0100898* Made handle and related RAII classes const correct, using them more
899 consistently everywhere now
Wenzel Jakob1ae77fe2016-01-17 22:36:43 +0100900* Got rid of the ugly ``__pybind11__`` attributes on the Python side---they are
901 now stored in a C++ hash table that is not visible in Python
902* Fixed refcount leaks involving NumPy arrays and bound functions
903* Vastly improved handling of shared/smart pointers
904* Removed an unnecessary copy operation in ``pybind11::vectorize``
905* Fixed naming clashes when both pybind11 and NumPy headers are included
906* Added conversions for additional exception types
Wenzel Jakob48548ea2016-01-17 22:36:44 +0100907* Documentation improvements (using multiple extension modules, smart pointers,
908 other minor clarifications)
Wenzel Jakob61587162016-01-18 22:38:52 +0100909* unified infrastructure for parsing variadic arguments in ``class_`` and cpp_function
Wenzel Jakob1ae77fe2016-01-17 22:36:43 +0100910* Fixed license text (was: ZLIB, should have been: 3-clause BSD)
911* Python 3.2 compatibility
Wenzel Jakobcd4e6ae2016-01-29 11:48:40 +0100912* Fixed remaining issues when accessing types in another plugin module
913* Added enum comparison and casting methods
914* Improved SFINAE-based detection of whether types are copy-constructible
915* Eliminated many warnings about unused variables and the use of ``offsetof()``
Wenzel Jakob8ed28082016-02-07 17:32:37 +0100916* Support for ``std::array<>`` conversions
Wenzel Jakob1ae77fe2016-01-17 22:36:43 +0100917
9181.1 (December 7, 2015)
919--------------------------
920
921* Documentation improvements (GIL, wrapping functions, casting, fixed many typos)
922* Generalized conversion of integer types
923* Improved support for casting function objects
924* Improved support for ``std::shared_ptr<>`` conversions
925* Initial support for ``std::set<>`` conversions
926* Fixed type resolution issue for types defined in a separate plugin module
927* Cmake build system improvements
928* Factored out generic functionality to non-templated code (smaller code size)
929* Added a code size / compile time benchmark vs Boost.Python
930* Added an appveyor CI script
931
9321.0 (October 15, 2015)
933------------------------
934* Initial release