diff options
Diffstat (limited to 'devel/py-cython/log')
-rw-r--r-- | devel/py-cython/log | 141 |
1 files changed, 141 insertions, 0 deletions
diff --git a/devel/py-cython/log b/devel/py-cython/log new file mode 100644 index 00000000000..f011e189660 --- /dev/null +++ b/devel/py-cython/log @@ -0,0 +1,141 @@ +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. |