Commit 425863ba authored by Stefan Behnel's avatar Stefan Behnel

Merge branch '0.24.x'

Conflicts:
	CHANGES.rst
	docs/src/reference/compilation.rst
parents 272a299f 320f67b5
...@@ -11,15 +11,10 @@ Features added ...@@ -11,15 +11,10 @@ Features added
* Dynamic Python attributes are allowed on cdef classes if an attribute * Dynamic Python attributes are allowed on cdef classes if an attribute
``cdef dict __dict__`` is declared in the class. Patch by empyrical. ``cdef dict __dict__`` is declared in the class. Patch by empyrical.
* IPython cell magic supports "-3" argument as in "%%cython -3".
* for-loop iteration over "std::string". * for-loop iteration over "std::string".
* Cython implemented C++ classes can make direct calls to base class methods. * Cython implemented C++ classes can make direct calls to base class methods.
* Macros defined in the ``distutils`` compiler option do not require values
anymore. Patch by Ian Henriksen.
* New directive ``cython.no_gc`` to fully disable GC for a cdef class. * New directive ``cython.no_gc`` to fully disable GC for a cdef class.
* Buffer variables are no longer excluded from ``locals()``. * Buffer variables are no longer excluded from ``locals()``.
...@@ -31,17 +26,37 @@ Bugs fixed ...@@ -31,17 +26,37 @@ Bugs fixed
* Division of complex numbers avoids overflow by using Smith's method. * Division of complex numbers avoids overflow by using Smith's method.
* Namespaced C++ types could not be used as memory view types due to lack of Other changes
name mangling. Patch by Ivan Smirnov. -------------
* Usage of ``Cython.Distutils.build_ext`` is now discouraged.
0.24.1 (2016-07-15)
===================
* 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-0498/>`_ * Follow a recent change in `PEP 492 <https://www.python.org/dev/peps/pep-0498/>`_
and CPython 3.5.1 that now requires the ``__aiter__()`` method of asynchronous and CPython 3.5.1 that now requires the ``__aiter__()`` method of asynchronous
iterators to be a simple ``def`` method instead of an ``async def`` method. iterators to be a simple ``def`` method instead of an ``async def`` method.
Other changes * Coroutines and generators were lacking the ``__module__`` special attribute.
-------------
* Usage of ``Cython.Distutils.build_ext`` is now discouraged. * Namespaced C++ types could not be used as memory view types due to lack of
name mangling. Patch by Ivan Smirnov.
* Assignments between the identical C++ types that were declared with differently
typedefed template types could fail.
* Rebuilds could fail to evaluate dependency timestamps in C++ mode.
Path 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.
0.24 (2016-04-04) 0.24 (2016-04-04)
......
...@@ -2056,8 +2056,14 @@ class ModuleNode(Nodes.Node, Nodes.BlockNode): ...@@ -2056,8 +2056,14 @@ class ModuleNode(Nodes.Node, Nodes.BlockNode):
old_error_label = code.new_error_label() old_error_label = code.new_error_label()
code.putln("if (0);") # so the first one can be "else if" code.putln("if (0);") # so the first one can be "else if"
msvc_count = 0
for name, entry in sorted(env.entries.items()): for name, entry in sorted(env.entries.items()):
if entry.is_cglobal and entry.used: if entry.is_cglobal and entry.used:
msvc_count += 1
if msvc_count % 100 == 0:
code.putln("#ifdef _MSC_VER")
code.putln("if (0); /* Workaround for MSVC C1061. */")
code.putln("#endif")
code.putln('else if (__Pyx_StrEq(name, "%s")) {' % name) code.putln('else if (__Pyx_StrEq(name, "%s")) {' % name)
if entry.type.is_pyobject: if entry.type.is_pyobject:
if entry.type.is_extension_type or entry.type.is_builtin_type: if entry.type.is_extension_type or entry.type.is_builtin_type:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment