aboutsummaryrefslogtreecommitdiffstats
path: root/3rdparty/pybind11/docs/limitations.rst
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/pybind11/docs/limitations.rst')
-rw-r--r--3rdparty/pybind11/docs/limitations.rst62
1 files changed, 57 insertions, 5 deletions
diff --git a/3rdparty/pybind11/docs/limitations.rst b/3rdparty/pybind11/docs/limitations.rst
index a1a4f1af..be7300cd 100644
--- a/3rdparty/pybind11/docs/limitations.rst
+++ b/3rdparty/pybind11/docs/limitations.rst
@@ -1,6 +1,9 @@
Limitations
###########
+Design choices
+^^^^^^^^^^^^^^
+
pybind11 strives to be a general solution to binding generation, but it also has
certain limitations:
@@ -11,10 +14,59 @@ certain limitations:
- The NumPy interface ``pybind11::array`` greatly simplifies accessing
numerical data from C++ (and vice versa), but it's not a full-blown array
- class like ``Eigen::Array`` or ``boost.multi_array``.
+ class like ``Eigen::Array`` or ``boost.multi_array``. ``Eigen`` objects are
+ directly supported, however, with ``pybind11/eigen.h``.
+
+Large but useful features could be implemented in pybind11 but would lead to a
+significant increase in complexity. Pybind11 strives to be simple and compact.
+Users who require large new features are encouraged to write an extension to
+pybind11; see `pybind11_json <https://github.com/pybind/pybind11_json>`_ for an
+example.
+
+
+Known bugs
+^^^^^^^^^^
+
+These are issues that hopefully will one day be fixed, but currently are
+unsolved. If you know how to help with one of these issues, contributions
+are welcome!
+
+- Intel 20.2 is currently having an issue with the test suite.
+ `#2573 <https://github.com/pybind/pybind11/pull/2573>`_
+
+- Debug mode Python does not support 1-5 tests in the test suite currently.
+ `#2422 <https://github.com/pybind/pybind11/pull/2422>`_
+
+- PyPy3 7.3.1 and 7.3.2 have issues with several tests on 32-bit Windows.
+
+Known limitations
+^^^^^^^^^^^^^^^^^
+
+These are issues that are probably solvable, but have not been fixed yet. A
+clean, well written patch would likely be accepted to solve them.
+
+- Type casters are not kept alive recursively.
+ `#2527 <https://github.com/pybind/pybind11/issues/2527>`_
+ One consequence is that containers of ``char *`` are currently not supported.
+ `#2245 <https://github.com/pybind/pybind11/issues/2245>`_
+
+- The ``cpptest`` does not run on Windows with Python 3.8 or newer, due to DLL
+ loader changes. User code that is correctly installed should not be affected.
+ `#2560 <https://github.com/pybind/pybind11/issue/2560>`_
+
+Python 3.9.0 warning
+^^^^^^^^^^^^^^^^^^^^
-These features could be implemented but would lead to a significant increase in
-complexity. I've decided to draw the line here to keep this project simple and
-compact. Users who absolutely require these features are encouraged to fork
-pybind11.
+Combining older versions of pybind11 (< 2.6.0) with Python on 3.9.0 will
+trigger undefined behavior that typically manifests as crashes during
+interpreter shutdown (but could also destroy your data. **You have been
+warned**).
+This issue has been
+`fixed in Python <https://github.com/python/cpython/pull/22670>`_. As a
+mitigation until 3.9.1 is released and commonly used, pybind11 (2.6.0 or newer)
+includes a temporary workaround specifically when Python 3.9.0 is detected at
+runtime, leaking about 50 bytes of memory when a callback function is garbage
+collected. For reference; the pybind11 test suite has about 2,000 such
+callbacks, but only 49 are garbage collected before the end-of-process. Wheels
+built with Python 3.9.0 will correctly avoid the leak when run in Python 3.9.1.