Cython-plus

Latest version: v0.3.0

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

Scan your dependencies

Page 8 of 13

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.

0.23.3

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

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

* Invalid C code for some builtin methods. This fixes ticket 856 again.

* Incorrect C code in helper functions for PyLong conversion and string
decoding. This fixes ticket 863, ticket 864 and ticket 865.
Original patch by Nikolaus Rath.

* Large folded or inserted integer constants could use too small C
integer types and thus trigger a value wrap-around.

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

* The coroutine and generator types of Cython now also register directly
with the ``Coroutine`` and ``Generator`` ABCs in the ``backports_abc``
module if it can be imported. This fixes ticket 870.

0.23.2

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

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

* Compiler crash when analysing some optimised expressions.

* Coverage plugin was adapted to coverage.py 4.0 beta 2.

* C++ destructor calls could fail when '&' operator is overwritten.

* Incorrect C literal generation for large integers in compile-time
evaluated DEF expressions and constant folded expressions.

* Byte string constants could end up as Unicode strings when originating
from compile-time evaluated DEF expressions.

* Invalid C code when caching known builtin methods.
This fixes ticket 860.

* ``ino_t`` in ``posix.types`` was not declared as ``unsigned``.

* Declarations in ``libcpp/memory.pxd`` were missing ``operator!()``.
Patch by Leo Razoumov.

* Static cdef methods can now be declared in .pxd files.

0.23.1

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

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

* Invalid C code for generators. This fixes ticket 858.

* Invalid C code for some builtin methods. This fixes ticket 856.

* Invalid C code for unused local buffer variables.
This fixes ticket 154.

* Test failures on 32bit systems. This fixes ticket 857.

* Code that uses ``from xyz import *`` and global C struct/union/array
variables could fail to compile due to missing helper functions.
This fixes ticket 851.

* Misnamed PEP 492 coroutine property ``cr_yieldfrom`` renamed to
``cr_await`` to match CPython.

* Missing deallocation code for C++ object attributes in certain
extension class hierarchies.

* Crash when async coroutine was not awaited.

* Compiler crash on ``yield`` in signature annotations and default
argument values. Both are forbidden now.

* Compiler crash on certain constructs in ``finally`` clauses.

* Cython failed to build when CPython's pgen is installed.

0.23

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

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

* `PEP 492 <https://www.python.org/dev/peps/pep-0492/>`_
(async/await) was implemented.

* `PEP 448 <https://www.python.org/dev/peps/pep-0448/>`_
(Additional Unpacking Generalizations) was implemented.

* Support for coverage.py 4.0+ can be enabled by adding the plugin
"Cython.Coverage" to the ".coveragerc" config file.

* Annotated HTML source pages can integrate (XML) coverage reports.

* Tracing is supported in ``nogil`` functions/sections and module init code.

* When generators are used in a Cython module and the module imports the
modules "inspect" and/or "asyncio", Cython enables interoperability by
patching these modules during the import to recognise Cython's internal
generator and coroutine types. This can be disabled by C compiling the
module with "-D CYTHON_PATCH_ASYNCIO=0" or "-D CYTHON_PATCH_INSPECT=0"

* When generators or coroutines are used in a Cython module, their types
are registered with the ``Generator`` and ``Coroutine`` ABCs in the
``collections`` or ``collections.abc`` stdlib module at import time to
enable interoperability with code that needs to detect and process Python
generators/coroutines. These ABCs were added in CPython 3.5 and are
available for older Python versions through the ``backports_abc`` module
on PyPI. See https://bugs.python.org/issue24018

* Adding/subtracting/dividing/modulus and equality comparisons with
constant Python floats and small integers are faster.

* Binary and/or/xor/rshift operations with small constant Python integers
are faster.

* When called on generator expressions, the builtins ``all()``, ``any()``,
``dict()``, ``list()``, ``set()``, ``sorted()`` and ``unicode.join()``
avoid the generator iteration overhead by inlining a part of their
functionality into the for-loop.

* Keyword argument dicts are no longer copied on function entry when they
are not being used or only passed through to other function calls (e.g.
in wrapper functions).

* The ``PyTypeObject`` declaration in ``cpython.object`` was extended.

* The builtin ``type`` type is now declared as PyTypeObject in source,
allowing for extern functions taking type parameters to have the correct
C signatures. Note that this might break code that uses ``type`` just
for passing around Python types in typed variables. Removing the type
declaration provides a backwards compatible fix.

* ``wraparound()`` and ``boundscheck()`` are available as no-ops in pure
Python mode.

* Const iterators were added to the provided C++ STL declarations.

* Smart pointers were added to the provided C++ STL declarations.
Patch by Daniel Filonik.

* ``NULL`` is allowed as default argument when embedding signatures.
This fixes ticket 843.

* When compiling with ``--embed``, the internal module name is changed to
``__main__`` to allow arbitrary program names, including those that would
be invalid for modules. Note that this prevents reuse of the generated
C code as an importable module.

* External C++ classes that overload the assignment operator can be used.
Patch by Ian Henriksen.

* Support operator bool() for C++ classes so they can be used in if statements.

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

* Calling "yield from" from Python on a Cython generator that returned a
value triggered a crash in CPython. This is now being worked around.
See https://bugs.python.org/issue23996

* Language level 3 did not enable true division (a.k.a. float division)
for integer operands.

* Functions with fused argument types that included a generic 'object'
fallback could end up using that fallback also for other explicitly
listed object types.

* Relative cimports could accidentally fall back to trying an absolute
cimport on failure.

* The result of calling a C struct constructor no longer requires an
intermediate assignment when coercing to a Python dict.

* C++ exception declarations with mapping functions could fail to compile
when pre-declared in .pxd files.

* ``cpdef void`` methods are now permitted.

* ``abs(cint)`` could fail to compile in MSVC and used sub-optimal code
in C++. Patch by David Vierra, original patch by Michael Enßlin.

* Buffer index calculations using index variables with small C integer
types could overflow for large buffer sizes.
Original patch by David Vierra.

* C unions use a saner way to coerce from and to Python dicts.

* When compiling a module ``foo.pyx``, the directories in ``sys.path``
are no longer searched when looking for ``foo.pxd``.
Patch by Jeroen Demeyer.

* Memory leaks in the embedding main function were fixed.
Original patch by Michael Enßlin.

* Some complex Python expressions could fail to compile inside of finally
clauses.

* Unprefixed 'str' literals were not supported as C varargs arguments.

* Fixed type errors in conversion enum types to/from Python. Note that
this imposes stricter correctness requirements on enum declarations.


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

* Changed mangling scheme in header files generated by ``cdef api``
declarations.

* Installation under CPython 3.3+ no longer requires a pass of the
2to3 tool. This also makes it possible to run Cython in Python
3.3+ from a source checkout without installing it first.
Patch by Petr Viktorin.

* ``jedi-typer.py`` (in ``Tools/``) was extended and renamed to
``jedityper.py`` (to make it importable) and now works with and
requires Jedi 0.9. Patch by Tzer-jen Wei.

Page 8 of 13

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.