[Cython] Cython 0.21 released

Yaroslav Halchenko lists at onerussian.com
Wed Oct 8 16:23:07 CEST 2014


congrats!

while preparing build for Debian I ran into good old (never got feedback
to my analysis done in Jul/Aug, thread "Cython bugfix release")

======================================================================
ERROR: test_all (Cython.Debugger.Tests.TestLibCython.TestAll)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/yoh/deb/gits/build-area/cython-0.21/Cython/Debugger/Tests/TestLibCython.py", line 280, in test_all
    sys.stderr.write(errmsg)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 23604-23607: ordinal not in range(128)


and few other failures:

======================================================================
FAIL: test_typing_function_int_loop (Cython.Tests.TestJediTyper.TestJediTyper)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/yoh/deb/gits/build-area/cython-0.21/Cython/Tests/TestJediTyper.py", line 85, in test_typing_function_int_loop
    self.assertIn(('func', (1, 0)), types)
AssertionError: ('func', (1, 0)) not found in {}

======================================================================
FAIL: test_typing_function_int_loop (Cython.Tests.TestJediTyper.TestTypeInjection)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/yoh/deb/gits/build-area/cython-0.21/Cython/Tests/TestJediTyper.py", line 85, in test_typing_function_int_loop
    self.assertIn(('func', (1, 0)), types)
AssertionError: ('func', (1, 0)) not found in {}

----------------------------------------------------------------------
Ran 8775 tests in 2249.908s

FAILED (failures=2, errors=1)

are they known/fixed?


On Wed, 10 Sep 2014, Stefan Behnel wrote:

> Hi all,

> on behalf of the Cython dev team, I'm pleased to announce the release of
> Cython 0.21, a major feature release. Thanks everyone who contributed code,
> documentation improvements, test feedback, bug reports and/or otherwise
> helpful insights for this release.

> I copied the complete changelog of this release below, but here are the
> major highlights, in addition to the many bug fixes and general
> improvements in this release.

> * Legacy code and support for old CPython versions was removed, baselines
> are now Python 2.6 and 3.2.

> * cdef functions finally support inner Python functions with closures.

> * C enums can now be declared as "cpdef" to publish them to Python space.

> * Python method calls, boolean "and/or" operators and cascaded assignments
> were optimised to streamline calls and type coercions.

> * The annotated HTML code output is syntax highlighted and beautified.

> Have fun,

> Stefan


> Downloads:
> https://pypi.python.org/pypi/Cython/0.21

> http://cython.org/release/Cython-0.21.tar.gz

> http://cython.org/release/Cython-0.21.zip

> Signatures:
> http://cython.org/release/Cython-0.21.tar.gz.asc
> http://cython.org/release/Cython-0.21.zip.asc

> Changelog:
> https://github.com/cython/cython/blob/c67e895414aac90dfe9f789530143cff5b2ec7ad/CHANGES.rst

> Documentation:
> http://docs.cython.org/


> 0.21 (2014-09-10)
> =================

> Features added
> --------------

> * C (cdef) functions allow inner Python functions.

> * Enums can now be declared as cpdef to export their values to
>   the module's Python namespace.  Cpdef enums in pxd files export
>   their values to their own module, iff it exists.

> * Allow @staticmethod decorator to declare static cdef methods.
>   This is especially useful for declaring "constructors" for
>   cdef classes that can take non-Python arguments.

> * Taking a ``char*`` from a temporary Python string object is safer
>   in more cases and can be done inside of non-trivial expressions,
>   including arguments of a function call.  A compile time error
>   is raised only when such a pointer is assigned to a variable and
>   would thus exceed the lifetime of the string itself.

> * Generators have new properties ``__name__`` and ``__qualname__``
>   that provide the plain/qualified name of the generator function
>   (following CPython 3.5).  See http://bugs.python.org/issue21205

> * The ``inline`` function modifier is available as a decorator
>   ``@cython.inline`` in pure mode.

> * When cygdb is run in a virtualenv, it enables the same virtualenv
>   inside of the debugger. Patch by Marc Abramowitz.

> * PEP 465: dedicated infix operator for matrix multiplication (A @ B).

> * HTML output of annotated code uses Pygments for code highlighting
>   and generally received a major overhaul by Matthias Bussonier.

