You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
vindarel 2a70d359aa new Function extensions subsection: hooks, cl-advice 4 days ago
.travis.yml Remove commands from .travis.yaml 10 months ago
LICENSE Initial commit 4 years ago
Makefile Remove bad commands from Makefile 10 months ago
README.md new Function extensions subsection: hooks, cl-advice 4 days ago

README.md

Awesome Common Lisp Awesome Assertible status

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

Audio

  • Open Music - a visual programming, computer-aided composition environment. GPL3.
  • OM7 - a new implementation of the OpenMusic visual programming and computer-aided composition environment including a number of improvements on graphical interface, computational mode, and connection to external software libraries. GPL3.
  • Incudine - Music/DSP programming environment for Common Lisp. Useful to design software synthesizers or sound plugins from scratch. It is also a compositional tool that allows to produce high quality sounds controllable at the sample level, defining and redefining the digital signal processors and the musical structures on-the-fly.
  • cl-collider - A SuperCollider client for CommonLisp. With a tutorial and live coding demos. Public domain.
  • csound - A sound and music computing system. Includes CFFI and FFI interfaces for Common Lisp.
  • CLM - Common Lisp Music is a music synthesis and signal processing package in the Music V family. It provides much the same functionality as Stk, Csound, SuperCollider, PD, CMix, cmusic, and Arctic — a collection of functions that create and manipulate sounds, aimed primarily at composers (in CLM’s case anyway).
  • cl-patterns - a system for composing music via Lisp code, heavily inspired by SuperCollider’s patterns system, with aims to implement much of it, but in a more robust, expressive, consistent, reflective, and lispy way. Audio output through SuperCollider, with preliminary support for Incudine, and MIDI through ALSA.
  • cl-openal - bindings for the OpenAL audio library. Public domain.
  • Common Music - the repository of an ancient version of Common Music (version 2.12.0), the presumably last version which ran on Common Lisp dating from around 2007-09, before work on Common Music shifted to (scheme-based) cm3.
  • cm-incudine - extends Common Music 2 with realtime capabilities. GPL2.
  • Mégra - A mini-language to make music with variable-order markov chains and some other stochastic shenanigans. GPL3.
  • Music - A framework for musical expression in Lisp with a focus on music theory (built from scratch, unrelated to Common Music).
  • rq - A library for rhythm transcription in OpenMusic (version 6.10 and later). demo video. GPL3.
  • scheduler - The time based musical event scheduler for Common Lisp. Apache2.0.
  • mixalot - Loosely-coupled collection of audio libraries for mp3, ogg vorbis, flac. Used for the Shuffletron music player.
  • osc - an implementation of the Open Sound Protocol. LGPL2.1.
  • Harmony - A real-time sound processing and playback system. Artistic License 2.0.

Build Systems

  • :star: ASDF - Another System Definition Facility; a build system for Common Lisp. Expat.
  • asdf-linguist - Extensions for ASDF. Expat.
  • asdf-viz - a tool to visualize the library dependencies of ASDF systems, the call graph of a function and the class inheritances. LLGPL.

Compilers, code generators

C, C++

  • cmacro - Lisp macros for C. MIT.
  • C-mera - a source-to-source compiler that utilizes Lisp’s macro system for meta programming of C-like languages. GPL3.
  • lispc - a powerful “lispsy” macrolanguage for C. MIT.
  • ecrepl - an interactive REPL for the C language. No license specified.

Crypto

Cryptocurrencies

  • cl-monero-tools - Common Lisp toolbox to work with the Monero cryptocurrency. GPL3. Not in Quicklisp.
  • emotiq - a next-generation blockchain with an innovative natural-language approach to smart contracts. MIT.
  • peercoin-blockchain-parser - parse the blockchain contained in a file and export some of its data to a text file, a SQL script or a database. It can also create a database using the RPC of a Peercoin daemon as source of data instead of a blockchain file. LGPL3. Not in Quicklisp.
  • peercoin-calculator - This program gives you the probability of generating a POS or POW block within 10 minutes, 24 hours, 31 days, 90 days and 1 year, as well as the reward that can be expected. GUI in Qt. GPL3. Not in Quicklisp.
  • peercoin-vote - A voting system based on data from the blockchain (addresses and balances). GPL3. Not in Quicklisp.

Database

ORMs

Persistent object databases

  • bknr.datastore - a CLOS-based lisp-only database in RAM with transaction logging persistence. licence. (see also chap. 21 of “Common Lisp Recipes”)
  • ubiquitous - A library providing easy-to-use persistent configuration storage. Artistic License 2.0.
  • cl-prevalence - in-memory database system. Implementation of Object Prevalence, in which business objects are kept live in memory and transactions are journaled for system recovery. github fork. LLGPL.

Wrappers

To third parties

Tools

Data Structures

  • 👍 FSet - A functional, set-theoretic collections data structure library. LLGPL.
  • bst - Binary Search Tree. GPL3. Not in Quicklisp.
  • pileup - a portable, performant, and thread-safe binary heap for Common Lisp. MIT.
  • sycamore - a fast, purely functional data structure library. BSD_3Clause.
  • genhash – hash table implementation with API from generic methods. Public domain.
  • cl-ctrie - lock-free, concurrent, key/value index with efficient memory-mapped persistence and fast transient storage models. MIT.
  • cl-data-structures - a portable collection of data structures and algorithms (mainly dicts and sequences, with some statistical functions). BSD.

and see more on Quickdocs.

Foreign Function Interface

C

Java

  • cl+j - A JNI-based interface to a JVM via CFFI. Not available on Quicklisp. Does not reliably work with all implementations. Expat.

Objective-C

  • objc-lisp-bridge - A portable reader and bridge for interacting with Objective-C and Cocoa. MIT.

Python

  • burgled-batteries - A bridge between Python and Common Lisp. The goal is that Lisp programs can use Python libraries. Not available on Quicklisp. No license specified.
  • cl4py - The library cl4py (pronounce as clappy) allows Python programs to call Common Lisp libraries. MIT.
  • py4cl - A library that allows Common Lisp code to access Python libraries. It is basically the inverse of cl4py. MIT.
  • cl-python - an implementation of Python in Common Lisp. LLGPL.

See also async-process.

.Net Core

  • Bike - a cross-platform .Net Core interface. MIT.

Miscellaneous

  • Foil - A foreign object interface; works with the JVM and CLI. Not available on Quicklisp. CPL 1.0.

Game Development

  • Xelf - Extensible game library. Not available on Quicklisp. GNU LGPL2.1.
  • Trial - Trial is an OpenGL game engine with a heavy focus on modularity. It is supposed to provide a large toolkit of useful bits and pieces from which you can create a game. Artistic License 2.0.
  • cl-mpg123 and cl-out123, bindings libraries for libmpg123 and libout123 respectively, giving you fast and easy to use mp3 decoding and cross-platform audio output. Artistic License 2.0.
  • trivial-gamekit – with this small framework you would be able to make simple 2D games: draw basic geometric forms, images and text, play sounds and listen to mouse and keyboard input.
  • cl-gamepad - Access to gamepads and joysticks on Windows, Mac OS, and Linux. Artistic License 2.0.

Graphics

These are libraries for working with graphics, rather than making GUIs (i.e. widget toolkits), which have their own section.

GUI

Implementations

  • :star: SBCL - A fork of CMUCL; compiles to machine code. Standard compliance. Public domain, with some parts under Expat and 3-clause BSD.
  • :star: CCL - Clozure Common Lisp; compiler-only implementation, generates native code. LLGPL.
  • ECL - Embeddable Common Lisp; compiles to C. GNU LGPL2.1.
  • ABCL - Armed Bear Common Lisp; targets the JVM, compiles to bytecode. Standard conformance. GNU GPL3 with Classpath exception.
  • CMUCL - An implementation from Carnegie Mellon University. Public domain.
  • GNU CLISP - A GNU implementation; contains a compiler and an interpreter. Standard conformance. GNU GPL3.
  • CLASP - a new Common Lisp implementation that seamlessly interoperates with C++ libraries and programs using LLVM for compilation to native code. This allows Clasp to take advantage of a vast array of preexisting libraries and programs, such as out of the scientific computing ecosystem. LGPL2.1 (and others).
  • Corman Lisp - a Common Lisp development environment for Microsoft Windows running on Intel platforms. MIT.

