cffi

Frameworks & Libraries

cffi release notes.

Latest v2.1.1 · by cffiWritten in PythonWebsitepython-cffi/cffiRSS

Release activity

Release activity — 3 releases across 3 days in the last year. Each cell is one day; darker means more releases that day. Older weeks are hidden at this screen width.
JunJulAugSep
SundayNo releases on May 24, 2026No releases on May 31, 2026No releases on Jun 7, 2026No releases on Jun 14, 2026No releases on Jun 21, 2026No releases on Jun 28, 2026No releases on Jul 5, 2026No releases on Jul 12, 2026No releases on Jul 19, 2026No releases on Jul 26, 2026No releases on Aug 2, 2026No releases on Aug 9, 2026No releases on Aug 16, 2026No releases on Aug 23, 2026No releases on Aug 30, 2026No releases on Sep 6, 2026
MondayNo releases on May 25, 2026No releases on Jun 1, 2026No releases on Jun 8, 2026No releases on Jun 15, 2026No releases on Jun 22, 2026No releases on Jun 29, 20261 release on Jul 6, 2026No releases on Jul 13, 2026No releases on Jul 20, 2026No releases on Jul 27, 20261 release on Aug 3, 2026No releases on Aug 10, 2026No releases on Aug 17, 2026No releases on Aug 24, 2026No releases on Aug 31, 2026No releases on Sep 7, 2026
TuesdayNo releases on May 26, 2026No releases on Jun 2, 2026No releases on Jun 9, 2026No releases on Jun 16, 2026No releases on Jun 23, 2026No releases on Jun 30, 2026No releases on Jul 7, 2026No releases on Jul 14, 2026No releases on Jul 21, 2026No releases on Jul 28, 2026No releases on Aug 4, 2026No releases on Aug 11, 2026No releases on Aug 18, 2026No releases on Aug 25, 2026No releases on Sep 1, 2026
WednesdayNo releases on May 27, 2026No releases on Jun 3, 2026No releases on Jun 10, 2026No releases on Jun 17, 2026No releases on Jun 24, 2026No releases on Jul 1, 2026No releases on Jul 8, 2026No releases on Jul 15, 2026No releases on Jul 22, 2026No releases on Jul 29, 2026No releases on Aug 5, 2026No releases on Aug 12, 2026No releases on Aug 19, 2026No releases on Aug 26, 2026No releases on Sep 2, 2026
ThursdayNo releases on May 28, 2026No releases on Jun 4, 2026No releases on Jun 11, 2026No releases on Jun 18, 2026No releases on Jun 25, 2026No releases on Jul 2, 2026No releases on Jul 9, 2026No releases on Jul 16, 2026No releases on Jul 23, 2026No releases on Jul 30, 2026No releases on Aug 6, 2026No releases on Aug 13, 2026No releases on Aug 20, 2026No releases on Aug 27, 2026No releases on Sep 3, 2026
FridayNo releases on May 29, 2026No releases on Jun 5, 2026No releases on Jun 12, 2026No releases on Jun 19, 2026No releases on Jun 26, 2026No releases on Jul 3, 2026No releases on Jul 10, 2026No releases on Jul 17, 2026No releases on Jul 24, 2026No releases on Jul 31, 2026No releases on Aug 7, 2026No releases on Aug 14, 2026No releases on Aug 21, 2026No releases on Aug 28, 2026No releases on Sep 4, 2026
SaturdayNo releases on May 30, 2026No releases on Jun 6, 2026No releases on Jun 13, 2026No releases on Jun 20, 2026No releases on Jun 27, 2026No releases on Jul 4, 2026No releases on Jul 11, 2026No releases on Jul 18, 2026No releases on Jul 25, 2026No releases on Aug 1, 2026No releases on Aug 8, 2026No releases on Aug 15, 2026No releases on Aug 22, 2026No releases on Aug 29, 2026No releases on Sep 5, 2026

3 releases in the last year

Changelog

What changed from 1 to 2

v2.1.1

Latest
Fixed 1
  • Minimize internal Python API usage for interpreter and thread state sampling to avoid breaking ABI change in Python >= 3.15.0b4

From cffi

What's Changed

Full Changelog: https://github.com/python-cffi/cffi/compare/v2.1.0...v2.1.1

View originalPermalink
How v2.1.1 went

v2.1.0

Added 3
  • Added support for Python 3.15 and support for C extensions generated by CFFI to target the new abi3t free-threaded ABI
  • Added cffi-gen-src CLI to generate CFFI C extension source for alternate build backend support
  • Added support for arm64 iOS wheels
