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 edit

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

Language Extension edit

These libraries add new control structures to the Common Lisp language.

  1. Serapeum - Another general-purpose utility library.
  2. rutils - radical yet reasonable syntactic utilities for Common Lisp.
  3. Iterate — Easy and extensible iteration
  4. Extended Binding — Pattern matching, anaphoric control structures, and more
  5. Cells — A constraint based programming paradigm that operates in a way similar to spread sheets
  6. Screamer — Efficient, nondeterminism for Common Lisp
  7. FSet — Functional programming in Common Lisp
  8. generic-cl - Generic function interface to standard Common Lisp functions (equality, comparison, arithmetic, objects, iterator, sequences,…).
  9. cl21 An experimental project that brings more modern idioms into Common Lisp (unmaintained)

Data Structures edit

  1. CL-CONTAINERS — A library for abstracting data structures details
  2. FSet - A functional, set-theoretic collections data structure library.
  3. cl-data-structures - a portable collection of data structures and algorithms (mainly dicts and sequences, with some statistical functions).
  4. cl-competitive - Common Lisp algorithms collection for competitive programming.

Database edit

  1. cl-dbi - A database independant interface
  2. postmodern - A library for interacting with PostgreSQL databases
  3. Mito - An ORM, with migrations, relationships and DB schema versioning
  4. Crane - An ORM, based on the CL Objects System, with migrations

Parsing and Text processing edit

  1. CL-PPCRE — regular expressions library
  2. CXML — An XML parsing library
  3. CL-HTML-Parse — Parsing HTML
  4. CL-YACC — A parser generator
  5. CL-Walker — A Common Lisp parser for Common Lisp

Serialization and Persistent data edit

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

GUI edit

  1. Ltk — Common Lisp interface to Tk (portable GUI library)
  2. McCLIM — A Common Lisp GUI builder
  3. 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 edit

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

Audio edit

  1. Open Music - a visual programming, computer-aided composition environment.
  2. 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).
  3. 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

  1. Dexador — A full featured HTTP client (that aims at replacing Drakma)
  2. Portable Allegro Serve — A fairly light weight, multithreaded, HTTP server
  3. Hunchentoot — A Web application server written in Common Lisp
  4. Caveman - A fully featured web framework
  5. Plump - An html/xml parser, tolerant on malformed markup
  6. lquery - A jquery-like DOM/HTML manipulation library
  7. Djula - A port of Django templates
  8. Parenscript - A translator from Common Lisp to Javascript
  9. Wuwei - Examples on how to do Ajax in Lisp

Further reading edit

  1. http://eudoxia.me/article/common-lisp-sotu-2015 - An opinionated post on the state of the Common Lisp ecosystem, from 2015