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, flexible foreign name translation and unnamed structure and union support.

It currently supports x86 and x86-64 platforms.

Unfortunately, it has no documentation at the moment.

Have a look at github repo.