Releases: python-cffi/cffi
Releases · python-cffi/cffi
v1.17.1
- Fix failing
distutils.msvc9compiler
imports under Windows (#118). ffibuilder.emit_python_code()
andffibuiler.emit_c_code()
accept file-like objects (#115).ffiplatform
calls are bypassed byffibuilder.emit_python_code()
andffibuilder.emit_c_code()
(#81).
Full Changelog: v1.17.0...v1.17.1
v1.17.0
- Add support for Python 3.13.
- Free-threaded CPython builds (i.e.
python3.13t
and the3.13t
ABI) are not currently supported.
- Free-threaded CPython builds (i.e.
- In API mode, when you get a function from a C library by writing
fn = lib.myfunc
, you get an object of a special type for performance
reasons, instead of a<cdata 'C-function-type'>
. Before version 1.17
you could only call such objects. You could write
ffi.addressof(lib, "myfunc")
in order to get a real<cdata>
object,
based on the idea that in these cases in C you'd usually write&myfunc
instead ofmyfunc
. In version 1.17, the special object
lib.myfunc
can now be passed in many places where CFFI expects
a regular<cdata>
object. For example, you can now pass
it as a callback to a C function call, or write it inside a C
structure field of the correct pointer-to-function type, or use
ffi.cast()
orffi.typeof()
on it.
Full Changelog: v1.16.0...v1.17.0
v1.17.0rc1
- Add support for Python 3.13.
- In API mode, when you get a function from a C library by writing fn = lib.myfunc, you get an object of a special type for performance reasons, instead of a <cdata ‘C-function-type’>. Before version 1.17 you could only call such objects. You could write ffi.addressof(lib, “myfunc”) in order to get a real object, based on the idea that in these cases in C you’d usually write &myfunc instead of myfunc. In version 1.17, the special object lib.myfunc can now be passed in many places where CFFI expects a regular object. For example, you can now pass it as a callback to a C function call, or write it inside a C structure field of the correct pointer-to-function type, or use ffi.cast() or ffi.typeof() on it.
- Build wheels for musllinux aarch64.
v1.16.0
- Add support for Python 3.12. With the removal of
distutils
from Python 3.12, projects
using CFFI features that depend ondistutils
at runtime must add a dependency on
setuptools
to function under Python 3.12+. CFFI does not declare a runtimesetuptools
requirement to avoid an unnecessary dependency for projects that do not require it. - Drop support for end-of-life Python versions (2.7, 3.6, 3.7).
- Add support for PEP517 builds;
setuptools
is now a required build dependency. - Declare
python_requires
metadata for Python 3.8+. This allows unsupported Pythons
to continue using previously released sdists and wheels. - Move project source under
src/
; a more standard layout that also enables CI to more easily
catch packaging errors.
v1.16.0rc2
- Fix packaging issue in v1.16.0rc1.
- Rearrange project sources (
src/
layout) so packaging tests can properly detect similar issues in the future.
Full Changelog: v1.16.0rc1...v1.16.0rc2
v1.16.0rc1
- Add support for Python 3.12. With the removal of
distutils
from Python 3.12, projects
using CFFI features that depend ondistutils
at runtime must add a dependency on
setuptools
to function under Python 3.12+. CFFI does not declare a runtimesetuptools
requirement to avoid an unnecessary dependency for projects that do not require it. - Drop support for end-of-life Python versions (2.7, 3.6, 3.7).
- Move project home to
python-cffi/cffi
on GitHub. - Add support for PEP517 builds;
setuptools
is now a required build dependency. - Declare
python_requires
metadata for Python 3.8+. This allows unsupported Pythons
to continue using previously released sdists and wheels. - Add missing calls to
PyObject_GC_UnTrack
to avoid ResourceWarning 15c4b71
v1.15.1
(retroactive GitHub release for current stable version 1.15.1)
- If you call ffi.embedding_api() but don't write any extern "Python" function there, then the resulting C code would fail an assert. Fixed.
- Updated Windows/arm64 embedded libffi static lib to v3.4.2, and scripted to ease future updates (thanks Niyas Sait!)
Full Changelog: v1.15.0...v1.15.1