v1.2.1
Nothing changed from v1.2.0.
v1.2.0
Out-of-line mode: int a[][...]; can be used to declare a
structure field or global variable which is, simultaneously,
of total length unknown to the C compiler (the a[] part) and
each element is itself an array of N integers, where the value
of N is known to the C compiler (the int and [...] parts around
it). Similarly, int a[5][...]; is supported (but probably less
useful: remember that in C it means int (a[5])[...];).
PyPy: the lib.some_function objects were missing the attributes
__name__, __module__ and __doc__ that are expected e.g. by some
decorators-management functions from functools.
Out-of-line API mode: you can now do from _example.lib import
x to import the name x from _example.lib, even though the lib
object is not a standard module object. (Also works in from
_example.lib import *, but this is even more of a hack and will
fail if lib happens to declare a name called __all__. Note that
* excludes the global variables; only the functions and constants
make sense to import like this.)
lib.__dict__ works again and gives you a copy of the dictâassuming
that lib has got no symbol called precisely __dict__. (In
general, it is safer to use dir(lib).)
Out-of-line API mode: global variables are now fetched on demand
at every access. It fixes issue #212 (Windows DLL variables),
and also allows variables that are defined as dynamic macros
(like errno) or __thread -local variables. (This change might
also tighten the C compilerâs check on the variablesâ type.)
Issue #209: dereferencing NULL pointers now raises RuntimeError
instead of segfaulting. Meant as a debugging aid. The check is
only for NULL: if you dereference random or dead pointers you
might still get segfaults.
Issue #152: callbacks: added an argument ffi.callback(...,
onerror=...). If the main callback function raises an exception
and onerror is provided, then onerror(exception, exc_value,
traceback) is called. This is similar to writing a try: except:
in the main callback function, but in some cases (e.g. a signal)
an exception can occur at the very start of the callback
functionâbefore it had time to enter the try: except: block.
Issue #115: added ffi.new_allocator(), which officializes
support for alternative allocators.