3.1.0rc2
Pre-release
Pre-release
3.1.0 rc 2 (2025-05-07) ======================= Features added -------------- * Declarations for C++ ``std::stop_token`` were added as ``libcpp.stop_token`` to provide additional low-level synchronisation primitives also in the light of free-threading Python. (Github issue :issue:`6820`) * The generation of the shared module now happens automatically from ``cythonize()`` in a ``setuptools`` build if a corresponding ``Extension`` has been configured. This avoids an additional step outside of the ``setup.py`` or ``pip wheel`` run. (Github issue :issue:`6842`) Bugs fixed ---------- * Variables typed as builtin Python exception types now accept subtypes instead of rejecting them. This specifically impacted t 4032 ypes like ``BaseException``, ``Exception`` or ``OSError``, which almost always intend to reference subtypes. (Github issue :issue:`6828`) * Functions with more than 10 constant default argument values could generate invalid C code. (Github issue :issue:`6843`) * The ``call_once()`` function argument in ``libc.threads`` (new in 3.1) was changed to require a ``nogil`` declaration, as semantically implied. Code that used it with a callback function expecting to hold the GIL must change the callback code to use ``with gil``. * Calling cimported C functions with their fully qualified package name could crash Cython. (Github issue :issue:`6551`) * Naming a variable after its inferred type (e.g. `str += ""`) could trigger an infinite loop in Cython. (Github issue :issue:`6835`) * Cython is more relaxed about the exact C++ constructor name when it calls ``new()`` on ctypedefs. (Github issue :issue:`6821`) * Using ``cpp_locals`` in nogil sections could crash. (Github issue :issue:`6838`) * ``const struct`` declarations could lead to invalid assignments to ``const`` temp variables. (Github issue :issue:`6804`) * A refcounting error was fixed in the method class cell support code. (Github issue :issue:`6839`)