Résumé :
Foreign Function Interface for Python calling C code
Site web :
License :
Vendeur :
Johan Cwiklinski
Description :
A foreign Function Interface for Python calling C code.
The aim of this project is to provide a convenient and reliable way of calling
C code from Python. The interface is based on LuaJIT’s FFI and follows a
few principles:
- The goal is to call C code from Python. You should be able to do so without
learning a 3rd language: every alternative requires you to learn their own
language (Cython, SWIG) or API (ctypes). So we tried to assume that you know
Python and C and minimize the extra bits of API that you need to learn.
- Keep all the Python-related logic in Python so that you don’t need to write
much C code (unlike CPython native C extensions).
- Work either at the level of the ABI (Application Binary Interface) or the API
(Application Programming Interface). Usually, C libraries have a specified
C API but often not an ABI (e.g. they may document a “struct” as having at
least these fields, but maybe more). (ctypes works at the ABI level, whereas
Cython and native C extensions work at the API level.)
- We try to be complete. For now some C99 constructs are not supported, but all
C89 should be, including macros (and including macro “abuses”, which you can
manually wrap in saner-looking C functions).
- We attempt to support both PyPy and CPython, with a reasonable path for
other Python implementations like IronPython and Jython.
- Note that this project is not about embedding executable C code in Python,
unlike Weave. This is about calling existing C libraries from Python.