Common Lisp/External libraries
Common Lisp libraries exist for many purposes. Here we will showcase a small sampling of mature, useful, and free packages available, showing some of the functionality they provide.
System Utilities
editLanguage Extension
editThese libraries add new control structures to the Common Lisp language.
- Serapeum - Another general-purpose utility library.
- rutils - radical yet reasonable syntactic utilities for Common Lisp.
- Iterate — Easy and extensible iteration
- Extended Binding — Pattern matching, anaphoric control structures, and more
- Cells — A constraint based programming paradigm that operates in a way similar to spread sheets
- Screamer — Efficient, nondeterminism for Common Lisp
- FSet — Functional programming in Common Lisp
- generic-cl - Generic function interface to standard Common Lisp functions (equality, comparison, arithmetic, objects, iterator, sequences,…).
- cl21 An experimental project that brings more modern idioms into Common Lisp (unmaintained)
Data Structures
edit- CL-CONTAINERS — A library for abstracting data structures details
- FSet - A functional, set-theoretic collections data structure library.
- cl-data-structures - a portable collection of data structures and algorithms (mainly dicts and sequences, with some statistical functions).
- cl-competitive - Common Lisp algorithms collection for competitive programming.
Database
edit- cl-dbi - A database independant interface
- postmodern - A library for interacting with PostgreSQL databases
- Mito - An ORM, with migrations, relationships and DB schema versioning
- Crane - An ORM, based on the CL Objects System, with migrations
Parsing and Text processing
edit- CL-PPCRE — regular expressions library
- CXML — An XML parsing library
- CL-HTML-Parse — Parsing HTML
- CL-YACC — A parser generator
- CL-Walker — A Common Lisp parser for Common Lisp
Serialization and Persistent data
edit- Serialization — serialization of Common Lisp data (via cl-serialization and cl-store)
- ELEPHANT — A persistent object system
- CL-Perec — A persistent object system
GUI
edit- Ltk — Common Lisp interface to Tk (portable GUI library)
- McCLIM — A Common Lisp GUI builder
- IUP- CFFI bindings to the IUP Portable User Interface library. IUP is cross-platform (Windows, macOS, GNU/Linux, with new Android, iOs, Cocoa and Web Assembly drivers), has many widgets, has a small api and is actively developed.
Graphics
editAudio
edit- Open Music - a visual programming, computer-aided composition environment.
- 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).
- 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.
Web and Network
edit- Dexador — A full featured HTTP client (that aims at replacing Drakma)
- Portable Allegro Serve — A fairly light weight, multithreaded, HTTP server
- Hunchentoot — A Web application server written in Common Lisp
- Caveman - A fully featured web framework
- Plump - An html/xml parser, tolerant on malformed markup
- lquery - A jquery-like DOM/HTML manipulation library
- Djula - A port of Django templates
- Parenscript - A translator from Common Lisp to Javascript
- Wuwei - Examples on how to do Ajax in Lisp
Further reading
edit- http://cliki.net — The Common Lisp Wiki. Contains links to almost all existing free software Common Lisp libraries, and a few proprietary ones as well.
- http://common-lisp.net/ — Hosts a vast number of Common Lisp projects.
- https://github.com/CodyReichert/awesome-cl - A community-based list of "awesome" Common Lisp libraries
- http://eudoxia.me/article/common-lisp-sotu-2015 - An opinionated post on the state of the Common Lisp ecosystem, from 2015