@@ -15,24 +15,225 @@ IN DEVELOPMENT
15
15
16
16
Changes will be summarized here periodically.
17
17
18
+
18
19
New Features:
19
20
20
- * Support for Python 3.7 was removed. (Official end-of-life: 2023-06-27).
21
- `#5191 <https://github.com/pybind/pybind11/pull/5191 >`_
21
+ * The ``smart-holder `` branch has been merged, enabling ``py::class_<T,
22
+ py::smart_holder> ``, which handles two-way conversion with
23
+ ``std::unique_ptr<T> `` and ``std::shared_ptr<T> `` (simultaneously), disowning
24
+ a Python object being passed to ``std::unique_ptr<T> ``, trampoline objects,
25
+ and ``std::enable_shared_from_this ``.
26
+ `#5542 <https://github.com/pybind/pybind11/pull/5542 >`_
27
+
28
+ * Remove pybind11 2.x internals versions, the internals version number has been
29
+ bumped. Using ``self._pybind11_conduit_v1_() `` (backported to several 2.x
30
+ versions) should keep extension compatibility.
31
+ `#5512 <https://github.com/pybind/pybind11/pull/5512 >`_
32
+ `#5530 <https://github.com/pybind/pybind11/pull/5530 >`_
33
+
34
+ * (CMake) Enable FindPython mode by default, with a ``COMPAT `` mode that sets some of the old variables to ease transition.
35
+ `#5553 <https://github.com/pybind/pybind11/pull/5553 >`_
36
+
37
+ * ``py::native_enum `` was added, for conversions between Python's native (stdlib) enum types and C++ enums.
38
+ `#5555 <https://github.com/pybind/pybind11/pull/5555 >`_
39
+
40
+ * A ``py::release_gil_before_calling_cpp_dtor `` option (for ``py::class_ ``) was added to resolve the long-standing issue #1446.
41
+ `#5522 <https://github.com/pybind/pybind11/pull/5522 >`_
42
+
43
+ * Add ``dtype::normalized_num `` and ``dtype::num_of ``.
44
+ `#5429 <https://github.com/pybind/pybind11/pull/5429 >`_
45
+
46
+ * Add support for ``array_t<handle> `` and ``array_t<object> ``.
47
+ `#5427 <https://github.com/pybind/pybind11/pull/5427 >`_
48
+
49
+ * Added ``py::warnings `` namespace with ``py::warnings::warn `` and ``py::warnings::new_warning_type `` that provides the interface for Python warnings.
50
+ `#5291 <https://github.com/pybind/pybind11/pull/5291 >`_
22
51
23
52
* stl.h ``list|set|map_caster `` were made more user friendly: it is no longer
24
53
necessary to explicitly convert Python iterables to ``tuple() ``, ``set() ``,
25
54
or ``map() `` in many common situations.
26
55
`#4686 <https://github.com/pybind/pybind11/pull/4686 >`_
27
56
57
+ * The ``array_caster `` in pybind11/stl.h was enhanced to support value types that are not default-constructible.
58
+ `#5305 <https://github.com/pybind/pybind11/pull/5305 >`_
59
+
60
+ * ``pybind11/conduit/pybind11_platform_abi_id.h `` was factored out, to maximize reusability of ``PYBIND11_PLATFORM_ABI_ID `` (for other Python/C++ binding systems).
61
+ `#5375 <https://github.com/pybind/pybind11/pull/5375 >`_
62
+
63
+ * Changed ``PYBIND11_MODULE `` macro implementation to perform multi-phase module initialization (PEP 489) behind the scenes.
64
+ `#5574 <https://github.com/pybind/pybind11/pull/5574 >`_
65
+
66
+ * Added support for finding pybind11 using pkgconf distributed on pypi.
67
+ `#5552 <https://github.com/pybind/pybind11/pull/5552 >`_
68
+
69
+ * Support ``--extension-suffix `` on the pybind11 command.
70
+ `#5360 <https://github.com/pybind/pybind11/pull/5360 >`_
71
+
72
+
73
+
74
+ New Features (typing):
75
+
76
+ .. feat(types)
77
+
78
+ * Added option for different arg/return type hints to ``type_caster ``. Updated
79
+ ``stl/filesystem `` to use correct arg/return type hints. Updated
80
+ ``pybind11::typing `` to use correct arg/return type hints for nested types.
81
+ `#5450 <https://github.com/pybind/pybind11/pull/5450 >`_
82
+
83
+
84
+ * Updated type hint for ``py::capsule `` to ``type.CapsuleType ``.
85
+ `#5567 <https://github.com/pybind/pybind11/pull/5567 >`_
86
+
87
+ * Adds support for ``typing.SupportsInt `` and ``typing.SupportsFloat ``. Update ``Final `` to be narrower type hint. Make ``std::function `` match ``Callable `` type. Fix ``io_name `` bug in
88
+ ``attr_with_type_hint ``.
89
+ `#5540 <https://github.com/pybind/pybind11/pull/5540 >`_
90
+
91
+ * Rework of arg/return type hints to support ``.noconvert() ``.
92
+ `#5486 <https://github.com/pybind/pybind11/pull/5486 >`_
93
+
94
+ * add ``attr_with_type `` for declaring attribute types and ``Final ``, ``ClassVar `` type annotations.
95
+ `#5460 <https://github.com/pybind/pybind11/pull/5460 >`_
96
+
97
+ * Allow annotate methods with ``py::pos_only `` when only have the ``self `` argument. Make arguments for auto-generated dunder methods positional-only.
98
+ `#5403 <https://github.com/pybind/pybind11/pull/5403 >`_
99
+
100
+ * Added ``py::Args `` and ``py::KWArgs `` to enable custom type hinting of ``*args `` and ``**kwargs `` (see PEP 484).
101
+ `#5357 <https://github.com/pybind/pybind11/pull/5357 >`_
102
+
103
+ * Switched to ``numpy.typing.NDArray `` and ``numpy.typing.ArrayLike ``.
104
+ `#5212 <https://github.com/pybind/pybind11/pull/5212 >`_
105
+
106
+ .. fix(types)
107
+
108
+ * Use ``numpy.object_ `` instead of ``object ``.
109
+ `#5571 <https://github.com/pybind/pybind11/pull/5571 >`_
110
+
111
+ * Fix module type hint.
112
+ `#5469 <https://github.com/pybind/pybind11/pull/5469 >`_
113
+
114
+
115
+
116
+ Bug fixes:
117
+
118
+ * Set ``__file__ `` on submodules.
119
+ `#5584 <https://github.com/pybind/pybind11/pull/5584 >`_
120
+
121
+ * pybind11-bound functions are now pickleable.
122
+ `#5580 <https://github.com/pybind/pybind11/pull/5580 >`_
123
+
124
+ * Fix bug in ``attr_with_type_hint `` to allow objects to be in ``attr_with_type_hint ``.
125
+ `#5576 <https://github.com/pybind/pybind11/pull/5576 >`_
126
+
127
+ * A ``-Wmaybe-uninitialized `` warning suppression was added in ``pybind11/eigen/matrix.h ``.
128
+ `#5516 <https://github.com/pybind/pybind11/pull/5516 >`_
129
+
130
+ * ``PYBIND11_WARNING_POP `` was incorrectly defined as ``PYBIND11_PRAGMA(clang diagnostic push) ``.
131
+ `#5448 <https://github.com/pybind/pybind11/pull/5448 >`_
132
+
133
+ * ``PYBIND11_PLATFORM_ABI_ID `` (which is used in composing ``PYBIND11_INTERNALS_ID ``) was modernized to reflect actual ABI compatibility more accurately.
134
+ `#5439 <https://github.com/pybind/pybind11/pull/5439 >`_
135
+
136
+ * Fix buffer protocol implementation.
137
+ `#5407 <https://github.com/pybind/pybind11/pull/5407 >`_
138
+
139
+ * Fix iterator increment operator does not skip first item.
140
+ `#5400 <https://github.com/pybind/pybind11/pull/5400 >`_
141
+
142
+ * When getting or deleting an element in a container bound by ``bind_map ``, print the key in ``KeyError `` if it does not exist.
143
+ `#5397 <https://github.com/pybind/pybind11/pull/5397 >`_
144
+
145
+ * ``pybind11::builtin_exception `` is now explicitly exported when linked to libc++.
146
+ `#5390 <https://github.com/pybind/pybind11/pull/5390 >`_
147
+
148
+ * Allow subclasses of ``py::args `` and ``py::kwargs ``.
149
+ `#5381 <https://github.com/pybind/pybind11/pull/5381 >`_
150
+
151
+ * Disable false-positive GCC 12 Bound Check warning.
152
+ `#5355 <https://github.com/pybind/pybind11/pull/5355 >`_
153
+
154
+ * fix: using ``__cpp_nontype_template_args `` instead of ``__cpp_nontype_template_parameter_class ``.
155
+ `#5330 <https://github.com/pybind/pybind11/pull/5330 >`_
156
+
157
+ * Properly translate C++ exception to Python exception when creating Python buffer from wrapped object.
158
+ `#5324 <https://github.com/pybind/pybind11/pull/5324 >`_
159
+
160
+ * Properly handle MSVC MT/MD incompatibility in ``PYBIND11_BUILD_ABI ``.
161
+ `#4953 <https://github.com/pybind/pybind11/pull/4953 >`_
162
+
163
+
164
+
165
+
166
+ .. fix(cmake)
167
+
168
+ Bug fixes (CMake):
169
+
170
+ * Add an author warning that auto-calculated ``PYTHON_MODULE_EXTENSION `` may not respect ``SETUPTOOLS_EXT_SUFFIX `` during cross-compilation.
171
+ `#5495 <https://github.com/pybind/pybind11/pull/5495 >`_
172
+
173
+ * Don't strip with ``CMAKE_BUILD_TYPE `` None.
174
+ `#5392 <https://github.com/pybind/pybind11/pull/5392 >`_
175
+
176
+ * Fix an issue with ``NO_EXTRAS `` adding ``pybind11::windows_extras `` anyway.
177
+ `#5378 <https://github.com/pybind/pybind11/pull/5378 >`_
178
+
179
+
180
+ Bug fixes (free-threading):
181
+
182
+ .. fix(free-threading)
183
+
184
+ * Fix data race in free threaded CPython when accessing a shared static variable.
185
+ `#5494 <https://github.com/pybind/pybind11/pull/5494 >`_
186
+
187
+ * A free-threading data race in ``all_type_info() `` was fixed.
188
+ `#5419 <https://github.com/pybind/pybind11/pull/5419 >`_
189
+
190
+ * Added exception translator specific mutex used with ``try_translate_exceptions `` in the free-threaded build for internal locking.
191
+ `#5362 <https://github.com/pybind/pybind11/pull/5362 >`_
192
+
193
+
194
+ Documentation:
195
+
196
+ * Improved ``reference_internal `` policy documentation.
197
+ `#5528 <https://github.com/pybind/pybind11/pull/5528 >`_
198
+
199
+ * A new "Double locking, deadlocking, GIL" document was added.
200
+ `#5394 <https://github.com/pybind/pybind11/pull/5394 >`_
201
+
202
+ * Adds an answer (FAQ) for "What is a highly conclusive and simple way to find memory leaks?".
203
+ `#5340 <https://github.com/pybind/pybind11/pull/5340 >`_
204
+
205
+
206
+ Tests:
207
+
208
+ * Download the final Catch2 2.x release if Catch download is requested.
209
+ `#5568 <https://github.com/pybind/pybind11/pull/5568 >`_
210
+
211
+ * Explicitly used ``signed char `` for two numpy dtype tests. As seen when
212
+ compiling using ``clang `` on Linux with the ``-funsigned-char `` flag.
213
+ `#5545 <https://github.com/pybind/pybind11/pull/5545 >`_
214
+
215
+ * Test PyPy3.11 in CI.
216
+ `#5534 <https://github.com/pybind/pybind11/pull/5534 >`_
217
+
218
+
219
+ New and removed platforms:
220
+
221
+ * Added support for GraalPy Python implementation (https://github.com/oracle/graalpython).
222
+ `#5380 <https://github.com/pybind/pybind11/pull/5380 >`_
223
+
224
+ * Support for PyPy 3.11 added.
225
+ `#5508 <https://github.com/pybind/pybind11/pull/5508 >`_
226
+
227
+ * Support for PyPy 3.8 and 3.9 was dropped.
228
+ `#5578 <https://github.com/pybind/pybind11/pull/5578 >`_
229
+
230
+ * Support for Python 3.7 was removed. (Official end-of-life: 2023-06-27).
231
+ `#5191 <https://github.com/pybind/pybind11/pull/5191 >`_
232
+
28
233
* Support for CMake older than 3.15 removed. CMake 3.15-3.30 supported.
29
234
`#5304 <https://github.com/pybind/pybind11/pull/5304 >`_
30
235
31
- * The ``array_caster `` in pybind11/stl.h was enhanced to support value types that are not default-constructible.
32
- `#5305 <https://github.com/pybind/pybind11/pull/5305 >`_
33
236
34
- * Added ``py::warnings `` namespace with ``py::warnings::warn `` and ``py::warnings::new_warning_type `` that provides the interface for Python warnings.
35
- `#5291 <https://github.com/pybind/pybind11/pull/5291 >`_
36
237
37
238
Version 2.13.6 (September 13, 2024)
38
239
-----------------------------------
0 commit comments