From 27a64cff66ef73e423d61b9c648e3ff358c608d8 Mon Sep 17 00:00:00 2001 From: Armin Rigo Date: Thu, 14 Jun 2012 17:13:52 +0200 Subject: Try to rewrite and expand a bit the introduction. --- README.md | 39 ++++++++++++++++++++++++++++----------- 1 file changed, 28 insertions(+), 11 deletions(-) (limited to 'README.md') diff --git a/README.md b/README.md index b2a0661..3388365 100644 --- a/README.md +++ b/README.md @@ -2,17 +2,34 @@ cffi ==== Foreign Function Interface for Python calling C code. The aim of this project -is to provide a convinient and reliable way of calling C code from Python. -The interface is based on [luajit FFI](http://luajit.org/ext_ffi.html) and follows a few principles: - -* You want to use C code from Python code, so you should be able to do so - without needing to learn a 3rd language - (unlike [Cython](http://www.cython.org) or [SWIG](http://www.swig.org/) or ctypes) - -* Keep all the python-related logic in Python instead of C (unlike - [CPython native C extensions](http://docs.python.org/extending/extending.html)) - -* Be complete and work on the level of API (unlike [ctypes](http://docs.python.org/library/ctypes.html)) +is to provide a convenient and reliable way of calling C code from Python. +The interface is based on [luajit FFI](http://luajit.org/ext_ffi.html) 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](http://www.cython.org), + [SWIG](http://www.swig.org/)) or API + ([ctypes](http://docs.python.org/library/ctypes.html)). 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](http://docs.python.org/extending/extending.html)). + +* 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](http://docs.python.org/library/ctypes.html) works at the ABI + level, whereas + [native C extensions](http://docs.python.org/extending/extending.html) + 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 (apart from the most advanced + (ab)uses of these macros). Simple example -------------- -- cgit v1.2.1