Upgrade to release 3.1.0:
- Python subclasses can now combine one nanobind base with
additional :ref:`Python mixins <python_mixins>`, including
cooperative super() calls on CPython and PyPy. Inheriting from
multiple nanobind bases remains unsupported.
- The low-level instance API gained
:cpp:func:`nb::inst_python_derived() <inst_python_derived>`,
which reports whether a nanobind instance belongs to a
Python subclass of the bound type.
- Added new low-level functions :cpp:func:`nb::keep_alive_obj()
<keep_alive_obj>` and :cpp:func:`nb::keep_alive_cb()
<keep_alive_cb>`, which expose the mechanism behind the
:cpp:class:`nb::keep_alive <keep_alive>` annotation.
- The new function :cpp:func:`intrusive_counter::ref_count()`
returns the reference count of an intrusively reference-counted
object while it is owned by C++.
- Fixed stale trampoline override caches on PyPy. Changing an
attribute of a nanobind type now correctly invalidates the caches
of its Python subclasses.
- The std::map/std::unordered_map and std::set type casters can now
also handle containers like std::flat_map whose iterators return
temporary values.
- The :ref:`Bazel documentation <bazel>` was rewritten and now
presents an approach based on the Bazel Central Registry.
- Miscellaneous minor improvements.
This work was sponsored by GOVCERT.LU.
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>