Cython v0.19.1 Release Notes

Release Date: 2013-05-11 // almost 11 years ago
  • ๐Ÿ”‹ Features added

    • 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 optimisations.

    • 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.

    ๐Ÿ› Bugs fixed

    • isinstance(X, type) failed to get optimised 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.

    Other changes