[cffi-devel] Re: Use of Babel and Alexandria in CFFI

Luís Oliveira luismbo at gmail.com
Sun Aug 17 17:48:33 UTC 2008


On Sun, Aug 17, 2008 at 4:46 PM, Roland Averkamp <roland.averkamp at gmx.de> wrote:

> Is it really necesary to use the Babel and Alexandria libraries in CFFI?
> Now CFFI depends on two libraries and every other system which uses
> CFFI needs these two libraries too.

That's an issue that was taken into consideration.


> Some comments in Babel mention that it is only usefull for a lisp with
> unicode suppport. But for example Allegro and Clisp already have functions for
> character set conversions.

At one point, there was a CFFI branch that implemented foreign
encodings using the functionality provided by each Lisp. But the
encoding support and error semantics vary wildely and that made it a
bit useless. You can find more details about that effort in the
mailing list archives.


> I think it would be better that strings with a non native character set are handled
> like (unsigned-byte 8) or (unsigned-byte 16) arrays which are zero terminated.
> And it is up to the application to convert them, with Babel or some buildin functions.

That would introduce an extra step in the conversion:

    foreign memory -> lisp array -> lisp string

A better solution, perhaps, would be to split string support into a
different system. Is it worth the trouble though?

Out of curiosity, plain-odbc seems to use strings a lot, I would
assume that foreign string encoding support would be useful for your
library. Am I wrong?


> Regarding Alexandria:
> I believe only three macros from Alexandria are used.
>
> Maybe ONCE-ONLY is nice, but not much simpler than (let ((a (gensym "a"))) `(let (,a ...) ... ,a)).
>
> The same holds for WITH-UNIQUE-NAMES.

Version 0.10.0 uses ENSURE-LIST, FEATUREP, FORMAT-SYMBOL, IF-LET,
MAKE-GENSYM-LIST, ONCE-ONLY, PARSE-BODY, SYMBOLICATE, WHEN-LET and
WITH-UNIQUE-NAMES. They are, of course, somewhat simple utilities that
could be copied & pasted into Babel and CFFI.

Is that code duplication better or worse than adding a library
dependency? Perhaps if you use some of Alexandria's utilities in your
own code you'll feel better about it? :-)

-- 
Luís Oliveira
http://student.dei.uc.pt/~lmoliv/



More information about the cffi-devel mailing list