Changelog History
Page 1
-
v3.0.0 Changes
April 23, 2020π Features added
Cython functions now use the
PEP-590
_ vectorcall protocol in Py3.7+. Patch by Jeroen Demeyer. (Github issue :issue:2263
)π Unicode identifiers are supported in Cython code (
PEP-3131
_). Patch by David Woods. (Github issue :issue:2601
)π Unicode module names and imports are supported. Patch by David Woods. (Github issue :issue:
3119
)π Annotations are no longer parsed, keeping them as strings following
PEP-563
_. Patch by David Woods. (Github issue :issue:3285
)Preliminary support for the CPython's
Py_LIMITED_API
(stable ABI) is available by setting theCYTHON_LIMITED_API
C macro. Note that the support is currently in an early stage and many features do not yet work. You currently still have to definePy_LIMITED_API
externally in order to restrict the API usage. This will change when the feature stabilises. Patches by Eddie Elizondo and David Woods. (Github issues :issue:3223
, :issue:3311
, :issue:3501
)The dispatch to fused functions is now linear in the number of arguments, which makes it much faster, often 2x or more, and several times faster for larger fused types with many specialisations. Patch by will-ca. (Github issue :issue:
1385
)with gil/nogil
statements can be conditional based on compile-time constants, e.g. fused type checks. Patch by Noam Hershtig. (Github issue :issue:2579
)const
can be used together with fused types. Patch by Thomas Vincent. (Github issue :issue:1772
)Reimports of already imported modules are substantially faster. (Github issue :issue:
2854
)π Positional-only arguments are supported in Python functions (
PEP-570
_). Patch by Josh Tobin. (Github issue :issue:2915
)π The
volatile
C modifier is supported in Cython code. Patch by Jeroen Demeyer. (Github issue :issue:1667
)@cython.trashcan(True)
can be used on an extension type to enable the CPython :ref:trashcan
. This allows deallocating deeply recursive objects without overflowing the stack. Patch by Jeroen Demeyer. (Github issue :issue:2842
)Inlined properties can be defined for external extension types. Patch by Matti Picus. (Github issue :issue:
2640
, redone later in :issue:3571
)The
str()
builtin now callsPyObject_Str()
instead of going through a Python call. Patch by William Ayd. (Github issue :issue:3279
)String concatenation can now happen in place if possible, by extending the existing string rather than always creating a new one. Patch by David Woods. (Github issue :issue:
3453
)Multiplication of Python numbers with small constant integers is faster. (Github issue :issue:
2808
)Some list copying is avoided internally when a new list needs to be created but we already have a fresh one. (Github issue :issue:
3494
)Extension types that do not need their own
tp_new
implementation (because they have no object attributes etc.) directly inherit the implementation of their parent type if possible. (Github issue :issue:1555
)The attributes
gen.gi_frame
andcoro.cr_frame
of Cython compiled generators and coroutines now return an actual frame object for introspection. (Github issue :issue:2306
)Several declarations in
cpython.*
,libc.*
andlibcpp.*
were added. Patches by Jeroen Demeyer, Matthew Edwards, Chris Gyurgyik, Jerome Kieffer and Zackery Spytz. (Github issues :issue:3468
, :issue:3332
, :issue:3202
, :issue:3188
, :issue:3179
, :issue:2891
, :issue:2826
, :issue:2713
)π Deprecated NumPy API usages were removed from
numpy.pxd
. Patch by Matti Picus. (Github issue :issue:3365
)cython.inline()
now sets theNPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION
C macro automatically whennumpy
is imported in the code, to avoid C compiler warnings about deprecated NumPy C-API usage.The builtin
abs()
function can now be used on C numbers in nogil code. Patch by Elliott Sales de Andrade. (Github issue :issue:2748
)PEP-479
_ (generator_stop
) is now enabled by default with language level 3. (Github issue :issue:2580
)π The
cython.view.array
type supports inheritance. Patch by David Woods. (Github issue :issue:3413
)Code annotation accepts a new debugging argument
--annotate-fullc
that will include the complete syntax highlighted C file in the HTML output. (Github issue :issue:2855
)β
--no-capture
added toruntests.py
to prevent stdout/stderr capturing during srctree tests. Patch by Matti Picus. (Github issue :issue:2701
)π
--no-docstrings
option added tocythonize
script. Original patch by mo-han. (Github issue :issue:2889
)π
cygdb
gives better error messages when it fails to initialise the Python runtime support in gdb. Patch by Volker Weissmann. (Github issue :issue:3489
)π The Pythran
shape
attribute is supported. Patch by Serge Guelton. (Github issue :issue:3307
)
π Bugs fixed
The unicode methods
.upper()
,.lower()
and.title()
were incorrectly optimised for single character input values and only returned the first character if multiple characters should have been returned. They now use the original Python methods again.Fused argument types were not correctly handled in type annotations and
cython.locals()
. Patch by David Woods. (Github issues :issue:3391
, :issue:3142
)Diverging from the usual behaviour,
len(memoryview)
,len(char*)
andlen(Py_UNICODE*)
returned an unsignedsize_t
value. They now return a signedPy_ssize_t
, like other usages oflen()
.Nested dict literals in function call kwargs could incorrectly raise an error about duplicate keyword arguments, which are allowed when passing them from dict literals. (Github issue :issue:
2963
)Item access (subscripting) with integer indices/keys always tried the Sequence protocol before the Mapping protocol, which diverged from Python semantics. It now passes through the Mapping protocol first when supported. (Github issue :issue:
1807
)Name lookups in class bodies no longer go through an attribute lookup. Patch by Jeroen Demeyer. (Github issue :issue:
3100
)Broadcast assignments to a multi-dimensional memory view slice could end up in the wrong places when the underlying memory view is known to be contiguous but the slice is not. (Github issue :issue:
2941
)Pickling unbound methods of Python classes failed. Patch by Pierre Glaser. (Github issue :issue:
2972
)The
Py_hash_t
type failed to accept arbitrary "index" values. (Github issue :issue:2752
)The first function line number of functions with decorators pointed to the signature line and not the first decorator line, as in Python. Patch by Felix KohlgrΓΌber. (Github issue :issue:
2536
)Constant integer expressions that used a negative exponent were evaluated as integer 0 instead of the expected float value. Patch by KryΕ‘tof PilnΓ‘Δek. (Github issue :issue:
2133
)The
cython.declare()
andcython.cast()
functions could fail in pure mode. Patch by Dmitry Shesterkin. (Github issue :issue:3244
)__doc__
was not available inside of the class body during class creation. (Github issue :issue:1635
)Setting
language_level=2
in a file did not work iflanguage_level=3
was enabled globally before. Patch by Jeroen Demeyer. (Github issue :issue:2791
)__init__.pyx
files were not always considered as package indicators. (Github issue :issue:2665
)Compiling package
__init__
files could fail under Windows due to an undefined export symbol. (Github issue :issue:2968
)β A C compiler cast warning was resolved. Patch by Michael Buesch. (Github issue :issue:
2775
)Binding staticmethods of Cython functions were not behaving like Python methods. Patch by Jeroen Demeyer. (Github issue :issue:
3106
, :issue:3102
)Memoryviews failed to compile when the
cache_builtins
feature was disabled. Patch by David Woods. (Github issue :issue:3406
)
Other changes
0οΈβ£ The default language level was changed to
3str
, i.e. Python 3 semantics, but withstr
literals (also in Python 2.7). This is a backwards incompatible change from the previous default of Python 2 semantics. The previous behaviour is available through the directivelanguage_level=2
. (Github issue :issue:2565
)Cython no longer generates
__qualname__
attributes for classes in Python 2.x since they are problematic there and not correctly maintained for subclasses. Patch by Jeroen Demeyer. (Github issue :issue:2772
)π¨ Source file fingerprinting now uses SHA-1 instead of MD5 since the latter tends to be slower and less widely supported these days. (Github issue :issue:
2790
)π The long deprecated include files
python_*
,stdio
,stdlib
andstl
inCython/Includes/Deprecated/
were removed. Use thelibc.*
andcpython.*
pxd modules instead. Patch by Jeroen Demeyer. (Github issue :issue:2904
)The search order for include files was changed. Previously it was
include_directories
,Cython/Includes
,sys.path
. Now it isinclude_directories
,sys.path
,Cython/Includes
. This was done to allow third-party*.pxd
files to override the ones in Cython. Patch by Matti Picus. (Github issue :issue:2905
)π The command line parser was rewritten and modernised using
argparse
. Patch by Egor Dranischnikow. (Github issue :issue:2952
, :issue:3001
)π Dotted filenames for qualified module names (
pkg.mod.pyx
) are deprecated. Use the normal Python package directory layout instead. (Github issue :issue:2686
)π§ Binary Linux wheels now follow the manylinux2010 standard. Patch by Alexey Stepanov. (Github issue :issue:
3355
)π Support for Python 2.6 was removed.
.. _
PEP-560
: https://www.python.org/dev/peps/pep-0560 .. _PEP-570
: https://www.python.org/dev/peps/pep-0570 .. _PEP-487
: https://www.python.org/dev/peps/pep-0487 .. _PEP-590
: https://www.python.org/dev/peps/pep-0590 .. _PEP-3131
: https://www.python.org/dev/peps/pep-3131 .. _PEP-563
: https://www.python.org/dev/peps/pep-0563 .. _PEP-479
: https://www.python.org/dev/peps/pep-0479.. _0.29.24:
-
v3.0.a5
May 19, 2020 -
v3.0.a4
May 06, 2020 -
v3.0.a3
April 27, 2020 -
v3.0.a2
April 23, 2020 -
v3.0.a1
April 12, 2020 -
v0.29.32 Changes
July 29, 2022π Bugs fixed
βͺ Revert "Using memoryview typed arguments in inner functions is now rejected as unsupported." Patch by David Woods. (Github issue :issue:
4798
)from module import *
failed in 0.29.31 when using memoryviews. Patch by David Woods. (Github issue :issue:4927
)
.. _0.29.31:
-
v0.29.31 Changes
July 27, 2022π Features added
- A new argument
--module-name
was added to thecython
command to provide the (one) exact target module name from the command line. Patch by Matthew Brett and h-vetinari. (Github issue :issue:4906
)
π Bugs fixed
π Use
importlib.util.find_spec()
instead of the deprecatedimportlib.find_loader()
function when setting up the package path at import-time. Patch by Matti Picus. (Github issue :issue:4764
)π Require the C compiler to support the two-arg form of
va_start
on Python 3.10 and higher. Patch by Thomas Caswell. (Github issue :issue:4820
)π Make
fused_type
subscriptable in Shadow.py. Patch by Pfebrer. (Github issue :issue:4842
)π Fix the incorrect code generation of the target type in
bytearray
loops. Patch by Kenrick Everett. (Github issue :issue:4108
)Atomic refcounts for memoryviews were not used on some GCC versions by accident. Patch by Sam Gross. (Github issue :issue:
4915
)β Silence some GCC
-Wconversion
warnings in C utility code. Patch by Lisandro Dalcin. (Github issue :issue:4854
)Tuple multiplication was ignored in expressions such as
[*(1,) * 2]
. Patch by David Woods. (Github issue :issue:4864
)Calling
append
methods on extension types could fail to find the method in some cases. Patch by David Woods. (Github issue :issue:4828
)Ensure that object buffers (e.g.
ndarray[object, ndim=1]
) containingNULL
pointers are safe to use, returningNone
instead of theNULL
pointer. Patch by Sebastian Berg. (Github issue :issue:4859
)π Using memoryview typed arguments in inner functions is now rejected as unsupported. Patch by David Woods. (Github issue :issue:
4798
)Compilation could fail on systems (e.g. FIPS) that block MD5 checksums at runtime. (Github issue :issue:
4909
)Experimental adaptations for the CPython "nogil" fork was added. Note that there is no official support for this in Cython 0.x. Patch by Sam Gross. (Github issue :issue:
4912
)
.. _0.29.30:
- A new argument
-
v0.29.30 Changes
May 16, 2022π Bugs fixed
- The GIL handling changes in 0.29.29 introduced a regression where
objects could be deallocated without holding the GIL.
(Github issue :issue:
4796
)
.. _0.29.29:
- The GIL handling changes in 0.29.29 introduced a regression where
objects could be deallocated without holding the GIL.
(Github issue :issue:
-
v0.29.29 Changes
May 16, 2022π Features added
- Avoid acquiring the GIL at the end of nogil functions.
This change was backported in order to avoid generating wrong C code
that would trigger C compiler warnings with tracing support enabled.
Backport by Oleksandr Pavlyk. (Github issue :issue:
4637
)
π Bugs fixed
Function definitions in
finally:
clauses were not correctly generated. Patch by David Woods. (Github issue :issue:4651
)π A case where C-API functions could be called with a live exception set was fixed. Patch by Jakub KulΓk. (Github issue :issue:
4722
)Pickles can now be exchanged again with those generated from Cython 3.0 modules. (Github issue :issue:
4680
)Cython now correctly generates Python methods for both the provided regular and reversed special numeric methods of extension types. Patch by David Woods. (Github issue :issue:
4750
)Calling unbound extension type methods without arguments could raise an
IndexError
instead of aTypeError
. Patch by David Woods. (Github issue :issue:4779
)Calling unbound
.__contains__()
super class methods on some builtin base types could trigger an infinite recursion. Patch by David Woods. (Github issue :issue:4785
)The C union type in pure Python mode mishandled some field names. Patch by Jordan Brière. (Github issue :issue:
4727
)π Allow users to overwrite the C macro
_USE_MATH_DEFINES
. Patch by Yuriy Chernyshov. (Github issue :issue:4690
)π Improved compatibility with CPython 3.10/11. Patches by Thomas Caswell, David Woods. (Github issues :issue:
4609
, :issue:4667
, :issue:4721
, :issue:4730
, :issue:4777
)π Docstrings of descriptors are now provided in PyPy 7.3.9. Patch by Matti Picus. (Github issue :issue:
4701
)
.. _0.29.28:
- Avoid acquiring the GIL at the end of nogil functions.
This change was backported in order to avoid generating wrong C code
that would trigger C compiler warnings with tracing support enabled.
Backport by Oleksandr Pavlyk. (Github issue :issue: