| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
changed in IPython 7.11.
|
| |
|
|
|
|
| |
deprecated "collections" package.
|
|
|
| |
Closes GH-3246.
|
| |
|
| |
|
| |
|
| |
|
|
|
| |
This should complete #3171 in silencing -Wmissing-field-initializers.
|
|
|
|
|
| |
* IPython magic: hide internal traceback when compilation fails
* IPython magic: hide internal traceback when build fails
|
|
|
|
| |
(GH-3187)
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is more follow up to https://bugs.python.org/issue37250
The action taken is:
- restore tp_print to not break all of the sdists on pypi for py38
- remove tp_print for real in py39
In https://github.com/cython/cython/pull/3171 tp_print was initialized
for PY_VERSION_HEX >= 0x030800b4 however, when trying to use cython
with cpython master (aka py39) there are compile time exceptions due
to too many initializers:
error: too many initializers for ‘PyTypeObject’ {aka ‘_typeobject’}
This fixes that by putting an upper bound on the ifdef of including
pt_print at the end of the object.
|
| |
|
|
|
|
|
|
| |
depends on its declarations.
Closes #3133.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Explicitly initialize tp_print in Python 3.8
When compiling cython-generated extension modules in Python3.8rc1
this error is emitted by the compiler:
_ext.cpp:8104:1: error: missing initializer for member ‘_typeobject::tp_print’ [-Werror=missing-field-initializers]
The reason is that Python3.8 moved the tp_print slot (d917cfe4051) to
the end of the _typeobject struct and reused the original position for
tp_vectorcall_offset. The current generated code does not initialize the
deprecated tp_print slot that was moved to the end of the struct.
|
| |
|
| |
|
|
|
|
|
| |
When compiling to C++ code and using automatic conversion from Python
str to C++ string, Cython inserts this function template but generates the warning:
warning: string.from_py:15:63: local variable 'length' might be referenced before assignment
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
(GH-3088)
* Fix coverage path search
* Add testcase
|
| |
|
| |
|
|
|
| |
Issue: #2541
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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 59ac999110b7 (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 b394295bfbd7573a5a52773c8840f1834a3d0500)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
PyGILState_STATE was added in commit 3fd6fdce66 (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 82a0ed43b31f0ad263256d2725d762ee82cd2179)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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 6725304967f4c4235cb0113c6f0e8b56bc683478)
|
|
|
|
|
|
|
|
|
|
|
| |
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 83a5700b30cdcb538ec8c23b4fcff1db54449abc)
|
|
|
|
| |
compiler option.
|
| |
|
|
|
|
| |
Closes GH-3023.
|
| |
|
|
|
|
| |
Pythran assumes shapes are shapes of long, whatever the underlying
architecture.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
(Py_ssize_t -> int) when calling a helper function.
Closes GH-3028.
|
|
|
|
| |
Closes GH-3031
|
| |
|
| |
|
| |
|
| |
|
| |
|