Skip to content

ReleaseNotes 0.19.1

HenrySchreiner edited this page · 1 revision
Clone this wiki locally

Cython 0.19.1

The bug tracker has a list of the major improvements.


  • Completely empty C-API structs for extension type slots (protocols like number/mapping/sequence) are no longer generated into the C code.
  • Docstrings that directly follow a public/readonly attribute declaration in a cdef class will be used as docstring of the auto-generated property. This fixes ticket 206.
  • The automatic signature documentation tries to preserve more semantics of default arguments and argument types. Specifically, bint arguments now appear as type bool.
  • A warning is emitted when negative literal indices are found inside of a code section that disables ``wraparound`` handling. This helps with fixing invalid code that might fail in the face of future compiler optimizations.
  • Constant folding for boolean expressions (and/or) was improved.
  • Added a build_dir option to cythonize() which allows one to place the generated .c files outside the source tree.

General Improvements and Bug Fixes

  • isinstance(X, type) failed to get optimized into a call to PyType_Check(), as done for other builtin types.
  • A spurious from datetime cimport * was removed from the cpython declaration package. This means that the datetime declarations (added in 0.19) are no longer available directly from the cpython namespace, but only from cpython.datetime. This is the correct way of doing it because the declarations refer to a standard library module, not the core CPython C-API itself.
  • The C code for extension types is now generated in topological order instead of source code order to avoid C compiler errors about missing declarations for subtypes that are defined before their parent.
  • The memoryview type name no longer shows up in the module dict of modules that use memory views. This fixes trac ticket 775.
  • Regression in 0.19 that rejected valid C expressions from being used in C array size declarations.
  • In C++ mode, the C99-only keyword restrict could accidentally be seen by the GNU C++ compiler. It is now specially handled for both GCC and MSVC.
  • Testing large (> int) C integer values for their truth value could fail due to integer wrap-around.


Something went wrong with that request. Please try again.