- 24 Jul, 2019 2 commits
-
-
Stefan Behnel authored
Closes GH-2992.
-
Stefan Behnel authored
Closes GH-2992.
-
- 19 Jul, 2019 7 commits
-
-
Stefan Behnel authored
-
Stefan Behnel authored
-
Kirill Smelkov authored
I was going to use posix_madvise(POSIX_MADV_DONTNEED) in my tests to make sure a memory page should be evicted from kernel cache, but found out that this operation is hardcoded to be NOOP on Glibc/Linux systems: https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/posix_madvise.c;h=c89fa64f0749;hb=HEAD#l25 https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=8889e7aa461a On the other hand, as also verified by strace, `madvise(MADV_DONTNEED)` is not a NOOP as it actually goes to kernel by making syscall. Since it is not possible to use posix_madvise for what should be POSIX_MADV_DONTNEED behaviour, let's add all raw madvise behaviour flags as documented on http://man7.org/linux/man-pages/man2/madvise.2.html Presumably MADV_NORMAL and other behaviours that should translate 1-1 to POSIX ones were omitted in 59ac9991 (Add pxd for mmap & friends from "sys/mman.h" covering POSIX/Linux/BSD) to make people use the standardised POSIX interface. However given that it turned out to be not possible to use posix_madvise for all standard behaviours, system-specific madvise behaviours have to be used. (cherry picked from commit b394295b)
-
Kirill Smelkov authored
PyGILState_STATE was added in commit 3fd6fdce (Gilnanny + pystate.pxd) with struct type on-purpose different from what CPython actually uses with the idea so that PyGILState_STATE cannot be coerced into int. However as it is, it prevents PyGILState_STATE usage: cdef PyGILState_STATE gstate = PyGILState_Ensure() gives Variable type 'PyGILState_STATE' is incomplete Fix it by making PyGILState_STATE a defined structure. (cherry picked from commit 82a0ed43)
-
Kirill Smelkov authored
mmap returns void* and indicates failure via MAP_FAILED that is defined to be ((void *)-1). Every mmap call has to be checked for failure and thus posix.mman with mmap, but without MAP_FAILED is not very useful. We cannot declare MAP_FAILED as enum, because enum assumes int. However Cython documentation says 4. If the header file uses macros to define constants, translate them into a normal external variable declaration. ... (https://cython.readthedocs.io/en/latest/src/userguide/external_C_code.html#referencing-c-header-files) So add proper declaration for MAP_FAILED to make posix.mman.mmap usable. (cherry picked from commit 67253049)
-
Kirill Smelkov authored
mlock2 is Linux-specific version of mlock that accepts flags. The only flag available so far is MLOCK_ONFAULT which asks to lock pages only at the time when they are faulted in, not in the beginning. MCL_ONFAULT is Linux-specific flag to mlockall which requests similar behaviour. http://man7.org/linux/man-pages/man2/mlock2.2.html (cherry picked from commit 83a5700b)
-
Jeroen Demeyer authored
-
- 10 Jul, 2019 2 commits
-
-
Stefan Behnel authored
-
Stefan Behnel authored
-
- 08 Jul, 2019 1 commit
-
-
Alex Willmer authored
-
- 07 Jul, 2019 9 commits
-
-
samaingw authored
-
Stefan Behnel authored
-
Stefan Behnel authored
-
Stefan Behnel authored
-
Stefan Behnel authored
Closes GH-3023.
-
Stefan Behnel authored
-
Stefan Behnel authored
-
serge-sans-paille authored
Pythran assumes shapes are shapes of long, whatever the underlying architecture.
-
serge-sans-paille authored
Pythran assumes shapes are shapes of long, whatever the underlying architecture.
-
- 05 Jul, 2019 8 commits
-
-
Stefan Behnel authored
-
Stefan Behnel authored
-
Stefan Behnel authored
-
Orivej Desh authored
Currently Cython generates code like this: int __Pyx_InitCachedBuiltins(void) { __pyx_builtin_NAME = __Pyx_GetBuiltinName(...); if (!__pyx_builtin_NAME) __PYX_ERR(1, 44, __pyx_L1_error) } int __pyx_pymod_exec_MODULE(PyObject *__pyx_pyinit_module) { if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(1, 1, __pyx_L1_error) } When InitCachedBuiltins and InitCachedConstants call __PYX_ERR, they pass the file and line where a builtin is used, but then pymod_exec overwrites it with 1 and 1, and the error message looks like this: File "FILE", line 1, in init MODULE. import os NameError: name 'NAME' is not defined After this change Cython generates: int __pyx_pymod_exec_MODULE(PyObject *__pyx_pyinit_module) { if (__Pyx_InitCachedBuiltins() < 0) goto __pyx_L1_error; } and prints: File "FILE", line 44, in init MODULE. print(NAME) NameError: name 'NAME' is not defined
-
Orivej Desh authored
Currently Cython generates code like this: int __Pyx_InitCachedBuiltins(void) { __pyx_builtin_NAME = __Pyx_GetBuiltinName(...); if (!__pyx_builtin_NAME) __PYX_ERR(1, 44, __pyx_L1_error) } int __pyx_pymod_exec_MODULE(PyObject *__pyx_pyinit_module) { if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(1, 1, __pyx_L1_error) } When InitCachedBuiltins and InitCachedConstants call __PYX_ERR, they pass the file and line where a builtin is used, but then pymod_exec overwrites it with 1 and 1, and the error message looks like this: File "FILE", line 1, in init MODULE. import os NameError: name 'NAME' is not defined After this change Cython generates: int __pyx_pymod_exec_MODULE(PyObject *__pyx_pyinit_module) { if (__Pyx_InitCachedBuiltins() < 0) goto __pyx_L1_error; } and prints: File "FILE", line 44, in init MODULE. print(NAME) NameError: name 'NAME' is not defined
-
Stefan Behnel authored
Fix a C compiler warning about an implicitly reduced integer range (Py_ssize_t -> int) when calling a helper function. Closes GH-3028.
-
Stefan Behnel authored
-
Stefan Behnel authored
Closes GH-3031
-
- 04 Jul, 2019 2 commits
-
-
Stefan Behnel authored
Fix a C compiler warning about an implicitly reduced integer range (Py_ssize_t -> int) when calling a helper function. Closes GH-3028.
-
Stefan Behnel authored
-
- 03 Jul, 2019 1 commit
-
-
Robert Bradshaw authored
BUG: Fix(up) incorrect return in SetItemFast
-
- 02 Jul, 2019 1 commit
-
-
Sebastian Berg authored
Sorry, my previous fix was cursed (not running the tests), now I saw the compiler warning, and I suppose it would be good for the tests to run error paths.
-
- 30 Jun, 2019 1 commit
-
-
Stefan Behnel authored
-
- 29 Jun, 2019 6 commits
-
-
Stefan Behnel authored
-
Stefan Behnel authored
-
Jeroen Demeyer authored
-
Stefan Behnel authored
-
Stefan Behnel authored
-
Stefan Behnel authored
-