Virgil is a high-level and extensible FFI, built on top of CFFI and oriented towards marshaling lisp data into raw memory and back.

Unlike CFFI, it does have convenient support for marshaling aggregate data types(structures, arrays etc), and may even handle circular references.

Also, it is highly extensible - function that parses foreign type specifications is exposed to the library user.

Other features include "reference" types(changes in raw-memory representation of lisp data are reflected on it), convenient pointer arithmetics, aligned allocation and unnamed structures and unions support.

It currently supports x86 and x86-64 platforms.

Unfortunately, it has no documentation at the moment.

Have a look at github repo.