Proprietary:

  • LispWorks - an integrated cross-platform development tool for Common Lisp.
  • Allegro CL - provides the full ANSI Common Lisp standard with many extensions.
  • MOCL - CL as a library for mobile devices (iOS & Android) and OSX.

JSON

  • cl-json - A JSON encoder and decoder. Expat.
  • jsown - A reader and writer for the JSON format. Expat.
  • json-mop - A metaclass for bridging CLOS and JSON objects. MIT.

See also this extensive comparison of JSON libraries.

YAML

  • cl-yacclyaml - a pure lisp YAML processor (loader, but not yet dumper). GPL3.
  • cl-yaml - a YAML parser and emitter built on top of libyaml. MIT.

Language extensions

  • cl21 - An experimental project to move Common Lisp into the 21st century. Expat.
  • :star: alexandria - A general-purpose utility library. Public domain.
  • serapeum - Another general-purpose utility library. Expat.
  • anaphora - A collection of anaphoric macros. Public domain.
  • :star: optima - Optimized pattern-matching library. LLGPL.
  • str - a modern, simple and consistent string manipulation library. MIT.
  • interface - A protocol library. 3-clause BSD.
  • cl-syntax - Reader syntax conventions. LLGPL.
  • cl-2dsyntax - An indentation-sensitive reader system. Not available on Quicklisp. No license specified.
  • cl-annot - Python-like annotations for Common Lisp. LLGPL.
  • :star: cl-interpol - A set of reader modifications to allow string interpolation. No license specified.
  • arrow-macros - Clojure-like threading macros. MIT.
  • dissect - when a lot of projects use the “trivial-backtrace” system that just gives them a string with a backtrace, Dissect allows you to capture, step, and completely inspect the stack trace on a variety of Lisp implementations. Also very useful for logging and other situations where execution is automatically continued, but the information of the current stack is still useful to store somewhere. Artistic License 2.0.
  • clamp - Arc language’s brevity and conciseness to Common Lisp. Artistic License 2.0.
  • trivial-arguments - A portable library to retrieve the arguments list of a function. Artistic License 2.0.
  • modf - a setf-like macro for functional programming.
  • generic-cl - Generic function interface to standard Common Lisp functions (equality, comparison, arithmetic, objects, iterator, sequences,…). MIT. See also the more lightweight generic-comparability. LLGPL.
  • pythonic-string-reader - A simple and unobtrusive read table modification inspired by Python’s three quote strings. BSD_3Clause.
  • 👍 access - Consistent and nested access to most common data structures. BSD_3Clause.
  • listopia - a list manipulation library inspired by Haskell’s Data.List. LLGPL.

CLOS extensions

  • :star: closer-mop - A compatibility layer that rectifies many absent or incorrect MOP features. Expat.
  • defclass-std - a shortcut macro to write DEFCLASS forms quickly. LLGPL.
  • specialization-store - generic functions based on types. Simplified BSD License variant.
  • inlined-generic-function - Bringing the speed of Static Dispatch to CLOS. LLGPL.
  • static-dispatch - allows standard generic function dispatch to be performed statically (at compile time) rather than dynamically (runtime). This is similar to what is known as “overloading” in languages such as C++ and Java. MIT.

Function extensions

  • cl-hooks - Hooks extension point mechanism (as known, e.g., from GNU Emacs). LGPL.
  • method-hooks - When CLOS method combination allow only one hook per method, this library allows an arbitrary number of them. Mozilla Public Licence.
  • cl-advice - a portability layer advice library for SBCL, CCL, LispWorks and Allegro. Not in Quicklisp.

Iteration

  • :star: iterate - An iteration construct for Common Lisp which is extensible and Lispier. No license specified.
  • for - A concise, lispy and extensible iteration macro. Unlike loop it is extensible and sensible, and unlike iterate it does not require code-walking and is easier to extend. Artistic License 2.0.
  • series - Functional style without any runtime penalty at all. MIT.

