And 2022 is over. The Common Lisp language and environment are solid and stable, yet evolve. Implementations, go-to libraries, best practices, communities evolve. We don’t need a “State of the Ecosystem” every two weeks but still, what happened and what did you miss in 2022?

This is my pick of the most exciting, fascinating, interesting or just cool projects, tools, libraries and articles that popped-up during that time (with a few exceptions that appeared in late 2021).

This overview is not a “State of the CL ecosystem” (HN comments (133)) that I did in 2020, for which you can find complementary comments on HN.

I think this article (of sorts) is definitely helpful for onlookers to Common Lisp, but doesn’t provide the full “story” or “feel” of Common Lisp, and I want to offer to HN my own perspective.

And, suffice to say, I tried to talk about the most important things, but this article (of sorts) is by no means a compilation of all new CL projects or all the articles published on the internet. Look on Reddit, Quicklisp releases, Github, and my favourite resources:

If I had to pick 3 achievements they would be:

  • SBCL developments: SBCL is now callable as a shared library. See below in “Implementations”.
  • a new 3D graphics project: Kons-9: “The idea would be to develop a system along the lines of Blender/Maya/Houdini, but oriented towards the strengths of Common Lisp”. And the project progresses at a good pace.
  • CLOG, the Common Lisp Omnificent GUI. It’s like a GUI framework to create web apps. Based on websockets, it offers a light abstraction to create fully-dynamic web applications, in Common Lisp. It has lots of demos to create websites, web apps, games, and it ships a complete editor. For development, we can connect our Lisp REPL to the browser, and see changes on the fly. The author had a similar commercial product written in Ada, discovered Common Lisp, and is now super active on this project.

Let’s go for more.

Thanks to @k1d77a, @Hexstream, @digikar and @stylewarning for their feedback.

Table of Contents

Documentation

A newcomer to Lisp came, asked a question, and suddenly he created a super useful rendering of the specification. Check it out!

But that’s not all, he also started work on a new Common Lisp editor, built in Rust and Tauri, see below.

We continue to enrich the Common Lisp Cookbook. You are welcome to join, since documention is best built by newcomers for newcomers.

A resurrected project:

Also:

Implementations

We saw achievements in at least 7 8 implementations.

New implementation! It’s 2022 and people start new CL implementations.

  • NPT - an implementation of ANSI Common Lisp in C.

See also:

  • LCL, Lua Common Lisp - The goal of this project is to provide an implementation of Common Lisp that can be used wherever an unmodified Lua VM is running.
    • not a complete implementation.

They are doing great work to revive a Lisp machine:

Medley Interlisp is a project aiming to restore the Interlisp-D software environment of the Lisp Machines Xerox produced since the early 1980s, and rehost it on modern operating systems and computers. It’s unique in the retrocomputing space in that many of the original designers and implementors of major parts of the system are participating in the effort.

Paolo Amoroso blog post: my encounter with Medley Interlisp.

Jobs

I won’t list expired job announces, but this year Lispers could apply for jobs in: web development(WebCheckout, freelance announces), cloud service providers (Keepit), big-data analysis (Ravenpack, and chances are they are still hiring)), quantum computing (HLR Laboratories), AI (Mind AI, SRI International), real-time data aggregration and alerting engines for energy systems (3E); for a startup building autism tech (and using CLOG already); there have been a job seeking to rewrite a Python backend to Common Lisp (RIFFIT); there have been some bounties; etc.

Prior Lisp experience was not 100% necessary. There were openings for junior and senior levels, remote and not remote (Australia for “a big corp”, U.S., Spain, Ukraineโ€ฆ).

Comes a question:

I remind the reader that most Lisp jobs do not have a public job posting, instead candidates are often found organically on the community channels: IRC, Twitter, Discord, Redditโ€ฆ or teams simply train their new developer.

In 2022 we added a few companies to the ongoing, non-official list on awesome-lisp-companies. If your company uses Common Lisp, feel free to tell us on an issue or in the comments!

For example, Feetr.io “is entirely Lisp”.

Lisp was a conscious decision because it allows a small team to be incredibly productive, plus the fact that it’s a live image allows you to connect to it over the internet and poke and prod the current state, which has really allowed a much clearer understanding of the data.

They post SLY screenshots on their Twitter^^

