# 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

* ASDF — Another System Definition Facility
* clbuild — A script to update/install the latest versions of all the most important Common Lisp packages
* Roswell - An implementation installer and script launcher

## Language Extension

These 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

* 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

* 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

* 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

* Serialization — serialization of Common Lisp data (via cl-serialization and cl-store)
* ELEPHANT — A persistent object system
* CL-Perec — A persistent object system

## GUI

* 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

* Vecto — A library for drawing and rastering vector graphic images
* CL-OpenGL — A set of GL, GLU, and GLUT bindings

## Audio

* 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

* 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

* 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