Lambda shorthands

  • fn - a couple of lambda shorthand macros. (fn* (+ _ _)) --> (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

  • 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.

Learning and Tutorials

Online

Beginner

Intermediate

Advanced

  • Let Over Lambda - A book on advanced macro techniques. The first six chapters are available online.
  • On Lisp - Paul Graham’s amazing book on Lisp macros (and other interesting things).

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.
  • Quickdocs - A reference for the libraries provided by Quicklisp.

Offline

Beginner

  • Land of Lisp - A fun, game-oriented introduction to Common Lisp.
  • Practical Common Lisp - A good introductory text to Common Lisp, with practical examples.
  • Common Lisp Koans - The project guides the learner progressively through many Common Lisp language features.

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

Community

Library Manager

  • :star: Quicklisp - A library manager containing many libraries, with easy depencency management. Expat.
  • Ultralisp - A Quicklisp distribution which updates every 5 minutes and to which one can add his project in one click. BSD.
  • Quicksys - install systems from multiple Quicklisp distributions. MIT.
  • 👍Roswell - a Lisp implementation installer, script launcher and more. MIT.
  • qlot - A project-local library installer, similar to Bundler or Carton. Expat.
  • Quickutil - A utility manager, similar to Quicklisp, but for small utilities rather than whole libraries. 3-clause BSD.
  • Qi - A package manager with a traditionnal approach. BSD.

might help:

Interfaces to other package managers

  • cl-brewer - Homebrew formula builder for (command line) common lisp applications. Public domain.
  • 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.

Machine Learning

  • clml - originally developped by Mathematicl Systems Inc., a Japanese company. With a tutorial. LLGPL.
  • mgl - used by its author to win the Higgs Boson Machine Learning Challenge. MIT.
  • 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

HTTP Servers

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.

Clack plugins

Web frameworks

  • Caveman - A powerful web framework. LLGPL. Example projects: Quickdocs
  • hh-web - Framework for building modern web apps. Expat.
  • 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 . Artistic License 2.0.
  • Lucerne - A minimal web framework built on Clack, inspired by Flask. MIT.
  • Snooze - A RESTful web framework, built on Clack, where 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.
  • Weblocks - A widgets-based framework with a built-in ajax update mechanism that “solves the JavaScript problem”. LLGPL.

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

Assets management

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

Parsing html

Querying HTML/DOM

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

HTML generators and templates

URI handling

  • quri - Another URI library for Common Lisp. Supports userinfo, IPv6 hostname, encoding/decoding utilities,… BSD_3Clause.
  • purl - Provides a parser and defines a type for URLs as specified in RFC1738. GNU GPL3.
  • cl-slug - a small library to make slugs, mainly for URIs, transform in CamelCase, remove accentuation and punctuation, for english and beyound. LLGPL.

Javascript

  • :star: 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.
  • 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.
  • Panic, a Parenscript library for React. Not in Quicklisp. MIT. Its TodoMVC example.

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. No license specified.
  • mito-email-auth - Helper to authenticate a website’s users by sending them unique code by email.

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. No license specified.
  • base-lisp-image - base Docker image for Common Lisp projects with SBCL or CCL and the latest ASDF, Qlot and Roswell.
  • 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. AGPL
  • deploy - A toolkit for binary deployment of Lisp applications, with extra support for foreign shared libraries. Artistic License 2.0.
  • cl-aws-runtime-test - An example of using Common Lisp (SBCL) as a custom runtime on AWS lambda. WTFPL.

See also:

Monitoring

  • prometheus.cl - Prometheus.io client. Grafana dashboard for SBCL and Hunchentoot metrics (memory, threads, requests per second,…). MIT.

Third-party APIs

Others

Numerical and Scientific

  • numcl - Numpy clone in Common Lisp. LGPL3.
  • magicl - Matrix Algebra proGrams In Common Lisp based on BLAS/LAPACK and Expokit, by Rigetti Computing. BSD_3Clause.
  • cl-spark - Generates sparkline strings for lists of numbers. Expat.
  • GSLL - GNU Scientific Library for Lisp; allows the use of the GSL from Common Lisp. GNU LGPL2.1.
  • common-lisp-stat - Common Lisp statistics library. FreeBSD.
  • maxima - Computer algebra system. Not available on Quicklisp. GNU GPL3.
  • lisp-matrix - A matrix package. FreeBSD.
  • 3-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. Artistic License 2.0.
  • 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.
  • cmu-infix - A library for writing infix mathematical notation in Common Lisp.
  • 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.

Parallelism and Concurrency

Event processing

  • simple-tasks - A very simple task scheduling framework. Artistic License 2.0.
  • deeds - Deeds is an Extensible Event Delivery System. It allows for efficient event delivery to multiple handlers with a complex event filtering system. Artistic License 2.0.
  • 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

  • psychiq - redis-based background job processing for Common Lisp applications. Inspired by Ruby’s Sidekiq and compatible with its web UI. LLGPL.
  • clerk - a cron-like scheduler with sane DSL. MIT.

Regex

  • :star: cl-ppcre - Portable, Perl-compatible regular expressions. FreeBSD.

Scripting

  • 👍 Roswell - a lisp installer and scripting environment (helper, launcher, installer) and more. MIT.
  • 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.
  • 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.
  • 👍 Unix-opts - a command line options parser with a concise declaration of options. MIT.
  • CLON - Command Line Options Nuker. ISC.
  • cl-ansi-term - print colorized text, horizontal lines, progress bars, (un)ordered lists and tables on ANSI-compliant terminals. GPL3.
  • 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.
  • shcl - a POSIX-like shell in Common Lisp. Apache2.0.
  • cl-progress-bar - progress bars, just like in Quicklisp ! MIT.
  • WCL - 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.
  • 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-all - A script to run Lisp snippets in multiple implementations. This allows you to quickly compare implementation behaviour and differences. Artistic License 2.0.

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

  • :star: 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.

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. Ncurses and Electron interfaces. MIT. An opengl frontend.

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 has Common Lisp support with its “SublimeREPL” package. [Proprietary].

VSCode

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.

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.
  • cl-yacc - a LALR(1) parser generator. MIT.
  • wiki-lang-detect - Text language identification using Wikipedia data. No license specified.

Tools

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

Unit Testing

Utilities

Caching

  • clache - General caching facility. No license specified.

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

  • :star: 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

  • localtime - 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.
  • iso-8601-date - Miscellaneous date routines in Common Lisp, based around the ISO 8601 string representation. LLGPL.

Data validation

  • ratify - A collection of utilities to ratify, validate and parse inputs. Artistic License 2.0.
  • clavier - General purpose validation library for Common Lisp. MIT.
  • 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.

Documentation builders

  • sphinxcontrib-cldomain - Extending Sphinx to cover Common Lisp. To build documentation with the same ease as sphinx would a Python project. GPL3
  • Codex - A beautiful documentation system for Common Lisp. MIT.
  • Staple - a tool to generate documentation pages using an HTML template. Uses the existing README, adds docstrings, crossreferences and links to the CLHS. ArtisticLicense2.0.
  • cl-bibtex - A compatible re-implementation of the BibTeX program in Common Lisp, with a BST-to-CL compiler. GNU LGPL2.1.
  • 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.
  • erudite - Literate Programming System built with interactive development in mind. MIT.

Files and directories

  • :star: 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. Artistic License 2.0.
  • archive - a library for reading and creating archive (tar, cpio) files. BSD_3Clause. A pure Common Lisp replacement for the ‘tar’ program.

Git

i18n

Linting

Logging

  • :star: log4cl - Logging framework modelled after Log4J. Apache2.0. Advanced integration with Slime.
  • verbose - A fast and highly configurable logging framework. Artistic License 2.0.
  • 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 -> html converter. MIT.

PDF

Plotting

  • vgplot - an interface to the gnuplot plotting utility with the intention to resemble some of the plot commands of octave or matlab. GPL3.
  • eazy-gnuplot - a lispy, structure-less Gnuplot library. With its cookbook. LLGPL

Other

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

XML

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 :star: (:star: in markdown).
  • two libraries very similar in scope should be side by side, or in a section of their own.
  • do some curation based on our experience and the state of the library’s documentation. We do not aim at listing every existing CL library (see Quickdocs or 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.