Evacsound (HN):

We’re using CL in prod for an embedded system for some years now, fairly smooth sailing. It started out as an MVP/prototype so implementation was of no concern, then gained enough velocity and market interest that a rewrite was infeasible. We re-train talent on the job instead.

Pandorabots, or barefootnetworks, designing the Intel Tofino programmable switches, and more.

Projects

Language libraries

Editors, online editors, REPLs, plugins

New releases:

Concurrency

See also lisp-actors, which also does networking. It looks like more of a research project, as it doesn’t have unit-tests nor documentation, but it was used for the (stopped) Emotiq blockchain.

Discussions:

Databases

More choices: awesome-cl#databases.

Delivery tools

There has been outstanding work done there. It is also great to see the different entities working on this. That includes SBCL developers, Doug Katzman of Google, and people at HRL Laboratories (also responsible of Coalton, Haskell-like on top of CL).

Have you ever wanted to call into your Lisp library from C? Have you ever written your nice scientific application in Lisp, only to be requested by people to rewrite it in Python, so they can use its functionality? Or, maybe you’ve written an RPC or pipes library to coordinate different programming languages, running things in different processes and passing messages around to simulate foreign function calls.

[โ€ฆ] If you prefer using SBCL, you can now join in on the cross-language programming frenzy too.

Games

Kandria launches on Steam on the 11th of January, in two days!

๐ŸŽฅ Kandria trailer.

Graphics, GUIs

We saw the release of fresh bindings for Gtk4.

We had bindings for Qt5โ€ฆ but they are still very rough, hard to install so far.

Also:

History:

But an awesome novelty of 2022 is Kons-9.

Kons-9, a new 3D graphics project

๐Ÿš€ A new 3D graphics project: Kons-9.

The idea would be to develop a system along the lines of Blender/Maya/Houdini, but oriented towards the strengths of Common Lisp.

I’m an old-time 3D developer who has worked in CL on and off for many years.

I don’t consider myself an expert [โ€ฆ] A little about me: โ€ข wrote 3D animation software used in โ€œJurassic Parkโ€ โ€ข software R&D lead on โ€œFinal Fantasy: The Spirits Withinโ€ movie โ€ข senior software developer on โ€œThe Hobbitโ€ films.

Interfaces with other languages

  • py4cl2-cffi: CFFI based alternative to py4cl2.
    • it does one big new thing: it supports passing CL arrays by reference. That means we actually have access to numpy, scipy, and friends.
    • “If py4cl2-cffi reaches stability, and I find that the performance of (i) cffi-numpy, (ii) magicl, as well as (iii) a few BLAS functions I have handcrafted for numericals turn out to be comparable, I might no longer have to reinvent numpy.” @digikar
  • Small update to RDNZL (CL .NET bridge by Edi Weitz)
    • forked project, added support for Int16, fixed Int64, re-building the supporting DLLs.
    • see also: Bike
  • jclass: Common Lisp library for Java class file manipulation

For more, see awesome-cl.

Numerical and scientific

  • ๐Ÿš€ new Lisp Stats release
    • “emphasis on plotting and polishing of sharp edges. data-frames, array operations, documentation.”
    • HN comments (55)
    • ” I’ve been using lisp-stat in production as part of an algorithmic trading application I wrote. It’s been very solid, and though the plotting is (perhaps was, in light of this new release) kinda unwieldy, I really enjoyed using it. Excited to check out the newest release.”
    • “For example, within Lisp-Stat the statistics routines [1] were written by an econometrician working for the Austrian government (Julia folks might know him - Tamas Papp). It would not be exaggerating to say his job depending on it. These are state of the art, high performance algorithms, equal to anything available in R or Python. So, if you’re doing econometrics, or something related, everything you need is already there in the tin.”
    • “For machine learning, there’s CLML, developed by NTT. This is the largest telco in Japan, equivalent to ATT in the USA. As well, there is MGL, used to win the Higgs Boson challenge a few years back. Both actively maintained.”
    • “For linear algebra, MagicCL was mention elsewhere in the thread. My favourite is MGL-MAT, also by the author of MGL. This supports both BLAS and CUBLAS (CUDA for GPUs) for solutions.”
    • “Finally, there’s the XLISP-STAT archive. Prior to Luke Tierney, the author of XLISP-Stat joining the core R team, XLISP-STAT was the dominate statistical computing platform. There’s heaps of stuff in the archive, most at least as good as what’s in base R, that could be ported to Lisp-Stat.”
    • “Common Lisp is a viable platform for statistics and machine learning. It isn’t (yet) quite as well organised as R or Python, but it’s all there.”
  • numericals - Performance of NumPy with the goodness of Common Lisp
  • MGL-MAT - a library for working with multi-dimensional arrays which supports efficient interfacing to foreign and CUDA code. BLAS and CUBLAS bindings are available.
  • hbook - Text-based histograms in Common Lisp inspired by the venerable HBOOK histogramming library from CERN.

