Luís Oliveira | 6 Dec 16:40 2014

Fwd: Passed: cffi/cffi#1 (master - 6cf6892)


I've just finished setting up Travis CI for the CFFI repository. This means that each commit and pull request will be tested automatically. If an unexpected test fails, the commit author gets a notification similar to one I'm forwarding only with more red.

Currently only SBCL (32, and 64-bit) and CCL (64-bit) are being tested because the other Lisps fail to even execute the suite on the test box.

(The setup bits come from that I hope you may find useful in your own lisp projects.)


---------- Forwarded message ----------
From: Travis CI <notifications <at>>
Date: Sat, Dec 6, 2014 at 3:31 PM
Subject: Passed: cffi/cffi#1 (master - 6cf6892)
To: loliveira <at>

cffi / cffi (master)
Build #1 passed.
2 minutes and 22 seconds
Luís Oliveira 6cf6892 Changeset →
  Test using Travis CI

Want to know about upcoming build environment updates?

Would you like to stay up-to-date with the upcoming Travis CI build environment updates? We set up a mailing list for you! Sign up here.

Documentation about Travis CI
For help please join our IRC channel
Choose who receives these build notification emails in your configuration file.

Would you like to test your private code?

Travis Pro could be your new best friend!

Travis CI is powered by

Luís Oliveira
Cffi-devel mailing list
Cffi-devel <at>
Stelian Ionescu | 26 Nov 17:39 2014


Once upon a time Launchpad was the best in open-source and Github's
issue tracker was unusable, but that's no longer the case. How about we
officially switch to Github ?


Stelian Ionescu a.k.a. fe[nl]ix
Quidquid latine dictum sit, altum videtur.

Cffi-devel mailing list
Cffi-devel <at>
FAU | 25 Nov 11:06 2014

inline decfun

I'm wondering if it as any effect to declaim inline a function defined
by defcfun?
FAU | 24 Nov 02:13 2014

clear foreign memory


Lets say I want to keep around blocks of foreign memory but I need to
clear them before I reuse them what would be the best way to do it?

In C we could use memset() is there such an equivalent for CFFI?

Luís Oliveira | 23 Nov 23:16 2014

pkg-flags (was: Re: Cannot load cffi-libffi)

OK, so I see two needs for pkg-flags here then.

1. finding headers that aren't in the standard locations and wouldn't
otherwise be found.
2. finding headers for a specific version of a library.

I think the current committed behaviour works nicely for use case #1.
Use case #2, which you've raised, suggests that ignoring a missing
pkg-config is a bad default. What about adding making it an option?

Also, if we're going to cater to use case #2, then perhaps we should
support a list of alternatives à la define-foreign-library. What do
you think?

Finally, how about renaming the directive to pkg-config-cflags? (I can
sort of imagine we might want a pkg-config-lfags for wrappers at some
point in the future.)


Luís Oliveira

Cffi-devel mailing list
Cffi-devel <at>
Luís Oliveira | 22 Nov 16:02 2014

Issue tracker (still) lives at Launchpad


I'm not sure how, but the issue tracker for CFFI's GitHub repository
was somehow enabled. We still use Launchpad for bug tracking -- -- so I've closed all the issues on
github and moved the one that still needs fixing to launchpad.

Sorry for the confusion.



Luís Oliveira

Cffi-devel mailing list
Cffi-devel <at>
Liam Healy | 20 Nov 19:36 2014

Cannot load cffi-libffi

On Debian/Ubuntu and SBCL, I cannot load the latest cffi-libffi

To load "cffi-libffi":
  Load 1 ASDF system:
; Loading "cffi-libffi"
; pkg-config libffi --cflags
; cc -m64 NIL -I/home/healy/languages/lisp/cffi/ -o /home/healy/.cache/common-lisp/sbcl- /home/healy/.cache/common-lisp/sbcl-

debugger invoked on a CFFI-GROVEL:GROVEL-ERROR in thread #<THREAD "main thread" RUNNING {1002BEE843}>: External process exited with code 1.
Command was: "cc" "-m64" "NIL" "-I/home/healy/languages/lisp/cffi/" "-o" "/home/healy/.cache/common-lisp/sbcl-" "/home/healy/.cache/common-lisp/sbcl-"
Output was:
cc: error: NIL: No such file or directory

Type HELP for debugger help, or (SB-EXT:EXIT) to exit from SBCL.

restarts (invokable by number or by possibly-abbreviated name):
  0: [RETRY                        ] Retry PROCESS-OP on #<GROVEL-FILE "cffi-libffi" "libffi" "libffi">.
  1: [ACCEPT                       ] Continue, treating PROCESS-OP on #<GROVEL-FILE "cffi-libffi" "libffi" "libffi"> as having been successful.
  2:                                 Retry ASDF operation.
  3: [CLEAR-CONFIGURATION-AND-RETRY] Retry ASDF operation after resetting the configuration.
  4: [ABORT                        ] Give up on "cffi-libffi"
  5:                                 Exit debugger, returning to top level.

