A curated list of awesome Common Lisp stuff.
Add something new! See the contributing section for adding something to the list.
All libraries listed here are available from Quicklisp unless stated otherwise.
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
- Awesome Common Lisp
- Build Systems
- Crypto
- Database
- Foreign Function Interface
- Game Development
- Graphics
- GUI
- Implementations
- JSON
- Learning and Tutorials
- Library Manager
- Natural Language Processing
- Network and Internet
- Numerical and Scientific
- Parallelism and Concurrency
- Regex
- Scripting
- Text Editor Resources
- Tools
- Unit Testing
- Utilities
- XML
- Contributing
- ASDF - Another System Definition Facility; a build system for Common Lisp. Expat.
- asdf-linguist - Extensions for ASDF. Expat.
- crypto-shortcuts - Collection of common crypto shortcuts. Artistic License 2.0.
- Ironclad - A library of crypto functions for Common Lisp. Not considered secure, but is still useful for the message digest functions. Expat.
- trivial-ssh - An SSH client library. Expat.
- cl-dbi - A database-independent interface for Common Lisp. LLGPL.
- cl-memcached - Fast, thread-safe interface to the Memcached object caching system. Expat.
- cl-mongo - MongoDB client. Expat.
- cl-redis - Redis client. Expat.
- cl-disque - Disque client. 3-clause BSD.
- cl-rethinkdb - RethinkDB client. Expat.
- cl-sqlite - Bindings for SQLite. Public domain.
- clsql - An SQL database with a Common Lisp interface. LLGPL.
- clache - General caching facility. No license specified.
- clouchdb - Library for interacting with CouchDB. FreeBSD.
- crane - Another ORM. Expat.
- datafly - A lightweight database library. 3-clause BSD.
- mito - An ORM for Common Lisp with migrations, relationships and PostgreSQL support LLGPL.
- postmodern - A library for interacting with PostgreSQL. zlib.
- pgloader - a data loading tool for PostgreSQL. PostgreSQL Licence.
- sxql - A DSL for generating SQL. 3-clause BSD.
- bknr.datastore - a CLOS-based lisp-only database in RAM with transaction logging persistence. licence. (see also chap. 21 of "Common Lisp Recipes")
- elephant - Elephant is a persistent object database for Common Lisp with full transaction semantics. LLGPL.
- CFFI - Portable, easy-to-use C foreign function interface. Expat.
- cl-autowrap - Automatically parses header files into CFFI definitions. FreeBSD.
- cl+j - A JNI-based interface to a JVM via CFFI. Not available on Quicklisp. Does not reliably work with all implementations. Expat.
- burgled-batteries - A bridge between Python and Common Lisp. Not available on Quicklisp. No license specified.
- Xelf - Extensible game library. Not available on Quicklisp. GNU LGPL2.1.
These are libraries for working with graphics, rather than making GUIs (i.e. widget toolkits), which have their own section.
- cl-cairo2 - Cairo bindings. Boost 1.0
- cl-gd - A library providing an interface to the GD graphics library. FreeBSD.
- cl-horde3d - FFI bindings to the Horde3D graphics library. Not available on Quicklisp. EPL 1.0
- cl-opengl - CFFI bindings to OpenGL, GLU and GLUT APIs. 3-clause BSD.
- cl-sdl2 - Bindings for SDL2 using C2FFI. Expat.
- cl-svg - A basic library for producing SVG files. Expat.
- CLinch - Common Lisp 2D/3D graphics engine for OpenGL. FreeBSD.
- donuts - Graph drawing DSL for Common Lisp. Expat.
- lispbuilder-sdl - A set of bindings for SDL. Expat.
- okra - CFFI bindings to Ogre. Not available on Quicklisp. 3-clause BSD.
- Varjo - Lisp to GLSL translator. Not available on Quicklisp. LLGPL.
- Vecto - Simple vector drawing library. FreeBSD.
- zpng - A library for creating PNG files. FreeBSD.
- cl-cffi-gtk - Binding for GTK+3. GNU LGPL2.1.
- cl-gtk2 - A binding for GTK+2. LLGPL.
- cl-xul - Mozilla XUL bindings. Expat.
- CommonQt - A Common Lisp binding for Qt4 via QtSmoke. FreeBSD.
- Qtools - A Qt toolkit, based on CommonQt. Artistic License 2.0
- ltk - A binding for the Tk toolkit. LLGPL or GNU LGPL2.1.
- ceramic - Desktop web apps with Common Lisp. Expat.
- CocoaInterface - Cocoa interface for Clozure Common Lisp. Build Cocoa user interface windows dynamically using Lisp code and bypass the typical Xcode processes. It has good documentation and a tutorial.
- ABCL - Armed Bear Common Lisp; targets the JVM, compiles to bytecode. Standard conformance. GNU GPL3 with Classpath exception.
- CCL - Clozure Common Lisp; compiler-only implementation, generates native code. LLGPL.
- CMUCL - An implementation from Carnegie Mellon University. Public domain.
- ECL - Embeddable Common Lisp; compiles to C. GNU LGPL2.1.
- GCL - Another GNU implementation; not yet fully ANSI-compliant. GNU LGPL2.1.
- GNU CLISP - A GNU implementation; contains a compiler and an interpreter. Standard conformance. GNU GPL3.
- SBCL - A fork of CMUCL; compiles to machine code. Standard compliance. Public domain, with some parts under Expat and 3-clause BSD.
- cl-json - A JSON encoder and decoder. Expat.
- jsown - A reader and writer for the JSON format. Expat.
- Learn X in Y minutes | Where X = Common Lisp - Small Common Lisp tutorial covering the essentials.
- Practical Common Lisp - A good introductory text to Common Lisp, with practical examples.
- Common LISP: A Gentle Introduction to Symbolic Computation - A nice introduction into the language.
- Learn LISP: Simply Easy Learning - A good set of introductory tutorials; includes interactive examples.
- Common Lisp Koans - The project guides the learner progressively through many Common Lisp language features.
- The Common Lisp Cookbook
- Common Lisp tips - A blog with useful tips and tricks.
- CommonQt tutorial - A nice introduction to CommonQt.
- A tutorial for creating and publishing open-source Common Lisp software - A handy tutorial for using Quicklisp and a bunch of other tools to create and publish a project in Common Lisp.
- 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).
- 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.
- Common Lisp the Langauge - 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).
- Quickdocs - A reference for the libraries provided by Quicklisp.
- 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.
- 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.
- Let Over Lambda - A book on advanced macro techniques. All eight chapters are available in the print copy.
- Object-Oriented Programming in Common Lisp: A Programmer's Guide to CLOS - An old, but very thorough book on CLOS.
- Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp - A book on programming AI that covers some advanced Lisp.
- Roswell - a Lisp implementation installer, script launcher and more. MIT.
- qlot - A project-local library installer, similar to Bundler or Carton. Expat.
- Quicklisp - A library manager containing many libraries, with easy depencency management. Expat.
- Quickutil - A utility manager, similar to Quicklisp, but for small utilities rather than whole libraries. 3-clause BSD.
- cl-nlp - Natural language processing toolset. Apache2.0.
- babel2 - A Fluid Construction Grammar implementation, computational framework, and unification-based grammar formalism Apache2.0.
See Cliki for more.
- Dexador - An HTTP client, that aims at replacing Drakma. MIT.
- Clack - A web application environment inspired by Rack and WSGI. LLGPL. Provides a unified interface to a webserver of choice (default is Hunchentoot).
- Hunchentoot - A web server. 2-clause BSD
- aserve - AllegroServe; a web server. LLGPL.
- clack-errors - Error page middleware for Clack. LLGPL.
- hermetic - Security for Clack-based web applications. Expat.
- wookie - Asynchronous HTTP server. Expat.
- woo - A fast non-blocking HTTP server on top of libev. MIT.
- 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.
- radiance - An extensible framework library and multi-application CMS. Artistic License 2.0.
- Lucerne - A minimal web framework built on Clack, inspired by Flask. MIT.
There are more projects, more or less discontinued but interesting. See the other ressources.
- http-parse - An HTTP parser in Common Lisp. Expat.
- Plump - A lenient HTTP/XML parser, tolerand on malformed markup. Artistic License 2.0. Best used with lquery and clss.
- lquery - A jQuery-like HTML/DOM manipulation library. Artistic License 2.0.
See also XML below.
- cl-who - An HTML generator. FreeBSD.
- spinneret - Common Lisp HTML5 generator. Expat.
- cl-markup - Modern markup generation library. LLGPL.
- Djula - A port of Django's template engine to Common Lisp. Expat.
- eco - Fast, flexible, designer-friendly template engine. Expat.
- puri-unicode - Pure URI library with Unicode support. LLGPL.
- cl-slug - a small library to make slugs, mainly for URIs, transform in CamelCase, remove accentuation and punctuation, for english and beyound. LLGPL.
- 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. See also this fork for these improvements.
- Panic, a Parenscript library for React. Not in Quicklisp. MIT. Its TodoMVC example.
- websocket-driver - a WebSocket server/client implementation, backend agnostic (Clack). 3-clause BSD.
See more on cliki.
- avatar-api - Get avatars from Google+, Gravatar and others. Expat.
- chirp - A Twitter client library. Artistic License 2.0.
- cl-closure-template - Implementation of Google's Closure templates. LLGPL.
- cl-irc - An IRC client library. Expat.
- cl-openid - An implementation of OpenID. LLGPL.
- cl-ses - Library for AWS SES. Expat.
- colleen - IRC bot with a modular framework. Artistic License 2.0.
- css-lite - A CSS grammar. Expat.
- humbler - A Tumblr API interface. Artistic License 2.0.
- Postmaster - A simple, easy-to-use SMTP/IMAP library. Expat.
- usocket - A portable TCP and UDP socket interface. Expat.
- 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.
- lisp-matrix - A matrix package. FreeBSD.
- maxima - Computer algebra system. Not available on Quicklisp. GNU GPL3.
- BordeauxThreads - Portable, shared-state concurrency. Expat.
- chanl - Portable, channel-based concurrency. Expat, with parts under 3-clause BSD.
- cl-async - A library for general-purpose, non-blocking programming. Expat.
- lesque - A clone of Resque. Not available on Quicklisp. Expat.
- lparallel - A library for parallel programming. 3-clause BSD.
- Xecto - A library for regular array parallelism. 3-clause BSD.
- 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.
- Unix-opts - a command line options parser with a concise declaration of options. MIT.
- CLON - Command Line Options Nuker. ISC.
- Deploy - a system to help you easily and quickly deploy standalone common lisp applications as binaries. Specifically it is geared towards applications with foreign library dependencies that run some kind of GUI. Artistic License 2.0.
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,…).
- SLIME - Superior Lisp Interaction Mode for Emacs; a full-blown environment for Common Lisp inside of Emacs. Public domain.
- PORTACLE - A portable and multiplatform Common Lisp environment: SBCL, Quicklisp, Emacs, Slime, Git.
- LISP-MACHINE - A Common Lisp IDE in a Docker Container: Roswell Managed, Clozure CL, Spacemacs, Quicklisp, CLHS
- 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.
These are applications or bits of code that make development in Common Lisp easier without being Common Lisp libraries themselves.
- quickapp - A project for generating template projects with SBCL and buildapp. Also includes a command-line argparser. 3-clause BSD.
- quickapp-cli - quickapp as a command-line utility. 3-clause BSD.
- quicksearch - Look up online libraries from the REPL. Expat.
- SWIG - A tool for generating FFI code from C/C++ header files. GNU GPL3.
- cl-project - General modern project skeletons. LLGPL.
- FiveAM - Simple regression testing framework. FreeBSD.
- CLUnit - A unit testing library. Expat.
- Lift - Another testing framework. A range of licenses, all free.
- Stefil - A test framework that aims to be transparent. Public domain.
- Prove - Yet another unit testing framework Expat.
- cl21 - An experimental project to move Common Lisp into the 21st century. Expat.
- alexandria - A general-purpose utility library. Public domain.
- anaphora - A collection of anaphoric macros. Public domain.
- cl-algebraic-data-type - A library for defining algebraic data types in a similar spirit to Haskell or ML. 3-clause BSD.
- FSet - A functional, set-theoretic collections data structure library. LLGPL.
- iterate - An iteration construct for Common Lisp which is extensible and Lispier. No license specified.
- series - Functional style without any runtime penalty at all. MIT.
- optima - Optimized pattern-matching library. LLGPL.
- trivial-types - Trivial type definitions. LLGPL.
- interface - A protocol library. 3-clause BSD.
- 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.
- localtime - A development library for manipulating date and time information in a semi-standard manner. 3-clause BSD.
- ratify - A collection of utilities to ratify, validate and parse inputs. Artistic License 2.0.
- cl-csv - A library for parsing CSV files. 3-clause BSD.
- vgplot - an interface to the gnuplot plotting utility with the intention to resemble some of the plot commands of octave or matlab. GPL3.
This contains anything which doesn't fit into another category.
- babel - A charset encoding/decoding library. Expat.
- chipz - A decompression library. 3-clause BSD.
- cl-2dsyntax - An indentation-sensitive reader system. Not available on Quicklisp. No license specified.
- cl-annot - Python-like annotations for Common Lisp. LLGPL.
- cl-cuda - A library to use NVIDIA CUDA in Common Lisp programs. LLGPL.
- cl-interpol - A set of reader modifications to allow string interpolation. No license specified.
- cl-locale - A simple i18n library. LLGPL.
- cl-syntax - Reader syntax conventions. LLGPL.
- closer-mop - A compatibility layer that rectifies many absent or incorrect MOP features. Expat.
- envy - Configuration switcher. FreeBSD.
- esrap - Packrat parser. Expat.
- fast-io - Fast octet-vector/stream I/O. 3-clause BSD.
- glyphs - A library for cutting down the verboseness of Common Lisp in places. GNU GPL3.
- iolib - I/O library. Expat.
- log4cl - Logging framework modelled after Log4J. Apache2.0.
- mixalot - A loosely-coupled collection of audio libraries. No license specified.
- named-readtables - Provides a readtable namespace, akin to package namespaces. 3-clause BSD.
- Salza2 - A library for creating compressed data. FreeBSD.
- serapeum - Another general-purpose utility library. Expat.
- simple-currency - A currency conversion library using daily information published by the ECB. FreeBSD.
- template - A library for templates and functions, similar to C++. 3-clause BSD.
- texp - A DSL to generate TeX. No license specified.
- trivial-benchmark - Tiny benchmarking library. Artistic Licence 2.0.
- trivial-garbage - A portable finalizer, weak hash-table and weak pointer API. Public domain.
- trivial-utf8 - A small library for doing UTF-8-based I/O. Not available on Quicklisp. No license specified.
- ubiquitous - A library providing easy-to-use persistent configuration storage. Artistic License 2.0.
- CXML - XML parser, with a range of extension libraries. LLGPL.
- Plump - A lenient XML parser. Artistic License 2.0.
- s-xml - A basic parser. LLGPL.
- xmls - A small, simple, non-validating XML parser. 3-clause BSD.
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.