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 Pythonarray.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
orPickleError
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 (likeimport *
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
orPy_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 toTrue
.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 beold_build_ext
to give projects time to migrate. The new build_ext is available asnew_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
providese
andpi
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
andnumpy.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 inCython.Distutils.old_build_ext
and is now deprecated.0๏ธโฃ
directive_defaults
is no longer available inCython.Compiler.Options
, useget_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 simpledef
method instead of anasync 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()
andlong
are now also available in compile timeDEF
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 inlibc/math.pxd
andnumpy/math.pxd
now reflect the actual tristateint
return value instead of usingbint
.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
andGenerator
ABCs in thebackports_abc
module if it can be imported. This fixes ticket 870.