Development Status
- 5 - Production/Stable
Intended Audience
- Developers
License
- OSI Approved :: Apache Software License
Operating System
- OS Independent
Programming Language
- Python
- Python :: 3
- Python :: 3.8
- Python :: 3.9
- Python :: 3.10
- Python :: 3.11
- Python :: 3.12
- Python :: 3.13
- Python :: Implementation :: CPython
- Python :: Implementation :: PyPy
- Python :: Implementation :: Stackless
- C
- C++
- Cython
Topic
- Software Development :: Code Generators
- Software Development :: Compilers
- Software Development :: Libraries :: Python Modules
Typing
- Typed
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 .
3.1.4 (2025-09-16)
Features added
Declarations for the new PyUnstable_*() refcounting C-API functions in Py3.14 were added. (Github issue https://github.com/cython/cython/issues/6836)
Bugs fixed
The monitoring code could crash on tracing. (Github issue https://github.com/cython/cython/issues/7050)
Initialising the monitoring code could fail with a CPython exception. See https://github.com/nedbat/coveragepy/issues/1790#issuecomment-3257410149
Optimised integer shifting triggered undefined behaviour in C. (Github issue https://github.com/cython/cython/issues/7089)
Deallocating objects that inherit from external types defined in pxd files could run into an infinite loop. (Github issue https://github.com/cython/cython/issues/7143)
A reference to metaclasses could be leaked on instantiation. (Github issue https://github.com/cython/cython/issues/7130)
(Unlikely) error handling during empty builtin container tests was ineffective. (Github issue https://github.com/cython/cython/issues/7190)
Generated *_api.h files used potentially unknown Cython configuration macros. (Github issue https://github.com/cython/cython/issues/7108)
cythonize() avoids parallel compiler runs on systems using spawn() in multiprocessing. Patch by Marcel Bargull. (Github issue https://github.com/cython/cython/issues/3262)
The @cython.ufunc decorator was missing in type checker stubs. Patch by jayClean. (Github issue https://github.com/cython/cython/issues/7109)