Cython

Latest version: v3.0.11

Safety actively analyzes 693883 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 12 of 17

0.25.1

===================

Bugs fixed
----------

* Fixes a bug with ``isinstance(o, Exception)`` (Github issue :issue:`1496`).

* Fixes bug with ``cython.view.array`` missing utility code in some cases
(Github issue :issue:`1502`).

Other changes
-------------

* The distutils extension ``Cython.Distutils.build_ext`` has been reverted,
temporarily, to be ``old_build_ext`` to give projects time to migrate.
The new build_ext is available as ``new_build_ext``.

0.25

=================

Features added
--------------

* def/cpdef methods of cdef classes benefit from Cython's internal function
implementation, which enables introspection and line profiling for them.
Implementation sponsored by Turbostream (www.turbostream-cfd.com).

* Calls to Python functions are faster, following the recent "FastCall"
optimisations that Victor Stinner implemented for CPython 3.6.
See https://bugs.python.org/issue27128 and related issues.

* The new METH_FASTCALL calling convention for PyCFunctions is supported
in CPython 3.6. See https://bugs.python.org/issue27810

* Initial support for using Cython modules in Pyston.
Patch by Boxiang Sun.

* Dynamic Python attributes are allowed on cdef classes if an attribute
``cdef dict __dict__`` is declared in the class. Patch by empyrical.

* Cython implemented C++ classes can make direct calls to base class methods.
Patch by empyrical.

* C++ classes can now have typedef members. STL containers updated with
value_type.

* New directive ``cython.no_gc`` to fully disable GC for a cdef class.
Patch by Claudio Freire.

* Buffer variables are no longer excluded from ``locals()``.
Patch by David Woods.

* Building f-strings is faster, especially when formatting C integers.

* for-loop iteration over "std::string".

* ``libc/math.pxd`` provides ``e`` and ``pi`` as alias constants to simplify
usage as a drop-in replacement for Python's math module.

* Speed up cython.inline().

* Binary lshift operations with small constant Python integers are faster.

* Some integer operations on Python long objects are faster in Python 2.7.

* Support for the C++ ``typeid`` operator.

* Support for bazel using a the pyx_library rule in //Tools:rules.bzl.

Significant Bugs fixed
----------------------

* Division of complex numbers avoids overflow by using Smith's method.

* Some function signatures in ``libc.math`` and ``numpy.pxd`` were incorrect.
Patch by Michael Seifert.

Other changes
-------------

* The "%%cython" IPython/jupyter magic now defaults to the language level of
the current jupyter kernel. The language level can be set explicitly with
"%%cython -2" or "%%cython -3".

* The distutils extension ``Cython.Distutils.build_ext`` has now been updated
to use cythonize which properly handles dependencies. The old extension can
still be found in ``Cython.Distutils.old_build_ext`` and is now deprecated.

* ``directive_defaults`` is no longer available in ``Cython.Compiler.Options``,
use ``get_directive_defaults()`` instead.

0.24.1

===================

Bugs fixed
----------

* IPython cell magic was lacking a good way to enable Python 3 code semantics.
It can now be used as "%%cython -3".

* Follow a recent change in `PEP 492 <https://www.python.org/dev/peps/pep-0492/>`_
and CPython 3.5.2 that now requires the ``__aiter__()`` method of asynchronous
iterators to be a simple ``def`` method instead of an ``async def`` method.

* Coroutines and generators were lacking the ``__module__`` special attribute.

* C++ ``std::complex`` values failed to auto-convert from and to Python complex
objects.

* Namespaced C++ types could not be used as memory view types due to lack of
name mangling. Patch by Ivan Smirnov.

* Assignments between identical C++ types that were declared with differently
typedefed template types could fail.

* Rebuilds could fail to evaluate dependency timestamps in C++ mode.
Patch by Ian Henriksen.

* Macros defined in the ``distutils`` compiler option do not require values
anymore. Patch by Ian Henriksen.

* Minor fixes for MSVC, Cygwin and PyPy.

0.24

=================

Features added
--------------

* `PEP 498 <https://www.python.org/dev/peps/pep-0498/>`_:
Literal String Formatting (f-strings).
Original patch by Jelle Zijlstra.

* `PEP 515 <https://www.python.org/dev/peps/pep-0515/>`_:
Underscores as visual separators in number literals.

* Parser was adapted to some minor syntax changes in Py3.6, e.g.
https://bugs.python.org/issue9232

* The embedded C code comments that show the original source code
can be discarded with the new directive ``emit_code_comments=False``.

* Cpdef enums are now first-class iterable, callable types in Python.

* Ctuples can now be declared in pure Python code.

* Posix declarations for DLL loading and stdio extensions were added.
Patch by Lars Buitinck.

* The Py2-only builtins ``unicode()``, ``xrange()``, ``reduce()`` and
``long`` are now also available in compile time ``DEF`` expressions
when compiling with Py3.

* Exception type tests have slightly lower overhead.
This fixes ticket 868.

* property syntax fully supported in cdef classes, old syntax deprecated.

* C++ classes can now be declared with default template parameters.

Bugs fixed
----------

* C++ exceptions raised by overloaded C++ operators were not always
handled. Patch by Ian Henriksen.

* C string literals were previously always stored as non-const global
variables in the module. They are now stored as global constants
when possible, and otherwise as non-const C string literals in the
generated code that uses them. This improves compatibility with
strict C compiler options and prevents non-const strings literals
with the same content from being incorrectly merged.

* Compile time evaluated ``str`` expressions (``DEF``) now behave in a
more useful way by turning into Unicode strings when compiling under
Python 3. This allows using them as intermediate values in expressions.
Previously, they always evaluated to bytes objects.

* ``isinf()`` declarations in ``libc/math.pxd`` and ``numpy/math.pxd`` now
reflect the actual tristate ``int`` return value instead of using ``bint``.

* Literal assignments to ctuples avoid Python tuple round-trips in some
more corner cases.

* Iteration over ``dict(...).items()`` failed to get optimised when dict
arguments included keyword arguments.

* cProfile now correctly profiles cpdef functions and methods.

0.23.5

===================

* Compile errors and warnings in integer type conversion code. This fixes
ticket 877. Patches by Christian Neukirchen, Nikolaus Rath, Ian Henriksen.

* Reference leak when ``*args`` argument was reassigned in closures.

* Truth-testing Unicode strings could waste time and memory in Py3.3+.

* Return values of async functions could be ignored and replaced by ``None``.

* Compiler crash in CPython 3.6.

* Fix prange() to behave identically to range(). The end condition was
miscalculated when the range was not exactly divisible by the step.

* Optimised ``all(genexpr)``/``any(genexpr)`` calls could warn about unused
code. This fixes ticket 876.

0.23.4

===================

Bugs fixed
----------

* Memory leak when calling Python functions in PyPy.

* Compilation problem with MSVC in C99-ish mode.

* Warning about unused values in a helper macro.

Page 12 of 17

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.