Luís Oliveira edited this page Oct 15, 2016 · 33 revisions

Version 0.18.0

Released on October 15th, 2016.

  • enhancement: the groveller wrapper in-package directive now catches missing packages earlier and more clearly. (Thanks to Chris Bagley.)
  • enhancement: added expand-into-foreign-memory optmization 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-pointer compiler 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.)

Version 0.17.1

Released on March 12th, 2016.

  • bugfix: restored the :sizet type.
  • bugfix: fixed some regressions in defcenum.
  • bugfix: the cffi-toolchain system depends on cffi, but it wasn't explicit in the ASDF system.

Version 0.17.0

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-image-op and :static-program-op ASDF 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-interrupts on platforms that do.
  • enhancement: exported various foreign-array operations. (Still not documented in the manual, sorry.)
  • bugfix: handle enums when calling functions via libffi.
  • bugfix: tweak the groveller to work on ARM64.

Version 0.16.1

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.)

Version 0.16.0

Released on August 5th, 2015.

  • enhancement: new type :bool type that converts between Lisp boolean and C99 _Bool.
  • enhancement: support loading 64bit libffi on Windows. (Thanks to Bart Botta.)
  • bugfix: fix expand-to-foreign-dyn-indirect for 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.)

version 0.15.0

Released on May 28th, 2015.

  • enhancement: pkg-flags is a new groveller directive for grabbing pkg-config cc-flags. (Thanks to Sumant Oemrawsingh.)
  • enhancement: cffi-libffi uses 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)
  • enhancement: close-foreign-library has 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-enum was 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 base-type argument for constantenum and cenum directives. (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.

version 0.14.0

Released on September 21st, 2014.

  • enhancement: the ABCL backend has been greatly improved. (Thanks to Cyrus Harmon, Mark Evenson and Olof-Joachim Frahm.)
  • bugfix: the :long type on CCL/Win64 is now correctly sized. (Thanks to Tim Moore.)

version 0.13.0

Released on May 29th, 2014.

  • enhancement: cffi-grovel errors are now instances of grovel-error rather than simple-error. (Thanks to Anton Vodonosov.)
  • bugfix: foreign-funcall was fixed on ABCL + JNA >= 4.0.0. (Thanks to Cyrus Harmon.)

version 0.12.0

Released on March 5th, 2014.

  • enhancement: foreign functions defined on Allegro CL don't block the heap nor GC anymore. (Thanks to Felix Filozov.)
  • enhancement: with-foreign-slots can 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 bitfield syntax 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.)

version 0.11.2

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é.)

version 0.11.1

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.

version 0.11.0

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, (:struct foo) and :pointer should 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.
  • optimization: foreign-free is 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 :cl or :keyword packages. Because of this, some projects will see new compilation warnings that will require fixing.
  • and various other bugfixes.