Clone this wiki locally
- Release date: September 1, 2012
- Downloads: * http://cython.org/release/Cython-0.17.tar.gz MD5 * http://cython.org/release/Cython-0.17.zip MD5
- Git: https://github.com/cython/cython/commit/284a24237a6c05f6b0ddf774a529a3d3829bd1a0
The bug tracker has a list of the major improvements.
- Alpha quality support for compiling and running Cython generated extension modules in
PyPy(through cpyext). Note that this requires at least``PyPy`` 1.9 and in many cases also adaptations in user code, especially to avoid borrowed references when no owned reference is being held directly in C space (a reference in a Python list or dict is not enough, for example). See the documentation on porting Cython code to PyPy.
- "yield from" is supported (PEP 380) and a couple of minor problems with generators were fixed.
- C++ STL container classes automatically coerce from and to the equivalent Python container types on typed assignments and casts. Usage examples are here. Note that the data in the containers is copied during this conversion.
- C++ iterators can now be iterated over using
for x in cpp_containerwhenever
end()methods returning objects satisfying the iterator pattern (that is, it can be incremented, dereferenced, and compared (for non-equality)).
- cdef classes can now have C++ class members (provided a zero-argument constructor exists)
- A new
cpython.arraystandard cimport file allows to efficiently talk to the stdlib
array.arraydata type in Python 2. Since CPython does not export an official C-API for this module, it receives special casing by the compiler in order to avoid setup overhead on user side. In Python 3, both buffers and memory views on the array type already worked out of the box with earlier versions of Cython due to the native support for the buffer interface in the Py3 array module.
- Fast dict iteration is now enabled optimistically also for untyped variables when the common iteration methods are used.
- The unicode string processing code was adapted for the upcoming CPython 3.3 (PEP 393, new Unicode buffer layout).
- Buffer arguments and memory view arguments in Python functions can be declared "not None" to raise a
TypeErroron None input.
- c(p)def functions in pure mode can specify their return type with "@cython.returns()".
- Automatic dispatch for fused functions with memoryview arguments
- Support newaxis indexing for memoryviews
- Support decorators for fused functions
General Improvements and Bug Fixes
- Old-style Py2 imports did not work reliably in Python 3.x and were broken in Python 3.3. Regardless of this fix, it's generally best to be explicit about relative and global imports in Cython code because old-style imports have a higher overhead. To this end, "
from __future__ import absolute_import" is supported in Python/Cython 2.x code now (previous versions of Cython already used it when compiling Python 3 code).
- Stricter constraints on the
finalmodifiers. If your code does not compile due to this change, chances are these modifiers were previously being ignored by the compiler and can be removed without any performance regression.
- Exceptions are always instantiated while raising them (as in Python), instead of risking to instantiate them in potentially unsafe situations when they need to be handled or otherwise processed.
locals()properly ignores names that do not have Python compatible types (including automatically inferred types).
- Some garbage collection issues of memory views were fixed.
- User declared
char*types are now recognised as such and auto-coerce to and from Python bytes strings.
libc.stringprovides a convenience declaration for
const ucharin addition to
- Modules generated by
@cython.inline()are written into the directory pointed to by the environment variable
- numpy.pxd compiles in Python 3 mode.
next()compile to more efficient C code.
list.append()is faster on average.
- Several C compiler warnings were fixed.
- Several bugs related to memoryviews and fused types were fixed.
- Several bug-fixes and improvements related to
cythonize(), including ccache-style caching.
Many thanks to all people who contributed to this release:
- Stefan Behnel
- Robert Bradshaw
- Matthew Brett
- Steven Byrnes
- Eric Chlebek
- Andreas van Cranenburgh
- Mark Florisson
- Bradley M. Froehle
- Yaroslav O. Halchenko
- Vitja Makarov
- Peinthor Rene
- Benjamin RK
- Dag Sverre Seljebotn
- Dimitri Tcaciuc
- Gregor Thalhammer
- Peter Todd
- Mathieu Virbel
Cython 0.17 beta 4 - final release candidate
- Release date: August 30, 2012
- Downloads: * http://cython.org/release/Cython-0.17b4.tar.gz MD5 * http://cython.org/release/Cython-0.17b4.zip MD5
- Git: https://github.com/cython/cython/commit/b52445085ae108411936ab8f820e2a792b1eac3a
Cython 0.17 beta 3 - release candidate
- Release date: August 23, 2012
- Downloads: * http://cython.org/release/Cython-0.17b3.tar.gz MD5 * http://cython.org/release/Cython-0.17b3.zip MD5
- Git: https://github.com/cython/cython/commit/5b0e8f8b96e353ac6d12d54f86babee9ff6f1bf8
Cython 0.17 beta 2
- Release date: August 8, 2012
- Downloads: * http://cython.org/release/Cython-0.17b2.tar.gz MD5 * http://cython.org/release/Cython-0.17b2.zip MD5
- Git: https://github.com/cython/cython/commit/77f167a05db6108c3e2982e4e376719621140668
Cython 0.17 beta 1
- Release date: July 23, 2012
- Downloads: * http://cython.org/release/Cython-0.17.beta1.tar.gz MD5
- Git: https://github.com/cython/cython/commit/9fbfeebf6c8ea939df3b96299e698f556d0db058