- Version update to 0.28.1:
* PyFrozenSet_New() was accidentally used in PyPy where it is lacking
from the C-API.
* Assignment between some C++ templated types were incorrectly rejected
when the templates mix const with ctypedef. (Github issue #2148)
* Undeclared C++ no-args constructors in subclasses could make the
compilation fail if the base class constructor was declared without
nogil. (Github issue #2157)
* Bytes %-formatting inferred basestring (bytes or unicode) as result type
in some cases where bytes would have been safe to infer. (Github issue #2153)
* None was accidentally disallowed as typed return value of dict.pop().
- update to version 0.28:
* Features added
+ Cdef classes can now multiply inherit from ordinary Python
classes. (The primary base must still be a c class, possibly
object, and the other bases must not be cdef classes.)
+ Type inference is now supported for Pythran compiled NumPy
expressions. Patch by Nils Braun. (Github issue #1954)
+ The const modifier can be applied to memoryview declarations to
allow read-only buffers as input. (Github issues #1605, #1869)
+ C code in the docstring of a cdef extern block is copied
verbatimly into the generated file. Patch by Jeroen
Demeyer. (Github issue #1915)
+ When compiling with gcc, the module init function is now tuned
for small code size instead of whatever compile flags were
provided externally. Cython now also disables some code
intensive optimisations in that function to further reduce the
code size. (Github issue #2102)
+ Decorating an async coroutine with @cython.iterable_coroutine
OBS-URL: https://build.opensuse.org/request/show/588610
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-Cython?expand=0&rev=36
- Update to version 0.20:
* Support for CPython 3.4.
* Support for calling C++ template functions.
* yield is supported in finally clauses.
* The C code generated for finally blocks is duplicated for each exit
case to allow for better optimisations by the C compiler.
* Cython tries to undo the Python optimisationism of assigning a bound
method to a local variable when it can generate better code for the
direct call.
* Constant Python float values are cached.
* String equality comparisons can use faster type specific code in
more cases than before.
* String/Unicode formatting using the '%' operator uses a faster
C-API call.
* bytearray has become a known type and supports coercion from and
to C strings. Indexing, slicing and decoding is optimised. Note that
this may have an impact on existing code due to type inference.
* Using cdef basestring stringvar and function arguments typed as
basestring is now meaningful and allows assigning exactly
str and unicode objects, but no subtypes of these types.
* Support for the __debug__ builtin.
* Assertions in Cython compiled modules are disabled if the running
Python interpreter was started with the "-O" option.
* Some types that Cython provides internally, such as functions and
generators, are now shared across modules if more than one Cython
implemented module is imported.
* The type inference algorithm works more fine granular by taking the
results of the control flow analysis into account.
* A new script in bin/cythonize provides a command line frontend
to the cythonize() compilation function (including distutils build).
OBS-URL: https://build.opensuse.org/request/show/220455
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-Cython?expand=0&rev=18
- update to 0.19.2:
* Some standard declarations were fixed or updated, including the previously
incorrect declaration of ``PyBuffer_FillInfo()`` and some missing bits in
``libc.math``.
* Heap allocated subtypes of ``type`` used the wrong base type struct at the
C level.
* Calling the unbound method dict.keys/value/items() in dict subtypes could
call the bound object method instead of the unbound supertype method.
* "yield" wasn't supported in "return" value expressions.
* Using the "bint" type in memory views lead to unexpected results.
It is now an error.
* Assignments to global/closure variables could catch them in an illegal state
while deallocating the old value. (forwarded request 204137 from dirkmueller)
OBS-URL: https://build.opensuse.org/request/show/204142
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-Cython?expand=0&rev=17
- update to 0.19.1:
* Completely empty C-API structs for extension type slots (protocols like
number/mapping/sequence) are no longer generated into the C code.
* Docstrings that directly follow a public/readonly attribute declaration
in a cdef class will be used as docstring of the auto-generated property.
This fixes ticket 206.
* The automatic signature documentation tries to preserve more semantics
of default arguments and argument types. Specifically, ``bint`` arguments
now appear as type ``bool``.
* A warning is emitted when negative literal indices are found inside of
a code section that disables ``wraparound`` handling. This helps with
fixing invalid code that might fail in the face of future compiler
optimisations.
* Constant folding for boolean expressions (and/or) was improved.
* Added a build_dir option to cythonize() which allows one to place
the generated .c files outside the source tree.
- Update to version 0.19:
+ Please see http://wiki.cython.org/ReleaseNotes-0.19 (forwarded request 175219 from dirkmueller)
OBS-URL: https://build.opensuse.org/request/show/175239
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-Cython?expand=0&rev=13
* The C-API declarations were updated to include the new
PyDict_*Ref() functions. (Github issue :issue:`7291`)
* Iteration over literal sequences and strings in generators
generated invalid C code since 3.2.0. This was a regression
due to the C array iteration optimisation in :issue:`6926`,
which is now disabled inside of generators. (Github issue
:issue:`7342`)
* Calling special methods of known exception types failed with
an AttributeError. (Github issue :issue:`7342`)
* Calling the unbound __mul__ special method of builtin
collections with subtypes failed. (Github issue
:issue:`7340`)
* C string literals could generate invalid "const to non-const"
casts in the C code. (Github issue :issue:`7346`)
* yield is no longer allowed inside of a
cython.critical_section, but is now allowed while holding a
cython.pymutex. (Github issue :issue:`7317`)
* Under lock congestion, acquiring the GIL could crash in
Python 3.11, part 2. This bug was introduced in Cython 3.2.0.
(Github issue :issue:`7312`)
* The new py_safe_* functions in libc.threads triggered C
compiler warnings. (Github issue :issue:`7356`)
* Cython now leaves markers about its utility code dependencies
in the generated C code to help debugging "unused function" C
compiler warnings. (Github issue :issue:`7294`)
* Relative imports could fail if the shared utility module is
used. This bug was introduced in Cython 3.2.0. (Github issue
:issue:`7290`)
* Under lock congestion, acquiring the GIL could crash in
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-Cython?expand=0&rev=213
- Update to 3.1.4
* Declarations for the new PyUnstable_*() refcounting C-API functions in Py3.14
were added.
* The monitoring code could crash on tracing.
* Initialising the monitoring code could fail with a CPython exception.
* Optimised integer shifting triggered undefined behaviour in C.
* Deallocating objects that inherit from external types defined in pxd files
could run into an infinite loop.
* A reference to metaclasses could be leaked on instantiation.
* (Unlikely) error handling during empty builtin container tests was ineffective.
* Generated *_api.h files used potentially unknown Cython configuration macros.
* cythonize() avoids parallel compiler runs on systems using spawn() in
multiprocessing.
* The @cython.ufunc decorator was missing in type checker stubs.
OBS-URL: https://build.opensuse.org/request/show/1306531
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-Cython?expand=0&rev=211
- Update to 3.1.3
* Some method calls with 0 or 1 argument failed to use PyObject_VectorCallMethod().
* Walrus assignments of literal Python integers could generate invalid C code.
* cython.pythread_type_lock (also used as fallback for cython.pymutex) could stall
on heavily contended locks.
* C string arrays (not pointers) always coerced to the Python default string type,
even on explicit casts to other string types.
* Unterminated \N{} character escapes in strings could unrail the parser.
* An internal C function was not marked as static and leaked a linker symbol.
* Some Unicode letters were not recognised as lexically valid name parts.
* Compatibility with PyPy3.8 was lost by accident.
* The Linux binary wheels of 3.1.2 used SSSE3 CPU instructions which are not
available on some CPUs.
- Convert to libalternatives on SLE-16-based and newer systems only
OBS-URL: https://build.opensuse.org/request/show/1299226
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-Cython?expand=0&rev=209
- Update top 3.1.2
* Attribute lookups failed on the ``bool`` builtin type.
(Github issue :issue:`6905`)
* Type checks on or-ed union types could incorrectly return false.
(Github issue :issue:`6420`)
* Negative list indexing could accidentally wrap around twice in PyPy and the Limited API.
* Iterating over literal sequences with starred (unpacked) items could infer a wrong
type for the loop variable and fail to assign the values.
(Github issue :issue:`6924`)
* Calls to C functions taking exception types failed to check for a `None` argument.
(Github issue :issue:`6420`)
* Fused functions had an incorrect ``__module__`` attribute.
(Github issue :issue:`6897`)
* The type of Cython implemented functions had an incorrect ``__module__`` attribute.
(Github issue :issue:`6841`)
* Errors while indexing into ``bytearray`` or ``str`` in ``nogil`` sections could crash.
(Github issue :issue:`6947`)
* ``bytearray.append()`` could silently accept some invalid character numbers.
* The C++11 ``<type_traits>`` header was included regardless of the C++ version.
(Github issue :issue:`6896`)
* ``PyDict_GetItemStringRef()`` was accidentally used in older Limited API versions.
(Github issue :issue:`6914`)
* ``abort()`` was used but not always available in the Limited API.
(Github issue :issue:`6918`)
* Some dependencies were missing from the ``depfile``.
(Github issue :issue:`6938`)
* Embedded function signatures were not always separated from the existing docstring.
(Github issue :issue:`6904`)
* ``numpy.math`` was missing from ``Cython/Includes/`` and could not be cimported.
(Github issue :issue:`6859`)
* Some tests were adapted for NumPy 2.x.
(Github issue :issue:`6898`)
* Some C compiler warnings were fixed.
(Github issue :issue:`6870`)
* ``Cython.Build`` was not officially exposing the ``cythonize`` function.
(Github issue :issue:`6934`)
- Changes from 3.1.1
* A reference leak in the async delegation code was fixed.
(Github issues :issue:`6850`, :issue:`6878`)
* Conditional if-else expressions mixing Python and C (numeric) types could end up
inferring an overly tight result type, thus leading to unexpected type conversions,
runtime exceptions on assignment, or incorrect "temporary assignment" compile errors.
(Github issue :issue:`6854`)
* Some Limited API issues were resolved.
(Github issue :issue:`6862`)
* Large C ``long long`` values could be truncated when passed into PyPy.
(Github issue :issue:`6890`)
* ``callable()`` incorrectly reported ``False`` in PyPy for classes with metaclasses.
Patch by Anatolii Aniskovych. (Github issue :issue:`6892`)
* The signature of fused functions was no longer introspectable in Cython 3.1.0.
(Github issue :issue:`6855`)
* Coroutines could generate invalid C with line tracing enabled.
(Github issue :issue:`6865`)
* Code using ``complex()`` could generate invalid C code missing type declarations.
(Github issue :issue:`6860`)
* Code using e.g. ``list[int | None]`` outside of variable/argument annotations failed to compile.
(Github issue :issue:`6856`)
* Code using ctuples in a ``const`` context could generate invalid C.
(Github issue :issue:`6864`)
* Accessing special methods on cpdef enums failed to compile.
* Some C compiler warnings were resolved.
Patches by Daniel Larraz. (Github issues :issue:`6876`, :issue:`3172`, :issue:`6873`, :issue:`6877`)
* Re-establish support for PyPy 3.8.
(Github issue :issue:`6867`)
- Changes from 3.1.0
- See https://github.com/cython/cython/releases/tag/3.1.0-1
OBS-URL: https://build.opensuse.org/request/show/1293837
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-Cython?expand=0&rev=207
- Update to 3.0.12
* Release 3.0.11 introduced some incorrect ``noexcept`` warnings.
(Github issue :issue:`6335`)
* Conditional assignments to variables using the walrus operator
could crash. (Github issue :issue:`6094`)
* Dict assignments to struct members with reserved C names could generate
invalid C code.
* Fused ctuples with the same entry types but different sizes could
fail to compile. (Github issue :issue:`6328`)
* In Py3, `pyximport` was not searching `sys.path` when looking for
importable source files. (Github issue :issue:`5615`)
* Using `& 0` on integers produced with `int.from_bytes()` could read
invalid memory on Python 3.10. (Github issue :issue:`6480`)
* Modules could fail to compile in PyPy 3.11 due to missing CPython
specific header files. Patch by Matti Picus. (Github issue :issue:`6482`)
* Minor fix in C++ ``partial_sum()`` declaration.
OBS-URL: https://build.opensuse.org/request/show/1246992
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-Cython?expand=0&rev=202
* The C++11 emplace* methods were added to libcpp.deque. Patch
by Somin An. (Github issue :issue:`6159`)
* The exception check value of functions declared in pxd files
was not always applied in 3.0.10. (Github issue
:issue:`6122`)
* A crash on exception deallocations was fixed. (Github issue
:issue:`6022`)
* A crash was fixed when assigning a zero-length slice to a
memoryview. Patch by Michael Man. (Github issue
:issue:`6227`)
* libcpp.optional.value() could crash if it raised a C++
exception. Patch by Alexander Condello. (Github issue
:issue:`6190`)
* The return type of str() was mishandled, leading to crashes
with language_level=3. (Github issue :issue:`6166`)
* bytes.startswith/endswith() failed for non-bytes substrings
(e.g. bytearray). (Github issue :issue:`6168`)
* Fused ctuples crashed Cython. (Github issue :issue:`6068`)
* A compiler crash was fixed when using extension types in
fused types. (Github issue :issue:`6204`)
* The module cleanup code was incorrect for globally defined
memory view slices. (Github issue :issue:`6276`)
* Some adaptations were made to enable compilation in Python
3.13. (Github issues :issue:`5997`, :issue:`6182`,
:issue:`6251`)
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-Cython?expand=0&rev=200
* Cython generated incorrect self-casts when directly calling
final methods of subtypes.
* Internal C names generated from C function signatures could
become too long for MSVC.
* The noexcept warnings could be misleading in some cases.
* The @cython.ufunc implementation could generate incomplete C
code.
* The libcpp.complex declarations could result in incorrect C++
code. Patch by Raffi Enficiaud.
* Several tests were adapted to work with both NumPy 1.x and
2.0. Patch by Matti Picus.
* C compiler warnings when the freelist implementation is
disabled (e.g. on PyPy) were fixed. It can now be disabled
explicitly with the C macro guard CYTHON_USE_FREELISTS=0.
* Some C macro guards for feature flags were missing from the
NOGIL Python configuration.
* Some recently added builtins were unconditionally looked up
at module import time (if used by user code) that weren't
available on all Python versions and could thus fail the
import.
* A performance hint regarding exported pxd declarations was
improved.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-Cython?expand=0&rev=198
* Assigning const values to non-const variables now issues a
warning.
* Using noexcept on a function returning Python objects now
issues a warning.
* Some C-API usage was updated for the upcoming CPython 3.13.
Patches by Victor Stinner et al.
* The deprecated Py_UNICODE type is no longer used, unless
required by user code.
* std::string.replace() declarations were added to
libcpp.string. Patch by Kieran Geary.
* Cython generates incorrect (but harmless) self-casts when
directly calling final methods of subtypes. Lacking a better
solution, the errors that recent gcc versions produce have
been silenced for the time being. Original patch by Michał
Górny.
* Unused variable warnings about clineno were fixed when C
lines in tracebacks are disabled.
* Subclass deallocation of extern classes could crash if the
base class uses GC. Original patch by Jason Fried.
* Type checks for Python memoryview could use an invalid C
function. Patch by Xenia Lu.
* Calling final fused functions could generate invalid C code.
* Declaring extern enums multiple times could generate invalid
C code.
* pyximport used relative paths incorrectly. Patch by Stefano
Rivera.
* Running Cython with globbing characters ([]*?) in the module
search path could fail.
* Literal strings that include braces could change the C code
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-Cython?expand=0&rev=196
* Using const together with defined fused types could fail to
compile. (Github issue :issue:`5230`)
* A "use after free" bug was fixed in parallel sections.
(Github issue :issue:`5922`)
* Several types were not available as cython.* types in pure
Python code.
* The generated code is now correct C89 again, removing some
C++ style // comments and C99-style declaration-after-code
code ordering. This is still relevant for some ols C
compilers, specifically ones that match old Python 2.7
installations.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-Cython?expand=0&rev=194
* In the iterator of generator expressions, ``await`` and
``yield`` were not correctly analysed.
* ``cpdef`` enums with the same name cimported from different
modules could lead to invalid C code.
* Some declarations in ``cpython.unicode`` were fixed and
extended.
* Compiling fused types used in pxd files could crash Cython in
Python 3.11+.
* Source files with non-ASCII file names could crash Cython.
* Includes all bug-fixes and features from the 0.29 maintenance
branch
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-Cython?expand=0&rev=190
* Features added
* Fused def function dispatch is a bit faster.
* Declarations for the ``wchar`` PyUnicode API were added.
* The Python "nogil" fork is now also detected with the new
``Py_GIL_DISABLED`` macro.
* Patch by Hugo van Kemenade (Github issue :issue:`583652`)
* Bugs fixed
* Comparing dataclasses could give different results than
Python.
* ``float(std::string)`` generated invalid C code.
* Using ``cpdef`` functions with ``cimport_from_pyx`` failed.
* A crash was fixed when string-formatting a Python value
fails.
* On item access, Cython could try the sequence protocol before
the mapping protocol
* in some cases if an object supports both.
* A C compiler warning was resolved.
* Complex numbers failed to compile in MSVC with C11.
* Patch by Lysandros Nikolaou. (Github issue :issue:`5809`)
* Some issues with the Limited API and with PyPy were resolved.
* A C++ issue in Python 3.13 was resolved.
* Several directives are now also available (as no-ops) in
Python code.
* An error message was corrected.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-Cython?expand=0&rev=188
* Preliminary support for CPython 3.13a1 was added to allow
early testing.
* Bugs fixed
* A compiler crash was fixed.
* A typo in the ``always_allow_keywords`` directive for Python
code was fixed.
* Some C compiler warnings were resolved.
resolved if the for-loop's ``else:`` branch executes
track these dependencies.
would trigger C compiler warnings with tracing support enabled.
- Drop cython_use_imgmath.patch
- Update to 0.29.22
* Remove an incorrect cast when using true-division in C++ operations.
* C compile errors with CPython 3.8 were resolved.
needed by Ceph - stopgap measure until issue can be addressed
of the main source file.
- Remove Cython-fix-version-detection.patch
detecting Cython's presence. It is already merged upstream and
Note that despite what upstream says,
this, which is why the patch is going here instead of
* For loop docs fix and pointer iteration.
* Py2.4 fix: PySet_Pop() appeared in Py2.5
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-Cython?expand=0&rev=184
* Features added
- A new compiler directive show_performance_hints was added to
disable the newly added performance hint output. (Github issue
:issue:`5748`)
* Bugs fixed
- `cythonize` required ``distutils even for operations that did not
build binaries. (Github issue :issue:`5751`)
- A regression in 3.0.3 was fixed that prevented calling inline
functions from another inline function in .pxd files. (Github
issue :issue:`5748`)
- Some C compiler warnings were resolved. Patch by Pierre Jolivet.
(Github issue :issue:`5756`)
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-Cython?expand=0&rev=182
* Features added
- More warnings were added to help users migrate and avoid bugs.
(Github issue #5650)
- A warning-like category for performance hints was added that
bypasses -Werror. (Github issue #5673)
- FastGIL now uses standard thread_local in C++. (Github issue
#5640)
- reference_wrapper was added to libcpp.functional. Patch by Vyas
Ramasubramani. (Github issue #5671)
- The cythonize command now supports the --cplus option known from
the cython command. (Github issue #5736)
* Bug fixed
- Performance regressions where the GIL was needlessly acquired
were fixed. (Github issues #5670, #5700)
- A reference leak for exceptions in Python 3.12 was resolved.
Patch by Eric Johnson. (Github issue #5724)
- fastcall calls with keyword arguments generated incorrect C
code. (Github issue #5665)
- Assigning the type converted result of a conditional (if-else)
expression to int or bool variables could lead to incorrect C
code. (Github issue #5731)
- Early (unlikely) failures in Python function wrappers no longer
set a traceback in order to simplify the C code flow. Being
mostly memory allocation errors, they probably would never have
created a traceback anyway. (Github issue #5681)
- Relative cimports from packages with __init__.py files could
fail. (Github issue #5715)
- Several issues with the Limited API support were resolved.
(Github issues #5641, #5648, #5689)
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-Cython?expand=0&rev=181
- The complete list is seriously long, so I would relegate you
to https://github.com/cython/cython/blob/master/CHANGES.rst
- The implemented PEPs are:
- PEP-3131: Supporting Non-ASCII Identifiers
- PEP-479: generator_stop (enabled by default for language_level=3)
- PEP-487: Simpler customisation of class creation
- PEP-563: Postponed Evaluation of Annotations
- PEP-570: Positional-Only Parameters
- PEP-572: Assignment Expressions (a.k.a. the walrus operator :=)
- PEP-590: Vectorcall protocol
- PEP-614: Relaxing Grammar Restrictions On Decorators
- Cython supports all released versions of Python from 2.7 to
3.11 (and some experimental parts of 3.12) inclusive.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-Cython?expand=0&rev=176