[pypy-commit] cffi default: Try to rewrite and expand a bit the introduction.
arigo
noreply at buildbot.pypy.org
Thu Jun 14 17:14:03 CEST 2012
Author: Armin Rigo <arigo at tunes.org>
Branch:
Changeset: r343:df89dccc974a
Date: 2012-06-14 17:13 +0200
http://bitbucket.org/cffi/cffi/changeset/df89dccc974a/
Log: Try to rewrite and expand a bit the introduction.
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -2,17 +2,34 @@
====
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:
+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:
-* 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)
+* 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 instead of C (unlike
- [CPython native C extensions](http://docs.python.org/extending/extending.html))
+* 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)).
-* Be complete and work on the level of API (unlike [ctypes](http://docs.python.org/library/ctypes.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
--------------
More information about the pypy-commit
mailing list