All Versions
89
Latest Version
Avg Release Cycle
47 days
Latest Release
1603 days ago

Changelog History
Page 6

  • v0.26.1 Changes

    August 29, 2017

    ๐Ÿ”‹ Features added

    ๐Ÿ› Bugs fixed

    • cython.view.array was missing .__len__().

    • ๐Ÿš€ Extension types with a .pxd override for their __releasebuffer__ slot (e.g. as provided by Cython for the Python array.array type) could leak a reference to the buffer owner on release, thus not freeing the memory. (Github issue :issue:1638)

    • Auto-decoding failed in 0.26 for strings inside of C++ containers. (Github issue :issue:1790)

    • Compile error when inheriting from C++ container types. (Github issue :issue:1788)

    • Invalid C code in generators (declaration after code). (Github issue :issue:1801)

    • Arithmetic operations on const integer variables could generate invalid code. (Github issue :issue:1798)

    • Local variables with names of special Python methods failed to compile inside of closures. (Github issue :issue:1797)

    • Problem with indirect Emacs buffers in cython-mode. Patch by Martin Albrecht (Github issue :issue:1743).

    • Extension types named result or PickleError generated invalid unpickling code. Patch by Jason Madden (Github issue :issue:1786).

    • Bazel integration failed to compile .py files. Patch by Guro Bokum (Github issue :issue:1784).

    • Some include directories and dependencies were referenced with their absolute paths in the generated files despite lying within the project directory.

    • Failure to compile in Py3.7 due to a modified signature of _PyCFunctionFast()

  • v0.26 Changes

    July 19, 2017

    ๐Ÿ”‹ Features added

    • Pythran can be used as a backend for evaluating NumPy array expressions. Patch by Adrien Guinet (Github issue :issue:1607).

    • 0๏ธโƒฃ cdef classes now support pickling by default when possible. This can be disabled with the auto_pickle directive.

    • Speed up comparisons of strings if their hash value is available. Patch by Claudio Freire (Github issue :issue:1571).

    • ๐Ÿ‘Œ Support pyximport from zip files. Patch by Sergei Lebedev (Github issue :issue:1485).

    • IPython magic now respects the __all__ variable and ignores names with leading-underscore (like import * does). Patch by Syrtis Major (Github issue :issue:1625).

    • abs() is optimised for C complex numbers. Patch by David Woods (Github issue :issue:1648).

    • The display of C lines in Cython tracebacks can now be enabled at runtime via import cython_runtime; cython_runtime.cline_in_traceback=True. The default has been changed to False.

    • The overhead of calling fused types generic functions was reduced.

    • "cdef extern" include files are now also searched relative to the current file. Patch by Jeroen Demeyer (Github issue :issue:1654).

    • Optional optimization for re-acquiring the GIL, controlled by the fast_gil directive.

    ๐Ÿ› Bugs fixed

    • Item lookup/assignment with a unicode character as index that is typed (explicitly or implicitly) as Py_UCS4 or Py_UNICODE used the integer value instead of the Unicode string value. Code that relied on the previous behaviour now triggers a warning that can be disabled by applying an explicit cast. (Github issue :issue:1602)

    • f-string processing was adapted to changes in PEP 498 and CPython 3.6.

    • Invalid C code when decoding from UTF-16(LE/BE) byte strings. (Github issue :issue:1696)

    • Unicode escapes in 'ur' raw-unicode strings were not resolved in Py2 code. Original patch by Aaron Gallagher (Github issue :issue:1594).

    • File paths of code objects are now relative. Original patch by Jelmer Vernooij (Github issue :issue:1565).

    • Decorators of cdef class methods could be executed twice. Patch by Jeroen Demeyer (Github issue :issue:1724).

    • Dict iteration using the Py2 iter* methods failed in PyPy3. Patch by Armin Rigo (Github issue :issue:1631).

    • โš  Several warnings in the generated code are now suppressed.

    Other changes

    • 0๏ธโƒฃ The unraisable_tracebacks option now defaults to True.

    • Coercion of C++ containers to Python is no longer automatic on attribute access (Github issue :issue:1521).

    • Access to Python attributes of cimported modules without the corresponding import is now a compile-time (rather than runtime) error.

    • Do not use special dll linkage for "cdef public" functions. Patch by Jeroen Demeyer (Github issue :issue:1687).

    • ๐Ÿ‘€ cdef/cpdef methods must match their declarations. See Github issue :issue:1732. This is now a warning and will be an error in future releases.

  • v0.25.2 Changes

    December 08, 2016

    ๐Ÿ› Bugs fixed

    • ๐Ÿ›  Fixes several issues with C++ template deduction.

    • ๐Ÿ›  Fixes a issue with bound method type inference (Github issue :issue:551).

    • ๐Ÿ›  Fixes a bug with cascaded tuple assignment (Github issue :issue:1523).

    • ๐Ÿ›  Fixed or silenced many Clang warnings.

    • ๐Ÿ›  Fixes bug with powers of pure real complex numbers (Github issue :issue:1538).

  • v0.25.1 Changes

    October 26, 2016

    ๐Ÿ› Bugs fixed

    • ๐Ÿ›  Fixes a bug with isinstance(o, Exception) (Github issue :issue:1496).

    • ๐Ÿ›  Fixes bug with cython.view.array missing utility code in some cases (Github issue :issue:1502).

    Other changes

    • ๐Ÿ— The distutils extension Cython.Distutils.build_ext has been reverted, temporarily, to be old_build_ext to give projects time to migrate. The new build_ext is available as new_build_ext.
  • v0.25 Changes

    October 25, 2016

    ๐Ÿ”‹ Features added

    • def/cpdef methods of cdef classes benefit from Cython's internal function implementation, which enables introspection and line profiling for them. Implementation sponsored by Turbostream (www.turbostream-cfd.com).

    • Calls to Python functions are faster, following the recent "FastCall" optimisations that Victor Stinner implemented for CPython 3.6. See https://bugs.python.org/issue27128 and related issues.

    • ๐Ÿ‘ The new METH_FASTCALL calling convention for PyCFunctions is supported in CPython 3.6. See https://bugs.python.org/issue27810

    • ๐ŸŽ‰ Initial support for using Cython modules in Pyston. Patch by Boxiang Sun.

    • Dynamic Python attributes are allowed on cdef classes if an attribute cdef dict __dict__ is declared in the class. Patch by empyrical.

    • Cython implemented C++ classes can make direct calls to base class methods. Patch by empyrical.

    • โšก๏ธ C++ classes can now have typedef members. STL containers updated with value_type.

    • ๐Ÿ†• New directive cython.no_gc to fully disable GC for a cdef class. Patch by Claudio Freire.

    • Buffer variables are no longer excluded from locals(). Patch by David Woods.

    • ๐Ÿ— Building f-strings is faster, especially when formatting C integers.

    • for-loop iteration over "std::string".

    • libc/math.pxd provides e and pi as alias constants to simplify usage as a drop-in replacement for Python's math module.

    • Speed up cython.inline().

    • Binary lshift operations with small constant Python integers are faster.

    • Some integer operations on Python long objects are faster in Python 2.7.

    • ๐Ÿ‘Œ Support for the C++ typeid operator.

    • ๐Ÿ‘Œ Support for bazel using a the pyx_library rule in //Tools:rules.bzl.

    ๐Ÿ›  Significant Bugs fixed

    • Division of complex numbers avoids overflow by using Smith's method.

    • Some function signatures in libc.math and numpy.pxd were incorrect. Patch by Michael Seifert.

    Other changes

    • 0๏ธโƒฃ The "%%cython" IPython/jupyter magic now defaults to the language level of the current jupyter kernel. The language level can be set explicitly with "%%cython -2" or "%%cython -3".

    • โšก๏ธ The distutils extension Cython.Distutils.build_ext has now been updated to use cythonize which properly handles dependencies. The old extension can still be found in Cython.Distutils.old_build_ext and is now deprecated.

    • 0๏ธโƒฃ directive_defaults is no longer available in Cython.Compiler.Options, use get_directive_defaults() instead.

  • v0.24.1 Changes

    July 15, 2016

    ๐Ÿ› Bugs fixed

    • IPython cell magic was lacking a good way to enable Python 3 code semantics. It can now be used as "%%cython -3".

    • Follow a recent change in PEP 492 <https://www.python.org/dev/peps/pep-0492/>_ and CPython 3.5.2 that now requires the __aiter__() method of asynchronous iterators to be a simple def method instead of an async def method.

    • Coroutines and generators were lacking the __module__ special attribute.

    • C++ std::complex values failed to auto-convert from and to Python complex objects.

    • Namespaced C++ types could not be used as memory view types due to lack of name mangling. Patch by Ivan Smirnov.

    • Assignments between identical C++ types that were declared with differently typedefed template types could fail.

    • Rebuilds could fail to evaluate dependency timestamps in C++ mode. Patch by Ian Henriksen.

    • Macros defined in the distutils compiler option do not require values anymore. Patch by Ian Henriksen.

    • ๐Ÿ›  Minor fixes for MSVC, Cygwin and PyPy.

  • v0.24 Changes

    April 04, 2016

    ๐Ÿ”‹ Features added

    • PEP 498 <https://www.python.org/dev/peps/pep-0498/>_: Literal String Formatting (f-strings). Original patch by Jelle Zijlstra.

    • PEP 515 <https://www.python.org/dev/peps/pep-0515/>_: Underscores as visual separators in number literals.

    • ๐Ÿ“œ Parser was adapted to some minor syntax changes in Py3.6, e.g. https://bugs.python.org/issue9232

    • The embedded C code comments that show the original source code can be discarded with the new directive emit_code_comments=False.

    • Cpdef enums are now first-class iterable, callable types in Python.

    • Ctuples can now be declared in pure Python code.

    • Posix declarations for DLL loading and stdio extensions were added. Patch by Lars Buitinck.

    • The Py2-only builtins unicode(), xrange(), reduce() and long are now also available in compile time DEF expressions when compiling with Py3.

    • โœ… Exception type tests have slightly lower overhead. This fixes ticket 868.

    • ๐Ÿ—„ @property syntax fully supported in cdef classes, old syntax deprecated.

    • 0๏ธโƒฃ C++ classes can now be declared with default template parameters.

    ๐Ÿ› Bugs fixed

    • C++ exceptions raised by overloaded C++ operators were not always handled. Patch by Ian Henriksen.

    • C string literals were previously always stored as non-const global variables in the module. They are now stored as global constants when possible, and otherwise as non-const C string literals in the generated code that uses them. This improves compatibility with strict C compiler options and prevents non-const strings literals with the same content from being incorrectly merged.

    • Compile time evaluated str expressions (DEF) now behave in a more useful way by turning into Unicode strings when compiling under Python 3. This allows using them as intermediate values in expressions. Previously, they always evaluated to bytes objects.

    • isinf() declarations in libc/math.pxd and numpy/math.pxd now reflect the actual tristate int return value instead of using bint.

    • Literal assignments to ctuples avoid Python tuple round-trips in some more corner cases.

    • Iteration over dict(...).items() failed to get optimised when dict arguments included keyword arguments.

    • cProfile now correctly profiles cpdef functions and methods.

  • v0.23.5 Changes

    March 26, 2016
    • โš  Compile errors and warnings in integer type conversion code. This fixes ticket 877. Patches by Christian Neukirchen, Nikolaus Rath, Ian Henriksen.

    • Reference leak when *args argument was reassigned in closures.

    • โœ… Truth-testing Unicode strings could waste time and memory in Py3.3+.

    • Return values of async functions could be ignored and replaced by None.

    • Compiler crash in CPython 3.6.

    • ๐Ÿ›  Fix prange() to behave identically to range(). The end condition was miscalculated when the range was not exactly divisible by the step.

    • Optimised all(genexpr)/any(genexpr) calls could warn about unused code. This fixes ticket 876.

  • v0.23.4 Changes

    October 10, 2015

    ๐Ÿ› Bugs fixed

    • Memory leak when calling Python functions in PyPy.

    • Compilation problem with MSVC in C99-ish mode.

    • โš  Warning about unused values in a helper macro.

  • v0.23.3 Changes

    September 29, 2015

    ๐Ÿ› Bugs fixed

    • ๐Ÿ›  Invalid C code for some builtin methods. This fixes ticket 856 again.

    • Incorrect C code in helper functions for PyLong conversion and string decoding. This fixes ticket 863, ticket 864 and ticket 865. Original patch by Nikolaus Rath.

    • Large folded or inserted integer constants could use too small C integer types and thus trigger a value wrap-around.

    Other changes

    • The coroutine and generator types of Cython now also register directly with the Coroutine and Generator ABCs in the backports_abc module if it can be imported. This fixes ticket 870.