(CFFI-GROVEL:GROVEL-ERROR "External process exited with code ~S.~ <at>
                     Command was: ~S~{ ~S~}~ <at>
                     Output was:~%~A" 1 "cc" ("-m64" "NIL" "-I/home/healy/languages/lisp/cffi/" "-o" "/home/healy/.cache/common-lisp/sbcl-" "/home/healy/.cache/common-lisp/sbcl-") "cc: error: NIL: No such file or directory

I bisected this down to this commit:
     4d5479d692f07c641d3218c4728fa43287528366 is the first bad commit
     commit 4d5479d692f07c641d3218c4728fa43287528366
     Author: Sumant Oemrawsingh <soemraws <at>>
     Date:   Fri Oct 31 19:03:54 2014 +0100

         Find cc-flags for libffi using pkg-config on linux.

     :040000 040000 2dec1750de47713e34eb726a561dec296a927a17 2a4da151f69703e60f54c8881a84a6a0dcc9d471 M    libffi

Cffi-devel mailing list
Cffi-devel <at>
FAU | 5 Nov 08:53 2014

Callbacks & Lambdas


I'm kinda new to CFFI.

Is there a reliable/portable way to have lambdas called as a callback
from a foreign C function?  I assume there's not though.

I could imagine it could be simulated (by a dispatcher callback or
something) so I'm wondering if somebody has done something like that
before and may share insight into her/his design.

FAU | 1 Nov 22:09 2014

defcstruct &key size


Apparently SIZE is not evaluated at macro expansion time.

I basically want to pass the name of a foreign function as SIZE and have
it evaluated.

What would be the best way to do that?

Currently I'm doing this:

(eval-when (:compile-toplevel :load-toplevel :execute)
  (cffi:define-foreign-library libfoo
    (:unix ""))
  (cffi:load-foreign-library 'libfoo)
  (cffi:defctype size :uint)
  (cffi:defcfun ("foo_size" foo-size) size))

    ((m ()
	`(cffi:defcstruct (foo-struct :size ,(eval-when
(:compile-toplevel :load-toplevel :execute) (foo-size)))
			  (data :pointer))))
Liam Healy | 21 Oct 23:47 2014

Debian depends/recommends

I don't know who packages CFFI for Debian, but whoever that is: it would be good to have a depends/recommends on libffi-dev, so the user can load cffi-libffi.

Cffi-devel mailing list
Cffi-devel <at>
Scott Turner | 4 Oct 05:58 2014

Problem With Lapack Libraries from Cygwin

I have been using the Lisp Linear Algebra package (LLA) for about a year.  It provides a Common Lisp interface to the BLAS and LAPACK libraries using CFFI.  I use SBCL on Windows and have been loading the BLAS and LAPACK libraries from Cygwin64.

A couple of days ago I updated my Cygwin installation (because of the Shellshock vulnerability) and now when I load these libraries, my SBCL process crashes after a second or two.

CL-USER> (ql:quickload "cffi")
To load "cffi":
  Load 1 ASDF system:
; Loading "cffi"
; Loading system definition for alexandria from C:/Users/Dad/quicklisp/dists/quicklisp/software/alexandria-20140826-git/alexandria.asd
; Registering #<SYSTEM "alexandria">
; Loading system definition for trivial-features from C:/Users/Dad/quicklisp/dists/quicklisp/software/trivial-features-20130312-git/trivial-features.asd
; Registering #<SYSTEM "trivial-features">
; Loading system definition for babel from C:/Users/Dad/quicklisp/dists/quicklisp/software/babel-20140713-git/babel.asd
; Registering #<SYSTEM "babel">
CL-USER> (cffi:load-foreign-library "CYGBLAS-0.DLL")

The two libraries I load (CYGBLAS-0.DLL and CYGLAPACK-0.DLL) have not changed in about a year.  Other libraries (such as the DLLs found in Windows/System32) load without a problem.   The Lapack libraries in the Cygwin32 distribution are not recognized as valid Win32 applications by CFFI.  I've tried older versions of SBCL and CFFI with no success.

I've replicated the problem exactly on a second machine.  It should be easy to test:  Install SBCL, install Cygwin64, install CFFI, and then try (cffi:load-foreign-library "CYGBLAS-0.DLL"). You may have to provide the full path.  Sometimes it takes a short while for the process to crash.

I'm very baffled by the problem, and I hope someone on this list will have a fix or some ideas on how to debug the situation.  I'd also appreciate it if someone would see if the problem replicates on their machine.  Also, if someone has a source for alternate DLLs for BLAS and LAPACK that CFFI can load on Windows, I could try those to see if they have the same problem.


Scott Turner

Cffi-devel mailing list
Cffi-devel <at>