These years in Common Lisp: 2018

It’s been already a little more than a year that I began my Lisp journey. I made quaterly news digests, mainly from reddit’s feed:

Time has come for a yearly overview ! What happened in the Common Lisp world ? Are there (or groundbreaking promising useful fun) projects, articles, discussions, tutorials ?

No need to say, I won’t reference everything we find in the quaterly posts, which don’t list all new projects appearing on Quicklisp (we can find these in the monthly Quicklisp releases) or Github.

I hope this overview will sharpen your interest on what is in my opinion an under-sold and still very promising language and plateform, that I happen to like more and more (and sooo more than Python ;) ).

Happy discoveries.

lisp-lang.org

Documentation

Common Lisp’s online documentation could be more thorough and welcoming. Fortunately, a few of us revived some projects and work on it -my favourite being the Common Lisp Coobook. This year, we got tutorials on:

along with many improvements on other pages, like on getting started and editor support.

Which brings me to it: the editors situation is much more open than you think:

  • The editor of choice is still Emacs with Slime (or Sly),
  • However, we can get started with Emacs and Lisp in 3 clicks with Portacle, a self-contained batteries-included sbcl-included portable Emacs tailored for CL,
  • For Vim and NeoVim we have SLIMV, VLIME, and plugins can be written for NeoVim using cl-neovim.
  • Or if we want an editor written in cl, there’s the self-contained Lem editor, which also works for Python, Go, Rust, Nim, Scheme, HTML, JSX, along with a directory mode, an experimental LSP mode, calc-mode, and more,
  • Not to forget that Mac Os X users can use the Clozure Common Lisp IDE
  • All editions of LispWorks (including the free) include the LW IDE
  • For users of Eclipse IDE, there is the Dandelion plugin
  • For popular editors, the experience is getting very good on Atom and the popular Visual Studio Code can be made to work with CL using cl-lsp.
  • We have an ipython-like REPL (cl-repl),
  • and for interactive notebooks, we have Jupyter kernels and yet another notebook (Darkmatter).
Common Lisp support is getting very good on Atom, but needs a couple PRs merged.

A very welcome improvement is the Common Lisp fundation’s website: https://common-lisp.net/ It got a massive update and is now attractive. We had http://lisp-lang.org/ (don’t miss its success stories section (did you know that pgloader was re-written from Python to CL ? :) )), but common-lisp.net was a googlers’ honey pot.

This website uses two “awesome” lists that were created or massively furnished last year:

  • the Awesome-CL list, updated with hundreds of commits, which hopefully makes for a more discoverable and appealing ecosystem, and
  • Awesome Lisp Companies: it was needed because Lispers didn’t know a lot of companies using CL appart from IRobot, Google’s ITA (powering Kayak, Orbitz and others), Grammatech, YCombinator, Siscog or other dead ones.

Other places to learn Common Lisp include:

We also regularly have new screencasts to enjoy:

  • a lot being from Baggers: he does the following and he streams live nearly weekly
  • little bits of Lisp: short videos to learn Lisp basics
  • lots of bits of Lisp: long videos to dive deep in advanced subjects (macros, CFFI,…)
  • Pushing pixels with Lisp: mostly working with OpenGL
  • and more !
  • Shinmera has lots of videos too, we can see him working on game engines, games, his libraries, Qt applications and more,
  • the CL study group (here, an introduction to Screamer, a non-deterministic programming library)

Implementations

Time is good for Common Lisp implementations. Most date back from decades and already proved what they can do (remember, SBCL is a descendant of the Lisp that went to space). Hence the lack of hype, IMO. Yet, many are in active development, and keep improving. As /u/defunkydrummer observed:

We are lucky to live in a time where Lisp development is still ongoing, many teams carrying the flag of open-source Lisp:
SBCL (new release today)
SICL (last commit 2 hours ago)
ECL (last commit, yesterday),
CLASP (last commit 2 days ago)
CCL (last commit 7 days ago),
CLISP (two weeks ago),
CMUCL (1 month ago)
ABCL (3 months ago)

SBCL has monthly releases. If you read the release notes, you might worry:

the amount of changes in each release is decreasing these years

but, as /u/baggers notes:

I think the commits tell a slightly different tale though. There is always a lot of background ‘making stuff better’ work than won’t appear as the explanation would either be ultra internal and specific or would be super vague and very similar each month (for example ‘stuff is slightly faster’).
For one that would be overly specific this one might make for a good example. It’s grand work, but doesn’t surface in any specific lisp feature, stuff is just better.

Furthermore, a maintainer:

Or the developers are too lazy to describe their changes.

which isn’t a good reason ;)

We got a new release of Corman Lisp, a high performance Windows/32bit specific implementation with a built in IDE,

we have CLASP, targetting C++ through LLVM (see “Lessons Learned Implementing Common Lisp with LLVM”), built with the Cleavir compiler, part of SICL, a very new implementation of Common Lisp with fresh ideas,

we have ABCL targetting the JVM, Embedable Common Lisp, without forgetting active commercial ones, like LispWorks and AllegroCL. While I’m at it, you might want to have a look at MOCL for IOs, Android and OSx.

We got a nice talk by Clozure Common Lisp’s maintainer: this Old Lisp (this one may be the second most used implementation, particularly good for development — super fast compilation times (I heard it compiles itself in seconds), advising, watched objects, its own IDE).

Last note, a SBCL maintainer started a RISC-V port: First RISCy Steps — Porting SBCL to the RISC-V

So: welcome to this new world. It’s bigger than I thought, for sure.

Projects

I only list some projects that can be of interest to anybody. For the full stuff see the quaterly posts !

New projects

An interactive Minecraft engine in Common Lisp. How cool is that ?

Web

For web libraries, see https://github.com/CodyReichert/awesome-cl#network-and-internet

GUI

for GUI libraries: https://github.com/CodyReichert/awesome-cl#gui

Package management

Quicklisp is the de facto package manager, but new projects come to complement it and bypass its limitations:

  • the second version of Ultralisp is available — Ultralisp is an important project that fills a gap. It is a quicklisp distribution which updates every 5 minutes. It is also a Weblocks application!
  • quicksys — installs systems from multiple Quicklisp distributions.

For more options, see Qlot (install and pin libraries locally, like Python’s virtualenv) and Roswell.

Deployment

We can also deploy apps on Digital Ocean, and no need to say that deploying a self-contained executable is easy, connecting to a remote instance too.

Supervize your Common Lisp app like a pro

Music

see also audio and music composition software

(re)Discoveries

Articles

and also

On games:

Other screencasts

Discussion

Learning Lisp

Common Lisp VS …


Enjoy the material, and see you soon !


Thanks to /u/defunkydrummer for proofreading.

Fix or improve this article on Gitlab.