Skip to content
Luís Oliveira edited this page Apr 3, 2021 · 43 revisions

Version 0.24.1

Released on April 3rd, 2021.

  • bugfix: reverted the groveller's newly introduced support for floats and doubles in the :auto type. (lp#1922428)

Version 0.24.0

Released on April 2nd, 2021.

  • bugfix: callbacks with stdcall calling convention were not taking effect on SBCL. (lp#1890671)
  • enhancement: optimize cycle checking in parse-type, which is sometimes invoked at runtime.
  • enhancement: uffi-compat converts UFFI types to CFFI types at macro-expansion time when possible, improving performance.
  • feature: new built-in types :size, :ssize, :intptr, :uintptr, :ptrdiff and :offset. (Shinmera)
  • bugfix: fixed loading/closing of foreign libraries on sbcl/macosx. (Stas Boukarev)
  • enhancement: optimized type lookups. (Paul F. Dietz)
  • enhancement: adapted to macOS Big Sur's new constraints on framework loading. (lp#1906982) (ellisvelo)
  • bugfix: fixed the edge case of empty structure/union definitions. (Stuart Dilts)
  • enhancement: load-foreign-library now looks for libraries also in /opt/homebrew/lib when on macosx/arm64. (Cyrus Harmon)
  • enhancement: the groveller's :auto type is now able to detect floats and doubles. (Salad Tea)

Version 0.23.0

Released on July 10th, 2020.

  • feature: define-foreign-libraryD has a new keyword arg :canary, to allow detecting statically compiled libraries
  • feature: ABCL now implements MAKE-SHAREABLE-BYTE-VECTOR
  • bugfix: the ASDF class :c-file now correctly passes :cflags to the C compiler instead of ignoring them
  • bugfix: avoid --export-dynamic on Solaris because the flag is unsupported and its intended effect is the default

Version 0.22.0

Released on May 11th, 2020.

  • bugfix: apply translations to struct typedefs. (Madhu)
  • bugfix: handle recent SBCL versions that no longer push :sb-linkable-runtime to *features*. (lp#1866386)
  • new feature: defcenum now accepts a new :allow-undeclared-values. (Shinmera)
  • bugfix: minor adjustments to cffi/c2ffi and cffi-tests for LispWorks. (lp#1876713, lp#1877156)

Version 0.21.0

Released on Jan 24th, 2020.

  • bugfix: use libtool on macOS. (Ed Langley)
  • bugfix: fix varargs on ABCL. (Cyrus Harmon)
  • bugfix: load shared libraries on SBCL without threads on macOS. (Mark Skilbeck)
  • enhancement: add compiler macro for inc-pointer. (Stelian Ionescu)
  • bugfix: handle recent SBCL versions that no longer push :linkage-table to *features*.

Version 0.20.1

Released on May 29th, 2019.

  • enhancement: add support for libffi.so.7.
  • enhancement: include MacPorts's lib/ in darwin-fallback-library-path.
  • bugfix: handle ECL's ASDF 3.1.8.

Version 0.20.0

Released on November 12th, 2018.

  • new feature: a new grovel directive, feature, has been added. It allows items to be added to *features* or another list if specified c preprocessor macros are defined. (Courtesy of Stuart Dilts.)
  • new feature: improve support for variadic functions. Functions foreign-funcall-varargs and foreign-funcall-pointer-varargs are now exported.
  • enhancement: arguments to make-array can be specified when using foreign-array-to-lisp.
  • enhancement: update ASDF usage according to ASDF guidelines.
  • enhancement: improved the ECL backend with proper varargs support and updated manual and test suite to reflect ECL's improved support for callbacks, long long types and Unicode. (Courtesy of Daniel Kochmanski.)
  • enhancement: increase chances of finding libffi headers on FreeBSD.
  • bugfix: the groveller's :cc-flags ASDF option has been restored and is not ignored when CFLAGS is set. (Thanks to Stuart Dilts and Stas Boukarev.)
  • bugfix: handle pathnames within define-foreign-library definitions. (lp#1720626)

Version 0.19.0

Released on June 27th, 2017.

  • new feature: a new CFFI-SYS backend for Clasp has been added, courtesy of Frank Gröninger.
  • enhancement: cffi/c2ffi now 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 search-path provided to load-foreign-library (or equivalently specified via define-foreign-library). (Thanks to Pavel Korolev.)

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.