New releases:

  • Maxima 5.46 was released.
    • “Maxima is a Computer Algebra System comparable to commercial systems like Mathematica and Maple. It emphasizes symbolic mathematical computation: algebra, trigonometry, calculus, and much more.”
    • see its frontends, for example WxMaxima.

Call to action:

Web

Screenshotbot (Github) was released. It is “a screenshot testing service to tie with your existing Android, iOS and Web screenshot tests”.

It is straightforward to install with a Docker command. They offer more features and support with their paid service.

LicensePrompt was released. It is “a single place to track all recurring software and IT expenses and send relevant reminders to all interested people”. It’s built in CL, interface with HTMX.

Libraries:

  • jingle: Common Lisp web framework with bells and whistles (based on ningle)
    • jingle demo: OpenAPI 3.x spec, Swagger UI, Docker and command-line interface app with jingle.
  • ciao: Ciao is an easy-to-use Common Lisp OAuth 2.0 client library. It is a port of the Racket OAuth 2.0 Client to Common Lisp.
  • stepster: a web scraping library, on top of Plump and Clss (new in QL)
  • openrpc: Automatic OpenRPC spec generation, automatic JSON-RPC client building
  • HTTP/2 implementation in Common Lisp

Skeletons:

  • cl-cookieweb: my project skeleton to start web projects. Demo in video. I am cheating, the bulk of it was done in 2021.
    • “Provides a working toy web app with the Hunchentoot web server, easy-routes, Djula templates, styled with Bulma, based on SQLite, with migrations and an example table definition.”
    • if you don’t know where to start for web dev in CL, enjoy all the pointers of this starter kit and find your best setup.
    • see also this web template by @dnaeon, and check out all his other Lisp libraries.

Bindings:

  • ๐Ÿ‘ lisp-pay: Wrappers around various Payment Processors (Paypal, Stripe, Coinpayment)
  • lunamech-matrix-api: Implementation of the Matrix API, LunaMech a Matrix bot

Apps:

  • Ackfock - a platform of mini agreements and mini memos of understanding (built with CLOG, closed source).
  • todolist-cl: a nice looking todolist with a web UI, written in Common Lisp (and by a newcomer to CL, to add credit)

I don’t have lots of open-source apps to show. Mines are running in production and all is going well. I share everything on my blog posts. I also have an open-source one in development, but that’s for the 2023 showcase :D

CLOG

๐Ÿš€ The awesome novelty of 2022 I spoke of in the introduction is CLOG, the Common Lisp Omnificent GUI:

The CLOG system browser

I know of one open-source consequent CLOG app: mold-desktop, in development.

I’m developing a programmable desktop and a bookmarks manager application with CLOG. I think I know one of the things that make CLOG user interfaces so easy to develop. It is that they are effortlessly composable. That’s it for now :)

@mmontone

New releases

There are lots of awesome projects in music composition, including OpusModus and OpenMusic which saw new releases. I also like to cite ScoreCloud, a mobile app built with LispWorks, where you whistle, sing or play your instrument, and the app writes the music score O_o

See awesome-cl and Cliki for more.

(re) discoveries

Articles

Graphics

Tooling

Scripting

Around the language

History:

Call for action:

Screencasts and podcasts

New videos by me:

by Gavin Freeborn:

KONS-9 series:

CLOG series:

CL study group:

Others:

and of course, find 3h48+ of condensed Lisp content on my Udemy video course! (I’m still working on new content, as a student you get updates).

Aside screncasts, some podcasts:

Other discussions

Community

Learning Lisp

Common Lisp VS โ€ฆ


Thanks everyone, happy lisping and see you around!