Cython-plus

Latest version: v0.3.0

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

Scan your dependencies

Page 1 of 13

3.0.0

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

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

* Cython functions now use the PEP-590 vectorcall protocol in Py3.7+.
Patch by Jeroen Demeyer. (Github issue 2263)

* Unicode identifiers are supported in Cython code (PEP 3131).
Patch by David Woods. (Github issue 2601)

* Unicode module names and imports are supported.
Patch by David Woods. (Github issue 3119)

* Annotations are no longer parsed, keeping them as strings following PEP-563.
Patch by David Woods. (Github issue 3285)

* Preliminary support for the CPython's ``Py_LIMITED_API`` (stable ABI) is
available by setting the ``CYTHON_LIMITED_API`` C macro. Note that the
support is currently in an early stage and many features do not yet work.
Patches by Eddie Elizondo and David Woods. (Github issues 3223, 3311, 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 1385)

* ``with gil/nogil`` statements can be conditional based on compile-time
constants, e.g. fused type checks.
Patch by Noam Hershtig. (Github issue 2579)

* ``const`` can be used together with fused types.
Patch by Thomas Vincent. (Github issue 1772)

* Reimports of already imported modules are substantially faster.
(Github issue 2854)

* Positional-only arguments are supported in Python functions.
Patch by Josh Tobin. (Github issue 2915)

* The ``volatile`` C modifier is supported in Cython code.
Patch by Jeroen Demeyer. (Github issue 1667)

* ``cython.trashcan(True)`` can be used on an extension type to enable the
CPython trashcan. This allows deallocating deeply recursive objects without
overflowing the stack. Patch by Jeroen Demeyer. (Github issue 2842)

* Inlined properties can be defined for external extension types.
Patch by Matti Picus. (Github issue 2640)

* The ``str()`` builtin now calls ``PyObject_Str()`` instead of going
through a Python call.
Patch by William Ayd. (Github 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 3453)

* Multiplication of Python numbers with small constant integers is faster.
(Github 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 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 1555)

* The attributes ``gen.gi_frame`` and ``coro.cr_frame`` of Cython compiled
generators and coroutines now return an actual frame object for introspection.
(Github issue 2306)

* Several declarations in ``cpython.*``, ``libc.*`` and ``libcpp.*`` were added.
Patches by Jeroen Demeyer, Matthew Edwards, Chris Gyurgyik, Jerome Kieffer
and Zackery Spytz.
(Github issues 3468, 3332, 3202, 3188, 3179, 2891, 2826, 2713)

* Deprecated NumPy API usages were removed from ``numpy.pxd``.
Patch by Matti Picus. (Github issue 3365)

* ``cython.inline()`` now sets the ``NPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION``
C macro automatically when ``numpy`` 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 2748)

* PEP-479 (``generator_stop``) is now enabled by default with language level 3.
(Github issue 2580)

* The ``cython.view.array`` type supports inheritance.
Patch by David Woods. (Github 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 2855)

* ``--no-capture`` added to ``runtests.py`` to prevent stdout/stderr capturing
during srctree tests.
Patch by Matti Picus. (Github issue 2701)

* ``--no-docstrings`` option added to ``cythonize`` script.
Original patch by mo-han. (Github issue 2889)

* ``cygdb`` gives better error messages when it fails to initialise the
Python runtime support in gdb.
Patch by Volker Weissmann. (Github issue 3489)

* The Pythran ``shape`` attribute is supported.
Patch by Serge Guelton. (Github 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 3391, 3142)

* Diverging from the usual behaviour, ``len(memoryview)``, ``len(char*)``
and ``len(Py_UNICODE*)`` returned an unsigned ``size_t`` value. They now
return a signed ``Py_ssize_t``, like other usages of ``len()``.

* 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 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 1807)

* Name lookups in class bodies no longer go through an attribute lookup.
Patch by Jeroen Demeyer. (Github 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 2941)

* Pickling unbound methods of Python classes failed.
Patch by Pierre Glaser. (Github issue 2972)

* The ``Py_hash_t`` type failed to accept arbitrary "index" values.
(Github 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 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 2133)

* The ``cython.declare()`` and ``cython.cast()`` functions could fail in pure mode.
Patch by Dmitry Shesterkin. (Github issue 3244)

* ``__doc__`` was not available inside of the class body during class creation.
(Github issue 1635)

* Setting ``language_level=2`` in a file did not work if ``language_level=3``
was enabled globally before.
Patch by Jeroen Demeyer. (Github issue 2791)

* ``__init__.pyx`` files were not always considered as package indicators.
(Github issue 2665)

* Compiling package ``__init__`` files could fail under Windows due to an
undefined export symbol. (Github issue 2968)

* A C compiler cast warning was resolved.
Patch by Michael Buesch. (Github issue 2775)

* Binding staticmethods of Cython functions were not behaving like Python methods.
Patch by Jeroen Demeyer. (Github issue 3106, 3102)

* Memoryviews failed to compile when the ``cache_builtins`` feature was disabled.
Patch by David Woods. (Github issue 3406)

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

* The default language level was changed to ``3str``, i.e. Python 3 semantics,
but with ``str`` 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 directive ``language_level=2``.
(Github 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 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 2790)

* The long deprecated include files ``python_*``, ``stdio``, ``stdlib`` and
``stl`` in ``Cython/Includes/Deprecated/`` were removed. Use the ``libc.*``
and ``cpython.*`` pxd modules instead.
Patch by Jeroen Demeyer. (Github issue 2904)

* The search order for include files was changed. Previously it was
``include_directories``, ``Cython/Includes``, ``sys.path``. Now it is
``include_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 2905)

* The command line parser was rewritten and modernised using ``argparse``.
Patch by Egor Dranischnikow. (Github issue 2952, 3001)

* Dotted filenames for qualified module names (``pkg.mod.pyx``) are deprecated.
Use the normal Python package directory layout instead.
(Github issue 2686)

* Binary Linux wheels now follow the manylinux2010 standard.
Patch by Alexey Stepanov. (Github issue 3355)

* Support for Python 2.6 was removed.

0.29.22

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

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

* ``repr()`` was assumed to return ``str`` instead of ``unicode`` with ``language_level=3``.
(Github issue 3736)

0.29.21

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

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

* Fix a regression in 0.29.20 where ``__div__`` failed to be found in extension types.
(Github issue 3688)

* Fix a regression in 0.29.20 where a call inside of a finally clause could fail to compile.
Patch by David Woods. (Github issue 3712)

* Zero-sized buffers could fail to validate as C/Fortran-contiguous.
Patch by Clemens Hofreither. (Github issue 2093)

* ``exec()`` did not allow recent Python syntax features in Py3.8+ due to
https://bugs.python.org/issue35975.
(Github issue 3695)

* Binding staticmethods of Cython functions were not behaving like Python methods in Py3.
Patch by Jeroen Demeyer and Michał Górny. (Github issue 3106)

* Pythran calls to NumPy methods no longer generate useless method lookup code.

* The ``PyUnicode_GET_LENGTH()`` macro was missing from the ``cpython.*`` declarations.
Patch by Thomas Caswell. (Github issue 3692)

* The deprecated ``PyUnicode_*()`` C-API functions are no longer used, except for Unicode
strings that contain lone surrogates. Unicode strings that contain non-BMP characters
or surrogate pairs now generate different C code on 16-bit Python 2.x Unicode deployments
(such as MS-Windows). Generating the C code on Python 3.x is recommended in this case.
Original patches by Inada Naoki and Victor Stinner. (Github issues 3677, 3721, 3697)

* Some template parameters were missing from the C++ ``std::unordered_map`` declaration.
Patch by will. (Github issue 3685)

* Several internal code generation issues regarding temporary variables were resolved.
(Github issue 3708)

0.29.20

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

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

* Nested try-except statements with multiple ``return`` statements could crash
due to incorrect deletion of the ``except as`` target variable.
(Github issue 3666)

* The ``classmethod`` decorator no longer rejects unknown input from other decorators.
Patch by David Woods. (Github issue 3660)

* Fused types could leak into unrelated usages.
Patch by David Woods. (Github issue 3642)

* Now uses ``Py_SET_SIZE()`` and ``Py_SET_REFCNT()`` in Py3.9+ to avoid low-level
write access to these object fields.
Patch by Victor Stinner. (Github issue 3639)

* The built-in ``abs()`` function could lead to undefined behaviour when used on
the negative-most value of a signed C integer type.
Patch by Serge Guelton. (Github issue 1911)

* Usages of ``sizeof()`` and ``typeid()`` on uninitialised variables no longer
produce a warning.
Patch by Celelibi. (Github issue 3575)

* The C++ ``typeid()`` function was allowed in C mode.
Patch by Celelibi. (Github issue 3637)

* The error position reported for errors found in f-strings was misleading.
(Github issue 3674)

* The new ``c_api_binop_methods`` directive was added for forward compatibility, but can
only be set to True (the current default value). It can be disabled in Cython 3.0.

0.29.19

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

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

* A typo in Windows specific code in 0.29.18 was fixed that broke "libc.math".
(Github issue 3622)

* A platform specific test failure in 0.29.18 was fixed.
Patch by smutch. (Github issue 3620)

0.29.18

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

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

* Exception position reporting could run into race conditions on threaded code.
It now uses function-local variables again.

* Error handling early in the module init code could lead to a crash.

* Error handling in ``cython.array`` creation was improved to avoid calling
C-API functions with an error held.

* A memory corruption was fixed when garbage collection was triggered during calls
to ``PyType_Ready()`` of extension type subclasses.
(Github issue 3603)

* Memory view slicing generated unused error handling code which could negatively
impact the C compiler optimisations for parallel OpenMP code etc. Also, it is
now helped by static branch hints.
(Github issue 2987)

* Cython's built-in OpenMP functions were not translated inside of call arguments.
Original patch by Celelibi and David Woods. (Github issue 3594)

* Complex buffer item types of structs of arrays could fail to validate.
Patch by Leo and smutch. (Github issue 1407)

* Decorators were not allowed on nested `async def` functions.
(Github issue 1462)

* C-tuples could use invalid C struct casting.
Patch by MegaIng. (Github issue 3038)

* Optimised ``%d`` string formatting into f-strings failed on float values.
(Github issue 3092)

* Optimised aligned string formatting (``%05s``, ``%-5s``) failed.
(Github issue 3476)

* When importing the old Cython ``build_ext`` integration with distutils, the
additional command line arguments leaked into the regular command.
Patch by Kamekameha. (Github issue 2209)

* When using the ``CYTHON_NO_PYINIT_EXPORT`` option in C++, the module init function
was not declared as ``extern "C"``.
(Github issue 3414)

* Three missing timedelta access macros were added in ``cpython.datetime``.

* The signature of the NumPy C-API function ``PyArray_SearchSorted()`` was fixed.
Patch by Brock Mendel. (Github issue 3606)

Page 1 of 13

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.