0.21.1 (2014-10-18)

Features added

  • New cythonize option -a to generate the annotated HTML source view.
  • Missing C-API declarations in cpython.unicode were added.
  • Passing language='c++' into cythonize() globally enables C++ mode forall modules that were not passed as Extension objects (i.e. only sourcefiles and file patterns).
  • Py_hash_t is a known type (used in CPython for hash values).
  • PySlice_*() C-API functions are available from the cpython.slicemodule.
  • Allow arrays of C++ classes.

Bugs fixed

  • Reference leak for non-simple Python expressions in boolean and/or expressions.
  • To fix a name collision and to reflect availability on host platforms,standard C declarations [ clock(), time(), struct tm and tm* functions ]were moved from posix/time.pxd to a new libc/time.pxd. Patch by CharlesBlake.
  • Rerunning unmodified modules in IPython’s cython support failed.Patch by Matthias Bussonier.
  • Casting C++ std::string to Python byte strings failed whenauto-decoding was enabled.
  • Fatal exceptions in global module init code could lead to crashesif the already created module was used later on (e.g. through astale reference in sys.modules or elsewhere).
  • cythonize.py script was not installed on MS-Windows.

Other changes

  • Compilation no longer fails hard when unknown compilation options arepassed. Instead, it raises a warning and ignores them (as it did silentlybefore 0.21). This will be changed back to an error in a future release.