| 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.3.0 (2026-08-22)
==================
Features added
--------------
* PEP-634 Pattern Matching is implemented.
(Github issue https://github.com/cython/cython/issues/4029)
* ``except *`` (PEP-654 exception groups) is implemented for Python 3.11
and later.
(Github issue https://github.com/cython/cython/issues/4993)
* Unpacking in comprehensions (PEP-798) is implemented for list/set/dict
comprehensions.
It is not yet available for generator expressions.
Original patch by Morax. (Github issue
https://github.com/cython/cython/issues/7898)
* Changes were made to adapt to Python 3.15 and its Limited API.
This does not yet cover abi3t.
(Github issues https://github.com/cython/cython/issues/6405,
https://github.com/cython/cython/issues/7190,
https://github.com/cython/cython/issues/7347,
https://github.com/cython/cython/issues/7348,
https://github.com/cython/cython/issues/7358)
* Cython now uses a new export/import naming scheme for fused C functions
that
increases the resilience against seemingly compatible user code changes.
The original names are kept for backwards compatibility.
(Github issue https://github.com/cython/cython/issues/7656)
* Declared container item types (e.g. ``list[float] or tuple[atype, ...]``)
are now used by the type system.
(Github issues https://github.com/cython/cython/issues/7288,
https://github.com/cython/cython/issues/7798)
* Type inference was improved for builtin Python types and their methods.
(Github issues https://github.com/cython/cython/issues/7536,
https://github.com/cython/cython/issues/7644,
https://github.com/cython/cython/issues/7887,
https://github.com/cython/cython/issues/7888)
* Exception base types are inferred for the target variable of
multi-exception except
clauses and for collections of exceptions. Properties like ``.args and
.context``
use direct C access in CPython.
(Github issue https://github.com/cython/cython/issues/7783)
* Annotations on global variables are now used by type inference.
(Github issue https://github.com/cython/cython/issues/7877)
* The feature set of the shared module can be selected at build time
by listing named features to include or exclude.
This is an experimental configuration, subject to further improvements.
Failures to include used features will currently result in import
failures.
(Github issue https://github.com/cython/cython/issues/7759)
* To control the generation of the shared module, the cython command gained
a sub-command ``cython generate-shared pkg/modulename.c with additional
options
--only and --exclude``.
Patch by Raza Khan. (Github issue
https://github.com/cython/cython/issues/7842)
|