Fixed 3
  • Fixed crashes inside __delitem__
  • Fixed string too big error under MSVC
  • Fixed mingw builds
Removed 1
  • Dropped support for Python 3.9

From cffi

  • Added support for Python 3.15 and support for C extensions generated by CFFI to target the new abi3t free-threaded ABI.
  • Dropped support for Python 3.9.
  • Added cffi-gen-src CLI to generate CFFI C extension source for alternate build backend support.
  • Fixed crashes inside __delitem__.
  • Fixed "string too big" error under MSVC.
  • Fixed mingw builds.
  • Added support for arm64 iOS wheels.
View originalPermalink
How v2.1.0 went

v2.0.0

Added 2
  • Add Python 3.14 support
  • Add CPython free-threaded support (3.14t+ only)
Fixed 1
  • Fix order dependency affecting nested type size calculation
Removed 1
  • Drop Python <= 3.8 support

From cffi

What's Changed
  • Add Python 3.14 support.
  • Add CPython free-threaded support (3.14t+ only) - huge thanks to the folks at Quansight Labs for all the work to get this one sorted!
  • Drop Python <= 3.8 support.
  • Fix order dependency affecting nested type size calculation (#148).

Full Changelog: https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0

View originalPermalink
How v2.0.0 went

v2.0.0b1

Pre-release
Added 2
  • Add Python 3.14 support
  • Add CPython free-threaded support for Python 3.14t and later
Fixed 1
  • Fix order dependency affecting nested type size calculation
Removed 1
  • Drop Python 3.8 and earlier support

From cffi

What's Changed
  • Add Python 3.14 support.
  • Add CPython free-threaded support (3.14t+ only).
  • Drop Python <= 3.8 support.
  • Fix order dependency affecting nested type size calculation (#148).

Full Changelog: https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1

View originalPermalink
How v2.0.0b1 went

v1.17.1

Changed 2
  • ffibuilder.emit_python_code() and ffibuilder.emit_c_code() now accept file-like objects
  • ffiplatform calls are bypassed by ffibuilder.emit_python_code() and ffibuilder.emit_c_code()
Fixed 1
  • Fix failing distutils.msvc9compiler imports under Windows

From cffi

  • 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: https://github.com/python-cffi/cffi/compare/v1.17.0...v1.17.1

View originalPermalink
How v1.17.1 went

v1.17.0

Added 1
  • Add support for Python 3.13
Changed 1
  • In API mode, function objects obtained from a C library can now be passed in many places where CFFI expects a regular cdata object, such as as callbacks to C function calls, in C structure fields, or with ffi.cast() and ffi.typeof()

From cffi

  • 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: https://github.com/python-cffi/cffi/compare/v1.16.0...v1.17.0

View originalPermalink
How v1.17.0 went

v1.17.0rc1

Pre-release
Added 2
  • Add support for Python 3.13
  • Build wheels for musllinux aarch64
Changed 1
  • In API mode, the special function object obtained from lib.myfunc can now be passed in many places where CFFI expects a regular <cdata> object, such as as a callback to a C function call, inside a C structure field of the correct pointer-to-function type, or with ffi.cast() or ffi.typeof()

From cffi

  • 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.
View originalPermalink
How v1.17.0rc1 went

v1.16.0

Added 2
  • Add support for Python 3.12
  • Add support for PEP517 builds
Changed 2
  • Declare python_requires metadata for Python 3.8+
  • Move project source under src/ directory
Removed 1
  • Drop support for end-of-life Python versions 2.7, 3.6, and 3.7

From cffi

  • 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.
View originalPermalink
How v1.16.0 went

v1.16.0rc2

Pre-release
Changed 1
  • Rearrange project sources to src/ layout so packaging tests can properly detect similar issues in the future
Fixed 1
  • Fix packaging issue in v1.16.0rc1

From cffi

  • 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: https://github.com/python-cffi/cffi/compare/v1.16.0rc1...v1.16.0rc2

View originalPermalink
How v1.16.0rc2 went

v1.16.0rc1

Pre-release
Added 2
  • Add support for Python 3.12
  • Add support for PEP517 builds
Changed 3
  • Move project home to python-cffi/cffi on GitHub
  • Make setuptools a required build dependency
  • Declare python_requires metadata for Python 3.8+
Fixed 1
  • Add missing calls to PyObject_GC_UnTrack to avoid ResourceWarning
Removed 1
  • Drop support for end-of-life Python versions 2.7, 3.6, and 3.7

From cffi

  • 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 15c4b71d5e3f2295c0e4773e99b23ac751e02534
View originalPermalink
How v1.16.0rc1 went
View all

Discussion

If you publish cffi, you can claim this product by proving you administer its repository.