>>9
When it comes to ANSI Common Lisp, there's a few choices for your platform(Win32):
a) `Free' ones(come with source code):
- SBCL,
pros: very fast/good code quality, good extensions, based on CMUCL, but made to be much more portable. Most of the Lisp community prefers it
cons: threading support is lacking on windows, but it's being worked on, same goes with interrupt support. I find it usable, but YMMV. These issues don't exist in the *nix port.
- ClozureCL/OpenMCL, used to be a commercial lisp, now open source.
pros: almost everything works if you use the latest SVN trunk.
cons: not as good native code generation as SBCL, but still decent.
- CLISP
pros: good compatibility, good for debugging
cons: Interpreted or JIT when compiled, no threading.
Commercial(have to pony up money or get a free trial):
- Allegro CL
pros: good code generation, lots of libraries come with it.
cons: , and the license is restrictive, but they can give you source code to parts of the implementation, has a free trial.
- Lispworks
pros: good debugger/code stepper, various interesting libraries, better license than ACL
cons: haven't used it enough to know any
- CormanCL
pros: Good concurrency support, get full source code if you buy it.
cons: Win32 only, are they even alive anymore?
All have excellent ANSI Common Lisp support, so your code is portable. FFI, Networking, Concurrency(SMP) are not standardized features, so things vary here, but for FFI and Networking you have compatibility layers which allow you to write de-facto portable code across any of these implementations ( when you use Emacs+SLIME, you can even run multiple ones at the same time, or you could even run an implementation in a VM or a remote machine and connect them via network seamlessly ). Code generation quality(speed/bloat/etc) varies as well. I'd say go with latest SBCL or SVN trunk CCL, they should be good enough for your needs. If you don't care about speed or concurrency just use CLISP. Pretty much all of them have an FFI, and you can use CFFI or UFFI as a compatibility layer if you want a portable FFI. Basically, you can't really go wrong, and if something doesn't suit you, you can just easily switch implementations, unless you wrote some very implementation specific code.