Personaly i found abcl a bad experience.
Thoughts on ecl & clisp ?
sbcl works nice & fine. But i’t’s the only lisp implementation i know.
There are good books on racket-scheme & chez-cheme.
The only book i know for lisp is, “Common lisp , a gentle introduction to symbolic computing”.
TL;DR: Use SBCL or CCL. Others—maybe, but likely in their own specific niches.
I want to give more chances to implementations there are, so here’s my experience, in the order of preference:
I haven’t tried Clasp, Corman, CMUCL, and LispWorks. So no review for them. I tried GCL, but let’s not talk about that.
It is “SBCL or proprietary” nowadays. LW and ACL are fine but are pricy and well, proprietary.
CCL is all but dead.
ECL has a kind of limited niche, and is not as advanced as SBCL(e.g.: MOP). Same goes for ABCL. Also, ABCL is kind of slow.
Clasp is somewhat interesting, but it also has a limited niche (C++ interop) and is also not as advanced as SBCL.
GNU implementations are dead(GCL, CLISP)
Everything else is as dead as GNU implementations.
Yeah, that sums it well enough. I pin my hopes on ECL and Clasp because of portability and active development.
Can I ask what you mean by CLISP being dead? The last stable release was 10y ago yes, but development continues to this day and beta releases are available. Nixpkgs actually ships a beta version by default now.
I maintain a Nix scope with hundreds of Common Lisp packages and I am actually about to merge a dev branch that introduces CLISP support for all packages & their tests; it holds its own pretty well: https://github.com/hraban/cl-nix-lite/tree/clisp. see the list of all packages in the lisp-packages-lite.nix file).
CLISP development: https://gitlab.com/gnu-clisp/clisp
Well, I was judging by its official page and Sourceforge activity, which seems negligible. However, Gitlab also does not seem very active (6 commits this year, despite lots of open bugs). The development is almost stalled. It is on life support, at best.
specifically, what is the diff between SBCL repl experience and CCL?
Without additional packages, the sbcl repl doesn’t support history nor sensible editing.
The best REPL is Emacs/Sly, anyways.
I don’t know how much they consider it complete and how much they just don’t work on it, but there are some updates from time to time; I see the creator Bruno is pushing fixes from time to time.
:-) I would be interested to hear the experience. I am aware of it, but I haven’t had time to try it myself. They also seem to be on very sporadic development.
I personally haven’t tried Clasp, CMUCL, CLisp and GCL yet; I just don’t have time. It takes time to try everything properly, build it etc, so I am currently just using sbcl; but I would be interested to know how other implementations compare in terms of completeness, extras they offer, performance, correctness etc. I would even watch a YT video if some YouTuber was interested in making a review wink wink you know who you are :).
CCL is mostly only on life support. The native port to the Apple Silicon Macs isn’t under way. CCL isn’t making any progress.
I doubt that this is generally the case.
Didn’t know it’s that bad 😢 A shame—CCL is a nice piece of work.
I’ve been overly generic, I guess. What I meant was answering a (supposed) OP’s request for raw implementation usability. Which is REPL, introspection facilities, SLIME/SLY integration. Allegro is not perfect when viewed from this perspective. Proprietary implementation makes it hard to inspect what’s going on in the image and optimize the code comprehensively:
disassemble
is useless.Inspection is locked to what they provide—even SLIME/SLY merely uses the implementation-provided function for inspected parts. On other implementations, SLIME/SLY provides a lot of auxiliary info that implementation doesn’t explicitly provides.
In general, you can’t override the useful parts of the REPL easily: defining new REPL commands is a pain, building GUI tools inspecting the image is either parsing the unreliable raw output of Allegro-provided functions or giving up and using what they provide.
Given that OP likely asked about the general development experience, and that I’ve done a lot of work with basic text REPL interaction on all the implementations I listed above—Allegro is not the ideal basis, especially for learning.
The documentation and the additional products they provide is good, but that’s beyond the basics that OP is probably interested in.
Fair, I’ve been overly generic too. To me, the basic inspection and interaction is smoother at least on SBCL and CCL, which is, like, two out of five? somewhat maintained implementations.
If I were a paying Franz customer and I would be interested in SLIME/SLY improvements, I would kindly ask them to provide it. Maybe they would then just do it or ask the customer to pay for it. That’s what technical support is for.
Second: as a Franz customer one could get the source code for much of the product. I’m not a customer, but I guess this possibility still exists.
I think it can actually be the opposite. Among new Lisp users GNU Emacs is often cited as a hurdle.
Allegro CL comes with an GUI based IDE on Linux, Windows, and Web browsers. This makes it possible to use it without GNU Emacs + SLIME/SLY. I consider that to be a feature. The IDE of Allegro CL has a bunch of features: https://franz.com/support/documentation/10.1/doc/cgide.htm#menus-dialogs-1
Best: the stuff is written all in Allegro CL itself and can be reused.
Oh wait, it really ships with a GUI-based IDE… I’m convinced—Allegro is good, especially when paid. When talking about free version, my non-introspection comments still apply, but they are kind of implied for a free version of proprietary product.
CMUCL is basically a worse version of SBCL. SBCL is a fork of CMUCL with the goal of being more maintainable. Some things have been backported between the two, and there maybe a few things present in CMUCL that aren’t in SBCL, but I think most of the interesting things have been added back in.
Clasp is to C++ like what ABCL is to Java. I haven’t done much more that fire it up to see if it would run, but it’s C++ integration looks fantastic.
CMUCL is also way behind it platform support. CMUCL is mostly limited to being a 32bit application (IIRC). SBCL OTOH supports various 64bit platforms, incl. ARM64 on Linux and macOS.