Path to this page:
Subject: CVS commit: pkgsrc/devel/py-cffi
From: Thomas Klausner
Date: 2017-04-05 17:54:26
Message id: 20170405155426.6F3A5FBE4@cvs.NetBSD.org
Log Message:
Updated py-cffi to 1.10.0.
v1.10
Issue #295: use calloc() directly instead of PyObject_Malloc()+memset()
to handle ffi.new() with a default allocator. Speeds up
ffi.new(large-array) where most of the time you never touch
most of the array.
Some OS/X build fixes (âonly with Xcode but without CLTâ).
Improve a couple of error messages: when getting mismatched
versions of cffi and its backend; and when calling functions
which cannot be called with libffi because an argument is a
struct that is âtoo complicatedâ (and not a struct pointer,
which always works).
Add support for some unusual compilers (non-msvc, non-gcc,
non-icc, non-clang)
Implemented the remaining cases for ffi.from_buffer. Now all
buffer/memoryview objects can be passed. The one remaining check
is against passing unicode strings in Python 2. (They support
the buffer interface, but that gives the raw bytes behind the
UTF16/UCS4 storage, which is most of the times not what you
expect. In Python 3 this has been fixed and the unicode strings
donât support the memoryview interface any more.)
The C type _Bool or bool now converts to a Python boolean when
reading, instead of the content of the byte as an integer. The
potential incompatibility here is what occurs if the byte
contains a value different from 0 and 1. Previously, it would
just return it; with this change, CFFI raises an exception in
this case. But this case means âundefined behaviorâ in C; if
you really have to interface with a library relying on this,
donât use bool in the CFFI side. Also, it is still valid to use
a byte string as initializer for a bool[], but now it must only
contain \x00 or \x01. As an aside, ffi.string() no longer works
on bool[] (but it never made much sense, as this function stops
at the first zero).
ffi.buffer is now the name of cffiâs buffer type, and ffi.buffer()
works like before but is the constructor of that type.
ffi.addressof(lib, "name") now works also in in-line mode, not
only in out-of-line mode. This is useful for taking the address
of global variables.
Issue #255: cdata objects of a primitive type (integers, floats,
char) are now compared and ordered by value. For example, <cdata
'int' 42> compares equal to 42 and <cdata 'char' b'A'> compares
equal to b'A'. Unlike C, <cdata 'int' -1> does not compare equal
to ffi.cast("unsigned int", -1): it compares smaller, because
-1 < 4294967295.
PyPy: ffi.new() and ffi.new_allocator()() did not record âmemory
pressureâ, causing the GC to run too infrequently if you call
ffi.new() very often and/or with large arrays. Fixed in PyPy
5.7.
Support in ffi.cdef() for numeric expressions with + or -.
Assumes that there is no overflow; it should be fixed first
before we add more general support for arbitrary arithmetic on
constants.
Files: