# What changed in cffi

> 9 changes in cffi 2 from its official release notes, upgrade guides and advisories: 1 breaking, 1 new APIs and options. Each one cited. Sources checked 2026-10-17. HTML: https://unstale.sh/pypi/cffi/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## cffi 2

### Breaking changes

- Python 3.9 is no longer supported. (2.1.0) — [release notes](https://github.com/python-cffi/cffi/releases/tag/v2.1.0)

### New APIs and options

- C extensions generated by CFFI can target the new abi3t free-threaded ABI. (2.1.0) — [release notes](https://github.com/python-cffi/cffi/releases/tag/v2.1.0)

### Tooling

- arm64 iOS wheels are now supported. (2.1.0) — [release notes](https://github.com/python-cffi/cffi/releases/tag/v2.1.0)
- New CLI generates CFFI C extension source for alternate build backend support. (2.1.0) — [release notes](https://github.com/python-cffi/cffi/releases/tag/v2.1.0)

### Fixes and other changes

- Minimizes internal Python API usage for interpreter and thread state sampling, avoiding a breaking ABI change on newer Python versions. (2.1.1) — [release notes](https://github.com/python-cffi/cffi/releases/tag/v2.1.1)
- Crashes inside __delitem__ were fixed. (2.1.0) — [release notes](https://github.com/python-cffi/cffi/releases/tag/v2.1.0)
- mingw builds were fixed. (2.1.0) — [release notes](https://github.com/python-cffi/cffi/releases/tag/v2.1.0)
- The “string too big” error under MSVC was fixed. (2.1.0) — [release notes](https://github.com/python-cffi/cffi/releases/tag/v2.1.0)
- Python 3.15 is now supported. (2.1.0) — [release notes](https://github.com/python-cffi/cffi/releases/tag/v2.1.0)
