Skip to content

Releases: python-cffi/cffi

v1.17.1

04 Sep 20:41
38bd6be
Compare
Choose a tag to compare
  • Fix failing distutils.msvc9compiler imports under Windows (#118).
  • ffibuilder.emit_python_code() and ffibuiler.emit_c_code() accept file-like objects (#115).
  • ffiplatform calls are bypassed by ffibuilder.emit_python_code() and ffibuilder.emit_c_code() (#81).

Full Changelog: v1.17.0...v1.17.1

v1.17.0

06 Aug 17:43
74731f9
Compare
Choose a tag to compare
  • Add support for Python 3.13.
    • Free-threaded CPython builds (i.e. python3.13t and the 3.13t ABI) are not currently supported.
  • 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 of myfunc. 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() or ffi.typeof() on it.

Full Changelog: v1.16.0...v1.17.0

v1.17.0rc1

23 May 23:38
181fa00
Compare
Choose a tag to compare
v1.17.0rc1 Pre-release
Pre-release
  • 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

28 Sep 17:40
ba44abd
Compare
Choose a tag to compare
  • Add support for Python 3.12. With the removal of distutils from Python 3.12, projects
    using CFFI features that depend on distutils at runtime must add a dependency on
    setuptools to function under Python 3.12+. CFFI does not declare a runtime setuptools
    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

26 Sep 05:29
e20c65d
Compare
Choose a tag to compare
v1.16.0rc2 Pre-release
Pre-release
  • 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

25 Sep 21:45
Compare
Choose a tag to compare
v1.16.0rc1 Pre-release
Pre-release
  • Add support for Python 3.12. With the removal of distutils from Python 3.12, projects
    using CFFI features that depend on distutils at runtime must add a dependency on
    setuptools to function under Python 3.12+. CFFI does not declare a runtime setuptools
    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

25 Sep 22:24
Compare
Choose a tag to compare

(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