summaryrefslogtreecommitdiff
path: root/devel/py-cython/log
diff options
context:
space:
mode:
Diffstat (limited to 'devel/py-cython/log')
-rw-r--r--devel/py-cython/log141
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.