Cython is a programming language that makes writing C extensions for the Python language as easy as Python itself. It aims to become a superset of the Python language which gives it high-level, object-oriented, functional, and dynamic programming. Its main feature on top of these is support for optional static type declarations as part of the language. The source code gets translated into optimized C/C++ code and compiled as Python extension modules. This allows for both very fast program execution and tight integration with external C libraries, while keeping up the high programmer productivity for which the Python language is well known.
The primary Python execution environment is commonly referred to as CPython, as it is written in C. Other major implementations use Java (Jython [Jython]), C# (IronPython [IronPython]) and Python itself (PyPy [PyPy]). Written in C, CPython has been conducive to wrapping many external libraries that interface through the C language. It has, however, remained non trivial to write the necessary glue code in C, especially for programmers who are more fluent in a high-level language like Python than in a close-to-the-metal language like C.
- Crash when the shared Cython config module gets unloaded and another Cython module reports an exceptions. Cython now makes sure it keeps an owned reference to the module. (Github issue #2885)
- Resolved a C89 compilation problem when enabling the fast-gil sharing feature.
- Coverage reporting did not include the signature line of
cdeffunctions. (Github issue #1461)
- Casting a GIL-requiring function into a nogil function now issues a warning. (Github issue #2879)
- Generators and coroutines were missing their return type annotation. (Github issue #2884)