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][16] 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][13] and sellers who aren't evil for physical resources.
Table of Contents
- Artificial Intelligence (AI, LLMs)
- Audio
- Build Systems
- Compilers, code generators
- Cryptography
- Cryptocurrencies
- Database
- Data Structures
- Docker images
- Foreign Function Interface, languages interop
- Game Development
- Graphics
- GUI
- Implementations
- JSON
- YAML
- Language extensions
- Learning and Tutorials
- Library Manager
- Machine Learning
- Natural Language Processing
- Network and Internet
- Numerical and Scientific
- Parallelism and Concurrency
- Regular expressions and string parsing
- Scripting
- Text Editor Resources
- Text and binary parsers
- Text Processing
- Tools
- Unit Testing
- Utilities
- Caching
- Compression / decompression
- Configuration
- CSV
- Date and time
- Data validation
- Developer utilities
- Documentation builders
- Files and directories
- Git
- i18n
- Linting, code formatting
- Literate programming
- Logging
- Macro helpers
- Markdown
- Plotting
- Project skeletons
- Security
- System interface
- XML
- Other
- Contributing
Artificial Intelligence (AI, LLMs)
Around the OpenAI API:
- openai-openapi-client - semi-automatically generated Openapi client updated frequently from the official Openapi specification. AGPL-3.
- available on Ultralisp.
- cl-completions - LLM completions.
- makes it easy to create GPT functions in Common Lisp.
- Ollama support.
- cl-embeddings - LLM embeddings.
- cl-chroma - the vecor DB interface.
demos: cl-rag-example and cl-chat, a LLM chat library and web UI.
Educational:
- PAIP-lisp - Lisp code for the textbook "Paradigms of Artificial Intelligence Programming".
- AIMA-lisp - Common Lisp implementation of algorithms from Russell and Norvig's "Artificial Intelligence - A Modern Approach".
Audio
Music composition:
- 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][2].
- an extension: rq - a library for rhythm transcription in OpenMusic (version 6.10 and later). demo video. [GPL3][2].
- 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.
- 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).
- common-tones - a fork of CLM5 with modern Lisp (ASDF, cffi…). [BSD_3Clause][15].
- Slippery Chicken - Algorithmic composition library which outputs Midi, Common Music Notation, pdf-score via Lilypond and sound via Common Lisp Music. [GPL3][2].
- with documentation: https://michael-edwards.org/sc/
- 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.
- note: old project but working.
- cm-incudine - extends Common Music 2 with realtime capabilities. GPL2.
- 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.
- Music - A framework for musical expression in Lisp with a focus on music theory (built from scratch, unrelated to Common Music).
Decoders, sound processing:
- Harmony - A real-time sound processing and playback system. [zlib][33].
- "provides you with audio processing tools as well as an audio server to play back music, sfx, and so forth."
- using cl-mixed for the mixing and sound processing library.
- easy-audio - a collection of audio decoders and metadata readers.
others:
- scheduler - The time based musical event scheduler for Common Lisp. [Apache2.0][89].
- Common Music Notation - Common Music Notation (CMN) provides a package of functions to hierarchically describe a musical score. Public domain.
- osc - an implementation of the Open Sound Protocol. [LGPL2.1][11].
bindings and clients to other software and libraries:
- cl-mpg123, cl-opus (OGG/Opus), cl-vorbis (OGG/Vorbis), cl-SoLoud, cl-out123 (libout123), cl-flac
- csound - A sound and music computing system. Includes CFFI and FFI interfaces for Common Lisp.
- cl-collider - A SuperCollider client for CommonLisp. With a tutorial and live coding demos. Public domain.
- cl-openal - bindings for the OpenAL audio library. Public domain.
and more audio software targetting musicians on awesome-cl-software#audio (Opus Modus, OpenMusic…).
Build Systems
- ⭐ASDF - Another System Definition Facility; a build system for Common Lisp. [Expat][14]. Quicklisp (see library manager) uses ASDF under the hood.
- known ASDF extensions, such as
asdf-system-connections
, that lets you specify systems that are automatically loaded when two other systems are loaded, to connect them.
- known ASDF extensions, such as
- asdf-linguist - Extensions for ASDF. [Expat][14].
- asdf-viz - a tool to visualize the library dependencies of ASDF systems, the call graph of a function and the class inheritances. [LLGPL][8].
See also:
- modularize - A modularization framework for Common Lisp. [zlib][33].
- provides a common interface to segregate major application components.
- for instance, by adding module definition options you can introduce mechanisms to tie modules together in functionality, hook into each other and so on.
- acts as a wrapper around
defpackage
and integrates into ASDF.
Compilers, code