6

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 :)

NeuronQ
  • 221
  • 3
  • 8
  • Take a look at CCL. – danlei Jan 20 '13 at 17:58
  • @danlei nice to know about it. how would it compare to SBCL? (I found that now there's a SBCL fork with threading support even on Windows) – NeuronQ Jan 20 '13 at 20:31
  • I haven't used SBCL for quite some time – I'm afraid I can't say much about its recent development. – danlei Jan 20 '13 at 20:37
  • It's hard to imagine how a programming language compiler could compel its results to be released as GPL. That would be like requiring Word documents edited by OpenOffice to be released under the GPL (if OpenOffice were GPL'd). Makes no sense. That said, the answer [provided here](http://programmers.stackexchange.com/a/184266/1204) seems to adequately address those issues. – Robert Harvey Jan 22 '13 at 15:38
  • @RobertHarvey yep, I asked that Q actually, realizing that I should keep separately after writing this one. indeed apart from the mind-boggling weirdness of their license requiring the user programs to not "rely on CLISP internals" in order to not be considered "derived works" in the sense used in the GPL, one can write commercial software in CLISP. Though most people don't seem to consider CLISP "production quality" as far as I hear, so it's mostly CMUCL vs SBCL vs Alegro... Danlei above suggested CCL but can't seem to find that much on it or from people using it... – NeuronQ Jan 22 '13 at 16:26
  • @NeuronQ "so it's mostly CMUCL vs SBCL vs Alegro..." CMUCL doesn't run under windows. As for CCL, you can substitute every occurence of "SBCL" in jimwise's answer (except his disclaimer) by "CCL", and you can also get commercial support for it if needed. – danlei Jan 25 '13 at 17:52
  • 1
    Also, what did you search for concerning CCL and didn't find? Documentation is online, and if you have a really CCL-specific problem, you can ask it on their mailing list (openmcl-devel@clozure.com), or on #ccl@freenode. – danlei Jan 25 '13 at 18:06
  • @danlei I was referring to reports from people actually using it in production... but I did my homework better and indeed, one can substitute SBCL/CCL in most contexts. – NeuronQ Jan 25 '13 at 20:51
  • @NeuronQ One of the more well-known users in production would be ITA (and thus Google), where it is used for parts of their airline management software. They use SBCL too, by the way. – danlei Jan 25 '13 at 23:06
  • @danlei do you happen to know anything helpful in choosing one over another? (CCL vs SBCL) ...only thing I could find is compilation speed – NeuronQ Jan 26 '13 at 11:05
  • @NeuronQ As I explained [in a recent answer](http://programmers.stackexchange.com/a/184187/6759), I picked CCL because I preferred it in interactive use when I compared different implementations, and stuck with it. SBCL, on the other hand, has nice type inference (for a CL implementation), and is pretty fast/better at number crunching – at least last time I checked. – danlei Jan 26 '13 at 11:36

1 Answers1

6

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

jimwise
  • 7,433
  • 1
  • 30
  • 32