| single |
The Cython language makes writing C extensions for the Python language as
easy as Python itself. Cython is a source code translator based on Pyrex_,
but supports more cutting edge functionality and optimizations.
The Cython language is a superset of the Python language (almost all Python
code is also valid Cython code), but Cython additionally supports optional
static typing to natively call C functions, operate with C++ classes and
declare fast C types on variables and class attributes. This allows the
compiler to generate very efficient C code from Cython code.
This makes Cython the ideal language for writing glue code for external
C/C++ libraries, and for fast C modules that speed up the execution of
Python code.
The newest Cython release can always be downloaded from
https://cython.org/.
Unpack the tarball or zip file, enter the directory, and then run::
pip install .
Note that for one-time builds, e.g. for CI/testing, on platforms that are
not
covered by one of the wheel packages provided on PyPI *and* the pure Python
wheel
that we provide is not used, it is substantially faster than a full source
build
to install an uncompiled (slower) version of Cython with::
NO_CYTHON_COMPILE=true pip install .
.. _Pyrex: https://www.cosc.canterbury.ac.nz/greg.ewing/python/Pyrex/
3.2.5 (2026-05-23)
==================
Bugs fixed
----------
* A compile failure was fixed when using the walrus operator inside of
try-except.
(Github issue https://github.com/cython/cython/issues/7462)
* Expressions with side-effects as object argument to ``isinstance()``
could get
evaluated multiple times, e.g. when they use the walrus operator.
(Github issue https://github.com/cython/cython/issues/7670)
* Several problems generating the shared utility module were resolved,
including
a performance regression with memory views.
(Github issues https://github.com/cython/cython/issues/7487,
https://github.com/cython/cython/issues/7497,
https://github.com/cython/cython/issues/7504,
https://github.com/cython/cython/issues/7558)
* Some GC and refcounting issues were resolved for Cython functions in the
Limited API.
(Github issue https://github.com/cython/cython/issues/7594)
* Refcounting errors and error handling issues were resolved in some rare
error handling cases.
(Github issues https://github.com/cython/cython/issues/7597,
https://github.com/cython/cython/issues/7599,
https://github.com/cython/cython/issues/7612,
https://github.com/cython/cython/issues/7673)
* Using ``cython.pymutex in an extension type with cdef methods generated
invalid C code missing the required PyMutex`` declarations.
(Github issue https://github.com/cython/cython/issues/6995)
* Calling ``.get_frame()`` on Cython coroutines could crash in
freethreading Python.
(Github issue https://github.com/cython/cython/issues/7632)
* The vectorcall protocol was not used correctly in ``.throw()`` of Cython
coroutines
when raising the exception only by type (without value or traceback).
(Github issue https://github.com/cython/cython/issues/7677)
* A problem with cpdef enums in the Limited API of Python 3.11+ was
resolved.
(Github issue https://github.com/cython/cython/issues/7503)
* Unicode predicates like ``.isdigit()`` are now allowed to fail in the
Limited API.
(Github issue https://github.com/cython/cython/issues/7602)
* Conditional expressions mixing Python float and int object types could
accidentally
infer float as the common result type, instead of treating both
independently.
* Using ``sizeof() in the size declarations of extern`` arrays failed.
(Github issue https://github.com/cython/cython/issues/7451)
* Enabling profiling generated invalid C code for non-Python return tuples.
(Github issue https://github.com/cython/cython/issues/7580)
* ``abs() on C long long`` values could generate invalid C code.
|