Skip to main content

Awesome Common Lisp

A curated list of awesome Common Lisp libraries.

For awesome software, see lisp-lang.org's success stories and the awesome-cl-software list.

All libraries listed here are available from Quicklisp unless stated otherwise. The ones marked with a ⭐ are so widespread and solid that they became community standards. You can't be wrong with them. This is the case for Quicklisp, BordeauxThreads and such. Libraries denoted with a πŸ‘ are the ones we like and want to promote here at the Awesome-cl list. They proved solid, they may solve a problem better than a community standard but they aren't as widespread, or not considered as stable. For example, we prefer Spinneret over Cl-Who.

Add something new! See the contributing section for adding something to the list.

This is released under the GNU Free Documentation License - its text is provided in the LICENSE file. This repository is also mirrored on NotABug - a fully-free (as in libre) alternative to Github. Preference is given to free software and sellers who aren't evil for physical resources.

Table of Contents

(lambda () (+ _))`. Public domain.

  • f-underscore - a tiny library of functional programming utils. (f_ (+ _ _)) -> (lambda (_) (+ _ _)). Public domain.
  • cl-punch - Scala-like anonymous lambda literals. (mapcar ^(* 2 _) '(1 2 3 4 5)). MIT.

See also CL21 and Rutils.

Non-deterministic, logic programming​

  • cl-prolog2 - Common Interface to ISO Prolog implementations from Common Lisp. MIT.
  • Screamer - augment Common Lisp with practically all of the functionality of both Prolog and constraint logic programming languages. Blog post solving Project Euler puzzles. MIT.
  • Screamer+ - increasing the expressiveness of SCREAMER. MIT.
  • Temperance - logic programming. MIT. A focus on performance, with General Game Playing in mind.

Reactive programming​

Contract programming​

  • quid-pro-quo - a contract programming library in the style of Eiffel’s Design by Contractβ€Šβ„’. Public domain.

Typing​

  • πŸ‘ Coalton - an efficient, statically typed functional programming language that supercharges Common Lisp. MIT.
  • cl-algebraic-data-type - A library for defining algebraic data types in a similar spirit to Haskell or ML. 3-clause BSD.
  • πŸ‘ trivial-types - provides missing but important type definitions such as proper-list, association-list, property-list and tuple. LLGPL.
  • defstar - a collection of macros for easy inclusion of type declarations for arguments in lambda lists. GNU GPL3

Learning and Tutorials

Online​

Beginner​

Intermediate​

Advanced​

Web Development​

Reference​

  • Common Lisp Quick Reference - A distilled, pocket-size version of the ANSI CL spec. Available for download as a PDF.
  • CLHS - The Common Lisp HyperSpec; the ANSI CL standard, in hypertext form.
  • CLOS MOP specification - A modern public domain online version of chapters 5 and 6 of The Art of the Metaobject Protocol
  • Common Lisp Standard Draft (pdf) - The standard draft of the Common Lisp specifications, in a well formatted PDF with a sidebar.
  • Common Lisp the Language - The original standard for Common Lisp before the ANSI spec.
  • Minispec - A friendlier, but less-complete, version of CLHS. Also contains documentation for some commonly-used CL libraries (such as Alexandria).
  • Simplified Common Lisp reference - The simplified version of CLHS.
  • CDR - Common Lisp Document Repository. a repository of documents that are of interest to the Common Lisp community. The most important property of a CDR document is that it will never change: if you refer to it, you can be sure that your reference will always refer to exactly the same document.
    • the Common Lisp Document Repository is hosted at Zenodo.

Offline​

The CLHS is available offline via an archive and as doc sets in Dash, Zeal and Velocity.

Beginner​

Intermediate​

  • ANSI Common Lisp - A thorough, practical covering of the entire language, with exercises. Not recommended as a starter text, due to some caveats.
  • Common Lisp Recipes - Common Lisp Recipes is a collection of solutions to problems and answers to questions you are likely to encounter when writing real-world applications in Common Lisp. Published in 2015.

Advanced​

Other books​

  • Building Problem Solvers (PDF) by Ken Forbus and Johan de Kleer, made available for free by MIT Press - a unique book among standard artificial intelligence texts in combining science and engineering, theory and craft to describe the construction of AI reasoning systems, and including code illustrating the ideas.

Community​

Library Manager

  • ⭐ Quicklisp - A library manager containing many libraries, with easy depencency management. Expat.
  • CLPM - A package manager for Common Lisp that strives to cleanly separate the package manager process itself from the client image that uses it. BSD_2Clause.
  • Ultralisp - A Quicklisp distribution which updates every 5 minutes and to which one can add his project in one click. BSD.
  • πŸ‘Roswell - a Lisp implementation installer, script launcher and more. MIT.
  • Qlot - A project-local library installer, similar to Bundler or Carton. Expat.
  • Quicksys - install systems from multiple Quicklisp distributions. MIT.
  • Quickutil - A utility manager, similar to Quicklisp, but for small utilities rather than whole libraries. 3-clause BSD.

might help:

  • quick-patch - easily override quicklisp projects without using git submodules. MPL-2.0.
  • print-licenses - print licenses used by a project and its dependencies. MIT.

Interfaces to other package managers​

  • linux-packaging - build .deb, .rpm or .pkg packages for your application with a single ASDF declaration. Uses fpm under the hood. MIT.
  • qldeb - Quicklisp systems to debian packages, along with deb-packager (simply create a debian package by defining an s-expression) and an introductory blog post. Both MIT.
  • ql-to-deb - Update cl-* debian packages from Quicklisp releases. WTFPL.
  • dh-quicklisp-buildapp - debhelper utility to let you compile your quicklisp-based Common Lisp code into a buildapp binary in a .deb with almost no effort. MIT.
  • cl-brewer - Homebrew formula builder for (command line) common lisp applications. Public domain.
  • flatpack-common-lisp - A BuildStream project for building Flatpak based runtime environments for Common Lisp applications.

See also asdf-sbcl, a plugin for the universal package manager.

Machine Learning

  • MGL - a machine learning library for backpropagation neural networks, boltzmann machines, gaussian processes and more. MIT.
    • some parts originally contributed by Ravenpack International.
    • used by its author to win the Higgs Boson Machine Learning Challenge.
  • clml - originally developed by Mathematicl Systems Inc., a Japanese company. With a tutorial. LLGPL.
  • antik - a foundation for scientific and engineering computation in Common Lisp. GPL. Also mgl-mat and LLA.

Credit: borretti.me' state of CL ecosystem 2015.

Natural Language Processing

  • cl-nlp - Natural language processing toolset. Apache2.0.
  • babel2 - A Fluid Construction Grammar implementation, computational framework, and unification-based grammar formalism Apache2.0.
  • sparser - A natural language understanding system for English. Eclipse.

Network and Internet

See Cliki for more.

HTTP clients​

  • πŸ‘ Dexador - An HTTP client, that aims at replacing Drakma. MIT.
  • Carrier - A lightweight, async HTTP client built on top of cl-async and fast-http. MIT.
  • fast-http - A fast HTTP request/response parser for Common Lisp. MIT.

HTTP Servers​

  • πŸ‘Clack - A web application environment inspired by Rack and WSGI. LLGPL. Provides a unified interface to a webserver of choice (default is Hunchentoot). With more getting started guide.
  • ⭐ Hunchentoot - A web server. 2-clause BSD
  • zaserve - A portable fork of AllegroServe, by Franz Inc. LLGPL.
  • wookie - Asynchronous HTTP server. Expat.
  • woo - A fast non-blocking HTTP server on top of libev. MIT.
  • cl-http2-protocol - a pure Common Lisp transport agnostic implementation of the HTTP/2 protocol at draft-14. MIT.

Hunchentoot plugins​

  • πŸ‘ easy-routes - a routes handling system on top of Hunchentoot. It supports dispatch based on HTTP method, arguments extraction from the url path, decorators, url generation from route name, etc. MIT.
  • hunchentoot-cgi - a library for executing CGI scripts from the hunchentoot webserver. BSD.
  • hunchentoot-multi-acceptor - Route multiple domains (virtual hosts) on a single hunchentoot acceptor using a single port. Apache2.0.
  • hunchentoot-auth - implementing user authentication with passwords. BSD.
  • hunchentoot-errors - Augments Hunchentoot error pages and logs with request and session information. MIT.

Clack plugins​

For routing, we can also use Snooze (see below).

Web frameworks​

  • Caveman - A powerful web framework. LLGPL. Example projects: Quickdocs
  • ningle - A super-micro web framework. LLGPL. ninglex, an extended and noob-friendly ningle (mostly easier handling of query parameters). MIT.
  • radiance - A web application environment and framework . zlib.

REST-focused frameworks:

  • πŸ‘ Snooze - A RESTful web framework. Web server agnostic. Currently has support for Hunchentoot and Clack. Routes are just functions and HTTP conditions are just Lisp conditions. LLGPL.
  • cl-rest-server - a library for writing REST web APIs. Features validation with schemas, annotations for logging, caching, permissions or authentication, documentation via Swagger, etc. MIT.
  • cl-odata-client - Common Lisp client library for accessing OData services. MIT.

Authentication plugins (in addition to the Clack plugins above):

There are more projects, more or less discontinued but interesting. See the other resources.

Isomorphic web frameworks​

  • CLOG - The Common Lisp Omnificent GUI. Uses web technology to produce graphical user interfaces for applications locally or remotely. BSD_3Clause.
    • CLOG is based on the ideas of GNOGA, a framework the author wrote for Ada and used in commercial production code since 2013.
  • Interactive SSR - ISSR allows you to make interactive web pages without writing client scripting. No knowledge about Javascript or DOM is necessary.
    • it is not unlike Phoenix LiveView or Hotwire.
  • Weblocks - A widgets-based framework with a built-in ajax update mechanism that "solves the JavaScript problem". LLGPL.

Assets management​

  • Rock - an asset manager for Common Lisp. It's basically a combination of Bower and webassets. MIT.

Parsing html​

  • πŸ‘ Plump - A lenient HTML/XML parser, tolerant on malformed markup. zlib. Best used with lquery and clss.

Querying HTML/DOM​

  • πŸ‘ lquery - A jQuery-like HTML/DOM manipulation library. zlib.

See also the XML section below for xpath libraries and more.

HTML generators and templates​

  • πŸ‘ spinneret - Common Lisp HTML5 generator. Expat.
  • ⭐ cl-who - The venerable HTML generator. FreeBSD.
  • ⭐ Djula - A port of Django's template engine to Common Lisp. Expat.
  • eco - Fast, flexible, designer-friendly template engine. Expat.
  • TEN - the completness of Djula meets the usability of Eco. MIT.
  • cl-closure-template - Implementation of Google's Closure templates. LLGPL.
  • flute - An easily composable HTML5 generation library with the most simplistic syntax. MIT.
  • clip - An HTML template processor where the templates are written in HTML. zlib.
  • lsx and markup - Two JSX-like templating engines, where HTML tags are Common Lisp code. markup comes with an Emacs package.

URI handling​

  • quri - Another URI library for Common Lisp. Supports userinfo, IPv6 hostname, encoding/decoding utilities,… BSD_3Clause.
  • cl-slug - a small library to make slugs, mainly for URIs, transform in CamelCase, remove accentuation and punctuation, for english and beyound. LLGPL.

Javascript​

  • ⭐ Parenscript - A translator from Common Lisp to Javascript. 3-clause BSD. See Trident-mode, an Emacs mode that provides live interaction with the browser.unlicence.
    • paren6 - a set of ES6 macros for Parenscript.
  • parse-js - A package for parsing ECMAScript 3. zlib.
  • JSCL - A CL-to-JS compiler designed to be self-hosting from day one. Lacks CLOS, format and loop.
  • CL-JavaScript - A translator from Javascript to Common Lisp. Not available on Quicklisp. Expat.
  • Wuwei - A toolkit to build Ajax-based web pages. MIT.
  • SmackJack - An Ajax Common Lisp Library using parenscript to generate javascript and hunchentoot (for now) as the web server. Also allows a server-side lisp function to call a client-side parenscript one. MIT.
  • remote-js - send JavaScript from Common Lisp to a browser. MIT.
  • sigil - A Parenscript to Javascript command line compiler and REPL. MIT.

Utilities for React:

  • cl-react - Common Lisp (Parenscript) utilities for building web apps in ReactJs. MIT.
  • Panic, a Parenscript library for React. Not in Quicklisp. MIT. Its TodoMVC example.
  • Parenscriptx - Parenscript Macros to aid generating react code. MIT.
  • jscl-react - A web framework for writing react components in common lisp using jscl. No license specified.

See also:

  • trident-mode, an Emacs minor mode for live Parenscript interaction.

Email​

  • trivial-imap - tries to make easy some common cases of working with IMAP servers, like reading emails from the server. A thin wrapper over post-office library (which is a fork of Franz's cl-imap). BSD.
  • mailgun - A thin wrapper to post HTML emails through mailgun.com. unlicence.
  • mito-email-auth - Helper to authenticate a website's users by sending them unique code by email.
  • cl-smtp - CL-SMTP is a simple lisp smtp client.

Websockets​

See more on cliki.

Static site generators​

Deployment​

  • heroku-buildpack-common-lisp - A Heroku buildpack that uses Roswell to compile Common Lisp applications. LGPL3.
  • cube - Kubernetes client library for Common LISP generated from the Swagger specification. MIT.
  • s2i-lisp - Source-to-Image builder image based on CentOS or alternatively RHEL7 for building Common LISP images for OpenShift (and also Docker). It features an up-to-date SBCL with Quicklisp installation, SLIME or SLY integration and allows customization via environment variables. Apache2
  • deploy - A toolkit for binary deployment of Lisp applications, with extra support for foreign shared libraries. zlib.
  • cl-aws-runtime-test - An example of using Common Lisp (SBCL) as a custom runtime on AWS lambda. WTFPL.

See also:

  • Platform.sh has Common Lisp support, so has OVH through their Web PaaS partnership.
  • Heliohost for a free hosting solution.

Monitoring​

  • prometheus.cl - Prometheus.io client. Grafana dashboard for SBCL and Hunchentoot metrics (memory, threads, requests per second,…). MIT.
  • cl-sentry-client - a Sentry client for Common Lisp, the cloud-based error monitoring system. MIT.
  • rollbar.lisp - interface to Rollbar.com, an error tracking software.

Third-party APIs​

  • Aws-sign4 - Common Lisp library for Amazon Web Services signing version 4. GNU GPL3.
  • zs3 - A library for working with Amazon's Simple Storage Service (S3) and CloudFront service. BSD.
  • cl-ses - Library for AWS SES. Expat.
  • north - The successor to the South (Simple OaUTH) library, implementing the full oAuth 1.0a protocol, both client and server sides. Using North you can easily become an oAuth provider or consumer. zlib.
  • avatar-api - Get avatars from Google+, Gravatar and others. Expat.
  • chirp - A Twitter client library. zlib.
  • tooter - a client library implementing the full v1 REST API protocol for Mastodon. zlib.
  • cl-irc - An IRC client library. Expat.
  • cl-mediawiki - a wrapper around the MediaWiki api. MIT.
  • cl-openid - An implementation of OpenID. LLGPL.
  • cl-pushover - Common Lisp bindings to Pushover. MIT.
  • humbler - A Tumblr API interface. zlib.
  • multiposter - post to multiple services simultaneously. zlib.
  • stripe - a client for the Stripe payment system. MIT.

Web project skeletons and generators​

  • cl-cookieweb - a Cookiecutter template to start a web project. BSD_3Clause. Not in Quicklisp.
    • Provides a working toy web app with the Hunchentoot web server, easy-routes, Djula templates, styled with Bulma, based on SQLite, with migrations, an example table definition and a test suite using FiveAM.
  • make-like - an application template builder for LIKE (Lisp In Kubernetes + Emacs) applications. Apache2.0.
    • Makefile, podman support, GitHub Actions, Prometheus metrics support, TOML-style config.ini, easy-route preconfigured with health-check and more.
  • cl-webapp-seed - a simple web application boilerplate. Uses Hunchentoot, cl-who, deploys easily to Heroku. MIT.

Others​

Numerical and Scientific

  • numcl - Numpy clone in Common Lisp. LGPL3.
  • GSLL - GNU Scientific Library for Lisp; allows the use of the GSL from Common Lisp. GNU LGPL2.1.
  • maxima - Computer algebra system. Not available on Quicklisp. GNU GPL3.
  • Xecto - A library for regular array parallelism. 3-clause BSD.
  • Petalisp - an attempt to generate high performance code for parallel computers by JIT-compiling array definitions. It works on a more fundamental level than NumPy, by providing even more powerful N-dimensional arrays, but just a few building blocks for working on them. AGPL-3.0.
  • cl-ana - Common Lisp data analysis library with emphasis on modularity and conceptual clarity. It aims to be a general purpose framework for analyzing small and large scale datasets, including binned data analysis and visualization. GNU GPL3.
  • linear-programming – a library for solving linear programming problems. MIT.
  • avm - Efficient and expressive arrayed vector math library with multi-threading and CUDA support. MIT.
  • array-operations - a collection of functions and macros for manipulating Common Lisp arrays and performing numerical calculations with them. MIT.
  • cl-geometry - a system for two dimensional computational geometry for Common Lisp. MIT.
  • Vellum - Data Frames for Common Lisp. BSD_2Clause.
  • rtg-math - a selection of the math routines most commonly needed for making realtime graphics in lisp (2, 3 and 4 component vectors, 3x3 and 4x4 matrices, quaternions, spherical and polar coordinates). BSD_2Clause.
  • origin - A native Lisp graphics math library with an emphasis on performance and correctness. Includes: vectors, matrices (up to 4x4), quaternions, single/double-float support, destructive/non-destructive operations, shaping & intersections. MIT.

Matrix libraries​

  • magicl - Matrix Algebra proGrams In Common Lisp based on BLAS/LAPACK and Expokit, by Rigetti Computing. BSD_3Clause.
  • lisp-matrix - A matrix package. FreeBSD.
  • 3d-matrices - A library implementing common matrix calculations, with an emphasis on 2x2,3x3, and 4x4 matrices as commonly used in graphics. It provides some numerical functions as well, but those are not the focus. The library is heavily optimised, so it is not made of pretty code. zlib.
  • clem - a matrix library. BSD_2Clause.

Statistics​

  • lisp-stat - an environment for statistical computing, conceptually similar to R, that is also suitable for front-line production deployments. "It grew out of a desire to have an environment for rapidly prototyping analytical and A.I. solutions, and move directly to production environments with minimal friction."
  • common-lisp-stat - Common Lisp statistics library. FreeBSD.

Units​

  • physical-quantities - a library that provides a numeric type with optional unit and/or uncertainty for computations with automatic error propagation. GPL2

Utils​

  • cmu-infix - A library for writing infix mathematical notation in Common Lisp. See also polisher.

Parallelism and Concurrency

  • ⭐ BordeauxThreads - Portable, shared-state concurrency. Expat.
  • ⭐ lparallel - A library for parallel programming. 3-clause BSD.
  • lfarm - distributing work across machines (on top of lparallel and usocket). BSD_3Clause
  • calispel - CSP-like channels for common lisp. With blocking, optionally buffered channels and a "CSP select" statement. ISC-style.
    • "It is complete, flexible and easy to use. I would recommend Calispel over Lparallel and ChanL." @Ambrevar. discussion
  • chanl - Portable, channel-based concurrency. Expat, with parts under 3-clause BSD.
  • cl-async - A library for general-purpose, non-blocking programming. Expat.
  • Moira - Monitor and restart background threads. In-lisp process supervisor. MIT.
  • trivial-monitored-thread - a Common Lisp library offering a way of spawning threads and being informed when one any of them crash and die. MIT.
  • cl-gearman - a library for the Gearman distributed job system. LLGPL.
  • swank-crew - distributed computation framework implemented using Swank Client. BSD_3Clause.
  • cl-coroutine - a coroutine library. It uses the CL-CONT continuations library in its implementation. MIT.
  • STMX - High performance Transactional Memory for Common Lisp. LLGPL.

See also:

  • cl-etcd - Run etcd as an asynchronous inferior process. etcd is a strongly consistent, distributed key-value store. AGPL-3.0.

Actors pattern​

  • πŸ‘ cl-gserver - cl-gserver is a 'message passing' library/framework with actors similar to Erlang or Akka. It supports creating systems that should work reactive, require parallel computing and event based message handling. Apache2.
  • erlangen - Distributed, asynchronous message passing system for Clozure Common Lisp. GNU GPL3.
  • Actors package for LispWorks (announce) MIT.
  • common-lisp-actors - a simple and easy to use Actor system. BSD_2Clause.
  • memento-mori- a library for writing robust, actor-based systems. It draws inspiration from Erlang/OTP, particularly its crash-first approach to high-availability systems, as well as Akka. MIT.

Event processing​

  • simple-tasks - A very simple task scheduling framework. zlib.
  • deeds - Deeds is an Extensible Event Delivery System. It allows for efficient event delivery to multiple handlers with a complex event filtering system. zlib.
  • cl-flow - Data-flowish computation tree library for non-blocking concurrent Common Lisp. MIT.
  • event-glue - simple eventing abstraction. No dependencies. It can be used anywhere you need a generic event handling system. MIT.

Job processing​

  • SBCL's timers, system-wide event schedulers.
  • psychiq - redis-based background job processing for Common Lisp applications. Inspired by Ruby's Sidekiq and compatible with its web UI. LLGPL.
  • cl-cron - A simple tool that provides cron like facilities. GPL3.
  • clerk - a cron-like scheduler with sane DSL. MIT.

Regex

Scripting

Writing, running scripts​

  • πŸ‘ Roswell - a lisp installer and scripting environment (helper, launcher, installer) and more. MIT.
  • cl-all - A script to run Lisp snippets in multiple implementations. This allows you to quickly compare implementation behaviour and differences. zlib.
  • clawk - an AWK implementation embedded into Common Lisp, to search files for lines and perform specified actions on its fields. BSD-style.
  • ScriptL - Shell scripting made Lisp-like! Or, live-coding remote function calls for the shell. Write a command in the REPL, and run it instantly in the shell. LLGPL.

Command-line options parsers​

  • πŸ‘ Unix-opts - a command line options parser with a concise declaration of options. MIT.
  • Adopt - A Damn OPTion parsing library. MIT.
  • Clingon - a rich command-line options parser system.
    • newer, it may have the richest feature set: subcommands, generation of bash completion, support for various kinds of options (integers, booleans, counter, enums…), extensible…

Readline, ncurses and other graphical helpers​

  • cl-readline - a set of functions to edit lines as they are typed in, to maintain a list of previously-entered command lines, to recall and reedit them and perform csh-like history expansion. Emacs and vi editing modes. GPL3.
  • Linedit - Readline-style library that provides customizable line-editing features. MIT-style.
  • cl-charms - an interface to libcurses in Common Lisp. It provides both a raw, low-level interface to libcurses via CFFI, and a more higher-level lispier interface. MIT.
  • replic - helpers to turn existing code into a readline application, with a focus on defining the completion of the commands' arguments. Also comes as a ready to use executable, that transforms a user's lispy init file into readline commands. MIT.
  • cl-ansi-term - print colorized text, horizontal lines, progress bars, (un)ordered lists and tables on ANSI-compliant terminals. GPL3.
  • cl-progress-bar - progress bars, just like in Quicklisp ! MIT.

Shells, shells interfaces​

  • Lish - lish may someday be a lisp shell. GPL3.
    • supports tab-completion of executables in the path and Lisp symbols, allows to write and to mix shell commands and Lisp code, has a tiny REPL and an interactive debugger, and more.
  • shcl - a POSIX-like shell in Common Lisp. Apache2.0.
  • Shelly - execute Common Lisp functions like a shell command, without the need to write a command line arguments parser. And it also can be used as a Make-like build-tool. FreeBSD.
  • cmd - utility for running external programs. Protects against shell interpolation, built with multi-threaded programs in mind, Windows support. MIT.
  • Clesh - extends Common Lisp to embed shell code in a manner similar to perl's backtick. FreeBSD.

System administration​

  • Consfigurator - Lisp declarative configuration management system. You can use it to configure hosts as root, deploy services as unprivileged users, build and deploy containers, and produce disc images. GPL3.
  • Adams - UNIX system administration in Common Lisp. Not unlike Ansible, Chef or Puppet. ISC.

Other scripting utilities​

  • WCL [staled] - allow hundreds of Lisp applications to be realistically available at once, while allowing several of them to run concurrently. WCL accomplishes this by providing Common Lisp as a Unix shared library that can be linked with Lisp and C code to produce efficient applications. For example, the executable for a Lisp version of the canonical Hello World! program requires only 20k bytes on 32 bit x86 Linux. WCL also supports a full development environment, including dynamic file loading and debugging. A modified version of GDB is used to debug WCL programs, providing support for mixed language debugging.

Text Editor Resources

This contains plugins and other goodies for various text editors.

  • Parinfer - Parinfer is a way to edit lisp code that helps to keep both the indentation and the parenthesis balanced. It is easy to start with and yet it offers advanced features Γ  la Paredit. It is available on many editors (Emacs, Vim, Neovim, Atom, Sublime Text, Visual Studio Code, LightTable, CodeMirror,…).

Emacs​

  • ⭐ Slime - Superior Lisp Interaction Mode for Emacs; a full-blown environment for Common Lisp inside of Emacs. Public domain.
  • πŸ‘ Sly - SLY is a fork of SLIME and contains multiple improvements upon it.
  • πŸ‘ Portacle - A portable and multiplatform Common Lisp environment: SBCL, Quicklisp, Emacs, Slime, Git.
  • cl-devel2 - a Docker container for Common Lisp development environment. Ships SBCL, CCL, Roswell and Emacs25 with Slime.
  • Emacs4CL - A tiny Emacs initialization file to quickly set up vanilla Emacs for Common Lisp programming. Comes with a line-by-line explanation of every line of code in the initialization file.
  • slime-star - a SLIME configuration with extensions pre-installed, with also some custom utilities and menus:

Vim & Neovim​

  • SLIMV - Superior Lisp Interaction Mode for Vim; a full-blown environment for Common Lisp inside of Vim. No license specified.
  • Vlime - VLIME: Vim plus Lisp Is Mostly Evil. A Common Lisp dev environment for Vim (and Neovim). MIT.
  • quicklisp.nvim - A Quicklisp frontend for Neovim.
  • Slimv_box - slimv in a Docker container.

Eclipse​

  • Dandelion - a Common Lisp plugin for the Eclipse IDE.

Lem​

  • Lem - a ready to use, Emacs-like, Slime-based editor tailored for Common Lisp development out of the box, as well as other programming languages. With ncurses and Electron interfaces. MIT. See also: an opengl frontend, Lem in Docker, lem-pareto.

Atom​

  • SLIMA allows you to interactively develop Common Lisp code, turning Atom into a pretty good, and actively developped, Lisp IDE. MIT.

Sublime Text​

  • Sublime Text (proprietary) has Common Lisp support with its SublimeREPL and Slyblime packages. Slyblime is an implementation of SLY and it uses the same backend (SLYNK). It ships advanced features including a debugger with stack frame inspection.

VSCode​

Geany (experimental)​

Notebooks​

  • cl-jupyter - A Common Lisp kernel for Jupyter notebooks custom licence.
  • common-lisp-jupyter - A Common Lisp kernel for Jupyter along with a library for building Jupyter kernels, based on Maxima-Jupyter by Robert Dodier which was based on cl-jupyter by Frederic Peschanski. MIT.
  • Darkmatter - A notebook-style Common Lisp environment. MIT.

REPLs​

  • cl-repl - an ipython-like REPL. With completion, shell commands, magic commands, debugger, etc. MIT. With colorthemes.
  • sbcli - a readline REPL for SBCL. With completion, quick commands, optional syntax highlighting (with pygments), and no interactive debugger. GPL3.
  • magic-ed - a tiny editing facility, where you can directly load, edit, manipulate and evaluate file or file content from the REPL, when going to a full IDE is too much. MIT.

Online editors​

  • Judge0 IDE is an online editor which supports Common Lisp (SBCL). MIT.

Apps​

Text Parsers

  • ⭐ esrap - Packrat parser. Expat.
  • cl-yacc - a LALR(1) parser generator. MIT.
  • cl-shlex - simple lexical analyzer for shell-like syntaxes. MIT.
  • smug - parser combinators for Common Lisp. SMUG makes it simple to create quick extensible recursive descent parsers without funky syntax or impenetrable macrology. MIT.
  • parseq - a library for parsing sequences such as strings and lists using parsing expression grammars. Inspired by Esrap. GPL2.
  • texp - A DSL to generate TeX. AGPL-3.0.

Text Processing

  • montezuma - Full-text indexing and search for Common Lisp. Expat.
  • mk-string-metrics - Calculate various string metrics efficiently in Common Lisp (Damerau-Levenshtein, Hamming, Jaro, Jaro-Winkler, Levenshtein, etc). MIT.
  • wiki-lang-detect - Text language identification using Wikipedia data. No license specified.
  • cl-phonetic - Phonetic pattern matching library for Common Lisp (intended to replace the Sylvia library for Python). MIT.
  • cl-string-generator - Generate string from regular expression. MIT.

Tools

These are applications or bits of code that make development in Common Lisp easier without being Common Lisp libraries themselves.

Unit Testing

  • ⭐ FiveAM - Simple regression testing framework. FreeBSD.
  • CLUnit2 - A unit testing library. MIT.
  • Parachute - An extensible and cross-compatible testing framework. With test dependencies, conditions, fixtures and restarts. zlib.
  • Mockingbird - A small stubbing and mocking library for Common Lisp. Can also check wether a stubbed function was called, how many times and with which arguments. MIT.
  • cl-mock - Another mocking library. It has more features than Mockingbird, like pattern matching on the mocked call, etc.
  • Check-it - A QuickCheck-style randomized property-based testing. LLGPL.
  • cl-coveralls - a helper library to post test coverage to Coveralls. See SBCL's code coverage tool. FreeBSD.

Editor utilities:

  • Slite - a SLIme-based TEst runner for FiveAM Tests. Apache2.0
    • Slite interactively runs your Common Lisp tests (at the time of writing only FiveAM is supported). It allows you to see the summary of test failures, jump to test definitions, rerun tests with the debugger, all from inside Emacs.

Utilities

Caching​

  • clache - General caching facility. Cache any Lisp object on disk or in memory. A cache can be persistent or have an expiration time. LLGPL.

Compression / decompression​

Configuration​

  • πŸ‘ py-configparser - reads and writes Python's ConfigParser-like configuration files. MIT.
  • envy - Configuration switcher. FreeBSD.
  • chameleon - a configuration management library shipped with profile support. MIT.

CSV​

  • ⭐ cl-csv - A library for parsing CSV files. 3-clause BSD.
  • cl-decimals - Decimal number parser and formatter. Public domain.
  • auto-text - automatic (encoding, end of line, column width, csv delimiter etc) detection for text files. MIT. See also inquisitor for detection of asian and far eastern languages.

Date and time​

  • ⭐ local-time - A development library for manipulating date and time information in a semi-standard manner. 3-clause BSD.
  • cl-date-time-parser - Parse date-time-string, liberally. Hides the difference between date-time formats, and enables to manage date and time as the one date-time format. MIT.
  • chronicity - A natural language date and time parse, to parse strings like "3 days from now". BSD_3Clause.
  • local-time-duration - Duration processing library built on top of local-time. MIT.
    • see this fork: humanize-duration, that outputs only significant parts of a duration object. Has localization suport.
  • iso-8601-date - Miscellaneous date routines in Common Lisp, based around the ISO 8601 string representation. LLGPL.
  • calendar-date - a Gregorian calendar date library. MIT.
  • periods - manipulating date/time objects at a higher level. With series-compatible data structure. BSD_3Clause.

See also the book Calendrical calculations, by Edward M. Reingold, Nachum Dershowitz, Cambridge Press. It provides Lisp sources.

Data validation​

  • ratify - A collection of utilities to ratify, validate and parse inputs. zlib.
  • clavier - General purpose validation library for Common Lisp. MIT.
  • json-schema - A library for validating data against schemas of drafts 4, 6, 7, and 2019-09 of the JSON Schema standard. LLGPL.
  • sanity-clause - a data serialization/contract library for Common Lisp. Schemas can be property lists or class-based, allowing to check slots' types during make-instance. LLGPL.

Developer utilities​

  • repl-utilities - Ease common tasks at the REPL (print documentation, print external symbols, call hooks when loading a package,…). BSD_2Clause.
  • flight-recorder - a robust REPL history facility.
  • tracer - tracing profiler for Common Lisp, with output suitable for display in Chrome’s/Chromium’s Tracing Viewer. MIT.
  • cl-flamegraph - A wrapper around SBCL's statistical profiler, to generate FlameGraph charts for Common Lisp programs. BSD.
  • cl-debug - a cross-package debug facility. Provides a unified way to enable or disable debug-specific code. Debugging code can be enabled or disabled relative to program features denoted by either a symbol or a keyword. ISC licence.
  • supertrace - Superior Common Lisp trace functionality for debugging/profiling. Trace many functions at once, use before and after hooks. BSD_2Clause.
  • printv - A batteries-included tracing and debug-logging macro. Apache2.
  • journal - a library for logging, tracing, record-and-replay testing and persistence. MIT.

and also:

  • GTFL - A graphical terminal for Lisp, meant for Lisp programmers who want to debug or visualize their own algorithms. A graphical trace in the browser. BSD-style.
  • trivial-with-current-source-from - Helps macro writers produce better errors for macro users. GPL3.
  • trivial-benchmark - Tiny benchmarking library. zlib.
  • glyphs - A library for cutting down the verboseness of Common Lisp in places. GNU GPL3.
  • Lisp REPL core dumper - A portable wrapper to generate Lisp cores on demand to start REPL blazing fast. It can preload provided systems to help build a collection of specialized Lisp cores.

Documentation builders​

  • Staple - a tool to generate documentation pages using an HTML template. Uses the existing README, adds docstrings, crossreferences and links to the CLHS. zlib.
  • mgl-pax - Exploratory programming environment and documentation generator. one may accomplish similar effects as with Literate Programming, but documentation is generated from code, not vice versa. Code is first, code must look pretty, documentation is code. MIT.
    • see this 40ants fork for: a lighter core system, a JavaScript search index, multiple format output, HTML themes, RSS and Atom feed for the Changelog and more.
  • Declt - Reference manual generator for Common Lisp libraries. Builds a texinfo document that can be further processed into various formats, such as HTML or PDF. BSD.
  • Codex - A beautiful documentation system for Common Lisp. MIT.
  • QBook - generates HTML (or LaTeX) formatted code listings of Common Lisp source files. BSD_3Clause.
    • all comments started with 4 ; (";;;;") are interpreted as documentation. Enhance the documentation with headings and directives.
    • QBook acts as "a lightweight literate programming system, where Lisp code is not rendered inline, but in separate sections, and that makes the document more pleasant to navigate." @mmontone
  • sphinxcontrib-cldomain - Extending Sphinx to cover Common Lisp. To build documentation with the same ease as sphinx would a Python project. GPL3
  • cl-bibtex - A compatible re-implementation of the BibTeX program in Common Lisp, with a BST-to-CL compiler. GNU LGPL2.1.

See also:

  • docbrowser - a server that generates documentation for the loaded systems on the fly.
    • Its main page presents a list of all loaded systems in your Lisp image. Click on one system, and you get a page with three panes: functions, classes and variables. Click on a function to see its source, in context, with line numbers. Click on classes to see their slots and specializing functions.

An overview blog post with even more documentation generators: https://lisp-journey.gitlab.io/blog/overview-of-documentation-generators/

You might also like: literate programming systems.

Files and directories​

  • ⭐ uiop and its pathname package (replaces cl-fad). uiop is part of ASDF3 and as thus is shipped in many implementations. MIT.
  • osicat - A lightweight operating system interface on POSIX-like systems (directory iteration and deletion, environment variables, file permissions, etc) Expat.
  • pathname-utils - A collection of utilities to help with pathname operations. zlib.
  • ppath - Common Lisp's implementation of the Python's os.path module. BSD.
  • archive - a library for reading and creating archive (tar, cpio) files. BSD_3Clause. A pure Common Lisp replacement for the tar program.
  • mmap - Portable mmap file memory mapping utility library. zlib.
  • fof - File-object finder Common Lisp library. Enable rapid file search, inspection and manipulation. GPL3.

File watching libraries:

  • cl-inotify - interface to the Linux inotify API. Simplified BSD License.
  • cl-fswatch - an CFFI wrapper of fswatch, a cross-platform file change monitor. ISC.

Git​

  • legit - an interface to the Git binary. zlib.
  • git-api - Common Lisp library to access git repository. It doesn't need git or libgit installed. BSD.

i18n​

  • cl-i18n - an i18n library. Load translations from GNU gettext text or binary files or from its native format. Localisation helpers of plural forms. LLGPL.
  • gettext - a port of the gettext runtime to Common Lisp. GPL3.
  • translate - seamless language localization. LLGPL.
  • enchant - bindings for the Enchant spell-checker library. Public domain.
  • oxenfurt - A client library for the Oxford dictionary API. zlib.
  • language-codes - A database library for ISO language codes. zlib
  • system-locale - A library to retrieve the user's preferred language, so that your application may choose a sensible default. zlib.
  • multilang-documentation - Allows writing docstrings in multiple languages, for truly internationally documented libraries. zlib.

Linting, code formatting​

and also: lisp-format and cl-indentify.

Literate programming​

  • literate-lisp - Load Common Lisp code blocks from Emacs' Org files. MIT.
  • erudite - Literate Programming System built with interactive development in mind. MIT.

Logging​

  • ⭐ log4cl - Logging framework modelled after Log4J. Apache2.0. Advanced integration with Slime.
  • verbose - A fast and highly configurable logging framework. zlib.
  • a-cl-logger - Logging library providing context sensitive logging of more than just strings to more than just local files or output streams. Features logstash support, json support, logger hierarchies, context sensitive logging, objects printed as an inspectable presentation,…

To third parties:

See also: extensive comparison of logging libraries.

Markdown​

  • 3bmd - a markdown -> "▁▁▂▃▅▇". MIT.

See also the chart facilities of IUP and ltk-plotchart (GUI section).

Project skeletons​

  • cl-project - General modern project skeletons. LLGPL.
  • cl-project-with-docs - uses Sphinx and reStructured text to render nice and readable HTML documentation. BSD.
  • cl-cookieproject - Generate a ready-to-use Common Lisp project. Not in Quicklisp. BSD_3Clause.
    • test definitions, entry point to run from sources, build a binary, Roswell integration…

Security​

XML​

  • CXML - XML parser and serializer, with a range of extension libraries. LLGPL.
    • πŸ‘ has an incremental parser, allowing to parse big files.
    • see the FXML fork, with fixes and new features. You should use it if your are parsing potentially ill-formed or malicious XML, or if you need to use Klacks with namespaces.
  • Plump - A lenient XML parser. zlib.
  • xpath (homepage - Implementation of the XML Path Language (XPath) Version 1.0. BSD_2Clause.
  • s-xml - A basic parser. LLGPL.
  • xmls - A small, simple, non-validating XML parser. 3-clause BSD.
  • cl-feedparser - A Common Lisp (RSS, Atom) feed parser. LLGPL
  • Buildnode - A common lisp library to ease interaction with CXML-dom, such as building Excel spreadsheets. BSD.

Other​

This contains anything which doesn't fit into another category.

Contributing

Your contributions are always welcome! Please submit a pull request or create an issue to add a new framework, library or software to the list.

The rules we (try to) respect are the followings:

  • by default, add a library to the end of its section.
  • absolute de-facto libraries, like BordeauxThreads or Quicklisp, should be denoted with a ⭐ (Unicode code U+2B50).
  • two libraries very similar in scope should be side by side, or in a section of their own.
  • do some curation based on your experience and the state of the library's documentation. We do not aim at listing every existing CL library (see Cliki for that) nor to list every "popular" library (see Quicklisp stats).
  • as such, the libraries we like best are marked with a πŸ‘ (1F44D unicode character). See also the signs' explanation in the introduction.

Contribute to this list: https://github.com/CodyReichert/awesome-cl