#18927: Upgrade Cython to 0.23.1
-------------------------------------+-------------------------------------
Reporter: jdemeyer | Owner:
Type: enhancement | Status: needs_review
Priority: major | Milestone: sage-6.9
Component: packages: | Resolution:
standard | Merged in:
Keywords: | Reviewers: François Bissey
Authors: Jeroen Demeyer | Work issues:
Report Upstream: N/A | Commit:
Branch: | 6608075748469195a6d63dcae5651db6cb8ec9f4
u/vbraun/upgrade_cython_to_0_23 | Stopgaps:
Dependencies: |
-------------------------------------+-------------------------------------
Description changed by vbraun:
Old description:
> '''Upstream''': [http://cython.org/release/Cython-0.23.tar.gz]
>
> ----------------
>
> '''Features added'''
>
> * PEP 492 (async/await) was implemented.
> See https://www.python.org/dev/peps/pep-0492/
>
> * PEP 448 (Additional Unpacking Generalizations) was implemented.
> See https://www.python.org/dev/peps/pep-0448/
>
> * 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.
>
> * ``wraparound()`` and ``boundscheck()`` are available as no-ops in pure
> Python mode.
>
> * Const iterators were added to the provided C++ STL declarations.
>
> * ``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.
>
> '''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.
>
> '''Other changes'''
>
> * Changed mangling scheme in header files generated by ``cdef api``
> declarations.
New description:
'''Upstream''': [http://cython.org/release/Cython-0.23.1.tar.gz]
----------------
'''Features added'''
* PEP 492 (async/await) was implemented.
See https://www.python.org/dev/peps/pep-0492/
* PEP 448 (Additional Unpacking Generalizations) was implemented.
See https://www.python.org/dev/peps/pep-0448/
* 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.
* ``wraparound()`` and ``boundscheck()`` are available as no-ops in pure
Python mode.
* Const iterators were added to the provided C++ STL declarations.
* ``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.
'''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.
'''Other changes'''
* Changed mangling scheme in header files generated by ``cdef api``
declarations.
--
--
Ticket URL: <http://trac.sagemath.org/ticket/18927#comment:20>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica,
and MATLAB
--
You received this message because you are subscribed to the Google Groups
"sage-trac" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/d/optout.