Awesome Lists with GitHub stars

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 GitHub Repo Stars GitHub last commit 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

Artificial Intelligence (AI, LLMs)

Around the OpenAI API:

demos: cl-rag-example GitHub Repo Stars GitHub last commit and cl-chat GitHub Repo Stars GitHub last commit, a LLM chat library and web UI.

Educational:

Audio

Music composition:

Decoders, sound processing:

others:

bindings and clients to other software and libraries:

and more audio software targetting musicians on awesome-cl-software#audio GitHub Repo Stars GitHub last commit (Opus Modus, OpenMusic…).

Build Systems

See also:

Compilers, code generators

APL

C, C++

Cryptography

Cryptocurrencies

See also legochain GitHub Repo Stars GitHub last commit, a simple educational blockchain; emotiq GitHub Repo Stars GitHub last commit, a next-generation blockchain with an innovative natural-language approach to smart contracts built in Common Lisp (stopped).

Database

ORMs

Persistent object databases

See also Clache GitHub Repo Stars GitHub last commit, that can save any object on disk.

Graph databases

and also:

Wrappers

Migration tools

To third parties

Tools

Data Structures

Accessing data structures:

Other data structures:

Docker images

Foreign Function Interface, languages interop

C

Clojure

In development:

Cloture is in very early (pre-alpha) stages, but it has progressed far enough to load clojure.test, allowing the test suite to actually be written in Clojure.

See also those libraries:

Erlang

Java

Objective-C

Python

See also async-process GitHub Repo Stars GitHub last commit.

.Net Core

Miscellaneous

For Emacs Lisp:

Game Development

Utilities:

Graphics

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

Those are bindings:

GUI

For an overview and a tutorial on GUI toolkits, see the Cookbook/GUI.

But that’s not all.

Other utilities:

See also this demo to use Java Swing from ABCL GitHub Repo Stars GitHub last commit.

Mobile

hello-allien GitHub Repo Stars GitHub last commit, SBCL built for an Android application (very new, 2023).

Implementations

Proprietary:

Other implementations, mainly for historical purposes:

You can check the implementations’ compatibility to common extensions here: portability.cl.

JSON

See this extensive comparison of JSON libraries.

JSON tools:

and search for JSON RPC below.

YAML

Language extensions

Pattern matching

Portability layers

A large list of portability layers is collected here: portability.cl/. Here are some of them:

Changing the syntax

For strings:

CLOS extensions

Writing terser defclass forms:

And also:

Function extensions

Iteration

Lambda shorthands

See also CL21 and Rutils GitHub Repo Stars GitHub last commit.

Non-deterministic, logic programming

Reactive programming

Contract programming

Typing

See also:

Theorem provers

Learning and Tutorials

Online

Beginner

Intermediate

Advanced

And a couple learning resources for SBCL internals:

Coding platforms

Web Development

Reference

Offline

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

Beginner

Intermediate

Advanced

Other books

Community

Library Manager

see also:

might help:

Interfaces to other package managers

See also:

Machine Learning

Credit: borretti.me’s State of CL Ecosystem 2015.

Natural Language Processing

Network and Internet

See Cliki for more.

HTTP clients

HTTP Servers

Hunchentoot plugins

See also:

Clack plugins

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

Web frameworks

REST-focused frameworks:

See OpenAPI, OData and other libraries below.

Isomorphic web frameworks

Parsing html

Querying HTML/DOM, web scraping

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

HTML generators and templates

URI handling

Javascript

In development:

Utilities for React:

See also:

Deployment

See also:

Monitoring

Websockets

Editor’s note: at the time of writing, it seems we don’t have a full-featured websocket implementation for Common Lisp. We can however recommend Portal, and we invite you to double-check the current issues of Hunchensocket and websocket-driver.

Web development utilities

Assets management

Browser tests

Form handling

User login and password management

See also mito-auth and the Hunchentoot and Clack plugins above.

Web project skeletons and generators

Others

Email

OpenAPI, OData, OpenRPC

Static site generators

Third-party APIs

Numerical and Scientific

Planning solvers:

NEW! If you have precise needs, blurry needs or simply questions, the repository Common Lisp numsci call for needs GitHub Repo Stars GitHub last commit is a new place to discuss them.

Matrix libraries

Statistics

See also common-lisp-stat GitHub Repo Stars GitHub last commit, Common Lisp statistics library. FreeBSD, staling.

Units

Utils

Parallelism and Concurrency

See also:

Actors pattern

See also:

Event processing

Job processing

Regular expressions and string parsing

See also:

See also clj-re above.

Scripting

Writing, running scripts

Command-line options parsers

Readline, ncurses and other graphical helpers

Shells, shells interfaces

Lisp utilities:

System administration

Other scripting utilities

Text Editor Resources

This contains plugins and other goodies for various text editors.

Emacs

Starter kits:

Tools:

Slime extensions:

Sly extensions:

Vim & Neovim

Eclipse

Lem

Atom, Pulsar

Sublime Text

VSCode

JetBrains

Geany (experimental)

Notebooks

REPLs

Online editors

Apps

Text and binary parsers

see also:

Text Processing

See also:

Tools

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

Unit Testing

See also:

Editor utilities:

For more: Sabra Crolleton’s extensive test frameworks comparison.

Utilities

Caching

Compression / decompression

Configuration

CSV

Date and time

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

Data validation

Developer utilities

and also:

Documentation builders

See also:

An overview blog post with even more documentation generators: https://lisp-journey.gitlab.io/blog/overview-of-documentation-generators/ and a dedicated site with reviews and demos: https://cl-doc-systems.github.io/

You might also like: literate programming systems.

Files and directories

File watching libraries:

Git

i18n

Linting, code formatting

and also: lisp-format GitHub Repo Stars GitHub last commit and cl-indentify GitHub Repo Stars GitHub last commit.

Literate programming

Logging

To third parties:

See also: extensive comparison of logging libraries.

Macro helpers

Markdown

PDF

Plotting

Plotting with text:

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

Project skeletons

Security

System interface

XML

To read Excel files:

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: