Commit 2a70b986 authored by Robert Bradshaw's avatar Robert Bradshaw

Merge branch 'release'

parents 77970aa5 85833152
......@@ -9,6 +9,16 @@ latest
Features added
--------------
Bugs fixed
----------
0.26 (2017-07-xx)
=================
Features added
--------------
* Pythran can be used as a backend for evaluating NumPy array expressions.
Patch by Adrien Guinet (Github issue #1607).
......@@ -63,6 +73,8 @@ Bugs fixed
* Decorators of cdef class methods could be executed twice.
Patch by jdemeyer (Github issue #1724).
* Several warnings in the generated coder are now suppressed.
Other changes
-------------
......@@ -74,6 +86,11 @@ Other changes
* 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.
* cdef/cpdef methods must match their declarations. See Github Issue #1732.
This is now a warning and will be an error in future releases.
0.25.2 (2016-12-08)
===================
......
......@@ -218,8 +218,7 @@ class ModuleNode(Nodes.Node, Nodes.BlockNode):
def generate_public_declaration(self, entry, h_code, i_code):
h_code.putln("%s %s;" % (
Naming.extern_c_macro,
entry.type.declaration_code(
entry.cname, dll_linkage="DL_IMPORT")))
entry.type.declaration_code(entry.cname)))
if i_code:
i_code.putln("cdef extern %s" % (
entry.type.declaration_code(entry.cname, pyrex=1)))
......@@ -2872,7 +2871,7 @@ def generate_cfunction_declaration(entry, env, code, definition):
dll_linkage = "DL_IMPORT"
elif entry.visibility == 'public':
storage_class = Naming.extern_c_macro
dll_linkage = "DL_EXPORT"
dll_linkage = None
elif entry.visibility == 'private':
storage_class = "static"
dll_linkage = None
......
# cython.* namespace for pure mode.
from __future__ import absolute_import
__version__ = "0.26b2"
__version__ = "0.26rc0"
try:
from __builtin__ import basestring
......
......@@ -954,6 +954,10 @@ static void __Pyx_FastGilFuncInit(void);
// To make optimal use of this thread local, we attempt to share it between
// modules.
#define __Pyx_FastGIL_ABI_module "_cython_" CYTHON_ABI
#define __Pyx_FastGIL_PyCapsuleName "FastGilFuncs"
#define __Pyx_FastGIL_PyCapsule \
__Pyx_FastGIL_ABI_module "." __Pyx_FastGIL_PyCapsuleName
#if PY_VERSION_HEX >= 0x03050000
#define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet()
......@@ -1034,12 +1038,18 @@ static void __Pyx_FastGilFuncInit0(void) {
}
}
if (__Pyx_FastGil_autoTLSkey != -1) {
PyObject* capsule = NULL;
PyObject* abi_module = NULL;
__Pyx_PyGILState_Ensure = __Pyx_FastGil_PyGILState_Ensure;
__Pyx_PyGILState_Release = __Pyx_FastGil_PyGILState_Release;
__Pyx_FastGIL_Remember = __Pyx_FastGIL_Remember0;
__Pyx_FastGIL_Forget = __Pyx_FastGIL_Forget0;
// Already fetched earlier, now we're just posting.
__Pyx_FetchCommonPointer(&__Pyx_FastGilFuncs, "FastGilFuncs");
capsule = PyCapsule_New(&__Pyx_FastGilFuncs, __Pyx_FastGIL_PyCapsule, NULL);
abi_module = PyImport_AddModule(__Pyx_FastGIL_ABI_module);
if (capsule && abi_module) {
PyObject_SetAttrString(abi_module, __Pyx_FastGIL_PyCapsuleName, capsule);
}
Py_XDECREF(capsule);
}
}
......@@ -1053,7 +1063,7 @@ static void __Pyx_FastGilFuncInit0(void) {
static void __Pyx_FastGilFuncInit(void) {
#if PY_VERSION_HEX >= 0x02070000
struct __Pyx_FastGilVtab* shared = (struct __Pyx_FastGilVtab*)PyCapsule_Import("_cython_" CYTHON_ABI ".FastGilFuncs", 1);
struct __Pyx_FastGilVtab* shared = (struct __Pyx_FastGilVtab*)PyCapsule_Import(__Pyx_FastGIL_PyCapsule, 1);
#else
struct __Pyx_FastGilVtab* shared = NULL;
#endif
......
module_api
complex_numbers_c89_T398_long_double
complex_numbers_T305_long_double
int_float_builtins_as_casts_T400_long_double
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