Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Released on June 27th, 2017.
- new feature: a new CFFI-SYS backend for Clasp has been added, courtesy of Frank Gröninger.
cffi/c2ffinow handles anonymous
enums properly, properly parses double float constants and has a new facility,
callback-factory, that allows users to customize form generation. (Thanks to Chris Bagley.)
enhancement: various improvements to
cffi-toolchain. (Thanks to François-René Rideau.)
bugfix: foreign library alternatives are now searched taking into account the
load-foreign-library(or equivalently specified via
define-foreign-library). (Thanks to Pavel Korolev.)
Released on October 15th, 2016.
enhancement: the groveller wrapper
in-packagedirective now catches missing packages earlier and more clearly. (Thanks to Chris Bagley.)
expand-into-foreign-memoryoptmization hook similar to
expand-to-foreign. (Thanks to Chris Bagley.)
- enhancement: cffi-toolchain no longer needlessly depends on a very recent ASDF. (Thanks to Stas Boukarev.)
optimization: a new
foreign-slot-pointercompiler macro avoids slot info lookups at runtime when then struct type and slot name are constant. (Thanks to Chris Bagley.)
- bugfix: cffi-toolchain parses command flags properly on windows. (Thanks to Mirko Vukovic.)
- bugfix: various cffi/c2ffi fixes. (Thanks to Attila Lendvai.)
- bugfix: defcallback fixed on Android/ECL. (Thanks to Daniel Kochmanksi.)
- bugfix: the ABCL backend has been fixed to handle recent JNA changes. (Thanks to Daniel Kochmanksi.)
Released on March 12th, 2016.
bugfix: restored the
bugfix: fixed some regressions in
- bugfix: the cffi-toolchain system depends on cffi, but it wasn't explicit in the ASDF system.
Released on February 19th, 2016.
new feature: new system
cffi/c2ffi, courtesy of Attila Lendvai, that integrates produces CFFI bindings via c2ffi, a clang-based FFI wrapper generator. (Not yet documented in the manual, sorry.)
new feature: the groveller now provides
:static-program-opASDF operations for static linking wrapper libraries generated by the groveller see Ch. 14 — Static Linking in the User Manual, for more information.
enhancement: on Allegro CL, don't try to release the heap on platforms that don't support it and honor
without-interruptson platforms that do.
enhancement: exported various
foreign-arrayoperations. (Still not documented in the manual, sorry.)
- bugfix: handle enums when calling functions via libffi.
- bugfix: tweak the groveller to work on ARM64.
Released on August 23rd, 2015.
- bugfix: the groveller is now able to process output coming from subprocesses on CLISP, which notably allows it to use the output of pkg-config. (Thanks to Daniel Kochmański.)
- enhancement: uffi-compat now runs on ECL. (Thanks to Daniel Kochmański.)
Released on August 5th, 2015.
enhancement: new type
:booltype that converts between Lisp boolean and C99 _Bool.
- enhancement: support loading 64bit libffi on Windows. (Thanks to Bart Botta.)
expand-to-foreign-dyn-indirectfor built-in types. (Thanks to Bart Botta.)
- bugfix: fix calling foreign functions in compiled fasls on ECL. (Thanks to Daniel Kochmański.)
- bugfix: fix pathname parsing on Windows. (Thanks to Nikodemus Siivola.)
- bugfix: groveller now invokes external programs correctly on ECL. (Thanks to Daniel Kochmański.)
Released on May 28th, 2015.
pkg-flagsis a new groveller directive for grabbing
pkg-configcc-flags. (Thanks to Sumant Oemrawsingh.)
cffi-libffiuses the aforementioned directive for improved reliability. (lp:974396)
enhancement: we attempt to mimic the normal behavior of OS X's
dlopen()so that the semantics are maintained when using CFFI under codesigned programs such as LispWorks 6. (lp:1414277)
close-foreign-libraryhas been implemented on the ECL backend. (Thanks to Daniel Kochmański.)
- optimization: inline expansions for foreign bitfield types and functions were added. (Thanks to Ryan Pavlik.)
optimization: an expander for
foreign-enumwas added. (Thanks to Bart Botta.)
- bugfix: invocation of C compilers on Windows and/or ECL was fixed. (Thanks to resttime and Daniel Kochmański.)
bugfix: the groveller no longer ignores the
cenumdirectives. (Thanks to Mark Cox. lp:1395242)
- bugfix: handling of return types with translations within cffi-libffi was fixed. (Thanks to Vadim Penzin.)
- CFFI now depends on UIOP, ASDF's utility library.
Released on September 21st, 2014.
- enhancement: the ABCL backend has been greatly improved. (Thanks to Cyrus Harmon, Mark Evenson and Olof-Joachim Frahm.)
:longtype on CCL/Win64 is now correctly sized. (Thanks to Tim Moore.)
Released on May 29th, 2014.
enhancement: cffi-grovel errors are now instances of
simple-error. (Thanks to Anton Vodonosov.)
foreign-funcallwas fixed on ABCL + JNA >= 4.0.0. (Thanks to Cyrus Harmon.)
Released on March 5th, 2014.
- enhancement: foreign functions defined on Allegro CL don't block the heap nor GC anymore. (Thanks to Felix Filozov.)
with-foreign-slotscan now bind variables to slot pointers as well as values.
- bugfix: passing strings to functions via cffi-libffi now works.
- bugfix: fixed issue loading libffi on OS X. (Thanks to Camille Troillard.)
enhancement: the Groveller's
bitfieldsyntax has been expanded to match the capabilities of
constantenum. (Thanks to Nicolas Martyanoff.)
- bugfix: restored the ECL backend. (lp:1281140, reported by Philipp Marek.)
- enhancement: the ABCL backend now support JNA 4.0.0. (Thanks to Mark Evenson.)
Released on June 10th, 2013.
- bugfix: removed out-of-defpackage exportations to appease SBCL. (Reported by Zach Beane.)
- enhancement: ASDF3-support for the groveller. (Thanks to Faré.)
Released on April 3rd, 2013.
- bugfix: the ABCL backend now loads the required contribs properly.
- bugfix: some callback bugs were fixed in the ACBL backend. (Thanks to Mark Evenson.)
- bugfix: the groveller was failing to regenerate its lisp files whenever a grovel- or wrapper-file was modified.
Released on February 25th, 2013.
new feature: fsbv has been integrated into CFFI, courtesy of Liam Healy. This means we now support passing structs by value via libffi! NB: in order to differentiate between structure passing by value from structure by reference,
:pointershould be used. The old way of referring to struct types by bare name is now deprecated.
- new feature: a new MKCL backend has been added courtesy of Jean-Claude Beaudoin.
- enhancement: the ABCL backend has improved considerably thanks to Mark Evenson and Stas Boukarev.
- enhancement: the ECL backend now supports multiple linking strategies thanks to Juanjo Garcia-Ripoll.
foreign-freeis non-consing on SBCL. (Thanks to Stas Boukarev.)
bugfix: in some situations we were not signalling a warning upon defining a foreign type using a symbol from the
:keywordpackages. Because of this, some projects will see new compilation warnings that will require fixing.
- and various other bugfixes.