[pypy-dev] clarification cffi vs _ffi_ vs _ffi vs libffi vs _rawffi vs rffi

Armin Rigo arigo at tunes.org
Wed Nov 27 17:24:10 CET 2013

Hi Dima,

On Wed, Nov 27, 2013 at 4:07 PM, Dima Tisnek <dimaqq at gmail.com> wrote:
> there seems to be some confusion (could be all mine) between N terms
> related to FFI:

As a user of PyPy you only need to concern yourself with cffi and
ctypes.  The rest is all a number of more-or-less related internal
sub-parts of PyPy or the RPython translation toolchain that all
attempt to do accessing C-level functionality: rffi, _ffi, _rawffi.
And libffi is the existing, non-PyPy-related, C library that is
(sometimes) used by these other levels.

> docs in question:
> http://doc.pypy.org/en/latest/faq.html
> http://doc.pypy.org/en/latest/extending.html
> http://doc.pypy.org/en/latest/rffi.html

"rffi" is about writing RPython code, e.g. a special extension module
for PyPy; in most cases you don't need that.  The page
http://doc.pypy.org/en/latest/extending.html is a bit outdated :-(
Thanks for pointing it out.

> in my own testing, I noticed that equivalent code cffi code is faster
> than ctypes, is there an explanation for this?

On top of PyPy, yes, definitely.  CFFI is simpler than ctypes; it was
*designed* to be simple.  Although it was not particularly designed
for PyPy and works fine on CPython (and was actually first developed
for CPython), this has the intended benefit that PyPy's JIT can do a
good job on it.

A bientôt,


More information about the pypy-dev mailing list