You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

572 lines
27 KiB

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