> * IPython magic support is now available directly from Cython with
>   the command "%load_ext cython".  Cython code can directly be
>   executed in a cell when marked with "%%cython".  Code analysis
>   is available with "%%cython -a".  Patch by Martín Gaitán.

> * Simple support for declaring Python object types in Python signature
>   annotations.  Currently requires setting the compiler directive
>   ``annotation_typing=True``.

> * New directive ``use_switch`` (defaults to True) to optionally disable
>   the optimization of chained if statement to C switch statements.

> * Defines dynamic_cast et al. in ``libcpp.cast`` and C++ heap data
>   structure operations in ``libcpp.algorithm``.

> * Shipped header declarations in ``posix.*`` were extended to cover
>   more of the POSIX API.  Patches by Lars Buitinck and Mark Peek.

> Optimizations
> -------------

> * Simple calls to C implemented Python functions/methods are faster.
>   This also speeds up many operations on builtins that Cython cannot
>   otherwise optimise.

> * The "and"/"or" operators try to avoid unnecessary coercions of their
>   arguments.  They now evaluate the truth value of each argument
>   independently and only coerce the final result of the whole expression
>   to the target type (e.g. the type on the left side of an assignment).
>   This also avoids reference counting overhead for Python values during
>   evaluation and generally improves the code flow in the generated C code.

> * The Python expression "2 ** N" is optimised into bit shifting.
>   See http://bugs.python.org/issue21420

> * Cascaded assignments (a = b = ...) try to minimise the number of
>   type coercions.

> * Calls to ``slice()`` are translated to a straight C-API call.

> Bugs fixed
> ----------

> * Crash when assigning memory views from ternary conditional expressions.

> * Nested C++ templates could lead to unseparated ">>" characters being
>   generated into the C++ declarations, which older C++ compilers could
>   not parse.

> * Sending SIGINT (Ctrl-C) during parallel cythonize() builds could
>   hang the child processes.

> * No longer ignore local setup.cfg files for distutils in pyximport.
>   Patch by Martin Teichmann.

> * Taking a ``char*`` from an indexed Python string generated unsafe
>   reference counting code.

> * Set literals now create all of their items before trying to add them
>   to the set, following the behaviour in CPython.  This makes a
>   difference in the rare case that the item creation has side effects
>   and some items are not hashable (or if hashing them has side effects,
>   too).

> * Cython no longer generates the cross product of C functions for code
>   that uses memory views of fused types in function signatures (e.g.
>   ``cdef func(floating[:] a, floating[:] b)``).  This is considered the
>   expected behaviour by most users and was previously inconsistent with
>   other structured types like C arrays.  Code that really wants all type
>   combinations can create the same fused memoryview type under different
>   names and use those in the signature to make it clear which types are
>   independent.

> * Names that were unknown at compile time were looked up as builtins at
>   runtime but not as global module names.  Trying both lookups helps with
>   globals() manipulation.

> * Fixed stl container conversion for typedef element types.

> * ``obj.pop(x)`` truncated large C integer values of x to ``Py_ssize_t``.

> * ``__init__.pyc`` is recognised as marking a package directory
>   (in addition to .py, .pyx and .pxd).

> * Syntax highlighting in ``cython-mode.el`` for Emacs no longer
>   incorrectly highlights keywords found as part of longer names.

> * Correctly handle ``from cython.submodule cimport name``.

> * Fix infinite recursion when using super with cpdef methods.

> * No-args ``dir()`` was not guaranteed to return a sorted list.

> Other changes
> -------------

> * The header line in the generated C files no longer contains the
>   timestamp but only the Cython version that wrote it.  This was
>   changed to make builds more reproducible.

> * Removed support for CPython 2.4, 2.5 and 3.1.

> * The licensing implications on the generated code were clarified
>   to avoid legal constraints for users.
> _______________________________________________
> cython-devel mailing list
> cython-devel at python.org
> https://mail.python.org/mailman/listinfo/cython-devel

-- 
Yaroslav O. Halchenko, Ph.D.
http://neuro.debian.net http://www.pymvpa.org http://www.fail2ban.org
Research Scientist,            Psychological and Brain Sciences Dept.
Dartmouth College, 419 Moore Hall, Hinman Box 6207, Hanover, NH 03755
Phone: +1 (603) 646-9834                       Fax: +1 (603) 646-1419
WWW:   http://www.linkedin.com/in/yarik        


More information about the cython-devel mailing list