{"slug": "cffi", "name": "CFFI", "category": "dev-libs", "category_name": "Libraries and frameworks", "description": "", "recommenders": 3, "commenters": 3, "warners": 0, "score": 2.652, "rising": -0.98, "first": "2026-03-08", "latest": "2026-07-09", "why": "", "why_is_quote": false, "has_verdict": false, "sentiment": {"recommend": 3, "neutral": 0, "compare": 0, "warn": 0}, "spark": [0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0], "listed": true, "loved": [], "caveat": "", "short_quote": "", "kind": "", "icon": true, "domain": null, "github_repo": null, "official_url": "https://cffi.readthedocs.io", "pricing": "", "aliases": ["CFFI"], "verdict": null, "praise": [{"label": "", "summary": "", "quotes": [{"id": 781683585, "item_id": 48855224, "url": "https://news.ycombinator.com/item?id=48855224", "by": "rmunn", "date": "2026-07-09", "version": null, "stance": "recommend", "quote": "has some pointers", "excerpt": "https://www.quicklisp.org/beta/UNOFFICIAL/docs/cffi/doc/Tutorial_002dCallbacks.html#Tutorial_002dCallbacks has some pointers (which might be harder to understand unless you have read the rest of https://www.quicklisp.org/beta/UNOFFICIAL/docs/cffi/doc/Tutorial.html#Tutorial first). The short version (which I might be mangling in my attempt to shorten it) is, since Lisp is so very good at creating code, you have your L", "context": "", "use_case": "Common Lisp C FFI", "switched_from": "", "story": "A Road to Lisp: Why Lisp"}, {"id": 756754384, "item_id": 47297149, "url": "https://news.ycombinator.com/item?id=47297149", "by": "glkindlmann", "date": "2026-03-08", "version": null, "stance": "recommend", "quote": "I use CFFI all the time", "excerpt": "Sorry can you explain more the connection between PyPy and CFFI (which generates compiled extension modules to wrap an existing C library)? I have never used PyPy, but I use CFFI all the time (to wrap C libraries unrelated to Python so that I can use them from Python)", "context": "", "use_case": "wrapping C libraries for Python", "switched_from": "", "story": "\"Warn about PyPy being unmaintained\""}, {"id": 756733841, "item_id": 47295865, "url": "https://news.ycombinator.com/item?id=47295865", "by": "mattip", "date": "2026-03-08", "version": null, "stance": "recommend", "quote": "Hence CFFI and HPy.", "excerpt": "Yes. The C API those libraries use is a good fit to CPython, a bad fit to PyPy. Hence CFFI and HPy. Actually, many if the lessons from HPy are making their way into CPython since their JIT and speedups face the same problems as PyPy. See https://github.com/py-ni", "context": "", "use_case": "", "switched_from": "", "story": "\"Warn about PyPy being unmaintained\""}]}], "caveats": [], "who": [], "tags": [], "use_cases": ["common lisp c ffi", "wrapping c libraries for python"], "compared": [], "makers": [], "threads": [{"url": "https://news.ycombinator.com/item?id=47293415", "title": "\"Warn about PyPy being unmaintained\"", "mentions": 2}, {"url": "https://news.ycombinator.com/item?id=48845209", "title": "A Road to Lisp: Why Lisp", "mentions": 1}], "sentiment_by_month": {"2025-11": {}, "2025-12": {}, "2026-01": {}, "2026-02": {}, "2026-03": {"recommend": 2}, "2026-04": {}, "2026-05": {}, "2026-06": {}, "2026-07": {"recommend": 1}, "2026-08": {}, "2026-09": {}, "2026-10": {}}, "versions": [], "version_unnamed": 0, "family_ref": null, "runs_on": null, "lines": [], "quotes": [{"id": 781683585, "item_id": 48855224, "url": "https://news.ycombinator.com/item?id=48855224", "by": "rmunn", "date": "2026-07-09", "version": null, "stance": "recommend", "quote": "has some pointers", "excerpt": "https://www.quicklisp.org/beta/UNOFFICIAL/docs/cffi/doc/Tutorial_002dCallbacks.html#Tutorial_002dCallbacks has some pointers (which might be harder to understand unless you have read the rest of https://www.quicklisp.org/beta/UNOFFICIAL/docs/cffi/doc/Tutorial.html#Tutorial first). The short version (which I might be mangling in my attempt to shorten it) is, since Lisp is so very good at creating code, you have your L", "context": "", "use_case": "Common Lisp C FFI", "switched_from": "", "story": "A Road to Lisp: Why Lisp"}, {"id": 756754384, "item_id": 47297149, "url": "https://news.ycombinator.com/item?id=47297149", "by": "glkindlmann", "date": "2026-03-08", "version": null, "stance": "recommend", "quote": "I use CFFI all the time", "excerpt": "Sorry can you explain more the connection between PyPy and CFFI (which generates compiled extension modules to wrap an existing C library)? I have never used PyPy, but I use CFFI all the time (to wrap C libraries unrelated to Python so that I can use them from Python)", "context": "", "use_case": "wrapping C libraries for Python", "switched_from": "", "story": "\"Warn about PyPy being unmaintained\""}, {"id": 756733841, "item_id": 47295865, "url": "https://news.ycombinator.com/item?id=47295865", "by": "mattip", "date": "2026-03-08", "version": null, "stance": "recommend", "quote": "Hence CFFI and HPy.", "excerpt": "Yes. The C API those libraries use is a good fit to CPython, a bad fit to PyPy. Hence CFFI and HPy. Actually, many if the lessons from HPy are making their way into CPython since their JIT and speedups face the same problems as PyPy. See https://github.com/py-ni", "context": "", "use_case": "", "switched_from": "", "story": "\"Warn about PyPy being unmaintained\""}]}