[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