#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.

Reply via email to