Hi,

Luís Oliveira wrote:
>Also we need to handle encodings.
That's really important. I almost feel sorry for wasting your time on small 
optimization issues when there are much more important things to do.

>Right, once the block memory interface is implemented for all Lisps,  
>we can optimize strings.lisp

Block operations are no silver bullet either. E.g. with-foreign-string maps 
nicely to CLISP's ffi:with-foreign-string. Using block operations instead would 
still do more work (and it's unclear whether block operations would work fast 
in CLISP with strings or rather arbitrary encodings, or whether the block code 
would resort to a LOOP).


James Bielman wrote:
>how about adding
>"cffi/src/optimizers-clisp.lisp" (and associated files for other
>implementations) that use compiler macros to perform the optimization?  

It's maybe the best one can do given your preference for 
implementation-specific files.

Yet I felt somewhat strange about writing compiler-macros for macros (e.g. 
with-xyz), not functions.

The typical counter argument is risk of drift between the two files containing 
the original function or code and the other with the macro optimizer.

So far, the cffi-impl.lisp files which contain both a low-level function, 
followed by the optimizer version are very nice to review. One immediately sees 
the correspondance between the two forms.

There's no risk that somebody will edit one and forget to edit the other. 
That's very different with code spread across files. Especially, handling of 
border cases may then vary across implementations.
E.g. I remember having to modify my version of uffi:with-cstrings to accept an 
empty list of bindings: all optimizers would need to be modified similarly.

Regards,
        Jörg Höhle.
_______________________________________________
cffi-devel mailing list
cffi-devel@common-lisp.net
http://common-lisp.net/cgi-bin/mailman/listinfo/cffi-devel

Reply via email to