Common Lisp Implementations – threading and multiplatform

common-lispconcurrencylispmulti-platform

I'm learning Common Lisp, mostly as a "mind gym" hobby thing, but I want to end up with a set of skills that would also be usable "in real life", because when you learn a language you also accumulate knowledge about module and package management, deployment and stuff, whether you like it or not, so I want to learn with a CL implementation that is also usable in production. So my question is:

What CL implementation is most usable "in production", having attributes like these? :

  • it's multi-platform – one should be able to use the same language implementation and languages on a Linux server, a Windows dev machine and a MacOS one (the coolest thing would be being able to also compile for Android, Windows Phone and RT and maybe even iOS)
  • it has good concurrency, parallelism, multi-threading features – and these features work cross-platform, otherwise it doesn't count
  • it's easy to interface with other languages – working with C libraries is a must, but anything else, like an easy CL-Python interface would be nice

I insist on the multi-platform part because I know that one of the serious arguments for Reddit ditching CL (CMUCL – btw, I know SBCL is fork of CMUCL, but how do they compare?) was that developers couldn't just use their Macs to develop without being ssh'd into a dev server environment (quote: "On my Mac, my choices of threaded Lisp implementations was limited to OpenMCL, and in FreeBSD it's CMUCL."). Yeah, one can use a dev VM, but still…


Note #1: I was close to settling on CLISP but I don't know about its concurrency features, and I also came across this: "it all-but-forces your code to be released as GPL" (I can't understand what this means or how can a languages's license become forced on your code, but I'm not fluent in legalese…).

Note #2: I'm not really fond of the JVM, and if I were to use a Lisp on it it would be Clojure and nothing else, so no JVM Lisps suggestions, please 🙂

Best Answer

Disclaimer: I'm a (minor) contributor to SBCL, but I was a user first. As a happy user of CLISP, CMUCL, and SBCL, here's why SBCL is my "go to" CL implementation:

Steel Bank Common Lisp meets the criteria you mention:

  • Runs on MacOS, Windows, and Linux (among other platforms)

  • Provides an identical API for threading and concurrency control on all of these platforms

  • Has a comprehensive foreign function interface to allow interfacing with C

In addition, SBCL is a good Lisp environment in general:

  • it's a native Lisp -- no JVM, no bytecode

  • it's well supported by SLIME and Quicklisp

  • it's a mature and complete implementation

  • it's actively developed, and I've seen good turnaround when I've hit bugs

Related Topic