4259 lines
199 KiB
HTML
4259 lines
199 KiB
HTML
<div data-align="center">
|
||
<p><a href="https://awesome-cl.com" target="_blank">
|
||
<img src="https://i.imgur.com/jLVXhpc.png"> </a></p>
|
||
</div>
|
||
<h1 id="awesome-common-lisp-awesome-assertible-status">Awesome Common
|
||
Lisp <a href="https://github.com/sindresorhus/awesome"><img
|
||
src="https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg"
|
||
alt="Awesome" /></a> <a
|
||
href="https://assertible.com/docs/guide/deployments"><img
|
||
src="https://assertible.com/apis/102e334d-f9a8-4565-9353-7572de775cae/status?api_token=8b55a286830323effb"
|
||
alt="Assertible status" /></a></h1>
|
||
<p>A curated list of <em>awesome</em> Common Lisp libraries.</p>
|
||
<p>For awesome <em>software</em>, see <a
|
||
href="http://lisp-lang.org/success/">lisp-lang.org’s success stories</a>
|
||
and the <a
|
||
href="https://github.com/azzamsa/awesome-cl-software">awesome-cl-software</a>
|
||
list.</p>
|
||
<p>All libraries listed here are available from <a
|
||
href="https://www.quicklisp.org/beta/">Quicklisp</a> 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.</p>
|
||
<p>Add something new! See the <a href="#contributing">contributing</a>
|
||
section for adding something to the list.</p>
|
||
<p>This is released under the GNU Free Documentation License - its text
|
||
is provided in the LICENSE file. This repository is also mirrored on <a
|
||
href="https://notabug.org/CodyReichert/awesome-cl">NotABug</a> - a
|
||
<strong>fully-free</strong> (as in libre) alternative to Github.
|
||
Preference is given to <a
|
||
href="http://www.sbcl.org/manual/index.html#ANSI-Conformance">free
|
||
software</a> and sellers who aren’t evil for physical resources.</p>
|
||
<!-- markdown-toc start - Don't edit this section. Run M-x markdown-toc-refresh-toc -->
|
||
<p><strong>Table of Contents</strong></p>
|
||
<ul>
|
||
<li><a href="#audio">Audio</a></li>
|
||
<li><a href="#build-systems">Build Systems</a></li>
|
||
<li><a href="#compilers-code-generators">Compilers, code generators</a>
|
||
<ul>
|
||
<li><a href="#apl">APL</a></li>
|
||
<li><a href="#c-c">C, C++</a></li>
|
||
</ul></li>
|
||
<li><a href="#cryptography">Cryptography</a></li>
|
||
<li><a href="#cryptocurrencies">Cryptocurrencies</a></li>
|
||
<li><a href="#database">Database</a>
|
||
<ul>
|
||
<li><a href="#orms">ORMs</a></li>
|
||
<li><a href="#persistent-object-databases">Persistent object
|
||
databases</a></li>
|
||
<li><a href="#graph-databases">Graph databases</a></li>
|
||
<li><a href="#wrappers">Wrappers</a></li>
|
||
<li><a href="#migration-tools">Migration tools</a></li>
|
||
<li><a href="#to-third-parties">To third parties</a></li>
|
||
<li><a href="#tools">Tools</a></li>
|
||
</ul></li>
|
||
<li><a href="#data-structures">Data Structures</a></li>
|
||
<li><a href="#docker-images">Docker images</a></li>
|
||
<li><a href="#foreign-function-interface-languages-interop">Foreign
|
||
Function Interface, languages interop</a>
|
||
<ul>
|
||
<li><a href="#c">C</a></li>
|
||
<li><a href="#clojure">Clojure</a></li>
|
||
<li><a href="#erlang">Erlang</a></li>
|
||
<li><a href="#java">Java</a></li>
|
||
<li><a href="#objective-c">Objective-C</a></li>
|
||
<li><a href="#python">Python</a></li>
|
||
<li><a href="#net-core">.Net Core</a></li>
|
||
<li><a href="#miscellaneous">Miscellaneous</a></li>
|
||
</ul></li>
|
||
<li><a href="#game-development">Game Development</a></li>
|
||
<li><a href="#graphics">Graphics</a></li>
|
||
<li><a href="#gui">GUI</a>
|
||
<ul>
|
||
<li><a href="#mobile">Mobile</a></li>
|
||
</ul></li>
|
||
<li><a href="#implementations">Implementations</a></li>
|
||
<li><a href="#json">JSON</a></li>
|
||
<li><a href="#yaml">YAML</a></li>
|
||
<li><a href="#language-extensions">Language extensions</a>
|
||
<ul>
|
||
<li><a href="#portability-layers">Portability layers</a></li>
|
||
<li><a href="#changing-the-syntax">Changing the syntax</a></li>
|
||
<li><a href="#clos-extensions">CLOS extensions</a></li>
|
||
<li><a href="#function-extensions">Function extensions</a></li>
|
||
<li><a href="#iteration">Iteration</a></li>
|
||
<li><a href="#lambda-shorthands">Lambda shorthands</a></li>
|
||
<li><a href="#non-deterministic-logic-programming">Non-deterministic,
|
||
logic programming</a></li>
|
||
<li><a href="#reactive-programming">Reactive programming</a></li>
|
||
<li><a href="#contract-programming">Contract programming</a></li>
|
||
<li><a href="#typing">Typing</a></li>
|
||
<li><a href="#theorem-provers">Theorem provers</a></li>
|
||
</ul></li>
|
||
<li><a href="#learning-and-tutorials">Learning and Tutorials</a>
|
||
<ul>
|
||
<li><a href="#online">Online</a></li>
|
||
<li><a href="#beginner">Beginner</a></li>
|
||
<li><a href="#intermediate">Intermediate</a></li>
|
||
<li><a href="#advanced">Advanced</a></li>
|
||
<li><a href="#coding-platforms">Coding platforms</a></li>
|
||
<li><a href="#web-development">Web Development</a></li>
|
||
<li><a href="#reference">Reference</a></li>
|
||
<li><a href="#offline">Offline</a></li>
|
||
<li><a href="#beginner-1">Beginner</a></li>
|
||
<li><a href="#intermediate-1">Intermediate</a></li>
|
||
<li><a href="#advanced-1">Advanced</a></li>
|
||
<li><a href="#other-books">Other books</a></li>
|
||
<li><a href="#community">Community</a></li>
|
||
</ul></li>
|
||
<li><a href="#library-manager">Library Manager</a>
|
||
<ul>
|
||
<li><a href="#interfaces-to-other-package-managers">Interfaces to other
|
||
package managers</a></li>
|
||
</ul></li>
|
||
<li><a href="#machine-learning">Machine Learning</a></li>
|
||
<li><a href="#natural-language-processing">Natural Language
|
||
Processing</a></li>
|
||
<li><a href="#network-and-internet">Network and Internet</a>
|
||
<ul>
|
||
<li><a href="#http-clients">HTTP clients</a></li>
|
||
<li><a href="#http-servers">HTTP Servers</a>
|
||
<ul>
|
||
<li><a href="#hunchentoot-plugins">Hunchentoot plugins</a></li>
|
||
<li><a href="#clack-plugins">Clack plugins</a></li>
|
||
</ul></li>
|
||
<li><a href="#web-frameworks">Web frameworks</a>
|
||
<ul>
|
||
<li><a href="#isomorphic-web-frameworks">Isomorphic web
|
||
frameworks</a></li>
|
||
</ul></li>
|
||
<li><a href="#parsing-html">Parsing html</a></li>
|
||
<li><a href="#querying-htmldom-web-scraping">Querying HTML/DOM, web
|
||
scraping</a></li>
|
||
<li><a href="#html-generators-and-templates">HTML generators and
|
||
templates</a></li>
|
||
<li><a href="#uri-handling">URI handling</a></li>
|
||
<li><a href="#javascript">Javascript</a></li>
|
||
<li><a href="#deployment">Deployment</a></li>
|
||
<li><a href="#monitoring">Monitoring</a></li>
|
||
<li><a href="#websockets">Websockets</a></li>
|
||
<li><a href="#web-development-utilities">Web development utilities</a>
|
||
<ul>
|
||
<li><a href="#assets-management">Assets management</a></li>
|
||
<li><a href="#browser-tests">Browser tests</a></li>
|
||
<li><a href="#form-handling">Form handling</a></li>
|
||
<li><a href="#user-login-and-password-management">User login and
|
||
password management</a></li>
|
||
<li><a href="#web-project-skeletons-and-generators">Web project
|
||
skeletons and generators</a></li>
|
||
</ul></li>
|
||
<li><a href="#others">Others</a>
|
||
<ul>
|
||
<li><a href="#email">Email</a></li>
|
||
<li><a href="#openapi-odata-openrpc">OpenAPI, OData, OpenRPC</a></li>
|
||
<li><a href="#static-site-generators">Static site generators</a></li>
|
||
<li><a href="#third-party-apis">Third-party APIs</a></li>
|
||
</ul></li>
|
||
</ul></li>
|
||
<li><a href="#numerical-and-scientific">Numerical and Scientific</a>
|
||
<ul>
|
||
<li><a href="#matrix-libraries">Matrix libraries</a></li>
|
||
<li><a href="#statistics">Statistics</a></li>
|
||
<li><a href="#units">Units</a></li>
|
||
<li><a href="#utils">Utils</a></li>
|
||
</ul></li>
|
||
<li><a href="#parallelism-and-concurrency">Parallelism and
|
||
Concurrency</a>
|
||
<ul>
|
||
<li><a href="#actors-pattern">Actors pattern</a></li>
|
||
<li><a href="#event-processing">Event processing</a></li>
|
||
<li><a href="#job-processing">Job processing</a></li>
|
||
</ul></li>
|
||
<li><a href="#regex">Regex</a></li>
|
||
<li><a href="#scripting">Scripting</a>
|
||
<ul>
|
||
<li><a href="#writing-running-scripts">Writing, running scripts</a></li>
|
||
<li><a href="#command-line-options-parsers">Command-line options
|
||
parsers</a></li>
|
||
<li><a href="#readline-ncurses-and-other-graphical-helpers">Readline,
|
||
ncurses and other graphical helpers</a></li>
|
||
<li><a href="#shells-shells-interfaces">Shells, shells
|
||
interfaces</a></li>
|
||
<li><a href="#system-administration">System administration</a></li>
|
||
<li><a href="#other-scripting-utilities">Other scripting
|
||
utilities</a></li>
|
||
</ul></li>
|
||
<li><a href="#text-editor-resources">Text Editor Resources</a>
|
||
<ul>
|
||
<li><a href="#emacs">Emacs</a></li>
|
||
<li><a href="#vim--neovim">Vim & Neovim</a></li>
|
||
<li><a href="#eclipse">Eclipse</a></li>
|
||
<li><a href="#lem">Lem</a></li>
|
||
<li><a href="#atom-pulsar">Atom, Pulsar</a></li>
|
||
<li><a href="#sublime-text">Sublime Text</a></li>
|
||
<li><a href="#vscode">VSCode</a></li>
|
||
<li><a href="#jetbrains">JetBrains</a></li>
|
||
<li><a href="#geany-experimental">Geany (experimental)</a></li>
|
||
<li><a href="#notebooks">Notebooks</a></li>
|
||
<li><a href="#repls">REPLs</a></li>
|
||
<li><a href="#online-editors">Online editors</a></li>
|
||
<li><a href="#apps">Apps</a></li>
|
||
</ul></li>
|
||
<li><a href="#text-and-binary-parsers">Text and binary parsers</a></li>
|
||
<li><a href="#text-processing">Text Processing</a></li>
|
||
<li><a href="#tools-1">Tools</a></li>
|
||
<li><a href="#unit-testing">Unit Testing</a></li>
|
||
<li><a href="#utilities">Utilities</a>
|
||
<ul>
|
||
<li><a href="#caching">Caching</a></li>
|
||
<li><a href="#compression--decompression">Compression /
|
||
decompression</a></li>
|
||
<li><a href="#configuration">Configuration</a></li>
|
||
<li><a href="#csv">CSV</a></li>
|
||
<li><a href="#date-and-time">Date and time</a></li>
|
||
<li><a href="#data-validation">Data validation</a></li>
|
||
<li><a href="#developer-utilities">Developer utilities</a></li>
|
||
<li><a href="#documentation-builders">Documentation builders</a></li>
|
||
<li><a href="#files-and-directories">Files and directories</a></li>
|
||
<li><a href="#git">Git</a></li>
|
||
<li><a href="#i18n">i18n</a></li>
|
||
<li><a href="#linting-code-formatting">Linting, code formatting</a></li>
|
||
<li><a href="#literate-programming">Literate programming</a></li>
|
||
<li><a href="#logging">Logging</a></li>
|
||
<li><a href="#macro-helpers">Macro helpers</a></li>
|
||
<li><a href="#markdown">Markdown</a></li>
|
||
<li><a href="#pdf">PDF</a></li>
|
||
<li><a href="#plotting">Plotting</a></li>
|
||
<li><a href="#project-skeletons">Project skeletons</a></li>
|
||
<li><a href="#security">Security</a></li>
|
||
<li><a href="#system-interface">System interface</a></li>
|
||
<li><a href="#xml">XML</a></li>
|
||
<li><a href="#other">Other</a></li>
|
||
</ul></li>
|
||
<li><a href="#contributing">Contributing</a></li>
|
||
</ul>
|
||
<!-- markdown-toc end -->
|
||
<h1 id="audio">Audio</h1>
|
||
<p>Music composition:</p>
|
||
<ul>
|
||
<li><a href="https://github.com/openmusic-project/om7">OM7</a> - 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. <a href="http://www.gnu.org/copyleft/gpl.html">GPL3</a>.
|
||
<ul>
|
||
<li>an extension: <a
|
||
href="https://github.com/openmusic-project/RQ">rq</a> - a library for
|
||
rhythm transcription in OpenMusic (version 6.10 and later). <a
|
||
href="https://www.youtube.com/watch?v=XVEllB0TtVs">demo video</a>. <a
|
||
href="http://www.gnu.org/copyleft/gpl.html">GPL3</a>.</li>
|
||
</ul></li>
|
||
<li><a href="http://incudine.sourceforge.net/">Incudine</a> - 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.</li>
|
||
<li><a href="https://ccrma.stanford.edu/software/clm/">CLM</a> - 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).
|
||
<ul>
|
||
<li><a
|
||
href="https://github.com/theraphonics/common-tones">common-tones</a> - a
|
||
fork of CLM5 with modern Lisp (ASDF, cffi…). <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">BSD_3Clause</a>.</li>
|
||
</ul></li>
|
||
<li><a href="https://github.com/mdedwards/slippery-chicken/">Slippery
|
||
Chicken</a> - Algorithmic composition library which outputs Midi, Common
|
||
Music Notation, pdf-score via Lilypond and sound via Common Lisp Music.
|
||
<a href="http://www.gnu.org/copyleft/gpl.html">GPL3</a>.
|
||
<ul>
|
||
<li>with documentation: https://michael-edwards.org/sc/</li>
|
||
</ul></li>
|
||
<li><a href="https://github.com/ormf/cm">Common Music</a> - 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.
|
||
<ul>
|
||
<li>note: old project but working.</li>
|
||
<li><a href="https://github.com/ormf/cm-incudine">cm-incudine</a> -
|
||
extends Common Music 2 with realtime capabilities. GPL2.</li>
|
||
</ul></li>
|
||
<li><a href="https://github.com/defaultxr/cl-patterns">cl-patterns</a> -
|
||
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.</li>
|
||
<li><a href="https://github.com/MegaLoler/Music">Music</a> - A framework
|
||
for musical expression in Lisp with a focus on music theory (built from
|
||
scratch, unrelated to Common Music).</li>
|
||
</ul>
|
||
<p>Decoders, sound processing:</p>
|
||
<ul>
|
||
<li><a href="https://shirakumo.github.io/harmony">Harmony</a> - A
|
||
real-time sound processing and playback system. <a
|
||
href="https://directory.fsf.org/wiki/License:Zlib">zlib</a>.
|
||
<ul>
|
||
<li>“provides you with audio processing tools as well as an audio server
|
||
to play back music, sfx, and so forth.”</li>
|
||
<li>using <a href="https://github.com/Shirakumo/cl-mixed">cl-mixed</a>
|
||
for the mixing and sound processing library.</li>
|
||
</ul></li>
|
||
<li><a href="https://github.com/shamazmazum/easy-audio">easy-audio</a> -
|
||
a collection of audio decoders and metadata readers.</li>
|
||
</ul>
|
||
<p>others:</p>
|
||
<ul>
|
||
<li><a href="https://github.com/byulparan/scheduler">scheduler</a> - The
|
||
time based musical event scheduler for Common Lisp. <a
|
||
href="https://directory.fsf.org/wiki/License:Apache2.0">Apache2.0</a>.</li>
|
||
<li><a href="https://ccrma.stanford.edu/software/cmn/">Common Music
|
||
Notation</a> - Common Music Notation (CMN) provides a package of
|
||
functions to hierarchically describe a musical score. Public
|
||
domain.</li>
|
||
<li><a href="https://github.com/zzkt/osc">osc</a> - an implementation of
|
||
the Open Sound Protocol. <a
|
||
href="http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html">LGPL2.1</a>.</li>
|
||
</ul>
|
||
<p>bindings and clients to other software and libraries:</p>
|
||
<ul>
|
||
<li><a href="https://github.com/Shirakumo/cl-mpg123">cl-mpg123</a>, <a
|
||
href="https://github.com/Shirakumo/cl-opus">cl-opus</a> (OGG/Opus), <a
|
||
href="https://github.com/Shirakumo/cl-vorbis">cl-vorbis</a>
|
||
(OGG/Vorbis), <a
|
||
href="https://github.com/Shirakumo/cl-soloud">cl-SoLoud</a>, <a
|
||
href="https://github.com/Shirakumo/cl-out123">cl-out123</a> (libout123),
|
||
<a href="https://github.com/Shirakumo/cl-flac">cl-flac</a></li>
|
||
<li><a href="https://github.com/csound/csound">csound</a> - A sound and
|
||
music computing system. Includes CFFI and FFI interfaces for Common
|
||
Lisp.</li>
|
||
<li><a href="https://github.com/byulparan/cl-collider">cl-collider</a> -
|
||
A <a href="http://supercollider.github.io/">SuperCollider</a> client for
|
||
CommonLisp. With a <a
|
||
href="https://github.com/defaultxr/cl-collider-tutorial">tutorial</a>
|
||
and <a href="https://www.youtube.com/watch?v=xzTH_ZqaFKI">live coding
|
||
demos</a>. Public domain.</li>
|
||
<li><a href="https://github.com/zkat/cl-openal">cl-openal</a> - bindings
|
||
for the OpenAL audio library. Public domain.</li>
|
||
</ul>
|
||
<p>and more audio software targetting musicians on <a
|
||
href="https://github.com/CodyReichert/awesome-cl#audio">awesome-cl-software#audio</a>
|
||
(Opus Modus, OpenMusic…).</p>
|
||
<h1 id="build-systems">Build Systems</h1>
|
||
<ul>
|
||
<li>⭐<a href="https://common-lisp.net/project/asdf/">ASDF</a> - Another
|
||
System Definition Facility; a build system for Common Lisp. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat">Expat</a>. Quicklisp
|
||
(see <a href="#library-manager">library manager</a>) uses ASDF under the
|
||
hood.
|
||
<ul>
|
||
<li><a href="https://common-lisp.net/project/asdf/#extensions">known
|
||
ASDF extensions</a>, such as <code>asdf-system-connections</code>, that
|
||
lets you specify systems that are automatically loaded when two other
|
||
systems are loaded, to connect them.</li>
|
||
</ul></li>
|
||
<li><a
|
||
href="https://github.com/eudoxia0/asdf-linguist">asdf-linguist</a> -
|
||
Extensions for ASDF. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat">Expat</a>.</li>
|
||
<li><a href="https://github.com/guicho271828/asdf-viz">asdf-viz</a> - a
|
||
tool to visualize the library dependencies of ASDF systems, the call
|
||
graph of a function and the class inheritances. <a
|
||
href="http://opensource.franz.com/preamble.html">LLGPL</a>.</li>
|
||
</ul>
|
||
<p>See also:</p>
|
||
<ul>
|
||
<li><a href="https://github.com/Shinmera/modularize">modularize</a> - A
|
||
modularization framework for Common Lisp. <a
|
||
href="https://directory.fsf.org/wiki/License:Zlib">zlib</a>.
|
||
<ul>
|
||
<li>provides a common interface to segregate major application
|
||
components.</li>
|
||
<li>for instance, by adding module definition options you can introduce
|
||
mechanisms to tie modules together in functionality, hook into each
|
||
other and so on.</li>
|
||
<li>acts as a wrapper around <code>defpackage</code> and integrates into
|
||
ASDF.</li>
|
||
</ul></li>
|
||
</ul>
|
||
<h1 id="compilers-code-generators">Compilers, code generators</h1>
|
||
<h2 id="apl">APL</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/phantomics/april">April</a> - The APL
|
||
programming language (a subset thereof) compiling to Common Lisp.
|
||
Replace hundreds of lines of number-crunching code with a single line of
|
||
APL. <a
|
||
href="https://directory.fsf.org/wiki/License:Apache2.0">Apache2</a>.</li>
|
||
</ul>
|
||
<h2 id="c-c">C, C++</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/eudoxia0/cmacro">cmacro</a> - Lisp
|
||
macros for C. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://github.com/kiselgra/c-mera">C-mera</a> - a
|
||
source-to-source compiler that utilizes Lisp’s macro system for meta
|
||
programming of C-like languages. <a
|
||
href="http://www.gnu.org/copyleft/gpl.html">GPL3</a>.</li>
|
||
<li><a href="https://github.com/eratosthenesia/lispc">lispc</a> - a
|
||
powerful “lispsy” macrolanguage for C. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a
|
||
href="https://github.com/y2q-actionman/with-c-syntax">with-c-syntax</a>
|
||
- a fun package which introduces the C language syntax into Common Lisp.
|
||
(Yes, this package is not for practical coding, I think.) WTFPL
|
||
Licence.</li>
|
||
<li><a href="https://gitlab.common-lisp.net/ecl/ecrepl">ecrepl</a> - an
|
||
interactive REPL for the C language. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_2Clause">BSD_2Clause</a>.</li>
|
||
<li><a
|
||
href="https://github.com/GrammaTech/sel">Software-Evolution-Library</a>
|
||
- The SEL enables the programmatic modification and evaluation of
|
||
software (C/C++ support using Clang, compiled assembler, and linked ELF
|
||
binaries). <a href="http://www.gnu.org/copyleft/gpl.html">GPL3</a>.</li>
|
||
<li><a href="https://github.com/vsedach/Vacietis">vacietis</a> - C to
|
||
Common Lisp compiler. <a
|
||
href="https://www.gnu.org/licenses/lgpl-3.0.en.html">LGPL3</a>.</li>
|
||
</ul>
|
||
<h1 id="cryptography">Cryptography</h1>
|
||
<ul>
|
||
<li>⭐ <a href="https://github.com/sharplispers/ironclad">Ironclad</a> -
|
||
A library of crypto functions for Common Lisp. Not considered secure,
|
||
but is still useful for the message digest functions. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat">Expat</a>.</li>
|
||
<li><a
|
||
href="https://github.com/Shinmera/crypto-shortcuts">crypto-shortcuts</a>
|
||
- Collection of common crypto shortcuts. <a
|
||
href="https://directory.fsf.org/wiki/License:Zlib">zlib</a>.</li>
|
||
<li><a href="https://github.com/eudoxia0/trivial-ssh">trivial-ssh</a> -
|
||
An SSH client library. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat">Expat</a>.</li>
|
||
<li><a href="https://github.com/dnaeon/cl-ssh-keys">cl-ssh-keys</a> -
|
||
Common Lisp system for generating and parsing of OpenSSH keys. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">BSD_3Clause</a>.</li>
|
||
<li><a href="https://github.com/dnaeon/cl-bcrypt">cl-bcrypt</a> - Common
|
||
Lisp system for parsing and generating bcrypt password hashes. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">BSD_3Clause</a>.
|
||
<ul>
|
||
<li>see also <a href="https://github.com/eudoxia0/cl-pass">cl-pass</a>,
|
||
using pbkdf2.</li>
|
||
</ul></li>
|
||
<li><a
|
||
href="https://www.gnupg.org/download/index.en.html#gpgme">gpgme</a>
|
||
(GnuPG Made Easy) is the standard library to access GnuPG functions from
|
||
programming languages. It provides an official Common Lisp system.
|
||
<ul>
|
||
<li><a
|
||
href="https://git.gnupg.org/cgi-bin/gitweb.cgi?p=gpgme.git;a=tree;f=lang/cl;h=05151bdf839e513f534a1b423d59332a2e46fd5d;hb=HEAD">gpgme
|
||
lisp sources</a> (not in Quicklisp). GPL2.</li>
|
||
</ul></li>
|
||
<li><a
|
||
href="https://github.com/ak-coram/cl-frugal-uuid/">cl-frugal-uuid</a> -
|
||
Common Lisp UUID library with zero dependencies. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
</ul>
|
||
<h1 id="cryptocurrencies">Cryptocurrencies</h1>
|
||
<ul>
|
||
<li><a
|
||
href="https://codeberg.org/kilianmh/bitcoin-core-rpc/">bitcoin-core-rpc</a>
|
||
- a (hopefully) complete Bitcoin Core RPC client. <a
|
||
href="https://directory.fsf.org/wiki/License:AGPL-3.0">AGPL-3.0+</a></li>
|
||
<li><a href="https://github.com/rodentrabies/bp">bp</a> - Bitcoin
|
||
Protocol components in Common Lisp. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a
|
||
href="https://github.com/glv2/cl-monero-tools">cl-monero-tools</a> -
|
||
Common Lisp toolbox to work with the Monero cryptocurrency. <a
|
||
href="http://www.gnu.org/copyleft/gpl.html">GPL3</a>. Not in
|
||
Quicklisp.</li>
|
||
<li><a
|
||
href="https://github.com/glv2/peercoin-blockchain-parser">peercoin-blockchain-parser</a>
|
||
- parse the blockchain contained in a file and export some of its data
|
||
to a text file, a SQL script or a database. It can also create a
|
||
database using the RPC of a Peercoin daemon as source of data instead of
|
||
a blockchain file. LGPL3. Not in Quicklisp.</li>
|
||
<li><a
|
||
href="https://github.com/glv2/peercoin-calculator">peercoin-calculator</a>
|
||
- This program gives you the probability of generating a POS or POW
|
||
block within 10 minutes, 24 hours, 31 days, 90 days and 1 year, as well
|
||
as the reward that can be expected. GUI in Qt. <a
|
||
href="http://www.gnu.org/copyleft/gpl.html">GPL3</a>. Not in
|
||
Quicklisp.</li>
|
||
<li><a href="https://github.com/glv2/peercoin-vote">peercoin-vote</a> -
|
||
A voting system based on data from the blockchain (addresses and
|
||
balances). <a href="http://www.gnu.org/copyleft/gpl.html">GPL3</a>. Not
|
||
in Quicklisp.</li>
|
||
<li><a href="https://github.com/kilianmh/stacks-api">stacks-api</a> - a
|
||
Stacks API client. <a
|
||
href="https://directory.fsf.org/wiki/License:Apache2.0">AGPL-3.0</a></li>
|
||
</ul>
|
||
<p>See also <a
|
||
href="https://github.com/defunkydrummer/legochain">legochain</a>, a
|
||
simple educational blockchain; <a
|
||
href="https://github.com/emotiq/emotiq">emotiq</a>, a next-generation
|
||
blockchain with an innovative natural-language approach to smart
|
||
contracts built in Common Lisp (stopped).</p>
|
||
<h1 id="database">Database</h1>
|
||
<ul>
|
||
<li>NEW <a href="https://github.com/endatabas/endb">endatabas</a> -
|
||
Schemaless SQL document database with full history. <a
|
||
href="https://directory.fsf.org/wiki/License:Apache2.0">AGPL-3.0</a>.
|
||
<ul>
|
||
<li>built in Common Lisp and Rust.</li>
|
||
<li>in development, alpha product scheduled for Q2 of 2024. <a
|
||
href="https://docs.endatabas.com/appendix/roadmap.html">roadmap</a>.</li>
|
||
</ul></li>
|
||
<li><a href="https://github.com/ruricolist/cl-yesql">cl-yesql</a> - SQL
|
||
statements live in their own files, in SQL syntax, and are imported into
|
||
Lisp as functions. You are not limited to the features a DSL supports.
|
||
Based on Clojure’s Yesql. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
</ul>
|
||
<h2 id="orms">ORMs</h2>
|
||
<ul>
|
||
<li>⭐ <a href="http://www.cliki.net/CLSQL">clsql</a> - An SQL database
|
||
with a Common Lisp interface. <a
|
||
href="http://opensource.franz.com/preamble.html">LLGPL</a>.</li>
|
||
<li>👍 <a href="https://github.com/fukamachi/mito">mito</a> - An ORM for
|
||
Common Lisp with migrations, relationships and PostgreSQL support <a
|
||
href="http://opensource.franz.com/preamble.html">LLGPL</a>.
|
||
<ul>
|
||
<li><a href="https://github.com/fukamachi/mito-auth">mitho-auth</a>, a
|
||
mixin class for use authorization</li>
|
||
<li><a
|
||
href="https://github.com/fukamachi/mito-attachment">mito-attachment</a>,
|
||
a mixin class for file management outside of RDBMS.</li>
|
||
</ul></li>
|
||
<li><a href="https://github.com/fukamachi/cl-dbi">cl-dbi</a> - A
|
||
database-independent interface for Common Lisp. <a
|
||
href="http://opensource.franz.com/preamble.html">LLGPL</a>.
|
||
<ul>
|
||
<li><a href="https://github.com/sergadin/dbd-oracle">dbd-oracle</a> - an
|
||
Oracle database driver for CL-DBI. <a
|
||
href="http://opensource.franz.com/preamble.html">LLGPL</a>.</li>
|
||
</ul></li>
|
||
<li><a href="https://github.com/eudoxia0/crane">crane</a> - Another ORM.
|
||
<a href="https://directory.fsf.org/wiki/License:Expat">Expat</a>.</li>
|
||
<li><a href="https://github.com/fukamachi/datafly">datafly</a> - A
|
||
lightweight database library. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">3-clause
|
||
BSD</a>.</li>
|
||
<li><a href="https://github.com/fukamachi/sxql">sxql</a> - A DSL for
|
||
generating SQL. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">3-clause
|
||
BSD</a>.</li>
|
||
</ul>
|
||
<h2 id="persistent-object-databases">Persistent object databases</h2>
|
||
<ul>
|
||
<li><a
|
||
href="https://github.com/hanshuebner/bknr-datastore">bknr.datastore</a>
|
||
- a CLOS-based lisp-only database in RAM with transaction logging
|
||
persistence. <a
|
||
href="https://www.common-lisp.net/project/bknr/html/documentation.html">Manual</a>.
|
||
<a
|
||
href="https://www.gnu.org/licenses/old-licenses/gpl-2.0.html">licence</a>.
|
||
<ul>
|
||
<li>see also this <a
|
||
href="https://ashok-khanna.medium.com/persistent-in-memory-data-storage-in-common-lisp-b-k-n-r-37f8ae76042f">good
|
||
introductory blog post</a></li>
|
||
<li>an example web application using bknr.datastore: <a
|
||
href="https://github.com/screenshotbot/screenshotbot-oss">screenshotbot-oss</a>.</li>
|
||
<li>See also <a
|
||
href="https://github.com/tdrhq/bknr.cluster">bknr.cluster</a>, if you
|
||
want a highly-available replicated version of bknr.datastore.</li>
|
||
</ul></li>
|
||
<li><a href="https://github.com/Shinmera/ubiquitous">ubiquitous</a> - A
|
||
library providing easy-to-use persistent configuration storage. <a
|
||
href="https://directory.fsf.org/wiki/License:Zlib">zlib</a>.</li>
|
||
<li><a
|
||
href="https://common-lisp.net/project/cl-prevalence/">cl-prevalence</a>
|
||
- in-memory database system. Implementation of Object Prevalence, in
|
||
which business objects are kept live in memory and transactions are
|
||
journaled for system recovery. <a
|
||
href="https://github.com/40ants/cl-prevalence">github fork</a>. <a
|
||
href="http://opensource.franz.com/preamble.html">LLGPL</a>.
|
||
<ul>
|
||
<li>See also <a
|
||
href="https://github.com/40ants/cl-prevalence-multimaster">cl-prevalence-multimaster</a>,
|
||
to syncronize multiple cl-prevalence systems state.</li>
|
||
</ul></li>
|
||
<li><a href="https://gitlab.com/Harag/cl-naive-store">cl-naive-store</a>
|
||
- a naive persisted, in memory (lazy loading), indexed, document store
|
||
for Common Lisp. <a href="https://opensource.org/licenses/MIT">MIT</a>.
|
||
<ul>
|
||
<li>see <a
|
||
href="https://zaries.wordpress.com/2022/05/31/cl-naive-store/">the
|
||
introductory blog post</a></li>
|
||
<li>dare we add: used in production by the author’s company (ASTN Group,
|
||
see awesome-lisp-companies)</li>
|
||
</ul></li>
|
||
</ul>
|
||
<p>See also <a href="https://github.com/html/clache">Clache</a>, that
|
||
can save any object on disk.</p>
|
||
<h2 id="graph-databases">Graph databases</h2>
|
||
<ul>
|
||
<li><a href="https://allegrograph.com/">AllegroGraph</a> - a
|
||
high-performance, multi-model (document and graph), entity-event
|
||
knowledge graph technology.
|
||
<ul>
|
||
<li>Proprietary, with a free version of a limit of 5 million RDF
|
||
triples.</li>
|
||
<li>with a <a href="https://allegrograph.cloud/">hosted version</a></li>
|
||
<li>AllegroGraph 8.0 (released December, 2023) “incorporates Large
|
||
Language Model (LLM) components directly into SPARQL along with vector
|
||
generation and vector storage for a comprehensive AI Knowledge Graph
|
||
solution.”</li>
|
||
</ul></li>
|
||
<li><a href="https://github.com/vseloved/cl-agraph">cl-agraph</a>, a
|
||
minimal client for AllegroGraph.</li>
|
||
<li><a href="https://codeberg.org/Equill/neo4cl">neo4cl</a> - a library
|
||
for interacting with Neo4J. Sends Cypher queries to a Neo4J server, and
|
||
decodes the responses into something useful for processing in CL. <a
|
||
href="https://directory.fsf.org/wiki/License:Apache2.0">Apache2</a>.
|
||
<ul>
|
||
<li>and maybe: <a
|
||
href="https://github.com/kraison/cl-neo4j">cl-neo4j</a> - a thin neo4j
|
||
RESTFUL client interface.</li>
|
||
</ul></li>
|
||
<li><a
|
||
href="https://github.com/kraison/vivace-graph-v3">vivace-graph</a> -
|
||
graph database & Prolog implementation. Takes design inspiration
|
||
from CouchDB, neo4j and AllegroGraph. It implements an ACID-compliant
|
||
object graph model with user-defined indexes and map-reduce views. It
|
||
also implements a master / slave replication scheme for redundancy and
|
||
horizontal read scaling. Querying the graph is accomplished via a number
|
||
of Lisp methods or via a Prolog-like query language. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.
|
||
<ul>
|
||
<li>“I have used Vivace Graph as an online catalog for millions of
|
||
products, as the back end for a complex, adaptable VoIP-based IVR, as
|
||
well as data store for several complex big data analysis systems, and
|
||
finally as the engine for two recommender systems.” (issue #23)</li>
|
||
<li>“Why is vivace graph so fast? I have been comparing it with
|
||
SQL-based approach and Neo4j, and vivace graph is much, much
|
||
faster.”</li>
|
||
</ul></li>
|
||
</ul>
|
||
<p>and also:</p>
|
||
<ul>
|
||
<li><a href="https://codeberg.org/Equill/restagraph">restagraph</a> - an
|
||
app that dynamically generates REST APIs for a Neo4j database, using a
|
||
schema defined within the database. <a
|
||
href="http://www.gnu.org/copyleft/gpl.html">GPL3</a>.</li>
|
||
</ul>
|
||
<!-- lost in translation: (it was slow anyways) -->
|
||
<!-- * [facts](https://github.com/cl-facts/facts) - an in-memory graph database with transactions and rollbacks, logging/replay and dumping/loading to/from disk. BSD-style license (ISC). -->
|
||
<h2 id="wrappers">Wrappers</h2>
|
||
<ul>
|
||
<li>⭐ <a href="http://marijnhaverbeke.nl/postmodern/">postmodern</a> -
|
||
A library for interacting with PostgreSQL. <a
|
||
href="https://directory.fsf.org/wiki/License:Zlib">zlib</a>.</li>
|
||
<li><a href="https://github.com/dmitryvk/cl-sqlite">cl-sqlite</a> -
|
||
Bindings for SQLite. Public domain.</li>
|
||
<li><a href="https://github.com/quasi/cl-memcached">cl-memcached</a> -
|
||
Fast, thread-safe interface to the Memcached object caching system. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat">Expat</a>.</li>
|
||
<li><a href="https://github.com/fons/cl-mongo">cl-mongo</a> - MongoDB
|
||
client. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat">Expat</a>.</li>
|
||
<li><a href="https://github.com/vseloved/cl-redis">cl-redis</a> - Redis
|
||
client. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat">Expat</a>.</li>
|
||
<li><a href="https://github.com/CodyReichert/cl-disque">cl-disque</a> -
|
||
Disque client. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">3-clause
|
||
BSD</a>.</li>
|
||
<li><a
|
||
href="https://github.com/orthecreedence/cl-rethinkdb">cl-rethinkdb</a> -
|
||
RethinkDB client. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat">Expat</a>.</li>
|
||
<li><a href="https://github.com/cmoore/cl-mango/">cl-mango</a> - A
|
||
minimalist CouchDB 2.x database client. BSD_3Clause.
|
||
<ul>
|
||
<li>See also <a
|
||
href="https://common-lisp.net/project/clouchdb/">clouchdb</a> - Library
|
||
for interacting with CouchDB. <a
|
||
href="https://directory.fsf.org/wiki?title=License:FreeBSD">FreeBSD</a>.</li>
|
||
</ul></li>
|
||
<li><a href="https://github.com/antimer/lmdb">lmdb</a> - Bindings to <a
|
||
href="http://www.lmdb.tech/doc/">LMDB</a>, the Lightning Memory-mapped
|
||
Database, an ACID key-value database with MultiVersion Concurrency
|
||
Control.</li>
|
||
<li><a href="https://github.com/datagraph/cl-ndbapi">cl-ndbapi</a> -
|
||
bindings to the C++ NDB API of <a
|
||
href="https://www.rondb.com/">RonDB</a>, “the world’s fastest key value
|
||
store”, by <a href="https://dydra.com/home">Dydra</a>. GPLv2.</li>
|
||
<li><a href="https://github.com/ak-coram/cl-duckdb">cl-duckdb</a> -
|
||
Common Lisp CFFI wrapper around the DuckDB C API. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
</ul>
|
||
<h2 id="migration-tools">Migration tools</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/dnaeon/cl-migratum">cl-migratum</a> - a
|
||
system which provides facilities for performing database schema
|
||
migrations, designed to work with various databases. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">BSD_3Clause</a>.</li>
|
||
<li><a
|
||
href="https://github.com/fisxoj/postmodern-passenger-pigeon/">postmodern-passenger-pigeon</a>
|
||
- a migration manager for postmodern. No licence specified.</li>
|
||
</ul>
|
||
<h2 id="to-third-parties">To third parties</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/Rudolph-Miller/dyna">dyna</a> - an AWS
|
||
DynamoDB ORM. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://github.com/mmaul/cl-influxdb/">cl-influxdb</a> - an
|
||
interface to the Time Series Database InfluxDB. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://github.com/orivej/pzmq">pzmq</a> - ZeroMQ 4.0+
|
||
Common Lisp bindings. Unlicense.</li>
|
||
</ul>
|
||
<h2 id="tools">Tools</h2>
|
||
<ul>
|
||
<li>⭐ <a href="https://github.com/dimitri/pgloader">pgloader</a> - a
|
||
data loading tool for PostgreSQL. <a
|
||
href="https://www.postgresql.org/about/licence/">PostgreSQL
|
||
Licence</a>.</li>
|
||
</ul>
|
||
<h1 id="data-structures">Data Structures</h1>
|
||
<ul>
|
||
<li>👍 <a href="https://github.com/vindarel/cl-str">str</a> - a modern,
|
||
simple and consistent string manipulation library. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li>👍 <a href="https://common-lisp.net/project/fset">FSet</a> - A
|
||
functional, set-theoretic collections data structure library. <a
|
||
href="http://opensource.franz.com/preamble.html">LLGPL</a>.</li>
|
||
<li><a
|
||
href="https://github.com/Shinmera/trivial-extensible-sequences">trivial-extensible-sequences</a>
|
||
- Portability library for the extensible sequences protocol (<a
|
||
href="http://www.sbcl.org/manual/#Extensible-Sequences">SBCL
|
||
documentation</a>). <a
|
||
href="https://directory.fsf.org/wiki/License:Zlib">zlib</a>.</li>
|
||
<li><a href="https://github.com/glv2/bst">bst</a> - Binary Search Tree.
|
||
<a href="http://www.gnu.org/copyleft/gpl.html">GPL3</a>.</li>
|
||
<li><a href="http://nikodemus.github.io/pileup/">pileup</a> - a
|
||
portable, performant, and thread-safe binary heap for Common Lisp. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://github.com/ndantam/sycamore">sycamore</a> - a fast,
|
||
purely functional data structure library. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">BSD_3Clause</a>.</li>
|
||
<li><a href="https://github.com/pnathan/genhash">genhash</a> – hash
|
||
table implementation with API from generic methods. Public domain.</li>
|
||
<li><a href="https://github.com/danlentz/cl-ctrie">cl-ctrie</a> -
|
||
lock-free, concurrent, key/value index with efficient memory-mapped
|
||
persistence and fast transient storage models. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a
|
||
href="https://github.com/sirherrbatka/cl-data-structures">cl-data-structures</a>
|
||
- a portable collection of data structures and algorithms (mainly dicts
|
||
and sequences, with some statistical functions). <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">BSD</a>.</li>
|
||
<li><a href="https://github.com/Dimercel/listopia">listopia</a> - a list
|
||
manipulation library inspired by Haskell’s Data.List. <a
|
||
href="http://opensource.franz.com/preamble.html">LLGPL</a>.</li>
|
||
<li><a href="https://github.com/samebchase/hash-set/">hash-set</a> - a
|
||
convenience library implementing hash sets on top of CL hash tables <a
|
||
href="http://unlicense.org/">The Unlicense</a></li>
|
||
<li><a href="https://github.com/thephoeron/bit-smasher">bit-smasher</a>
|
||
- Common Lisp library for handling bit vectors, bit vector arithmetic,
|
||
and type conversions. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a
|
||
href="https://common-lisp.net/project/cl-containers/">cl-containers</a>
|
||
- an extensive library of data structures and utilities - queues, trees,
|
||
heaps, doubly-linked lists, sets, bags,… <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a></li>
|
||
<li><a
|
||
href="https://github.com/privet-kitty/cl-competitive">cl-competitive</a>
|
||
- Common Lisp algorithms collection for competitive programming. Public
|
||
domain, CCO or MIT.</li>
|
||
<li><a href="https://github.com/fosskers/cl-nonempty">nonempty</a> -
|
||
Non-empty collections for Common Lisp. <a
|
||
href="https://www.gnu.org/licenses/lgpl-3.0.en.html">LGPL3</a>.</li>
|
||
</ul>
|
||
<p>Accessing data structures:</p>
|
||
<ul>
|
||
<li>👍 <a href="https://github.com/AccelerationNet/access/">access</a> -
|
||
Consistent and nested access to most common data structures. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">BSD_3Clause</a>.</li>
|
||
<li><a href="https://github.com/smithzvk/modf">modf</a> - a setf-like
|
||
macro for functional programming.</li>
|
||
</ul>
|
||
<p>Other data structures:</p>
|
||
<ul>
|
||
<li><a href="https://github.com/marcoheisig/bitfield">bitfield</a> -
|
||
Efficiently represent several finite sets or small integers as a single
|
||
non-negative integer. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
</ul>
|
||
<h1 id="docker-images">Docker images</h1>
|
||
<ul>
|
||
<li><a
|
||
href="https://common-lisp.net/project/cl-docker-images/">cl-docker-images</a>
|
||
- Docker images for ABCL, CCL, ECL, and SBCL on Windows (amd64) and
|
||
Alpine and Debian (amd64, arm64, arm/v7) <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_2Clause">BSD_2Clause</a>.</li>
|
||
<li><a
|
||
href="https://github.com/40ants/base-lisp-image">base-lisp-image</a> -
|
||
base Docker image for Common Lisp projects with SBCL or CCL and the
|
||
latest ASDF, Qlot and Roswell.</li>
|
||
<li><a href="https://github.com/yitzchak/archlinux-cl">archlinux-cl</a>
|
||
- Docker Arch Linux image with Common Lisp implementations (7 to this
|
||
day). MIT.</li>
|
||
</ul>
|
||
<h1 id="foreign-function-interface-languages-interop">Foreign Function
|
||
Interface, languages interop</h1>
|
||
<h2 id="c">C</h2>
|
||
<ul>
|
||
<li>⭐ <a href="https://github.com/cffi/cffi">CFFI</a> - Portable,
|
||
easy-to-use C foreign function interface. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat">Expat</a>.
|
||
<ul>
|
||
<li><a href="https://github.com/bohonghuang/cffi-ops">cffi-ops</a> -
|
||
helps write concise CFFI-related code.</li>
|
||
<li><a
|
||
href="https://github.com/bohonghuang/cffi-object">cffi-objects</a> -
|
||
enables fast and convenient interoperation with foreign objects.</li>
|
||
</ul></li>
|
||
<li>👍<a href="https://github.com/rpav/cl-autowrap">cl-autowrap</a> -
|
||
Automatically parses header files into CFFI definitions. <a
|
||
href="https://directory.fsf.org/wiki?title=License:FreeBSD">FreeBSD</a>.</li>
|
||
<li><a href="https://github.com/sdilts/cl-bindgen">cl-bindgen</a> - A
|
||
command line tool and library for creating Common Lisp language bindings
|
||
from C header files. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a
|
||
href="https://github.com/andy128k/cl-gobject-introspection">cl-gobject-introspection</a>
|
||
- <a href="https://gi.readthedocs.io/en/latest/">Gobject
|
||
Introspection</a> FFI. Automatic bindings to call into the C library. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">BSD</a>.
|
||
Generate a lisp interface with <a
|
||
href="https://github.com/kat-co/gir2cl">gir2cl</a>. <a
|
||
href="https://www.gnu.org/licenses/lgpl-3.0.en.html">LGPL3</a>.</li>
|
||
<li><a href="https://github.com/Islam0mar/CL-CXX-JIT">cl-cxx-jit</a> -
|
||
Common Lisp and C++ interoperation with JIT. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
</ul>
|
||
<h2 id="clojure">Clojure</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/lsevero/abclj">ABCLJ</a> - dead easy
|
||
Clojure to Common lisp interop. EPL-2.0.</li>
|
||
</ul>
|
||
<p>In development:</p>
|
||
<ul>
|
||
<li><a href="https://github.com/ruricolist/cloture">Cloture</a> -
|
||
Clojure in Common Lisp.</li>
|
||
</ul>
|
||
<blockquote>
|
||
<p>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.</p>
|
||
</blockquote>
|
||
<p>See also those libraries:</p>
|
||
<ul>
|
||
<li><a href="https://github.com/eigenhombre/cl-oju/">cl-oju</a> - a few
|
||
idioms, mostly relating to sequences, that I miss when writing Common
|
||
Lisp. <a href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://github.com/dtenny/clj-con">clj-con</a> -
|
||
Clojure-style concurrency operations in Common Lisp. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://github.com/dtenny/clj-re/">clj-re</a> -
|
||
Clojure-style regular expression functions.</li>
|
||
</ul>
|
||
<h2 id="erlang">Erlang</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/flambard/CLERIC">CLERIC</a> - a Common
|
||
Lisp Erlang Interface. An implementation of the Erlang distribution
|
||
protocol, comparable with erl_interface and jinterface. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
</ul>
|
||
<h2 id="java">Java</h2>
|
||
<ul>
|
||
<li><a href="https://common-lisp.net/project/cl-plus-j/">cl+j</a> - A
|
||
JNI-based interface to a JVM via CFFI. Not available on Quicklisp. Does
|
||
not reliably work with all implementations. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat">Expat</a>.</li>
|
||
</ul>
|
||
<h2 id="objective-c">Objective-C</h2>
|
||
<ul>
|
||
<li><a
|
||
href="https://github.com/fiddlerwoaroof/objc-lisp-bridge">objc-lisp-bridge</a>
|
||
- A portable reader and bridge for interacting with Objective-C and
|
||
Cocoa. <a href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
</ul>
|
||
<h2 id="python">Python</h2>
|
||
<ul>
|
||
<li><a
|
||
href="https://github.com/pinterface/burgled-batteries">burgled-batteries</a>
|
||
- A bridge between Python and Common Lisp. The goal is that Lisp
|
||
programs can use Python libraries. Not available on Quicklisp. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://github.com/marcoheisig/cl4py">cl4py</a> - The
|
||
library cl4py (pronounce as clappy) allows Python programs to call
|
||
Common Lisp libraries. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://github.com/bendudson/py4cl">py4cl</a> - A library
|
||
that allows Common Lisp code to access Python libraries. It is basically
|
||
the inverse of cl4py. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.
|
||
<ul>
|
||
<li>its fork <a href="https://github.com/digikar99/py4cl2">py4cl2</a>,
|
||
at first less stable, now more developped and faster.</li>
|
||
<li><a href="https://github.com/digikar99/py4cl2-cffi">py4cl2-cffi</a> -
|
||
CFFI based alternative to py4cl2.
|
||
<ul>
|
||
<li>“When capable, the CFFI approach can be a 50 times faster than
|
||
py4cl2.”</li>
|
||
</ul></li>
|
||
</ul></li>
|
||
</ul>
|
||
<p>See also <a
|
||
href="https://github.com/cxxxr/async-process/">async-process</a>.</p>
|
||
<ul>
|
||
<li><a href="https://github.com/metawilm/cl-python">cl-python</a> - an
|
||
implementation of Python in Common Lisp. <a
|
||
href="http://opensource.franz.com/preamble.html">LLGPL</a>, not under
|
||
active development.</li>
|
||
</ul>
|
||
<h2 id="net-core">.Net Core</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/Lovesan/bike">Bike</a> - a
|
||
cross-platform .Net Core interface. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
</ul>
|
||
<h2 id="miscellaneous">Miscellaneous</h2>
|
||
<ul>
|
||
<li><a href="http://foil.sourceforge.net/">Foil</a> - A foreign object
|
||
interface; works with the JVM and CLI. Not available on Quicklisp. <a
|
||
href="https://directory.fsf.org/wiki/License:CPLv1.0">CPL 1.0</a>.</li>
|
||
</ul>
|
||
<p>For Emacs Lisp:</p>
|
||
<ul>
|
||
<li><a href="https://gitlab.com/sasanidas/cedar">CEDAR</a> - an advance
|
||
interactive development environment aiming to be Emacs compatible with
|
||
all the features that come with it. (WIP)</li>
|
||
<li><a
|
||
href="https://sourceforge.net/p/clocc/hg/ci/default/tree/src/cllib/elisp.lisp">CLOCC’s
|
||
elisp.lisp</a> - Emacs Lisp in Common Lisp.
|
||
<ul>
|
||
<li>implementation of the Emacs Lisp language as a Common Lisp package.
|
||
[1999]</li>
|
||
<li>does not attempt to reimplement the library of functions provided in
|
||
Emacs to manipulate buffers and other related objects, so it focuses on
|
||
the “pure” Emacs Lisp language; but it was able to run the non-UI parts
|
||
of the Emacs Calendar. (S. Monnier, M. Sperber)</li>
|
||
</ul></li>
|
||
</ul>
|
||
<h1 id="game-development">Game Development</h1>
|
||
<ul>
|
||
<li><a href="https://github.com/shirakumo/trial">Trial</a> - Trial is an
|
||
OpenGL game engine with a heavy focus on modularity. It is supposed to
|
||
provide a large toolkit of useful bits and pieces from which you can
|
||
create a game. <a
|
||
href="https://directory.fsf.org/wiki/License:Zlib">zlib</a>.
|
||
<ul>
|
||
<li>the <a href="https://kandria.com/">Kandria</a> game is built with
|
||
Trial.</li>
|
||
</ul></li>
|
||
<li><a
|
||
href="https://borodust.org/projects/trivial-gamekit/getting-started/">trivial-gamekit</a>
|
||
– with this small framework you would be able to make simple 2D games:
|
||
draw basic geometric forms, images and text, play sounds and listen to
|
||
mouse and keyboard input. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://github.com/bufferswap/ViralityEngine">virality</a>
|
||
- A component-based game engine written in Common Lisp <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://gitlab.com/dto/xelf/">Xelf</a> - Extensible game
|
||
library. Not available on Quicklisp. <a
|
||
href="http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html">GNU
|
||
LGPL2.1</a>.</li>
|
||
</ul>
|
||
<p>Utilities:</p>
|
||
<ul>
|
||
<li><a href="https://shirakumo.github.io/cl-gamepad">cl-gamepad</a> -
|
||
Access to gamepads and joysticks on Windows, Mac OS, and Linux. <a
|
||
href="https://directory.fsf.org/wiki/License:Zlib">zlib</a>.</li>
|
||
<li><a href="https://shirakumo.github.io/cl-mpg123">cl-mpg123</a> and <a
|
||
href="https://shirakumo.github.io/cl-out123">cl-out123</a>, bindings
|
||
libraries for libmpg123 and libout123 respectively, giving you fast and
|
||
easy to use mp3 decoding and cross-platform audio output. <a
|
||
href="https://directory.fsf.org/wiki/License:Zlib">zlib</a>.</li>
|
||
</ul>
|
||
<h1 id="graphics">Graphics</h1>
|
||
<p>These are libraries for working with graphics, rather than making
|
||
GUIs (i.e. widget toolkits), which have their own section.</p>
|
||
<ul>
|
||
<li>⭐ <a href="https://github.com/vydd/sketch">Sketch</a> - A CL
|
||
framework for the creation of electronic art, graphics, and lots more.
|
||
<a href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://github.com/wmannis/cl-svg">cl-svg</a> - A basic
|
||
library for producing SVG files. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat">Expat</a>.</li>
|
||
<li><a href="https://github.com/privet-kitty/dufy">dufy</a> - exact
|
||
color manipulation and conversion in various color models. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://github.com/slyrus/opticl">opticl</a> - a library
|
||
for representing and processing images. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_2Clause">BSD_2Clause</a>.</li>
|
||
<li><a href="https://github.com/cbaggers/varjo">Varjo</a> - Lisp to GLSL
|
||
translator. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_2Clause">BSD_2Clause</a>.</li>
|
||
<li><a href="http://www.xach.com/lisp/vecto/">Vecto</a> - Simple vector
|
||
drawing library. <a
|
||
href="https://directory.fsf.org/wiki?title=License:FreeBSD">FreeBSD</a>.</li>
|
||
<li><a href="http://www.xach.com/lisp/zpng/">zpng</a> - A library for
|
||
creating PNG files. <a
|
||
href="https://directory.fsf.org/wiki?title=License:FreeBSD">FreeBSD</a>.</li>
|
||
<li><a href="https://git.mfiano.net/mfiano/pngload">pngload-fast</a> - A
|
||
PNG (Portable Network Graphics) image format decoder in portable Common
|
||
Lisp with an emphasis on speed. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
</ul>
|
||
<p>Those are bindings:</p>
|
||
<ul>
|
||
<li><a href="https://github.com/bohonghuang/claw-raylib">cl-raylib</a>
|
||
NEW in 2023 - fully auto-generated Common Lisp bindings to Raylib and
|
||
Raygui using claw and cffi-object. Apache 2.0.</li>
|
||
<li><a href="https://github.com/shirakumo/glfw">glfw</a> NEW in 2023 -
|
||
An up-to-date Common Lisp bindings library to the most recent GLFW
|
||
OpenGL context management library.</li>
|
||
<li><a href="https://github.com/byulparan/common-cv">common-cv</a> - the
|
||
OpenCV (Open Source Computer Vision Library) binding library for
|
||
CommonLisp. No license specified.</li>
|
||
<li><a href="https://github.com/rpav/cl-cairo2">cl-cairo2</a> - Cairo
|
||
bindings. <a
|
||
href="https://directory.fsf.org/wiki/License:Boost1.0">Boost
|
||
1.0</a></li>
|
||
<li><a href="http://weitz.de/cl-gd/">cl-gd</a> - A library providing an
|
||
interface to the GD graphics library. <a
|
||
href="https://directory.fsf.org/wiki?title=License:FreeBSD">FreeBSD</a>.</li>
|
||
<li><a href="https://github.com/anwyn/cl-horde3d/">cl-horde3d</a> - FFI
|
||
bindings to the Horde3D graphics library. Not available on Quicklisp. <a
|
||
href="https://directory.fsf.org/wiki/License:EPLv1.0">EPL 1.0</a></li>
|
||
<li><a href="https://github.com/sharplispers/cl-jpeg">cl-jpeg</a> -
|
||
Baseline JPEG encoder and decoder library. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">3-clause
|
||
BSD</a>.</li>
|
||
<li><a
|
||
href="https://github.com/resttime/cl-liballegro">cl-liballegro</a> -
|
||
Interface and bindings to the Allegro 5 game programming library. <a
|
||
href="https://directory.fsf.org/wiki/License:Zlib">zlib</a>.</li>
|
||
<li><a href="https://github.com/3b/cl-opengl">cl-opengl</a> - CFFI
|
||
bindings to OpenGL, GLU and GLUT APIs. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">3-clause
|
||
BSD</a>.</li>
|
||
<li><a href="https://github.com/lispgames/cl-sdl2">cl-sdl2</a> -
|
||
Bindings for SDL2 using C2FFI. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat">Expat</a>.</li>
|
||
<li><a href="https://github.com/BradWBeer/CLinch">CLinch</a> - Common
|
||
Lisp 2D/3D graphics engine for OpenGL. <a
|
||
href="https://directory.fsf.org/wiki?title=License:FreeBSD">FreeBSD</a>.</li>
|
||
<li><a href="https://github.com/tkych/donuts">donuts</a> - Graphviz
|
||
interface for Common Lisp. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat">Expat</a>.</li>
|
||
<li><a
|
||
href="https://github.com/lispbuilder/lispbuilder">lispbuilder-sdl</a> -
|
||
A set of bindings for SDL. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat">Expat</a>.</li>
|
||
<li><a
|
||
href="https://github.com/TBRSS/lisp-magick-wand">lisp-magick-wand</a> -
|
||
ImageMagick bindings. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">BSD</a>. Not
|
||
in Quicklisp.</li>
|
||
<li><a
|
||
href="https://www.common-lisp.net/project/okra/manual.html">okra</a> -
|
||
CFFI bindings to Ogre. Not available on Quicklisp. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">3-clause
|
||
BSD</a>.</li>
|
||
<li><a href="https://github.com/takagi/cl-cuda">cl-cuda</a> - A library
|
||
to use NVIDIA CUDA in Common Lisp programs. <a
|
||
href="http://opensource.franz.com/preamble.html">LLGPL</a>.</li>
|
||
</ul>
|
||
<h1 id="gui">GUI</h1>
|
||
<p>For an overview and a tutorial on GUI toolkits, see <a
|
||
href="https://lispcookbook.github.io/cl-cookbook/gui.html">the
|
||
Cookbook/GUI</a>.</p>
|
||
<ul>
|
||
<li><a href="http://www.lispworks.com/products/capi.html">LispWork’s
|
||
CAPI</a> - A portable GUI toolkit, with mobile runtime. Proprietary, but
|
||
comes with a free version.</li>
|
||
<li><a
|
||
href="https://franz.com/products/allegro-common-lisp/acl_gui_tools.lhtml">Allegro’s
|
||
Common Graphics</a>- a library of functions for writing windowized GUIs
|
||
for Windows, Mac and Linux. Proprietary with a free version.
|
||
<ul>
|
||
<li>since Allegro 10.1 (March, 2022), the IDE and the Common Graphics
|
||
toolkit <a href="https://franz.com/ftp/pri/acl/cgjs/doc.html">runs in
|
||
the browser</a>.</li>
|
||
</ul></li>
|
||
<li>👍 <a href="https://github.com/Shinmera/qtools/">Qtools</a> - A Qt
|
||
toolkit, based on CommonQt. <a
|
||
href="https://directory.fsf.org/wiki/License:Zlib">zlib</a> Also <a
|
||
href="https://github.com/Shinmera/qtools-ui">Qtools-ui</a> (premade UI
|
||
components), with <a
|
||
href="https://www.youtube.com/watch?v=KwASFOhYta4&index=7&list=PLkDl6Irujx9Mh3BWdBmt4JtIrwYgihTWp">videos</a>.</li>
|
||
<li>⭐ <a href="https://github.com/commonqt/commonqt">CommonQt</a> - A
|
||
Common Lisp binding for Qt4 via QtSmoke. <a
|
||
href="https://directory.fsf.org/wiki?title=License:FreeBSD">FreeBSD</a>.
|
||
<ul>
|
||
<li><a href="https://github.com/commonqt/commonqt5/">CommonQt5</a> -
|
||
bindings for Qt5.
|
||
<ul>
|
||
<li>warn: currently difficult to install. Used in production© by
|
||
SISCOG.</li>
|
||
</ul></li>
|
||
</ul></li>
|
||
<li>⭐ <a href="http://www.peter-herth.de/ltk/">ltk</a> - A binding for
|
||
the Tk toolkit. <a
|
||
href="http://opensource.franz.com/preamble.html">LLGPL</a> or <a
|
||
href="http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html">GNU
|
||
LGPL2.1</a>.
|
||
<ul>
|
||
<li><a href="https://peterlane.netlify.app/ltk-examples/">LTk
|
||
Examples</a> - Provides LTk examples for the tkdocs tutorial.</li>
|
||
<li><a href="https://peterlane.netlify.app/ltk-plotchart/">LTk
|
||
Plotchart</a> - A wrapper around the tklib/plotchart library to work
|
||
with LTk. This includes over 20 different chart types (xy-plots, gantt
|
||
charts, 3d-bar charts etc…).</li>
|
||
</ul></li>
|
||
<li><a href="https://codeberg.org/cage/nodgui">nodgui</a> - Bindings for
|
||
the Tk toolkit, based on Ltk, with syntax sugar and additional widgets.
|
||
<a href="http://opensource.franz.com/preamble.html">LLGPL</a>.
|
||
<ul>
|
||
<li>🎨 supports <a
|
||
href="https://wiki.tcl-lang.org/page/List+of+ttk+Themes">tk custom
|
||
themes</a>, such as <a
|
||
href="https://ttkthemes.readthedocs.io/en/latest/themes.html">ttkthemes</a>
|
||
and <a
|
||
href="https://github.com/rdbende/Forest-ttk-theme">Forest-ttk-theme</a>.</li>
|
||
<li>supports an SDL frame as an alternative to the Tk canvas when fast
|
||
rendering is needed. For 2D (pixel-based) and 3D rendering (using
|
||
openGL).</li>
|
||
</ul></li>
|
||
<li><a href="https://github.com/lispnik/iup/">IUP</a> - CFFI bindings to
|
||
the <a href="https://www.tecgraf.puc-rio.br/iup/">IUP</a> Portable User
|
||
Interface library (pre-ALPHA).
|
||
<ul>
|
||
<li>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.</li>
|
||
<li>has a web view.</li>
|
||
</ul></li>
|
||
<li>🆕 <a href="https://github.com/bohonghuang/cl-gtk4">cl-gtk4</a> -
|
||
GTK4/Libadwaita/WebKit binding for Common Lisp. <a
|
||
href="https://www.gnu.org/licenses/lgpl-3.0.en.html">LGPL3</a>.</li>
|
||
<li><a href="https://github.com/crategus/cl-cffi-gtk">cl-cffi-gtk</a> -
|
||
Binding for GTK+3. <a
|
||
href="http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html">GNU
|
||
LGPL2.1</a>.
|
||
<ul>
|
||
<li>a tutorial: <a
|
||
href="https://dev.to/goober99/learn-common-lisp-by-example-gtk-gui-with-sbcl-5e5c">Learn
|
||
Common Lisp by Example: GTK GUI with SBCL</a></li>
|
||
</ul></li>
|
||
<li><a href="https://github.com/dmitryvk/cl-gtk2">cl-gtk2</a> - A
|
||
binding for GTK+2. <a
|
||
href="http://opensource.franz.com/preamble.html">LLGPL</a>.</li>
|
||
</ul>
|
||
<p>But that’s not all.</p>
|
||
<ul>
|
||
<li>for Electron, see:
|
||
<ul>
|
||
<li><a
|
||
href="https://github.com/mikelevins/electron-lisp-boilerplate">Electron-lisp-boilerplate</a>
|
||
- a rudimentary boilerplate for building Electron apps that start a Lisp
|
||
process.</li>
|
||
<li><a href="https://ceramic.github.io/">ceramic</a> - a wrapper around
|
||
simpler tools to create and build an Electron app for Common Lisp. It is
|
||
currently broken and unmaintained, but some tools are workth having a
|
||
look at.</li>
|
||
<li>NOTE: the main idea in embedding a lisp web app in Electron is to
|
||
start the lisp webserver as an async process from Electron’s
|
||
<code>main.js</code> file, and to point the Electron window to the
|
||
localhost URL. That’s it.</li>
|
||
</ul></li>
|
||
<li><a
|
||
href="https://github.com/plkrueger/CocoaInterface/">CocoaInterface</a> -
|
||
Cocoa interface for Clozure Common Lisp. Build Cocoa user interface
|
||
windows dynamically using Lisp code and bypass the typical Xcode
|
||
processes. It has <a
|
||
href="https://github.com/plkrueger/CocoaInterface/blob/master/Documentation/UserInterfaceTutorial.pdf">good
|
||
documentation and a tutorial</a>.</li>
|
||
<li><a href="https://common-lisp.net/project/mcclim/">McCLIM</a> - An
|
||
implementation of the Common Lisp Interface Manager, version II. <a
|
||
href="http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html">GNU
|
||
LGPL2.1</a>.</li>
|
||
<li><a href="https://github.com/joachifm/cl-webkit">cl-webkit</a> - A
|
||
binding to WebKitGTK+. Also adds web browsing capabilities to an
|
||
application, leveraging the full power of the WebKit browsing engine. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://github.com/fjames86/ftw">ftw</a> - A Win32 GUI
|
||
library. <a href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://gitlab.com/eql">eql, eql5, eql5-android</a> -
|
||
Embedded Qt4 and Qt5 Lisp, embedded in ECL, embeddable in Qt. Port of
|
||
EQL5 to the Android platform. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a
|
||
href="https://github.com/borodust/bodge-nuklear">bodge-nuklear</a> -
|
||
Wrapper over the <a
|
||
href="https://github.com/Immediate-Mode-UI/Nuklear">Nuklear</a>
|
||
immediate mode GUI library. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://github.com/JolifantoBambla/vk">vk</a> - Common
|
||
Lisp/CFFI bindings for the Vulkan API. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
</ul>
|
||
<p>Other utilities:</p>
|
||
<ul>
|
||
<li><a href="https://github.com/Shinmera/file-select">file-select</a> -
|
||
A library to invoke the native system file dialog to select or create
|
||
files. Zlib.</li>
|
||
</ul>
|
||
<p>See also this <a
|
||
href="https://github.com/defunkydrummer/abcl-jazz">demo to use Java
|
||
Swing from ABCL</a>.</p>
|
||
<h2 id="mobile">Mobile</h2>
|
||
<ul>
|
||
<li><a href="http://www.lispworks.com/products/lw4mr.html">LispWork’s
|
||
mobile runtime</a> - Android and iOs. Proprietary.</li>
|
||
<li><a href="https://gitlab.com/eql/lqml">LQML</a> - a lightweight ECL
|
||
binding to QML (both Qt5 and Qt6) derived from EQL5. LGPL and public
|
||
domain.</li>
|
||
</ul>
|
||
<p><a href="https://github.com/Gleefre/hello-alien/">hello-allien</a>,
|
||
SBCL built for an Android application (very new, 2023).</p>
|
||
<h1 id="implementations">Implementations</h1>
|
||
<ul>
|
||
<li>⭐ <a href="http://www.sbcl.org/index.html">SBCL</a> - Steel Bank
|
||
Common Lisp. A fork of CMUCL; compiles to efficient machine code. <a
|
||
href="http://www.sbcl.org/manual/index.html#ANSI-Conformance">Standard
|
||
compliance</a>. Public domain, with some parts under <a
|
||
href="https://directory.fsf.org/wiki/License:Expat">Expat</a> and <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">3-clause
|
||
BSD</a>.
|
||
<ul>
|
||
<li>see also: <a
|
||
href="https://github.com/quil-lang/sbcl-librarian">sbcl-librarian</a> -
|
||
Dynamic library delivery tools for SBCL. Create shared libraries that
|
||
can be called from C or Python. MIT. <a
|
||
href="https://mstmetent.blogspot.com/2022/04/using-lisp-libraries-from-other.html">Blog
|
||
post</a>. <a
|
||
href="https://github.com/quil-lang/sbcl-librarian/tree/main/example">Full
|
||
example</a>.</li>
|
||
<li><a href="https://github.com/sionescu/sbcl-goodies">SBCL-GOODIES</a>
|
||
- Distributing binaries with Common Lisp and foreign libraries: libssl,
|
||
libcrypto and libfixposix are statically baked in. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://github.com/olnw/sbcl-builds">Nightly Windows builds
|
||
of SBCL</a> - Nightly builds of SBCL using MSYS2 UCRT64. See also <a
|
||
href="https://github.com/roswell/sbcl_bin/releases/">Roswell’s SBCL MSI
|
||
builds</a>.</li>
|
||
<li><a
|
||
href="https://github.com/guicho271828/sbcl-wiki/wiki">sbcl-wiki</a> - an
|
||
open wiki to document SBCL’s internals.</li>
|
||
</ul></li>
|
||
<li>⭐ <a href="//ccl.clozure.com/">CCL</a> - Clozure Common Lisp;
|
||
compiler-only implementation, generates native code. <a
|
||
href="http://opensource.franz.com/preamble.html">LLGPL</a>.</li>
|
||
<li><a href="https://common-lisp.net/project/ecl/">ECL</a> - Embeddable
|
||
Common Lisp; compiles to C. <a
|
||
href="http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html">GNU
|
||
LGPL2.1</a>.
|
||
<ul>
|
||
<li><a href="https://github.com/chee/eclweb">eclweb</a> is <a
|
||
href="https://repl.chee.party/">a proof-of-concept REPL inside a
|
||
browser</a> using Web Assembly (WASM).</li>
|
||
</ul></li>
|
||
<li><a href="https://common-lisp.net/project/armedbear/">ABCL</a> -
|
||
Armed Bear Common Lisp; targets the JVM, compiles to bytecode. <a
|
||
href="https://common-lisp.net/project/armedbear/faq.shtml#qa">Standard
|
||
conformance</a>. <a href="http://www.gnu.org/copyleft/gpl.html">GNU
|
||
GPL3</a> with <a
|
||
href="http://www.gnu.org/software/classpath/license.html">Classpath
|
||
exception</a>.</li>
|
||
<li><a href="https://github.com/drmeister/clasp">CLASP</a> - a new
|
||
Common Lisp implementation that seamlessly interoperates with C++
|
||
libraries and programs using LLVM for compilation to native code. This
|
||
allows Clasp to take advantage of a vast array of preexisting libraries
|
||
and programs, such as out of the scientific computing ecosystem. <a
|
||
href="http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html">LGPL2.1</a>
|
||
(and others).</li>
|
||
</ul>
|
||
<p>Proprietary:</p>
|
||
<ul>
|
||
<li><a href="http://www.lispworks.com/">LispWorks</a> - an integrated
|
||
cross-platform development tool for Common Lisp.
|
||
<ul>
|
||
<li>reputed features include: the CAPI cross-platform and native GUI
|
||
toolkit, the LispWorks IDE, the mobile platforme runtime (iOs, Android),
|
||
its Java interface, the tree shaker to build lighter binaries, its
|
||
KnowledgeWorks system for “rule-based, object-oriented, logical,
|
||
functional and database programming”, and more.</li>
|
||
<li>has a free edition, with limitations (heap size limit, time
|
||
limit).</li>
|
||
</ul></li>
|
||
<li><a href="https://franz.com/products/allegro-common-lisp/">Allegro
|
||
CL</a> - provides the full ANSI Common Lisp standard with many
|
||
extensions.
|
||
<ul>
|
||
<li>reputed features include: the AllegroCache object persistence
|
||
database system, the KnowledgeGraph system, its concurrent garbage
|
||
collector, its web-based IDE, and more.</li>
|
||
<li>has a free edition. It includes AllegroCache, with a size
|
||
limit.</li>
|
||
</ul></li>
|
||
</ul>
|
||
<p>Other implementations, mainly for historical purposes:</p>
|
||
<ul>
|
||
<li><a href="//www.cons.org/cmucl/">CMUCL</a> - An implementation from
|
||
Carnegie Mellon University. Public domain. SBCL is a fork of CMUCL.</li>
|
||
<li><a href="http://www.clisp.org/">GNU CLISP</a> - A GNU
|
||
implementation; contains a compiler and an interpreter. <a
|
||
href="http://www.gnu.org/software/clisp/impnotes.html">Standard
|
||
conformance</a>. <a href="http://www.gnu.org/copyleft/gpl.html">GNU
|
||
GPL3</a>. They develop <a href="https://gitlab.com/gnu-clisp/clisp">on
|
||
Gitlab</a>.
|
||
<ul>
|
||
<li>compiles to bytecode, its default REPL is more user friendly than
|
||
SBCL’s (with symbol completion and readline integration).</li>
|
||
<li>however, it is not actively developed, it doesn’t comply entirely to
|
||
the ANSI standard, it is less performant than SBCL and it is lacking
|
||
compatibility features.</li>
|
||
</ul></li>
|
||
<li><a href="https://github.com/sharplispers/cormanlisp">Corman Lisp</a>
|
||
- a Common Lisp development environment for Microsoft Windows running on
|
||
Intel platforms. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
</ul>
|
||
<p>You can check the implementations’ compatibility to common extensions
|
||
here: <a href="https://portability.cl">portability.cl</a>.</p>
|
||
<h1 id="json">JSON</h1>
|
||
<ul>
|
||
<li>👍 <a href="https://github.com/Zulu-Inuoe/jzon/">jzon</a> - a
|
||
correct, safe and fast JSON parser. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.
|
||
<ul>
|
||
<li>jzon is the only CL JSON library which correctly declines all
|
||
invalid inputs per the official JSON test suite and accepts all valid
|
||
inputs per that suite.</li>
|
||
<li>it doesn’t crash on invalid input (jsown), doesn’t choke on large
|
||
datasets (Jonathan), and more.</li>
|
||
<li>v1.0 released in the Quicklisp dist of February, 2023.</li>
|
||
<li>“I believe jzon to be the superior choice and hope for it to become
|
||
the new, true de-facto library in the world of JSON-in-CL once and for
|
||
all.”</li>
|
||
</ul></li>
|
||
<li><a href="https://github.com/Rudolph-Miller/jonathan">jonathan</a> -
|
||
A JSON encoder and decoder. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://github.com/sharplispers/cl-json">cl-json</a> - A
|
||
highly customizable JSON encoder and decoder. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat">MIT</a>.</li>
|
||
<li><a href="https://github.com/madnificent/jsown">jsown</a> - A reader
|
||
and writer for the JSON format. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat">Expat</a>.</li>
|
||
<li><a href="https://github.com/yitzchak/shasht">shasht</a> - Common
|
||
Lisp JSON reading and writing for the Kzinti. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat">MIT</a>.
|
||
<ul>
|
||
<li>” Shasht is one of the two new libraries that I particularly like
|
||
and is already in quicklisp. It is fast, it handles null correctly, it
|
||
encodes CLOS objects, structures and hash-tables. It can also do
|
||
incremental encoding.” Sabra Crolleton.</li>
|
||
</ul></li>
|
||
</ul>
|
||
<p>See this <a
|
||
href="https://sabracrolleton.github.io/json-review">extensive
|
||
comparison</a> of JSON libraries.</p>
|
||
<p>JSON tools:</p>
|
||
<ul>
|
||
<li><a href="https://github.com/atlas-engineer/njson">NJSON</a> -
|
||
Parser-agnostic JSON indexing (with JSON Pointer support),
|
||
destructuring, and validation framework. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">BSD</a>.</li>
|
||
<li><a href="https://github.com/gschjetne/json-mop">json-mop</a> - A
|
||
metaclass for bridging CLOS and JSON objects. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a
|
||
href="https://github.com/y2q-actionman/cl-json-pointer">cl-json-pointer</a>
|
||
- A JSON Pointer implementation. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://github.com/dnaeon/cl-jwk">cl-jwk</a> - Common Lisp
|
||
system for decoding public JSON Web Keys (JWK). BSD License.</li>
|
||
</ul>
|
||
<p>and search for JSON RPC below.</p>
|
||
<h1 id="yaml">YAML</h1>
|
||
<ul>
|
||
<li><a href="https://github.com/mabragor/cl-yaclyaml">cl-yacclyaml</a> -
|
||
a pure lisp YAML processor (loader, but not yet dumper). <a
|
||
href="http://www.gnu.org/copyleft/gpl.html">GPL3</a>.</li>
|
||
<li><a href="https://github.com/eudoxia0/cl-yaml.git">cl-yaml</a> - a
|
||
YAML parser and emitter built on top of libyaml. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
</ul>
|
||
<h1 id="language-extensions">Language extensions</h1>
|
||
<ul>
|
||
<li>⭐ <a
|
||
href="https://common-lisp.net/project/alexandria/">alexandria</a> - A
|
||
general-purpose utility library. Public domain.</li>
|
||
<li>👍 <a href="https://github.com/TBRSS/serapeum/">serapeum</a> -
|
||
Another general-purpose utility library. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat">Expat</a>.</li>
|
||
<li><a href="https://github.com/vseloved/rutils">rutils</a> - radical
|
||
yet reasonable syntactic utilities for Common Lisp. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://github.com/alex-gutev/generic-cl/">generic-cl</a> -
|
||
Generic function interface to standard Common Lisp functions (equality,
|
||
comparison, arithmetic, objects, iterator, sequences,…). <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>. See also the more
|
||
lightweight <a
|
||
href="https://github.com/pnathan/generic-comparability">generic-comparability</a>.
|
||
<a href="http://opensource.franz.com/preamble.html">LLGPL</a>.</li>
|
||
<li><a href="https://common-lisp.net/project/anaphora/">anaphora</a> - A
|
||
collection of anaphoric macros. Public domain.</li>
|
||
<li>⭐ <a href="https://github.com/guicho271828/trivia/">trivia</a> -
|
||
Optimized pattern-matching library. <a
|
||
href="http://opensource.franz.com/preamble.html">LLGPL</a>.</li>
|
||
<li><a href="https://github.com/hipeta/arrow-macros">arrow-macros</a> -
|
||
Clojure-like threading macros. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a
|
||
href="https://github.com/hu-dwim/hu.dwim.walker">hu.dwim.walker</a> - a
|
||
code walker and unwalker (aka AST parser and unparser). <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">BSD</a>. See
|
||
also <a
|
||
href="http://40ants.com/lisp-project-of-the-day/2020/04/0044-hu.dwim.walker.html">this
|
||
blog post</a>.</li>
|
||
</ul>
|
||
<h2 id="portability-layers">Portability layers</h2>
|
||
<p>A large list of portability layers is collected here: <a
|
||
href="https://portability.cl/">portability.cl/</a>. Here are some of
|
||
them:</p>
|
||
<ul>
|
||
<li><a
|
||
href="https://github.com/Shinmera/trivial-arguments">trivial-arguments</a>
|
||
- A portable library to retrieve the arguments list of a function. <a
|
||
href="https://directory.fsf.org/wiki/License:Zlib">zlib</a>.</li>
|
||
<li><a href="https://github.com/Shinmera/definitions">definitions</a> -
|
||
a general definitions introspection library. It gives you the ability to
|
||
retrieve definitions or bindings associated with designators such as
|
||
symbols, packages, and names in general. <a
|
||
href="https://directory.fsf.org/wiki/License:Zlib">zlib</a>.</li>
|
||
<li><a href="https://shinmera.github.io/dissect">dissect</a> - when a
|
||
lot of projects use the “trivial-backtrace” system that just gives them
|
||
a string with a backtrace, Dissect allows you to capture, step, and
|
||
completely inspect the stack trace on a variety of Lisp implementations.
|
||
Also very useful for logging and other situations where execution is
|
||
automatically continued, but the information of the current stack is
|
||
still useful to store somewhere. <a
|
||
href="https://directory.fsf.org/wiki/License:Zlib">zlib</a>.
|
||
<ul>
|
||
<li><a href="https://github.com/atlas-engineer/ndebug">ndebug</a> -
|
||
Framework for portable GUI (or any non-standard) debuggers, based on <a
|
||
href="https://shinmera.github.io/dissect">dissect</a> and <a
|
||
href="https://github.com/phoe/trivial-custom-debugger">trivial-custom-debugger</a>.
|
||
<a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">BSD</a>.</li>
|
||
</ul></li>
|
||
</ul>
|
||
<h2 id="changing-the-syntax">Changing the syntax</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/cl21/cl21">cl21</a> - An experimental
|
||
project to move Common Lisp into the 21st century. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat">Expat</a>.</li>
|
||
<li><a href="https://github.com/malisper/Clamp">clamp</a> - Arc
|
||
language’s brevity and conciseness to Common Lisp. <a
|
||
href="https://directory.fsf.org/wiki/License:ArtisticLicense2.0">Artistic
|
||
License 2.0</a>.
|
||
<ul>
|
||
<li>also <a href="https://github.com/g000001/arc-compat">arc-compat</a>
|
||
- Arc compatible package. Perl Foundation’s Artistic Licence 2.0.</li>
|
||
</ul></li>
|
||
<li><a href="https://github.com/m2ym/cl-syntax">cl-syntax</a> - Reader
|
||
syntax conventions. <a
|
||
href="http://opensource.franz.com/preamble.html">LLGPL</a>.</li>
|
||
<li><a href="http://www.cliki.net/cl-2dsyntax">cl-2dsyntax</a> - An
|
||
indentation-sensitive reader system. Not available on Quicklisp. Public
|
||
domain.</li>
|
||
<li><a href="https://github.com/m2ym/cl-annot">cl-annot</a> -
|
||
Python-like annotations for Common Lisp. <a
|
||
href="http://opensource.franz.com/preamble.html">LLGPL</a>.
|
||
<ul>
|
||
<li><a
|
||
href="https://github.com/y2q-actionman/cl-annot-revisit/">cl-annot-revisit</a>
|
||
- re-implementation of cl-annot. WTFPL.</li>
|
||
</ul></li>
|
||
<li><a href="https://github.com/digikar99/reader">cl-reader</a> - A
|
||
utility library intended at providing reader macros for lambdas,
|
||
mapping, accessors, hash-tables and hash-sets. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
</ul>
|
||
<p>For strings:</p>
|
||
<ul>
|
||
<li>⭐ <a href="https://github.com/edicl/cl-interpol/">cl-interpol</a> -
|
||
A set of reader modifications to allow string interpolation. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">BSD</a>.</li>
|
||
<li><a href="https://git.sr.ht/~shunter/mstrings">mstrings</a> - a
|
||
reader macro to provide visually appealing multiline blocks. An M-string
|
||
trims leading whitespace, concatenates lines together, etc. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">BSD_3Clause</a>.</li>
|
||
<li><a
|
||
href="https://github.com/smithzvk/pythonic-string-reader">pythonic-string-reader</a>
|
||
- A simple and unobtrusive read table modification inspired by Python’s
|
||
three quote strings. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">BSD_3Clause</a>.</li>
|
||
<li><a href="https://github.com/outergod/cl-heredoc">cl-heredoc</a> - a
|
||
<a href="https://github.com/outergod/cl-heredoc">“heredocs”</a>
|
||
dispatcher. <a href="http://www.gnu.org/copyleft/gpl.html">GPL3</a>.
|
||
Allows to write:
|
||
<code>#>eof>Write whatever (you) "want", no matter what characters, until the magic end sequence has been reached.eof</code></li>
|
||
</ul>
|
||
<h2 id="clos-extensions">CLOS extensions</h2>
|
||
<ul>
|
||
<li>⭐ <a href="https://github.com/pcostanza/closer-mop">closer-mop</a>
|
||
- A compatibility layer that rectifies many absent or incorrect MOP
|
||
features. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat">Expat</a>.</li>
|
||
<li><a
|
||
href="https://github.com/markcox80/specialization-store/">specialization-store</a>
|
||
- generic functions based on types. Simplified BSD License variant.</li>
|
||
<li><a
|
||
href="https://github.com/pcostanza/filtered-functions">filtered-functions</a>
|
||
- enable the use of arbitrary predicates for selecting and applying
|
||
methods. <a href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a
|
||
href="https://github.com/guicho271828/inlined-generic-function">inlined-generic-function</a>
|
||
- Bringing the speed of Static Dispatch to CLOS. <a
|
||
href="http://opensource.franz.com/preamble.html">LLGPL</a>.</li>
|
||
<li><a
|
||
href="https://github.com/alex-gutev/static-dispatch">static-dispatch</a>
|
||
- allows standard generic function dispatch to be performed statically
|
||
(at compile time) rather than dynamically (runtime). This is similar to
|
||
what is known as “overloading” in languages such as C++ and Java. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://github.com/rpav/dynamic-mixins">dynamic-mixins</a>
|
||
- simple, dynamic class combination. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_2Clause">BSD_2Clause</a>.</li>
|
||
<li><a
|
||
href="https://github.com/marcoheisig/fast-generic-functions">fast-generic-functions</a>
|
||
- Seal your generic functions for an extra boost in performance. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a
|
||
href="https://github.com/digikar99/polymorphic-functions">polymorphic
|
||
functions</a> - A function type to dispatch on types instead of classes
|
||
with partial support for dispatching on optional and keyword argument
|
||
types. Still experimental (May, 2021). <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.
|
||
<ul>
|
||
<li>polymorphic-functions dispatch on the types of the arguments
|
||
supplied to it. This helps dispatching on specialized arrays as well as
|
||
user-defined types.</li>
|
||
<li>for differences with specialization-store and
|
||
fast-generic-functions, see its README.</li>
|
||
</ul></li>
|
||
</ul>
|
||
<p>Writing terser defclass forms:</p>
|
||
<ul>
|
||
<li><a href="https://github.com/EuAndreh/defclass-std">defclass-std</a>
|
||
- a shortcut macro to write DEFCLASS forms quickly. <a
|
||
href="http://opensource.franz.com/preamble.html">LLGPL</a>.</li>
|
||
<li><a href="https://github.com/atlas-engineer/nclasses">nclasses</a> -
|
||
Syntactic sugar for class and generic function declarations. Fork of <a
|
||
href="https://github.com/hu-dwim/hu.dwim.defclass-star">hu.dwim.defclass-star</a>.
|
||
Features type inference, automatic accessors, inline initform syntax,
|
||
automatic exports, and other conveniences. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">BSD</a>.</li>
|
||
</ul>
|
||
<p>And also:</p>
|
||
<ul>
|
||
<li><a
|
||
href="https://github.com/some-mthfka/slot-extra-options">slot-extra-options</a>
|
||
- lets you build a metaclass which in turn lets you specify extra slot
|
||
options in its classes. <a
|
||
href="https://www.gnu.org/licenses/lgpl-3.0.en.html">LGPL3</a>.</li>
|
||
</ul>
|
||
<h2 id="function-extensions">Function extensions</h2>
|
||
<ul>
|
||
<li><a
|
||
href="https://github.com/scymtym/architecture.hooks/">cl-hooks</a> -
|
||
Hooks extension point mechanism (as known, e.g., from GNU Emacs).
|
||
LGPL.</li>
|
||
<li><a href="https://gitlab.com/Gnuxie/method-hooks">method-hooks</a> -
|
||
When CLOS method combination allow only one hook per method, this
|
||
library allows an arbitrary number of them. Mozilla Public Licence.</li>
|
||
<li><a
|
||
href="https://github.com/lisp-mirror/budden-tools/blob/213ab2b52a1b0c0b496efd30c3b5143f5c8e1ff2/cl-advice/README.md">cl-advice</a>
|
||
- an attempt of portable layer advice library for SBCL, CCL, LispWorks
|
||
and Allegro. Not in Quicklisp.</li>
|
||
<li><a href="https://github.com/atlas-engineer/nhooks">nhooks</a> - an
|
||
enhanced implementation of hooks (extension points) with crucial
|
||
improvements.</li>
|
||
</ul>
|
||
<h2 id="iteration">Iteration</h2>
|
||
<ul>
|
||
<li>⭐ <a href="https://common-lisp.net/project/iterate/">iterate</a> -
|
||
An iteration construct for Common Lisp which is extensible and Lispier.
|
||
<a href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://shinmera.github.io/for/">for</a> - A concise, lispy
|
||
and extensible iteration macro. Unlike loop it is extensible and
|
||
sensible, and unlike iterate it does not require code-walking and is
|
||
easier to extend. <a
|
||
href="https://directory.fsf.org/wiki/License:Zlib">zlib</a>.</li>
|
||
<li><a href="https://series.sourceforge.net/">series</a> - Functional
|
||
style without any runtime penalty at all. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://github.com/yitzchak/trivial-do/">trivial-do</a> -
|
||
Additional dolist style macros for Common Lisp. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://github.com/alessiostalla/doplus">doplus</a> –
|
||
another extensible iteration library, similar to :for.</li>
|
||
<li><a
|
||
href="https://git.sr.ht/~fosskers/cl-transducers">cl-transducers</a> -
|
||
Ergonomic, efficient data processing. <a
|
||
href="https://www.gnu.org/licenses/lgpl-3.0.en.html">LGPL3</a>.
|
||
<ul>
|
||
<li>“Transducers are an ergonomic and extremely memory-efficient way to
|
||
process a data source. Here “data source” means simple collections like
|
||
Lists or Vectors, but also potentially large files or generators of
|
||
infinite data.”</li>
|
||
<li>“It is, in general, the most complete implementation of the
|
||
Transducer pattern.”</li>
|
||
<li>a “modern” API with <code>map</code>, <code>filter</code>,
|
||
<code>take</code>, <code>repeat</code>, <code>cycle</code>,
|
||
<code>fold</code>…</li>
|
||
</ul></li>
|
||
<li><a href="https://github.com/BnMcGn/snakes">snakes</a> - Python style
|
||
generators for Common Lisp. Includes a port of itertools. <a
|
||
href="https://directory.fsf.org/wiki/License:Apache2.0">Apache2</a>.</li>
|
||
<li><a href="https://github.com/anlsh/picl">picl</a> - An (almost)
|
||
complete port of Python’s itertools package, complete with laziness
|
||
where applicable, and not relying on cl-cont. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a
|
||
href="https://cicadas.surf/cgit/colin/gtwiwtg.git/about/">gtwiwtg</a> -
|
||
A lazy sequences library. Similar to ‘series’ but not as complete.
|
||
However it has a ‘modern’ API with stuff like <code>take</code>,
|
||
<code>filter</code>, <code>for</code>, <code>fold</code>, etc. that is
|
||
easy to use.</li>
|
||
<li><a
|
||
href="https://github.com/slburson/misc-extensions/blob/master/src/gmap.lisp">gmap</a>
|
||
- A concise and extensible iteration facility that has the advantage of
|
||
integrating well with FSet (see the Data Structures section), as it was
|
||
written by the same author. In Quicklisp as part of
|
||
<code>misc-extensions</code>. Public domain.</li>
|
||
</ul>
|
||
<h2 id="lambda-shorthands">Lambda shorthands</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/cbaggers/fn">fn</a> - a couple of lambda
|
||
shorthand macros.
|
||
<code>(fn* (+ _ _)) --> (lambda (_) (+ _ _))</code>. Public
|
||
domain.</li>
|
||
<li><a
|
||
href="https://gitlab.common-lisp.net/bpm/f-underscore">f-underscore</a>
|
||
- a tiny library of functional programming utils.
|
||
<code>(f_ (+ _ _)) -> (lambda (_) (+ _ _))</code>. Public
|
||
domain.</li>
|
||
<li><a href="https://github.com/windymelt/cl-punch/">cl-punch</a> -
|
||
Scala-like anonymous lambda literals.
|
||
<code>(mapcar ^(* 2 _) '(1 2 3 4 5))</code>. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
</ul>
|
||
<p>See also CL21 and <a
|
||
href="https://github.com/vseloved/rutils">Rutils</a>.</p>
|
||
<h2 id="non-deterministic-logic-programming">Non-deterministic, logic
|
||
programming</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/guicho271828/cl-prolog2">cl-prolog2</a>
|
||
- Common Interface to ISO Prolog implementations from Common Lisp. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://github.com/nikodemus/screamer">Screamer</a> -
|
||
augment Common Lisp with practically all of the functionality of both
|
||
Prolog and constraint logic programming languages. <a
|
||
href="https://chriskohlhepp.wordpress.com/reasoning-systems/specification-driven-programming-in-common-lisp/">Blog
|
||
post</a> solving Project Euler puzzles. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a
|
||
href="https://github.com/yakovzaytsev/screamer-plus">Screamer+</a> -
|
||
increasing the expressiveness of SCREAMER. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://github.com/sjl/temperance">Temperance</a> - logic
|
||
programming. <a href="https://opensource.org/licenses/MIT">MIT</a>. A
|
||
focus on performance, with General Game Playing in mind.</li>
|
||
</ul>
|
||
<h2 id="reactive-programming">Reactive programming</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/kennytilton/cells">Cells</a> - an
|
||
implementation of the dataflow programming paradigm, reactive
|
||
spreadsheet-like expressiveness for CLOS. Used to build an <a
|
||
href="http://tiltontec.com/">algebra learning system</a>. With <a
|
||
href="https://github.com/stefano/cells-doc/">documentation</a>. Lisp
|
||
LGPL.</li>
|
||
<li><a href="https://github.com/kchanqvq/lwcells">lwcells</a> - Light
|
||
Weight Cells.
|
||
<ul>
|
||
<li>LWCELLS is a dataflow extension to Common Lisp. It maintains a
|
||
consistent state of cells according to functions specifying their
|
||
relation. LWCELLS is designed to be simple, clean, compositional and
|
||
flexible.</li>
|
||
</ul></li>
|
||
</ul>
|
||
<h2 id="contract-programming">Contract programming</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/sellout/quid-pro-quo">quid-pro-quo</a> -
|
||
a contract programming library in the style of Eiffel’s Design by
|
||
Contract ™. Public domain.</li>
|
||
</ul>
|
||
<h2 id="typing">Typing</h2>
|
||
<ul>
|
||
<li>👍 <a href="https://github.com/coalton-lang/coalton/">Coalton</a> -
|
||
an efficient, statically typed functional programming language that
|
||
supercharges Common Lisp. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li>👍 <a href="https://github.com/m2ym/trivial-types">trivial-types</a>
|
||
- provides missing but important type definitions such as
|
||
<code>proper-list</code>, <code>association-list</code>,
|
||
<code>property-list</code> and <code>tuple</code>. <a
|
||
href="http://opensource.franz.com/preamble.html">LLGPL</a>.</li>
|
||
<li><a
|
||
href="https://bitbucket.org/eeeickythump/defstar/src/master/">defstar</a>
|
||
- a collection of macros for easy inclusion of type declarations for
|
||
arguments in lambda lists. <a
|
||
href="http://www.gnu.org/copyleft/gpl.html">GNU GPL3</a></li>
|
||
<li><a
|
||
href="https://github.com/stylewarning/cl-algebraic-data-type">algebraic-data-types</a>
|
||
- defining algebraic data types in a similar spirit to Haskell or
|
||
Standard ML, as well as for operating on them. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">BSD_3Clause</a>.</li>
|
||
</ul>
|
||
<p>See also:</p>
|
||
<ul>
|
||
<li><a href="https://github.com/marcoheisig/Typo/">typo</a> - A portable
|
||
type inference library for Common Lisp. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li>experimental: <a
|
||
href="https://gitlab.com/digikar/peltadot/">PELTADOT</a> - PELTADOT
|
||
Extends Lisp’s Types And Dispatches Over Them.</li>
|
||
</ul>
|
||
<h2 id="theorem-provers">Theorem provers</h2>
|
||
<ul>
|
||
<li><a href="https://www.cs.utexas.edu/users/moore/acl2/">ACL2</a> - a
|
||
logic and programming language in which you can model computer systems,
|
||
together with a tool to help you prove properties of those models.
|
||
<ul>
|
||
<li>used in the industry since the 1990s.</li>
|
||
<li>it supports a subset of the ANSI standard Common Lisp programming
|
||
language.</li>
|
||
<li>“Companies that have used ACL2 regularly include AMD, Centaur
|
||
Technology, IBM, Intel, Kestrel Institute, Motorola/Freescale, Oracle
|
||
and Rockwell Collins.” (<a
|
||
href="https://royalsocietypublishing.org/doi/10.1098/rsta.2015.0399">source</a>)</li>
|
||
<li><a href="https://github.com/calebegg/proof-pad/">Proofpad</a>, an
|
||
online IDE for ACL2.</li>
|
||
<li><a href="https://github.com/tani/acl2-kernel">ACL2-kernel</a>, a
|
||
Jupyter Kernel for ACL2.</li>
|
||
<li><a href="http://acl2s.ccs.neu.edu/acl2s/doc/">ACL2 Sedan</a>, an
|
||
Eclipse plugin that provides a modern IDE for ACL2, used with students
|
||
at universities.
|
||
<ul>
|
||
<li>paper: <a
|
||
href="https://cgi.cse.unsw.edu.au/~eptcs/content.cgi?ACL22022">Using
|
||
ACL2 to teach students about software testing</a>.</li>
|
||
</ul></li>
|
||
</ul></li>
|
||
<li>NASA’s <a href="https://pvs.csl.sri.com/">PVS</a>, the Prototype
|
||
Verification System, and <a
|
||
href="https://github.com/nasa/pvslib">NASAlib</a>, a collection of
|
||
formal development libraries.
|
||
<ul>
|
||
<li>its 63 top-level libraries span the fields of: real analysis,
|
||
limits, continuity, derivatives, integrals; complex integration;
|
||
directed graphs; exact real arithmetic including trig functions;
|
||
interval arithmetic and numerical approximations; linear algebra; 2-D,
|
||
3-D, 4-D, and n-dimensional vectors… and more.</li>
|
||
</ul></li>
|
||
</ul>
|
||
<h1 id="learning-and-tutorials">Learning and Tutorials</h1>
|
||
<h2 id="online">Online</h2>
|
||
<h2 id="beginner">Beginner</h2>
|
||
<ul>
|
||
<li><a href="https://learnxinyminutes.com/docs/common-lisp/">Learn X in
|
||
Y minutes - Where X = Common Lisp</a> - Small Common Lisp tutorial
|
||
covering the essentials.</li>
|
||
<li><a href="https://github.com/google/lisp-koans">Lisp Koans</a> - The
|
||
project guides the learner progressively through many Common Lisp
|
||
language features.</li>
|
||
<li><a href="http://www.gigamonkeys.com/book/">Practical Common Lisp</a>
|
||
- A good introductory text to Common Lisp, with practical examples.
|
||
<ul>
|
||
<li>better read with <a
|
||
href="https://github.com/vale981/practical-cl-beautified">a Firefox
|
||
add-on: Practical-cl beautified</a>.</li>
|
||
<li>translated in <a href="https://binghe.github.io/pcl-cn/">Chinese
|
||
simplified</a></li>
|
||
</ul></li>
|
||
<li><a
|
||
href="http://www.cs.cmu.edu/afs/cs.cmu.edu/user/dst/www/LispBook/index.html">Common
|
||
LISP: A Gentle Introduction to Symbolic Computation</a> - A nice
|
||
introduction into the language.</li>
|
||
<li><a href="http://successful-lisp.blogspot.com/">Successful Lisp</a> -
|
||
A good book for beginners with some programming background.</li>
|
||
<li><a href="https://cs.gmu.edu/~sean/lisp/LispTutorial.html">Lisp
|
||
Quickstart</a> - A good tutorial to get up and code Common Lisp
|
||
quickly.</li>
|
||
<li><a href="http://www.lisperati.com/casting.html">Casting SPELs in
|
||
LISP</a> - A fun way to learn LISP while reading a comic book.</li>
|
||
<li>📹 <a
|
||
href="https://www.udemy.com/course/common-lisp-programming/?referralCode=2F3D698BBC4326F94358">Common
|
||
Lisp Programming: from novice to effective developer</a> - A learning
|
||
video series on the Udemy platform (<em>full content under paid
|
||
access</em>). By an active lisper and community contributor (<span
|
||
class="citation" data-cites="vindarel">@vindarel</span>). <a
|
||
href="https://github.com/vindarel/common-lisp-course-in-videos/">Github
|
||
home</a>. > Thanks for supporting my work on Udemy. I can send a free
|
||
link to students, just contact me.</li>
|
||
</ul>
|
||
<h2 id="intermediate">Intermediate</h2>
|
||
<ul>
|
||
<li><a href="https://lispcookbook.github.io/cl-cookbook/">The Common
|
||
Lisp Cookbook</a></li>
|
||
<li><a href="https://github.com/lisp-tips/lisp-tips/issues/">Lisp
|
||
Tips</a> - A blog with useful tips and tricks. A continuation of <a
|
||
href="http://lisptips.com/">Common Lisp tips</a>.</li>
|
||
<li><a href="http://40ants.com/lisp-project-of-the-day/">Lisp project of
|
||
the day</a> - A blog showcasing many Lisp libraries.</li>
|
||
</ul>
|
||
<h2 id="advanced">Advanced</h2>
|
||
<ul>
|
||
<li><a href="http://letoverlambda.com/">Let Over Lambda</a> - A book on
|
||
advanced macro techniques. The first six chapters are available
|
||
online.</li>
|
||
<li><a href="http://www.paulgraham.com/onlisp.html">On Lisp</a> - Paul
|
||
Graham’s amazing book on Lisp macros (and other interesting
|
||
things).</li>
|
||
<li><a
|
||
href="https://link.springer.com/book/10.1007/978-1-4842-6428-7">Programming
|
||
Algorithms in Lisp</a> - Updated version of “<a
|
||
href="https://leanpub.com/progalgs">Programming Algorithms</a>”; A
|
||
comprehensive guide to writing efficient programs with data structures
|
||
and algorithms in Lisp.</li>
|
||
</ul>
|
||
<h2 id="coding-platforms">Coding platforms</h2>
|
||
<ul>
|
||
<li><a
|
||
href="https://docs.codewars.com/languages/commonlisp/">Codewars</a> - a
|
||
code training platform, with Common Lisp support (SBCL).</li>
|
||
</ul>
|
||
<h2 id="web-development">Web Development</h2>
|
||
<ul>
|
||
<li><a href="https://leanpub.com/lispweb">Lisp for the Web</a> - A book
|
||
that walks you through building a voting web application in three
|
||
tiers.</li>
|
||
<li><a href="https://leanpub.com/lispwebtales">Lisp Web Tales</a> -
|
||
Simple tutorials using <a
|
||
href="http://edicl.github.io/hunchentoot/">hunchentoot</a>, <a
|
||
href="https://github.com/vseloved/cl-redis">cl-redis</a>, <a
|
||
href="https://github.com/archimag/restas">restas</a>, <a
|
||
href="https://github.com/madnificent/SEXML">SEXML</a>, <a
|
||
href="https://github.com/marijnh/Postmodern">Postmodern</a>, and
|
||
more.</li>
|
||
<li><a
|
||
href="https://lispcookbook.github.io/cl-cookbook/web.html">Section on
|
||
Web Development in The Common Lisp Cookbook</a> - An introductory
|
||
tutorial covering web server setup, routing, weblocks, templating, error
|
||
handling, packaging, hot reloading, database connection, and deployment,
|
||
amongst other topics in the current lisp web development ecosystem.</li>
|
||
</ul>
|
||
<h2 id="reference">Reference</h2>
|
||
<ul>
|
||
<li>NEW! <a
|
||
href="https://cl-community-spec.github.io/pages/index.html">CL
|
||
CommunitySpec</a> - a rendition of the Common Lisp ANSI Specification
|
||
draft.
|
||
<ul>
|
||
<li>with an interactive search, syntax highlighting! And
|
||
open-source.</li>
|
||
</ul></li>
|
||
<li>NEW! <a href="https://novaspec.org/">novaspec</a> - a modern
|
||
rendition of the CL ANSI draft.
|
||
<ul>
|
||
<li>not open-source?</li>
|
||
</ul></li>
|
||
<li><a href="http://clqr.boundp.org/index.html">Common Lisp Quick
|
||
Reference</a> - A distilled, pocket-size version of the ANSI CL spec.
|
||
Available for download as a PDF.</li>
|
||
<li><a
|
||
href="http://www.lispworks.com/documentation/lw50/CLHS/Front/index.htm">CLHS</a>
|
||
- The Common Lisp HyperSpec; the ANSI CL standard, in hypertext
|
||
form.</li>
|
||
<li><a href="https://clos-mop.hexstreamsoft.com/">CLOS MOP
|
||
specification</a> - A modern public domain online version of chapters 5
|
||
and 6 of The Art of the Metaobject Protocol</li>
|
||
<li><a
|
||
href="https://franz.com/support/documentation/cl-ansi-standard-draft-w-sidebar.pdf">Common
|
||
Lisp Standard Draft (pdf)</a> - The standard draft of the Common Lisp
|
||
specifications, in a well formatted PDF with a sidebar.
|
||
<ul>
|
||
<li>also <a
|
||
href="https://github.com/mmontone/dpans2texi/releases/">dpans2texi</a> -
|
||
the standard draft converted to Texinfo and published as a well
|
||
formatted PDF.</li>
|
||
</ul></li>
|
||
<li><a
|
||
href="http://www.cs.cmu.edu/Groups/AI/html/cltl/cltl2.html">Common Lisp
|
||
the Language</a> - The original standard for Common Lisp before the ANSI
|
||
spec.</li>
|
||
<li><a href="https://lamberta.github.io/minispec/">Minispec</a> - A
|
||
friendlier, but less-complete, version of CLHS. Also contains
|
||
documentation for some commonly-used CL libraries (such as
|
||
Alexandria).</li>
|
||
<li><a href="http://jtra.cz/stuff/lisp/sclr/index.html">Simplified
|
||
Common Lisp reference</a> - The simplified version of CLHS.</li>
|
||
<li><a href="https://cdr.common-lisp.dev/">CDR</a> - Common Lisp
|
||
Document Repository. a repository of documents that are of interest to
|
||
the Common Lisp community. The most important property of a CDR document
|
||
is that it will never change: if you refer to it, you can be sure that
|
||
your reference will always refer to exactly the same document.
|
||
<ul>
|
||
<li>the Common Lisp Document Repository is hosted at <a
|
||
href="https://zenodo.org/communities/cdr/">Zenodo</a>.</li>
|
||
</ul></li>
|
||
</ul>
|
||
<h2 id="offline">Offline</h2>
|
||
<p>The CLHS is available offline via an <a
|
||
href="ftp://ftp.lispworks.com/pub/software_tools/reference/HyperSpec-7-0.tar.gz">archive</a>
|
||
and as doc sets in <a href="https://kapeli.com/dash">Dash</a>, <a
|
||
href="https://zealdocs.org/">Zeal</a> and <a
|
||
href="https://velocity.silverlakesoftware.com/">Velocity</a>.</p>
|
||
<h2 id="beginner-1">Beginner</h2>
|
||
<ul>
|
||
<li><a href="http://landoflisp.com/">Land of Lisp</a> - A fun,
|
||
game-oriented introduction to Common Lisp.</li>
|
||
<li><a href="http://www.gigamonkeys.com/book/">Practical Common Lisp</a>
|
||
- A good introductory text to Common Lisp, with practical examples.</li>
|
||
</ul>
|
||
<h2 id="intermediate-1">Intermediate</h2>
|
||
<ul>
|
||
<li><a href="http://www.paulgraham.com/acl.html">ANSI Common Lisp</a> -
|
||
A thorough, practical covering of the entire language, with exercises.
|
||
Not recommended as a starter text, due to <a
|
||
href="http://www.cs.northwestern.edu/academics/courses/325/readings/graham/graham-notes.html">some
|
||
caveats</a>.</li>
|
||
<li><a href="http://weitz.de/cl-recipes/">Common Lisp Recipes</a> -
|
||
<strong>Common Lisp Recipes</strong> is a collection of solutions to
|
||
problems and answers to questions you are likely to encounter when
|
||
writing real-world applications in Common Lisp. Published in 2015.</li>
|
||
</ul>
|
||
<h2 id="advanced-1">Advanced</h2>
|
||
<ul>
|
||
<li><a href="http://letoverlambda.com/">Let Over Lambda</a> - A book on
|
||
advanced macro techniques. All eight chapters are available in the print
|
||
copy.</li>
|
||
<li><a
|
||
href="http://www.goodreads.com/book/show/1175730.Object_Oriented_Programming_in_Common_LISP">Object-Oriented
|
||
Programming in Common Lisp: A Programmer’s Guide to CLOS</a> - An old,
|
||
but very thorough book on CLOS.</li>
|
||
<li><a href="http://norvig.com/paip.html">Paradigms of Artificial
|
||
Intelligence Programming: Case Studies in Common Lisp</a> - A book on
|
||
programming AI that covers some advanced Lisp.
|
||
<ul>
|
||
<li>with a web version: <a
|
||
href="https://norvig.github.io/paip-lisp/#/">https://norvig.github.io/paip-lisp/</a></li>
|
||
</ul></li>
|
||
</ul>
|
||
<h2 id="other-books">Other books</h2>
|
||
<ul>
|
||
<li><a href="https://www.qrg.northwestern.edu/bps/readme.html">Building
|
||
Problem Solvers</a> (<a
|
||
href="http://www.qrg.northwestern.edu/bps/BPS-Searchable.pdf">PDF</a>)
|
||
by Ken Forbus and Johan de Kleer, made available for free by MIT Press -
|
||
a unique book among standard artificial intelligence texts in combining
|
||
science and engineering, theory and craft to describe the construction
|
||
of AI reasoning systems, and including code illustrating the ideas.</li>
|
||
</ul>
|
||
<h2 id="community">Community</h2>
|
||
<ul>
|
||
<li><a href="https://www.reddit.com/r/Common_Lisp/">/r/Common_Lisp</a> -
|
||
subreddit about Common Lisp</li>
|
||
<li><a href="https://www.reddit.com/r/learnlisp/">/r/learnlisp</a> - a
|
||
subreddit to ask questions and get help about Lisp</li>
|
||
<li><a href="https://common-lisp.net">common-lisp.net</a></li>
|
||
<li><a href="https://lisp-lang.org/">lisp-lang.org</a></li>
|
||
<li><a href="https://discord.gg/hhk46CE">Lisp Discord Server</a></li>
|
||
<li><a
|
||
href="https://irclog.tymoon.eu/libera/%23commonlisp">#commonlisp</a> on
|
||
Libera Chat - main Common Lisp IRC channel.</li>
|
||
<li><a href="https://irclog.tymoon.eu/libera/%23lisp">#lisp</a> on
|
||
Libera Chat - IRC channel for all Lisp dialects.</li>
|
||
<li>#clschool on Libera Chat - IRC channel for learning Common
|
||
Lisp.</li>
|
||
<li>#lispcafe on Libera Chat - IRC channel for off-topic
|
||
discussions.</li>
|
||
<li><a href="http://planet.lisp.org/">Planet Lisp</a> - A meta blog that
|
||
collects the contents of various Lisp-related blogs.</li>
|
||
<li><a href="https://chat.hexstreamsoft.com/">Common Lisp chat</a> -
|
||
Keybase team with well-defined rules and retention policies.</li>
|
||
</ul>
|
||
<h1 id="library-manager">Library Manager</h1>
|
||
<ul>
|
||
<li>⭐ <a href="https://www.quicklisp.org/beta/">Quicklisp</a> - A
|
||
library manager containing many libraries, with easy depencency
|
||
management. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat">Expat</a>.
|
||
<ul>
|
||
<li><a href="https://github.com/rudolfochrist/ql-https">ql-https</a> -
|
||
shell out to cURL and use HTTPS by default.</li>
|
||
<li><a href="https://quicklisp.org/beta/bundles.html">Quicklisp
|
||
bundles</a> - self-contained sets of systems that are exported from
|
||
Quicklisp and loadable without involving Quicklisp.</li>
|
||
</ul></li>
|
||
<li>👍 <a href="https://www.clpm.dev">CLPM</a> - A package manager for
|
||
Common Lisp that strives to cleanly separate the package manager process
|
||
itself from the client image that uses it. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_2Clause">BSD_2Clause</a>.
|
||
<ul>
|
||
<li>CLPM comes as a pre-built binary, supports HTTPS by default,
|
||
supports installing multiple package versions, supports versioned
|
||
systems, and more.</li>
|
||
</ul></li>
|
||
<li><a href="http://ultralisp.org/">Ultralisp</a> - A Quicklisp
|
||
distribution which updates every 5 minutes and to which one can add his
|
||
project in one click. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">BSD</a>.</li>
|
||
<li>👍<a href="https://github.com/roswell/roswell">Roswell</a> - a Lisp
|
||
implementation installer, script launcher and more. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://github.com/fukamachi/qlot">Qlot</a> - A
|
||
project-local library installer, similar to Bundler or Virtualenv. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat">Expat</a>.
|
||
<ul>
|
||
<li>how to <a
|
||
href="https://github.com/svetlyak40wt/qlot-without-roswell">use it from
|
||
the Lisp REPL</a> without Roswell.</li>
|
||
</ul></li>
|
||
<li><a href="https://lisp.com.br/quicksys/">Quicksys</a> - install
|
||
systems from multiple Quicklisp distributions. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://github.com/stylewarning/quickutil">Quickutil</a> -
|
||
A utility manager, similar to Quicklisp, but for small utilities rather
|
||
than whole libraries. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">3-clause
|
||
BSD</a>.</li>
|
||
</ul>
|
||
<p>see also:</p>
|
||
<ul>
|
||
<li>(NEW! as of May, 2023) <a
|
||
href="https://github.com/ocicl/ocicl">ocicl</a> - a new and experimental
|
||
alternative to Quicklisp, built on tools from the world of containers.
|
||
<a href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a
|
||
href="https://github.com/atgreen/trivial-system-loader">trivial-system-loader</a>
|
||
- A system installation/loading abstraction for Common Lisp.
|
||
<ul>
|
||
<li>play nice with people using another library manager than Quicklisp:
|
||
instead of hard-coding <code>(ql:quickload :mysystem)</code>, use
|
||
<code>(tsl:load-system :mysystem)</code>. tsl:load-system will first try
|
||
to use ocicl if available, then quicklisp, then plain
|
||
asdf:load-system.</li>
|
||
</ul></li>
|
||
</ul>
|
||
<p>might help:</p>
|
||
<ul>
|
||
<li><a href="https://github.com/shirakumo/redist">redist</a> -
|
||
facilities to produce Quicklisp distributions.</li>
|
||
<li><a href="https://github.com/tdrhq/quick-patch/">quick-patch</a> -
|
||
easily override quicklisp projects without using git submodules.
|
||
MPL-2.0.</li>
|
||
<li><a
|
||
href="https://github.com/vindarel/print-licenses">print-licenses</a> -
|
||
print licenses used by a project and its dependencies. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a
|
||
href="https://github.com/digikar99/asdf-dependency-graph/">asdf-dependency-graph</a>
|
||
- A minimal wrapper around <code>dot</code> to generate an image of the
|
||
dependencies graph.</li>
|
||
</ul>
|
||
<h3 id="interfaces-to-other-package-managers">Interfaces to other
|
||
package managers</h3>
|
||
<ul>
|
||
<li><a
|
||
href="https://gitlab.com/ralt/linux-packaging">linux-packaging</a> -
|
||
build .deb, .rpm or .pkg packages for your application with a single
|
||
ASDF declaration. Uses fpm under the hood. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://github.com/ralt/qldeb">qldeb</a> - Quicklisp
|
||
systems to debian packages, along with <a
|
||
href="https://github.com/ralt/deb-packager">deb-packager</a> (simply
|
||
create a debian package by defining an s-expression) and an introductory
|
||
<a
|
||
href="http://margaine.com/2015/12/22/quicklisp-packagecloud-debian-packages.html">blog
|
||
post</a>. Both <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://github.com/dimitri/ql-to-deb">ql-to-deb</a> -
|
||
Update cl-* debian packages from Quicklisp releases. WTFPL.</li>
|
||
<li><a
|
||
href="https://github.com/ralt/dh-quicklisp-buildapp">dh-quicklisp-buildapp</a>
|
||
- debhelper utility to let you compile your quicklisp-based Common Lisp
|
||
code into a buildapp binary in a .deb with almost no effort. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://github.com/can3p/cl-brewer">cl-brewer</a> -
|
||
Homebrew formula builder for (command line) common lisp applications.
|
||
Public domain.</li>
|
||
<li><a
|
||
href="https://gitlab.com/ralph-schleicher/flatpak-common-lisp">flatpack-common-lisp</a>
|
||
- A BuildStream project for building Flatpak based runtime environments
|
||
for Common Lisp applications.</li>
|
||
<li><a
|
||
href="https://github.com/borodust/alien-works-delivery">alien-works-delivery</a>
|
||
- WIP system for delivering Common Lisp applications as executable
|
||
bundles. For now it only supports AppImage format for Linux and MSIX for
|
||
Windows, but .APK for Android and later MacOSX and iOS bundle formats
|
||
are planned too.</li>
|
||
<li><a href="https://github.com/hraban/cl-nix-lite">cl-nix-lite</a> -
|
||
Common Lisp module for Nix, without Quicklisp. <a
|
||
href="https://directory.fsf.org/wiki/License:ArtisticLicense2.0">AGPL-3.0</a></li>
|
||
</ul>
|
||
<p>See also:</p>
|
||
<ul>
|
||
<li><a href="https://github.com/smashedtoatoms/asdf-sbcl">asdf-sbcl</a>,
|
||
a plugin for the universal package manager.</li>
|
||
<li>📹 <a href="https://www.youtube.com/watch?v=lGS4sr6AzKw">this
|
||
Youtube video</a> (by 40ants, 2023) on how to use alien-works-delivery
|
||
and linux-packaging.</li>
|
||
</ul>
|
||
<h1 id="machine-learning">Machine Learning</h1>
|
||
<ul>
|
||
<li><a href="https://github.com/melisgl/mgl">MGL</a> - a machine
|
||
learning library for backpropagation neural networks, boltzmann
|
||
machines, gaussian processes and more. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.
|
||
<ul>
|
||
<li>some parts originally contributed by Ravenpack International.</li>
|
||
<li>used by its <a href="https://github.com/melisgl">author</a> to <a
|
||
href="https://github.com/melisgl/higgsml">win</a> the Higgs Boson
|
||
Machine Learning Challenge.</li>
|
||
<li>more about the author: he also won the Google <a
|
||
href="https://en.wikipedia.org/wiki/AI_Challenge">AI Challenge</a> in
|
||
2010 using Common Lisp, but without MGL, as no machine learning was
|
||
needed. A <a href="https://www.youtube.com/watch?v=7sgERtZkycU">related
|
||
talk</a> (59’, 2013).</li>
|
||
</ul></li>
|
||
<li><a href="https://github.com/mmaul/clml">clml</a> - originally
|
||
developed by Mathematicl Systems Inc., a Japanese company. With a <a
|
||
href="https://mmaul.github.io/clml.tutorials//2015/08/08/CLML-Time-Series-Part-1.html">tutorial</a>.
|
||
<a href="http://opensource.franz.com/preamble.html">LLGPL</a>.</li>
|
||
<li><a href="https://www.common-lisp.net/project/antik/">antik</a> - a
|
||
foundation for scientific and engineering computation in Common Lisp.
|
||
GPL. Also <a href="https://github.com/melisgl/mgl-mat">mgl-mat</a> and
|
||
<a href="https://github.com/tpapp/lla">LLA</a>.</li>
|
||
</ul>
|
||
<p>Credit: borretti.me’s <a
|
||
href="http://borretti.me/article/common-lisp-sotu-2015#machine-learning">State
|
||
of CL Ecosystem 2015</a>.</p>
|
||
<h1 id="natural-language-processing">Natural Language Processing</h1>
|
||
<ul>
|
||
<li>🚀 <a href="https://github.com/ddmcdonald/sparser">sparser</a> - A
|
||
natural language understanding system for English. <a
|
||
href="http://www.eclipse.org/legal/epl-v10.html">Eclipse</a>.
|
||
<ul>
|
||
<li><blockquote>
|
||
<p>a model-driven, rule-based language text analysis system for large
|
||
volume, high-precision information extraction. At its heart, Sparser is
|
||
a bottom-up, phrase-structure-based chart parser, optimized for semantic
|
||
grammars and partial parsing.</p>
|
||
</blockquote></li>
|
||
</ul></li>
|
||
<li><a href="https://github.com/vseloved/cl-nlp">cl-nlp</a> - Natural
|
||
language processing toolset. <a
|
||
href="https://directory.fsf.org/wiki/License:Apache2.0">Apache2.0</a>.</li>
|
||
<li><a href="https://github.com/lucas8/Babel2/">babel2</a> - A Fluid
|
||
Construction Grammar implementation, computational framework, and
|
||
unification-based grammar formalism <a
|
||
href="https://directory.fsf.org/wiki/License:Apache2.0">Apache2.0</a>.</li>
|
||
</ul>
|
||
<h1 id="network-and-internet">Network and Internet</h1>
|
||
<p>See <a href="http://www.cliki.net/Web">Cliki</a> for more.</p>
|
||
<h2 id="http-clients">HTTP clients</h2>
|
||
<ul>
|
||
<li>👍 <a href="https://github.com/fukamachi/dexador">Dexador</a> - An
|
||
HTTP client, that aims at replacing Drakma. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://github.com/orthecreedence/carrier">Carrier</a> - A
|
||
lightweight, async HTTP client built on top of cl-async and fast-http.
|
||
<a href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://github.com/fukamachi/fast-http">fast-http</a> - A
|
||
fast HTTP request/response parser for Common Lisp. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://github.com/zellerin/http2/">http2</a> - HTTP/2
|
||
implementation in Common Lisp. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
</ul>
|
||
<h2 id="http-servers">HTTP Servers</h2>
|
||
<ul>
|
||
<li>⭐ <a href="http://weitz.de/hunchentoot/">Hunchentoot</a> - A web
|
||
server. <a
|
||
href="https://opensource.org/licenses/bsd-license.php">2-clause
|
||
BSD</a></li>
|
||
<li>👍<a href="https://github.com/fukamachi/clack">Clack</a> - A web
|
||
application environment inspired by Rack and WSGI. <a
|
||
href="http://opensource.franz.com/preamble.html">LLGPL</a>. Provides a
|
||
unified interface to a webserver of choice (default is Hunchentoot).
|
||
With more <a
|
||
href="https://jasom.github.io/clack-tutorial/posts/getting-started-with-clack/">getting
|
||
started guide</a>.</li>
|
||
<li><a href="https://github.com/gendl/aserve">zaserve</a> - A portable
|
||
fork of AllegroServe, by Franz Inc. <a
|
||
href="http://opensource.franz.com/preamble.html">LLGPL</a>.</li>
|
||
<li><a href="https://github.com/orthecreedence/wookie">wookie</a> -
|
||
Asynchronous HTTP server. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat">Expat</a>.</li>
|
||
<li><a href="https://github.com/fukamachi/woo">woo</a> - A fast
|
||
non-blocking HTTP server on top of libev. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a
|
||
href="https://github.com/akamai/cl-http2-protocol">cl-http2-protocol</a>
|
||
- a pure Common Lisp transport agnostic implementation of the HTTP/2
|
||
protocol at draft-14. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
</ul>
|
||
<h3 id="hunchentoot-plugins">Hunchentoot plugins</h3>
|
||
<ul>
|
||
<li>👍 <a href="https://github.com/mmontone/easy-routes">easy-routes</a>
|
||
- a routes handling system on top of Hunchentoot. It supports dispatch
|
||
based on HTTP method, arguments extraction from the url path,
|
||
decorators, url generation from route name, etc. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a
|
||
href="https://github.com/slyrus/hunchentoot-cgi">hunchentoot-cgi</a> - a
|
||
library for executing CGI scripts from the hunchentoot webserver. <a
|
||
href="https://opensource.org/licenses/bsd-license.php">BSD</a>.</li>
|
||
<li><a
|
||
href="https://github.com/moderninterpreters/hunchentoot-multi-acceptor/">hunchentoot-multi-acceptor</a>
|
||
- Route multiple domains (virtual hosts) on a single hunchentoot
|
||
acceptor using a single port. <a
|
||
href="https://directory.fsf.org/wiki/License:Apache2.0">Apache2.0</a>.</li>
|
||
<li><a
|
||
href="https://github.com/mmontone/hunchentoot-errors">hunchentoot-errors</a>
|
||
- Augments Hunchentoot error pages and logs with request and session
|
||
information. <a href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
</ul>
|
||
<p>See also:</p>
|
||
<ul>
|
||
<li><a
|
||
href="https://github.com/mdbergmann/cl-tbnl-gserver-tmgr">cl-tbnl-gserver-tmgr</a>
|
||
- Hunchentoot Gserver-based taskmanager. cl-gserver is an actor-like
|
||
message-passing library (see below in “Actors pattern”).
|
||
Experimental.</li>
|
||
</ul>
|
||
<h3 id="clack-plugins">Clack plugins</h3>
|
||
<ul>
|
||
<li><a href="https://github.com/jeko2000/tiny-routes">tiny-routes</a> -
|
||
A tiny routing library for Common Lisp targeting Clack. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">BSD_3Clause</a>.</li>
|
||
<li><a href="https://github.com/eudoxia0/clack-errors">clack-errors</a>
|
||
- Error page middleware for Clack. <a
|
||
href="http://opensource.franz.com/preamble.html">LLGPL</a>.</li>
|
||
<li><a href="https://github.com/BnMcGn/clath">clath</a> - a single
|
||
sign-on middleware for Clack. It allows basic login with OAuth1.0a,
|
||
OAuth2 and OpenID. At the time of writing, it supports authentication
|
||
from Google, Twitter, LinkedIn, StackExchange, Reddit and Github. <a
|
||
href="https://directory.fsf.org/wiki/License:Apache2.0">Apache2.0</a>.</li>
|
||
<li><a href="https://github.com/BnMcGn/clack-pretend">clack-pretend</a>
|
||
- a testing and debugging tool for clack. <a
|
||
href="https://directory.fsf.org/wiki/License:Apache2.0">Apache2.0</a>.</li>
|
||
<li><a href="https://github.com/eudoxia0/hermetic">hermetic</a> -
|
||
Security for Clack-based web applications. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat">Expat</a>.</li>
|
||
<li><a href="https://github.com/knobo/live-reload">live-reload</a> -
|
||
Live reload prototype for clack. <a
|
||
href="http://opensource.franz.com/preamble.html">LLGPL</a>.</li>
|
||
<li><a
|
||
href="https://github.com/fisxoj/clack-static-asset-middleware">clack-static-asset-middleware</a>
|
||
- a cache-busting static asset middleware for the clack. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
</ul>
|
||
<p>For routing, we can also use Snooze (see below).</p>
|
||
<h2 id="web-frameworks">Web frameworks</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/fukamachi/caveman">Caveman</a> - A
|
||
powerful web framework. <a
|
||
href="http://opensource.franz.com/preamble.html">LLGPL</a>. Example
|
||
projects: <a href="https://github.com/quickdocs">Quickdocs</a></li>
|
||
<li><a href="https://github.com/fukamachi/ningle">ningle</a> - A
|
||
super-micro web framework. <a
|
||
href="http://opensource.franz.com/preamble.html">LLGPL</a>.
|
||
<ul>
|
||
<li><a href="https://github.com/dnaeon/cl-jingle">jingle</a> - based on
|
||
ningle, adds bells and whistles, such as middlewares.
|
||
<ul>
|
||
<li>includes an OpenAPI and Swagger UI demo.</li>
|
||
</ul></li>
|
||
</ul></li>
|
||
<li><a href="https://github.com/Shirakumo/radiance">radiance</a> - A web
|
||
application environment and framework . <a
|
||
href="https://directory.fsf.org/wiki/License:Zlib">zlib</a>.</li>
|
||
</ul>
|
||
<p>REST-focused frameworks:</p>
|
||
<ul>
|
||
<li>👍 <a href="https://github.com/joaotavora/snooze">Snooze</a> - A
|
||
RESTful web framework. Web server agnostic. Currently has support for
|
||
Hunchentoot and Clack. Routes are just functions and HTTP conditions are
|
||
just Lisp conditions. <a
|
||
href="http://opensource.franz.com/preamble.html">LLGPL</a>.</li>
|
||
<li><a
|
||
href="https://github.com/mmontone/cl-rest-server">cl-rest-server</a> - a
|
||
library for writing REST web APIs. Features validation with schemas,
|
||
annotations for logging, caching, permissions or authentication,
|
||
documentation via Swagger, etc. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
</ul>
|
||
<p>See OpenAPI, OData and other libraries below.</p>
|
||
<h3 id="isomorphic-web-frameworks">Isomorphic web frameworks</h3>
|
||
<ul>
|
||
<li><a href="https://github.com/40ants/reblocks">Weblocks (Reblocks)</a>
|
||
- A widgets-based framework with a built-in ajax update mechanism that
|
||
“solves the JavaScript problem”. <a
|
||
href="http://opensource.franz.com/preamble.html">LLGPL</a>.
|
||
<ul>
|
||
<li>example code bases: <a
|
||
href="https://github.com/ultralisp/ultralisp/">Ultralisp</a>, <a
|
||
href="https://github.com/lct23/krasnodar">krasnodar</a>, a dashboard
|
||
made for a hackaton (2024) (<a
|
||
href="https://diode.zone/videos/watch/9e379a86-c530-4e9d-b8be-7437b1f7200b">demo
|
||
video</a>).</li>
|
||
</ul></li>
|
||
<li><a href="https://github.com/rabbibotton/clog">CLOG</a> - The Common
|
||
Lisp Omnificent GUI. Uses web technology to produce graphical user
|
||
interfaces for applications locally or remotely. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">BSD_3Clause</a>.
|
||
<ul>
|
||
<li>CLOG is based on the ideas of GNOGA, a framework the author wrote
|
||
for Ada and used in commercial production code since 2013.</li>
|
||
</ul></li>
|
||
<li><a
|
||
href="https://github.com/interactive-ssr/client/blob/master/main.org/">Interactive
|
||
SSR</a> - ISSR allows you to make interactive web pages without writing
|
||
client scripting. No knowledge about Javascript or DOM is necessary.
|
||
<ul>
|
||
<li>it is not unlike Phoenix LiveView or Hotwire.</li>
|
||
</ul></li>
|
||
</ul>
|
||
<h2 id="parsing-html">Parsing html</h2>
|
||
<ul>
|
||
<li>👍 <a href="https://github.com/Shinmera/plump">Plump</a> - A lenient
|
||
HTML/XML parser, tolerant on malformed markup. <a
|
||
href="https://directory.fsf.org/wiki/License:Zlib">zlib</a>. Best used
|
||
with <a href="https://github.com/Shinmera/lquery">lquery</a> and <a
|
||
href="https://github.com/Shinmera/CLSS">clss</a>.</li>
|
||
</ul>
|
||
<h2 id="querying-htmldom-web-scraping">Querying HTML/DOM, web
|
||
scraping</h2>
|
||
<ul>
|
||
<li>👍 <a href="https://github.com/Shinmera/lquery">lquery</a> - A
|
||
jQuery-like HTML/DOM manipulation library. <a
|
||
href="https://directory.fsf.org/wiki/License:Zlib">zlib</a>.</li>
|
||
<li><a href="https://40ants.com/scrapycl/">scrapycl</a> - web scraping
|
||
framework for writing crawlers in Common Lisp. Unlicense.
|
||
<ul>
|
||
<li>relying on lquery.</li>
|
||
</ul></li>
|
||
</ul>
|
||
<p>See also the XML section below for xpath libraries and more.</p>
|
||
<h2 id="html-generators-and-templates">HTML generators and
|
||
templates</h2>
|
||
<ul>
|
||
<li>👍 <a href="https://github.com/ruricolist/spinneret">spinneret</a> -
|
||
Common Lisp HTML5 generator. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat">Expat</a>.</li>
|
||
<li>⭐ <a href="http://weitz.de/cl-who/">cl-who</a> - The venerable HTML
|
||
generator. <a
|
||
href="https://directory.fsf.org/wiki?title=License:FreeBSD">FreeBSD</a>.</li>
|
||
<li>⭐ <a href="https://github.com/mmontone/djula">Djula</a> - A port of
|
||
Django’s template engine to Common Lisp. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat">Expat</a>.
|
||
<ul>
|
||
<li><a
|
||
href="https://github.com/rajasegar/cl-djula-tailwind">cl-djula-tailwind</a>
|
||
- use TailwindCSS classe in your Djula templates without any JavaScript
|
||
or Node.js tooling.</li>
|
||
</ul></li>
|
||
<li><a href="https://github.com/mmontone/ten">TEN</a> - the completness
|
||
of Djula meets the usability of Eco. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://github.com/eudoxia0/eco">eco</a> - Fast, flexible,
|
||
designer-friendly template engine. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat">Expat</a>.</li>
|
||
<li><a
|
||
href="https://github.com/archimag/cl-closure-template">cl-closure-template</a>
|
||
- Implementation of Google’s Closure templates, where compiling a
|
||
template creates a function that generates the result. <a
|
||
href="http://opensource.franz.com/preamble.html">LLGPL</a>.</li>
|
||
<li><a href="https://github.com/ailisp/flute">flute</a> - An easily
|
||
composable HTML5 generation library with the most simplistic syntax. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://shinmera.github.io/clip">clip</a> - An HTML
|
||
template processor where the templates are written in HTML. <a
|
||
href="https://directory.fsf.org/wiki/License:Zlib">zlib</a>.</li>
|
||
<li><a href="https://github.com/fukamachi/lsx/">lsx</a> and <a
|
||
href="https://github.com/moderninterpreters/markup">markup</a> - Two
|
||
JSX-like templating engines, where HTML tags are Common Lisp code.
|
||
<code>markup</code> comes with an Emacs package.</li>
|
||
</ul>
|
||
<h2 id="uri-handling">URI handling</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/fukamachi/quri">quri</a> - Another URI
|
||
library for Common Lisp. Supports userinfo, IPv6 hostname,
|
||
encoding/decoding utilities,… <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">BSD_3Clause</a>.</li>
|
||
<li><a href="https://github.com/EuAndreh/cl-slug">cl-slug</a> - a small
|
||
library to make slugs, mainly for URIs, transform in CamelCase, remove
|
||
accentuation and punctuation, for english and beyound. <a
|
||
href="http://opensource.franz.com/preamble.html">LLGPL</a>.</li>
|
||
</ul>
|
||
<h2 id="javascript">Javascript</h2>
|
||
<ul>
|
||
<li>⭐ <a
|
||
href="https://common-lisp.net/project/parenscript/">Parenscript</a> - A
|
||
translator from Common Lisp to Javascript. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">3-clause
|
||
BSD</a>. See <a
|
||
href="https://github.com/johnmastro/trident-mode.el">Trident-mode</a>,
|
||
an Emacs mode that provides live interaction with the browser.<a
|
||
href="http://unlicense.org/">unlicence</a>.
|
||
<ul>
|
||
<li><a href="https://github.com/BnMcGn/paren6/">paren6</a> - a set of
|
||
ES6 macros for Parenscript.</li>
|
||
</ul></li>
|
||
<li><a href="https://github.com/jscl-project/jscl">JSCL</a> - A CL-to-JS
|
||
compiler designed to be self-hosting from day one. Lacks CLOS, format
|
||
and loop.</li>
|
||
<li><a href="http://marijnhaverbeke.nl/cl-javascript/">CL-JavaScript</a>
|
||
- A translator from Javascript to Common Lisp. Not available on
|
||
Quicklisp. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat">Expat</a>.</li>
|
||
<li><a href="http://marijnhaverbeke.nl/parse-js/">parse-js</a> - A
|
||
package for parsing ECMAScript 3. <a
|
||
href="https://directory.fsf.org/wiki/License:Zlib">zlib</a>.</li>
|
||
<li><a href="https://github.com/ceramic/remote-js">remote-js</a> - send
|
||
JavaScript from Common Lisp to a browser. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://github.com/BnMcGn/sigil">sigil</a> - A Parenscript
|
||
to Javascript command line compiler and REPL. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
</ul>
|
||
<p>In development:</p>
|
||
<ul>
|
||
<li><a href="https://github.com/cxxxr/valtan">Valtan</a> - Common Lisp
|
||
to JavaScript compiler.</li>
|
||
<li><a href="https://tailrecursion.com/JACL/">JACL</a> - an experimental
|
||
Lisp system for the Web browser platform to explore new techniques for
|
||
developing large Single Page Applications with Lisp.</li>
|
||
</ul>
|
||
<p>Utilities for <strong>React</strong>:</p>
|
||
<ul>
|
||
<li><a href="https://github.com/helmutkian/cl-react">cl-react</a> -
|
||
Common Lisp (Parenscript) utilities for building web apps in ReactJs.
|
||
MIT.</li>
|
||
<li><a href="https://github.com/michaeljforster/panic">Panic</a>, a
|
||
Parenscript library for React. Not in Quicklisp. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>. Its <a
|
||
href="https://github.com/40ants/todomvc/blob/common-lisp-example/examples/common-lisp-react/src/app.lisp">TodoMVC
|
||
example</a>.</li>
|
||
<li><a href="https://github.com/jasom/parenscriptx">Parenscriptx</a> -
|
||
Parenscript Macros to aid generating react code. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://github.com/nilesr/jscl-react">jscl-react</a> - A
|
||
web framework for writing react components in common lisp using jscl. No
|
||
license specified.</li>
|
||
</ul>
|
||
<p>See also:</p>
|
||
<ul>
|
||
<li><a
|
||
href="https://github.com/johnmastro/trident-mode.el">trident-mode</a>,
|
||
an Emacs minor mode for live Parenscript interaction.</li>
|
||
</ul>
|
||
<h2 id="deployment">Deployment</h2>
|
||
<ul>
|
||
<li>👍 <a href="https://shinmera.github.io/deploy">deploy</a> - A
|
||
toolkit for binary deployment of Lisp applications, with extra support
|
||
for foreign shared libraries. <a
|
||
href="https://directory.fsf.org/wiki/License:Zlib">zlib</a>.</li>
|
||
<li><a
|
||
href="https://github.com/fstamour/common-lisp-heroku-example">common-lisp-heroku-example</a>
|
||
- Example of Common Lisp server on Heroku using Docker.</li>
|
||
<li><a href="https://github.com/xh4/cube">cube</a> - Kubernetes client
|
||
library for Common LISP generated from the Swagger specification. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://github.com/container-lisp/s2i-lisp">s2i-lisp</a> -
|
||
Source-to-Image builder image based on CentOS or alternatively RHEL7 for
|
||
building Common LISP images for OpenShift (and also Docker). It features
|
||
an up-to-date SBCL with Quicklisp installation, SLIME or SLY integration
|
||
and allows customization via environment variables. <a
|
||
href="https://directory.fsf.org/wiki/License:Apache2.0">Apache2</a></li>
|
||
<li><a
|
||
href="https://github.com/y2q-actionman/cl-aws-custom-runtime-test">cl-aws-runtime-test</a>
|
||
- An example of using Common Lisp (SBCL) as a custom runtime on AWS
|
||
lambda. WTFPL.</li>
|
||
<li><a href="https://github.com/40ants/ci/">40ants/ci</a> - Highly
|
||
opionated Github Actions workflow builder for Common Lisp projects.
|
||
<ul>
|
||
<li>with: a linter, lisp critic, tests runner, test matrix, doc
|
||
building, caching…</li>
|
||
</ul></li>
|
||
<li><a
|
||
href="https://github.com/melusina-org/make-common-lisp-program/">make-common-lisp-program</a>
|
||
- GitHub action to build an executable Common Lisp program on Ubuntu,
|
||
MacOS and Windows. MIT.</li>
|
||
</ul>
|
||
<p>See also:</p>
|
||
<ul>
|
||
<li><a href="https://platform.sh/blog/2019/lisp/">Platform.sh</a> has
|
||
Common Lisp support, so has <a
|
||
href="https://docs.ovh.com/ie/en/web-paas/languages-lisp/">OVH</a>
|
||
through their Web PaaS partnership.</li>
|
||
<li><a href="https://www.heliohost.org/">Heliohost</a> for a free
|
||
hosting solution.</li>
|
||
<li><a
|
||
href="https://git.sr.ht/%7Emarcuskammer/cloudinit/tree/main/item/sbcl-nginx.yml">Cloud
|
||
Init file for SBCL</a> - an init file for providers supporting the
|
||
cloudinit format (DigitalOcean etc).</li>
|
||
</ul>
|
||
<h2 id="monitoring">Monitoring</h2>
|
||
<ul>
|
||
<li><a
|
||
href="https://github.com/deadtrickster/prometheus.cl">prometheus.cl</a>
|
||
- Prometheus.io client. Grafana dashboard for SBCL and Hunchentoot
|
||
metrics (memory, threads, requests per second,…). <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.
|
||
<ul>
|
||
<li><a href="https://github.com/40ants/prometheus-gc">prometheus-g</a> -
|
||
Extension for prometheus.cl which collects metrics about garbage
|
||
collector state.</li>
|
||
</ul></li>
|
||
<li><a
|
||
href="https://github.com/mmontone/cl-sentry-client">cl-sentry-client</a>
|
||
- a Sentry client for Common Lisp, the cloud-based error monitoring
|
||
system. <a href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a
|
||
href="https://github.com/adventuring/rollbar.lisp">rollbar.lisp</a> -
|
||
interface to <a href="https://rollbar.com/">Rollbar.com</a>, an error
|
||
tracking software.</li>
|
||
</ul>
|
||
<h2 id="websockets">Websockets</h2>
|
||
<ul>
|
||
<li>👍 <a href="https://github.com/usocket/usocket">usocket</a> - A
|
||
portable TCP and UDP socket interface. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat">Expat</a>.</li>
|
||
<li><a href="https://github.com/charJe/portal">Portal</a> - Portable
|
||
websockets for Common Lisp, using usocket. <a
|
||
href="http://opensource.franz.com/preamble.html">LLGPL</a>.</li>
|
||
<li><a href="https://github.com/3b/clws">clws</a> - websockets server in
|
||
CL, built on IOlib and libfixposix. No licence specified.</li>
|
||
<li><a
|
||
href="https://github.com/joaotavora/hunchensocket">Hunchensocket</a> -
|
||
RFC6455 compliant WebSockets for Common Lisp, as an extension to
|
||
Hunchentoot. <a href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a
|
||
href="https://github.com/fukamachi/websocket-driver">websocket-driver</a>
|
||
- based on Clack.</li>
|
||
<li><a href="https://github.com/sionescu/iolib">iolib</a> - I/O library.
|
||
<a href="https://directory.fsf.org/wiki/License:Expat">Expat</a>.
|
||
<ul>
|
||
<li>“IOlib is to be a better and more modern I/O library than the
|
||
standard Common Lisp library. It contains: a socket library, a DNS
|
||
resolver, an I/O multiplexer, a pathname library and file-system
|
||
utilities.”</li>
|
||
</ul></li>
|
||
</ul>
|
||
<p><em>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.</em></p>
|
||
<h2 id="web-development-utilities">Web development utilities</h2>
|
||
<h3 id="assets-management">Assets management</h3>
|
||
<ul>
|
||
<li><a href="https://github.com/eudoxia0/rock">Rock</a> - an asset
|
||
manager for Common Lisp. It’s basically a combination of Bower and
|
||
webassets. <a href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
</ul>
|
||
<h3 id="browser-tests">Browser tests</h3>
|
||
<ul>
|
||
<li><a
|
||
href="https://github.com/copyleft/cl-webdriver-client/">cl-webdriver-client</a>
|
||
- a binding library to WebDriver (supports Selenium 4.0).</li>
|
||
</ul>
|
||
<h3 id="form-handling">Form handling</h3>
|
||
<ul>
|
||
<li>👍 <a href="https://github.com/mmontone/cl-forms">cl-forms</a> - Web
|
||
forms handling library for Common lisp. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
</ul>
|
||
<h3 id="user-login-and-password-management">User login and password
|
||
management</h3>
|
||
<ul>
|
||
<li><p><a href="https://github.com/charJe/cl-authentic">cl-authentic</a>
|
||
- Password management for Common Lisp (web) applications. <a
|
||
href="http://opensource.franz.com/preamble.html">LLGPL</a>.</p>
|
||
<ul>
|
||
<li>safe password storage: cleartext-free, using your choice of hash
|
||
algorithm through ironclad, storage in an SQL database,</li>
|
||
<li>password reset mechanism with one-time tokens (suitable for mailing
|
||
to users for confirmation),</li>
|
||
<li>user creation optionally with confirmation tokens (suitable for
|
||
mailing to users),</li>
|
||
</ul></li>
|
||
<li><p><a
|
||
href="https://github.com/40ants/mito-email-auth">mito-email-auth</a> -
|
||
Helper to authenticate a website’s users by sending them unique code by
|
||
email.</p></li>
|
||
<li><p><a href="https://github.com/fferrere/cl-cas">cl-cas</a> - A
|
||
library to help <a
|
||
href="https://apereo.github.io/cas/6.0.x/protocol/CAS-Protocol.html">CAS
|
||
authenticaton</a> to Common Lisp web applications. Not in Quicklisp.</p>
|
||
<ul>
|
||
<li><a
|
||
href="https://github.com/fferrere/cas-middleware">cas-middleware</a> -
|
||
CAS authenticaton middleware for Caveman.</li>
|
||
<li><a href="https://github.com/fferrere/cas-demo">cas-demo</a> - a demo
|
||
project.</li>
|
||
</ul></li>
|
||
</ul>
|
||
<p>See also mito-auth and the Hunchentoot and Clack plugins above.</p>
|
||
<h3 id="web-project-skeletons-and-generators">Web project skeletons and
|
||
generators</h3>
|
||
<ul>
|
||
<li><a href="https://github.com/vindarel/cl-cookieweb">cl-cookieweb</a>
|
||
- a Cookiecutter template to start a web project. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">BSD_3Clause</a>.
|
||
Not in Quicklisp.
|
||
<ul>
|
||
<li>Provides a working toy web app with the Hunchentoot web server,
|
||
easy-routes, Djula templates, styled with Bulma, based on SQLite, with
|
||
migrations, an example table definition and a test suite using
|
||
FiveAM.</li>
|
||
</ul></li>
|
||
<li><a href="https://github.com/container-lisp/make-like">make-like</a>
|
||
- an application template builder for LIKE (Lisp In Kubernetes + Emacs)
|
||
applications. <a
|
||
href="https://directory.fsf.org/wiki/License:ArtisticLicense2.0">Apache2.0</a>.
|
||
<ul>
|
||
<li>Makefile, podman support, GitHub Actions, Prometheus metrics
|
||
support, TOML-style config.ini, easy-route preconfigured with
|
||
health-check and more.</li>
|
||
</ul></li>
|
||
<li><a
|
||
href="https://github.com/rajasegar/cl-webapp-seed">cl-webapp-seed</a> -
|
||
a simple web application boilerplate. Uses Hunchentoot, cl-who, deploys
|
||
easily to Heroku. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
</ul>
|
||
<h2 id="others">Others</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/paddymul/css-lite">css-lite</a> - A CSS
|
||
grammar. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat">Expat</a>.</li>
|
||
<li><a href="https://github.com/eudoxia0/find-port">find-port</a> -
|
||
Programmatically find open ports. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://github.com/cl-wget/cl-wget">cl-wget</a> - Makes
|
||
retrieving large files or mirroring entire websites easy. <a
|
||
href="https://directory.fsf.org/wiki/License:ArtisticLicense2.0">AGPL-3.0</a>.</li>
|
||
<li><a
|
||
href="https://github.com/eudoxia0/trivial-download">trivial-download</a>
|
||
- Download files. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
</ul>
|
||
<h3 id="email">Email</h3>
|
||
<ul>
|
||
<li><a href="https://github.com/40ants/trivial-imap">trivial-imap</a> -
|
||
tries to make easy some common cases of working with IMAP servers, like
|
||
reading emails from the server. A thin wrapper over post-office library
|
||
(which is a fork of Franz’s cl-imap). <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">BSD</a>.</li>
|
||
<li><a href="https://github.com/eudoxia0/postmaster">Postmaster</a> - A
|
||
simple, easy-to-use SMTP/IMAP library. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat">Expat</a>.</li>
|
||
<li><a href="https://gitlab.common-lisp.net/cl-smtp/cl-smtp">cl-smtp</a>
|
||
- CL-SMTP is a simple lisp smtp client.</li>
|
||
<li><a href="https://github.com/vindarel/cl-sendgrid">sendgrid</a> -
|
||
send emails with Sendgrid’s API. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://github.com/40ants/mailgun">mailgun</a> - A thin
|
||
wrapper to post HTML emails through mailgun.com. <a
|
||
href="http://unlicense.org/">unlicence</a>.</li>
|
||
<li><a href="https://github.com/CodyReichert/cl-ses/">cl-ses</a> -
|
||
Library for AWS SES. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat">Expat</a>.</li>
|
||
</ul>
|
||
<h3 id="openapi-odata-openrpc">OpenAPI, OData, OpenRPC</h3>
|
||
<ul>
|
||
<li>NEW! <a
|
||
href="https://codeberg.org/kilianmh/openapi-generator">openapi-generator</a>
|
||
- OpenAPI client code generator. <a
|
||
href="https://directory.fsf.org/wiki/License:ArtisticLicense2.0">AGPL-3.0</a>.
|
||
<ul>
|
||
<li>Generation of OpenAPI ASDF/Quicklisp-loadable projects within one
|
||
command,</li>
|
||
<li>Support for path, (arbitrary) query, (arbitrary) header, (json)
|
||
content parameters,</li>
|
||
<li>Conversion of an OpenAPI spec into CLOS object -> explore API
|
||
within inspector,</li>
|
||
<li>Conversion of OpenAPI-2.0 or YAML files to OpenAPI-3.0 JSON with
|
||
swagger converter (network connection required),</li>
|
||
<li>etc.</li>
|
||
</ul></li>
|
||
<li><a href="https://github.com/cxxxr/apispec">apispec</a> - A Common
|
||
Lisp library for handling Web API requests and responses. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">BSD_3Clause</a>.
|
||
<ul>
|
||
<li>takes an OpenAPI3 yaml specification and allows to validate and
|
||
parse HTTP request headers, parameters and bodies.</li>
|
||
</ul></li>
|
||
<li><a
|
||
href="https://github.com/copyleft/cl-odata-client">cl-odata-client</a> -
|
||
Common Lisp client library for accessing <a
|
||
href="https://www.odata.org">OData services</a>. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://github.com/40ants/openrpc">OpenRPC</a> - OpenRPC
|
||
implementation for Common Lisp. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">BSD</a>.
|
||
<ul>
|
||
<li>Automatic OpenRPC spec generation</li>
|
||
<li>Automatic JSON-RPC client building by OpenRPC spec. This includes
|
||
creation of Common Lisp classes and methods for making RPC requests and
|
||
returning native CL objects.</li>
|
||
<li>all JSON marshalling is done under the hood.</li>
|
||
</ul></li>
|
||
<li><a href="https://github.com/cxxxr/jsonrpc">jsonrpc</a> - JSON-RPC
|
||
2.0 server/client for Common Lisp. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">BSD</a>.</li>
|
||
</ul>
|
||
<h3 id="static-site-generators">Static site generators</h3>
|
||
<ul>
|
||
<li><a href="https://github.com/kingcons/coleslaw">coleslaw</a> and its
|
||
<a href="https://github.com/40ants/coleslaw-cli">coleslaw-cli</a> -
|
||
Flexible Lisp Blogware similar to Frog, Jekyll, or Hakyll. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">BSD</a>.</li>
|
||
</ul>
|
||
<h3 id="third-party-apis">Third-party APIs</h3>
|
||
<ul>
|
||
<li><a href="https://github.com/rotatef/aws-sign4">Aws-sign4</a> -
|
||
Common Lisp library for Amazon Web Services signing version 4. <a
|
||
href="http://www.gnu.org/copyleft/gpl.html">GNU GPL3</a>.</li>
|
||
<li><a href="https://github.com/pokepay/aws-sdk-lisp/">aws-sdk-lisp</a>
|
||
- Provides interfaces for each AWS services as individual systems. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_2Clause">BSD_2Clause</a>.
|
||
<ul>
|
||
<li>incluse dozens of services: dsn, appstream, athena, cloudfront,
|
||
codedeploy, cognito-*, directconnect, dynamodb, dms, elasticache, email,
|
||
events, kinesis, machinelearning, monitoring, s3, sms, storagegateway,
|
||
workspaces…</li>
|
||
</ul></li>
|
||
<li><a href="https://github.com/xach/zs3">zs3</a> - A library for
|
||
working with Amazon’s Simple Storage Service (S3) and CloudFront
|
||
service. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">BSD</a>.</li>
|
||
<li><a href="https://shinmera.github.io/north">north</a> - The successor
|
||
to the South (Simple OaUTH) library, implementing the full oAuth 1.0a
|
||
protocol, both client and server sides. Using North you can easily
|
||
become an oAuth provider or consumer. <a
|
||
href="https://directory.fsf.org/wiki/License:Zlib">zlib</a>.</li>
|
||
<li><a href="https://github.com/kjinho/ciao">Ciao</a> - an easy-to-use
|
||
Common Lisp OAuth 2.0 client library. It is a port of the Racket OAuth
|
||
2.0 Client to Common Lisp. <a
|
||
href="https://www.gnu.org/licenses/lgpl-3.0.en.html">LGPL3</a>.</li>
|
||
<li><a href="https://github.com/eudoxia0/avatar-api">avatar-api</a> -
|
||
Get avatars from Google+, Gravatar and others. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat">Expat</a>.</li>
|
||
<li><a href="https://github.com/Shinmera/chirp">chirp</a> - A Twitter
|
||
client library. <a
|
||
href="https://directory.fsf.org/wiki/License:Zlib">zlib</a>.</li>
|
||
<li><a href="https://github.com/Shinmera/tooter">tooter</a> - a client
|
||
library implementing the full v1 REST API protocol for Mastodon. <a
|
||
href="https://directory.fsf.org/wiki/License:Zlib">zlib</a>.</li>
|
||
<li><a href="https://www.common-lisp.net/project/cl-irc/">cl-irc</a> -
|
||
An IRC client library. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat">Expat</a>.</li>
|
||
<li><a
|
||
href="https://github.com/AccelerationNet/cl-mediawiki">cl-mediawiki</a>
|
||
- a wrapper around the MediaWiki api. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://github.com/cl-openid/cl-openid">cl-openid</a> - An
|
||
implementation of OpenID. <a
|
||
href="http://opensource.franz.com/preamble.html">LLGPL</a>.</li>
|
||
<li><a href="https://github.com/TeMPOraL/cl-pushover">cl-pushover</a> -
|
||
Common Lisp bindings to Pushover. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://github.com/Shinmera/humbler">humbler</a> - A Tumblr
|
||
API interface. <a
|
||
href="https://directory.fsf.org/wiki/License:Zlib">zlib</a>.</li>
|
||
<li><a href="https://github.com/Shinmera/multiposter">multiposter</a> -
|
||
post to multiple services simultaneously. <a
|
||
href="https://directory.fsf.org/wiki/License:Zlib">zlib</a>.</li>
|
||
<li><a href="https://git.mfiano.net/mfiano/stripe">stripe</a> - a client
|
||
for the Stripe payment system. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://github.com/K1D77A/lisp-pay">lisp-pay</a> - Wrappers
|
||
around various payment processors: Paypal, Stripe, Coinpayments and
|
||
BTCPayServer. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a
|
||
href="https://github.com/K1D77A/lunamech-matrix-api">lunamech-matrix-api</a>
|
||
- A complete wrapper over the Client -> Server Matrix API. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://40ants.com/cl-telegram-bot/">cl-telegram-bot</a> -
|
||
Telegram bot API. <a href="https://opensource.org/licenses/MIT">MIT</a>.
|
||
<ul>
|
||
<li><a
|
||
href="https://github.com/aartaka/cl-telegram-bot-auto-api">cl-telegram-bot-auto-api</a>
|
||
- Alternative Telegram Bot API bindings, auto-generated from Telegram
|
||
website. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">3-clause
|
||
BSD</a>.</li>
|
||
</ul></li>
|
||
</ul>
|
||
<h1 id="numerical-and-scientific">Numerical and Scientific</h1>
|
||
<ul>
|
||
<li>⭐ <a href="http://maxima.sourceforge.net/">maxima</a> - Computer
|
||
Algebra System. <a href="http://www.gnu.org/copyleft/gpl.html">GNU
|
||
GPL3</a>.
|
||
<ul>
|
||
<li><a
|
||
href="https://wxmaxima-developers.github.io/wxmaxima/">wxMaxima</a>: a
|
||
graphical frontend.</li>
|
||
<li><a
|
||
href="https://play.google.com/store/apps/details?id=jp.yhonda">Maxima on
|
||
Android</a>, built with ECL.</li>
|
||
<li><a href="https://github.com/robert-dodier/maxima-jupyter">Maxima on
|
||
Jupyter</a></li>
|
||
<li>it can be used via <a href="https://www.sagemath.org/">SageMath</a>
|
||
and <a href="https://apps.kde.org/cantor/">KDE Cantor</a>. Of course,
|
||
with Emacs: <a
|
||
href="https://gitlab.com/sasanidas/maxima">maxima-mode</a> (<a
|
||
href="https://community.linuxmint.com/img/screenshots/maxima-emacs.png">screenshot</a>)
|
||
and <a
|
||
href="https://github.com/jmbr/maxima-interface">maxima-interface</a> to
|
||
ease the interface between Maxima and Common Lisp.</li>
|
||
<li>it can be used <a
|
||
href="https://mahmoodsheikh36.github.io/post/20230510181916-maxima_in_lisp/">from
|
||
a Lisp REPL</a>.</li>
|
||
</ul></li>
|
||
<li><a href="https://github.com/numcl/numcl">numcl</a> - Numpy clone in
|
||
Common Lisp. <a
|
||
href="https://www.gnu.org/licenses/lgpl-3.0.en.html">LGPL3</a>.</li>
|
||
<li><a href="https://common-lisp.net/project/gsll/">GSLL</a> - GNU
|
||
Scientific Library for Lisp; allows the use of the GSL from Common Lisp.
|
||
<a href="http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html">GNU
|
||
LGPL2.1</a>.</li>
|
||
<li><a href="https://github.com/pkhuong/Xecto">Xecto</a> - A library for
|
||
regular array parallelism. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">3-clause
|
||
BSD</a>.</li>
|
||
<li><a href="https://github.com/marcoheisig/Petalisp">Petalisp</a> - an
|
||
attempt to generate high performance code for parallel computers by
|
||
JIT-compiling array definitions. It works on a more fundamental level
|
||
than NumPy, by providing even more powerful N-dimensional arrays, but
|
||
just a few building blocks for working on them. <a
|
||
href="https://directory.fsf.org/wiki/License:AGPL-3.0">AGPL-3.0</a>.</li>
|
||
<li><a href="https://github.com/ghollisjr/cl-ana">cl-ana</a> - Common
|
||
Lisp data analysis library with emphasis on modularity and conceptual
|
||
clarity. It aims to be a general purpose framework for analyzing small
|
||
and large scale datasets, including binned data analysis and
|
||
visualization. <a href="http://www.gnu.org/copyleft/gpl.html">GNU
|
||
GPL3</a>.</li>
|
||
<li><a href="https://github.com/takagi/avm">avm</a> - Efficient and
|
||
expressive arrayed vector math library with multi-threading and CUDA
|
||
support. <a href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a
|
||
href="https://github.com/bendudson/array-operations">array-operations</a>
|
||
- a collection of functions and macros for manipulating Common Lisp
|
||
arrays and performing numerical calculations with them. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://github.com/Ramarren/cl-geometry/">cl-geometry</a> -
|
||
a system for two dimensional computational geometry for Common Lisp. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://github.com/sirherrbatka/vellum">Vellum</a> - Data
|
||
Frames for Common Lisp. BSD_2Clause.</li>
|
||
<li><a href="https://github.com/cbaggers/rtg-math/">rtg-math</a> - a
|
||
selection of the math routines most commonly needed for making realtime
|
||
graphics in lisp (2, 3 and 4 component vectors, 3x3 and 4x4 matrices,
|
||
quaternions, spherical and polar coordinates). BSD_2Clause.</li>
|
||
<li><a href="https://github.com/mfiano/origin">origin</a> - A native
|
||
Lisp graphics math library with an emphasis on performance and
|
||
correctness. Includes: vectors, matrices (up to 4x4), quaternions,
|
||
single/double-float support, destructive/non-destructive operations,
|
||
shaping & intersections. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
</ul>
|
||
<p>Planning solvers:</p>
|
||
<ul>
|
||
<li><a
|
||
href="https://neil-lindquist.github.io/linear-programming/">linear-programming</a>
|
||
– a library for solving linear programming problems. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://github.com/shop-planner/shop3">shop3</a> - a
|
||
Hierarchical Task Network (HTN) AI planner. Mozilla Public License.</li>
|
||
</ul>
|
||
<p>NEW! If you have precise needs, blurry needs or simply questions, the
|
||
repository <a
|
||
href="https://github.com/digikar99/common-lisp-numsci-call-for-needs">Common
|
||
Lisp numsci call for needs</a> is a new place to discuss them.</p>
|
||
<h2 id="matrix-libraries">Matrix libraries</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/quil-lang/magicl">magicl</a> - Matrix
|
||
Algebra proGrams In Common Lisp based on BLAS/LAPACK and Expokit, by
|
||
Rigetti Computing. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">BSD_3Clause</a>.</li>
|
||
<li><a href="https://github.com/blindglobe/lisp-matrix">lisp-matrix</a>
|
||
- A matrix package. <a
|
||
href="https://directory.fsf.org/wiki?title=License:FreeBSD">FreeBSD</a>.</li>
|
||
<li><a href="https://shinmera.github.io/3d-matrices">3d-matrices</a> - A
|
||
library implementing common matrix calculations, with an emphasis on
|
||
2x2,3x3, and 4x4 matrices as commonly used in graphics. It provides some
|
||
numerical functions as well, but those are not the focus. The library is
|
||
heavily optimised, so it is not made of pretty code. <a
|
||
href="https://directory.fsf.org/wiki/License:Zlib">zlib</a>.</li>
|
||
<li><a href="https://github.com/slyrus/clem">clem</a> - a matrix
|
||
library. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_2Clause">BSD_2Clause</a>.</li>
|
||
</ul>
|
||
<h2 id="statistics">Statistics</h2>
|
||
<ul>
|
||
<li>👍 <a href="https://github.com/lisp-stat">lisp-stat</a> - an
|
||
environment for statistical computing, conceptually similar to R, that
|
||
is also suitable for front-line production deployments. “It grew out of
|
||
a desire to have an environment for rapidly prototyping analytical and
|
||
A.I. solutions, and move directly to production environments with
|
||
minimal friction.”
|
||
<ul>
|
||
<li>https://lisp-stat.dev/</li>
|
||
<li>inspired by Luke Tierney’s <a
|
||
href="https://homepage.stat.uiowa.edu/~luke/xls/xlsinfo/">XLisp-Stat</a>
|
||
(a predecessor of R), ships a compatibility library for it, otherwise
|
||
builds on other and newer libraries.</li>
|
||
</ul></li>
|
||
</ul>
|
||
<p>See also <a
|
||
href="https://github.com/blindglobe/common-lisp-stat/">common-lisp-stat</a>,
|
||
Common Lisp statistics library. <a
|
||
href="https://directory.fsf.org/wiki?title=License:FreeBSD">FreeBSD</a>,
|
||
staling.</p>
|
||
<h2 id="units">Units</h2>
|
||
<ul>
|
||
<li><a
|
||
href="https://github.com/mrossini-ethz/physical-quantities">physical-quantities</a>
|
||
- a library that provides a numeric type with optional unit and/or
|
||
uncertainty for computations with automatic error propagation. GPL2</li>
|
||
</ul>
|
||
<h2 id="utils">Utils</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/rigetti/cmu-infix">cmu-infix</a> - A
|
||
library for writing infix mathematical notation in Common Lisp. See also
|
||
<a href="https://github.com/mrcdr/polisher">polisher</a>.</li>
|
||
</ul>
|
||
<h1 id="parallelism-and-concurrency">Parallelism and Concurrency</h1>
|
||
<ul>
|
||
<li>⭐ <a
|
||
href="https://common-lisp.net/project/bordeaux-threads/">BordeauxThreads</a>
|
||
- Portable, shared-state concurrency. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat">Expat</a>.</li>
|
||
<li>⭐ <a href="https://github.com/sharplispers/lparallel">lparallel</a>
|
||
- A library for parallel programming. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">3-clause
|
||
BSD</a>. Originally on <a
|
||
href="https://github.com/lmj/lparallel">lmj/lparallel</a>.</li>
|
||
<li><a href="https://github.com/lmj/lfarm">lfarm</a> - distributing work
|
||
across machines (on top of lparallel and usocket). <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">BSD_3Clause</a></li>
|
||
<li><a href="https://github.com/hawkir/calispel">calispel</a> - <a
|
||
href="https://en.wikipedia.org/wiki/Communicating_sequential_processes">CSP</a>-like
|
||
channels for common lisp. With blocking, optionally buffered channels
|
||
and a “CSP select” statement. ISC-style.
|
||
<ul>
|
||
<li>“It is complete, flexible and easy to use. I would recommend
|
||
Calispel over Lparallel and ChanL.” <span class="citation"
|
||
data-cites="Ambrevar">@Ambrevar</span>. <a
|
||
href="https://github.com/CodyReichert/awesome-cl/issues/290">discussion</a></li>
|
||
</ul></li>
|
||
<li><a href="https://github.com/zkat/chanl">chanl</a> - Portable,
|
||
channel-based concurrency. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat">Expat</a>, with
|
||
parts under <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">3-clause
|
||
BSD</a>.</li>
|
||
<li><a href="https://github.com/orthecreedence/cl-async">cl-async</a> -
|
||
A library for general-purpose, non-blocking programming. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat">Expat</a>.</li>
|
||
<li><a href="https://github.com/TBRSS/moira">Moira</a> - Monitor and
|
||
restart background threads. In-lisp process supervisor. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a
|
||
href="https://gitlab.com/ediethelm/trivial-monitored-thread">trivial-monitored-thread</a>
|
||
- a Common Lisp library offering a way of spawning threads and being
|
||
informed when one any of them crash and die. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://github.com/taksatou/cl-gearman">cl-gearman</a> - a
|
||
library for the <a
|
||
href="https://github.com/gearman/gearmand/">Gearman</a> distributed job
|
||
system. <a
|
||
href="http://opensource.franz.com/preamble.html">LLGPL</a>.</li>
|
||
<li><a href="https://github.com/brown/swank-crew">swank-crew</a> -
|
||
distributed computation framework implemented using Swank Client. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">BSD_3Clause</a>.</li>
|
||
<li><a href="https://github.com/takagi/cl-coroutine">cl-coroutine</a> -
|
||
a coroutine library. It uses the CL-CONT continuations library in its
|
||
implementation. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://github.com/cosmos72/stmx">STMX</a> - High
|
||
performance Transactional Memory for Common Lisp. <a
|
||
href="http://opensource.franz.com/preamble.html">LLGPL</a>.</li>
|
||
<li><a href="https://orthecreedence.github.io/blackbird/">Blackbird</a>
|
||
- a Promise implementation for Common Lisp <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.
|
||
<ul>
|
||
<li>see also <a href="https://github.com/Shinmera/promise">promise</a> -
|
||
a basic promise datastructure, with timeouts. ZLIB.</li>
|
||
</ul></li>
|
||
</ul>
|
||
<p>See also:</p>
|
||
<ul>
|
||
<li><a href="https://github.com/atgreen/cl-etcd">cl-etcd</a> - Run etcd
|
||
as an asynchronous inferior process. <a href="https://etcd.io/">etcd</a>
|
||
is a strongly consistent, distributed key-value store. <a
|
||
href="https://directory.fsf.org/wiki/License:AGPL-3.0">AGPL-3.0</a>.</li>
|
||
</ul>
|
||
<h2 id="actors-pattern">Actors pattern</h2>
|
||
<ul>
|
||
<li>👍 <a href="https://github.com/mdbergmann/cl-gserver">Sento</a> -
|
||
Sento (formerly cl-gserver) is a ‘message passing’ library/framework
|
||
with actors similar to Erlang or Akka. It supports creating systems that
|
||
should work reactive, require parallel computing and event based message
|
||
handling. <a
|
||
href="https://directory.fsf.org/wiki/License:Apache2.0">Apache2</a>.</li>
|
||
<li><a href="https://github.com/eugeneia/erlangen">erlangen</a> -
|
||
Distributed, asynchronous message passing system for Clozure Common
|
||
Lisp. <a href="http://www.gnu.org/copyleft/gpl.html">GNU GPL3</a>.</li>
|
||
<li><a href="https://github.com/aarvid/Actors">Actors</a> package for
|
||
LispWorks (<a
|
||
href="https://www.reddit.com/r/Common_Lisp/comments/77vsft/david_mcclains_actors_package_for_lispworks/">announce</a>)
|
||
<a href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a
|
||
href="https://github.com/naveensundarg/Common-Lisp-Actors">common-lisp-actors</a>
|
||
- a simple and easy to use Actor system. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_2Clause">BSD_2Clause</a>.</li>
|
||
<li><a href="https://github.com/zkat/memento-mori">memento-mori</a>- a
|
||
library for writing robust, actor-based systems. It draws inspiration
|
||
from Erlang/OTP, particularly its crash-first approach to
|
||
high-availability systems, as well as Akka. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
</ul>
|
||
<p>See also:</p>
|
||
<ul>
|
||
<li><a href="https://github.com/dbmcclain/Lisp-Actors">lisp-actors</a>,
|
||
an “ongoing investigation into the use of the Actor model in Common
|
||
Lisp, which has had the benefit of real-world application”.
|
||
<ul>
|
||
<li>it was part of the <a
|
||
href="https://github.com/emotiq/emotiq/blob/dev/src/test/blockchain-test.lisp">Emotiq
|
||
blockchain</a> (a discontinued project)</li>
|
||
<li>does remoting, includes a threading abstraction layer library
|
||
similar to Bordeaux-Threads.</li>
|
||
<li>! it lacks unit tests.</li>
|
||
</ul></li>
|
||
</ul>
|
||
<h2 id="event-processing">Event processing</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/Shinmera/simple-tasks">simple-tasks</a>
|
||
- A very simple task scheduling framework. <a
|
||
href="https://directory.fsf.org/wiki/License:Zlib">zlib</a>.</li>
|
||
<li><a href="https://github.com/Shinmera/deeds">deeds</a> - Deeds is an
|
||
Extensible Event Delivery System. It allows for efficient event delivery
|
||
to multiple handlers with a complex event filtering system. <a
|
||
href="https://directory.fsf.org/wiki/License:Zlib">zlib</a>.</li>
|
||
<li><a href="https://github.com/borodust/cl-flow/">cl-flow</a> -
|
||
Data-flowish computation tree library for non-blocking concurrent Common
|
||
Lisp. <a href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a
|
||
href="https://github.com/orthecreedence/event-glue">event-glue</a> -
|
||
simple eventing abstraction. No dependencies. It can be used anywhere
|
||
you need a generic event handling system. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
</ul>
|
||
<h2 id="job-processing">Job processing</h2>
|
||
<ul>
|
||
<li><a href="http://www.sbcl.org/manual/#Timers">SBCL’s timers</a>,
|
||
system-wide event schedulers.</li>
|
||
<li><a href="https://github.com/fukamachi/psychiq">psychiq</a> -
|
||
redis-based background job processing for Common Lisp applications.
|
||
Inspired by Ruby’s Sidekiq and compatible with its web UI. <a
|
||
href="http://opensource.franz.com/preamble.html">LLGPL</a>.</li>
|
||
<li><a href="https://github.com/ciel-lang/cl-cron">cl-cron</a> - A
|
||
simple tool that provides cron like facilities. <a
|
||
href="http://www.gnu.org/copyleft/gpl.html">GPL3</a>.</li>
|
||
<li><a href="https://github.com/tsikov/clerk">clerk</a> - a cron-like
|
||
scheduler with sane DSL. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
</ul>
|
||
<h1 id="regex">Regex</h1>
|
||
<ul>
|
||
<li>⭐ <a href="http://weitz.de/cl-ppcre/">cl-ppcre</a> - Portable,
|
||
Perl-compatible regular expressions. <a
|
||
href="https://directory.fsf.org/wiki?title=License:FreeBSD">FreeBSD</a>.</li>
|
||
<li><a
|
||
href="https://github.com/no-defun-allowed/one-more-re-nightmare">one-more-re-nightmare</a>
|
||
- a fast-ish regular expression compiler in Common Lisp. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_2Clause">BSD_2Clause</a>.</li>
|
||
</ul>
|
||
<p>See also clj-re above.</p>
|
||
<h1 id="scripting">Scripting</h1>
|
||
<h2 id="writing-running-scripts">Writing, running scripts</h2>
|
||
<ul>
|
||
<li>👍 <a
|
||
href="https://github.com/roswell/roswell#scripting-with-roswell">Roswell</a>
|
||
- a lisp installer and scripting environment (helper, launcher,
|
||
installer) and more. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://github.com/shinmera/cl-all">cl-all</a> - A script
|
||
to run Lisp snippets in multiple implementations. This allows you to
|
||
quickly compare implementation behaviour and differences. <a
|
||
href="https://directory.fsf.org/wiki/License:Zlib">zlib</a>.</li>
|
||
<li><a href="https://github.com/sharplispers/clawk">clawk</a> - an AWK
|
||
implementation embedded into Common Lisp, to search files for lines and
|
||
perform specified actions on its fields. BSD-style.</li>
|
||
<li><a href="https://github.com/rpav/ScriptL">ScriptL</a> - Shell
|
||
scripting made Lisp-like! Or, live-coding remote function calls for the
|
||
shell. Write a command in the REPL, and run it instantly in the shell.
|
||
<a href="http://opensource.franz.com/preamble.html">LLGPL</a>.
|
||
<ul>
|
||
<li>similar and maybe simpler: <a
|
||
href="https://notabug.org/quasus/lserver/">lserver</a></li>
|
||
</ul></li>
|
||
</ul>
|
||
<h2 id="command-line-options-parsers">Command-line options parsers</h2>
|
||
<ul>
|
||
<li>👍 <a href="https://github.com/dnaeon/clingon">Clingon</a> - a rich
|
||
command-line options parser system.
|
||
<ul>
|
||
<li>it may have the richest feature set: subcommands, generation of bash
|
||
completion, support for various kinds of options (integers, booleans,
|
||
counter, enums…), extensible…</li>
|
||
</ul></li>
|
||
<li><a href="https://github.com/sjl/adopt/">Adopt</a> - A Damn OPTion
|
||
parsing library. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
</ul>
|
||
<h2 id="readline-ncurses-and-other-graphical-helpers">Readline, ncurses
|
||
and other graphical helpers</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/vindarel/cl-readline">cl-readline</a> -
|
||
a set of functions to edit lines as they are typed in, to maintain a
|
||
list of previously-entered command lines, to recall and reedit them and
|
||
perform csh-like history expansion. Emacs and vi editing modes. <a
|
||
href="http://www.gnu.org/copyleft/gpl.html">GPL3</a>.</li>
|
||
<li><a href="https://common-lisp.net/project/linedit">Linedit</a> -
|
||
Readline-style library that provides customizable line-editing features.
|
||
<a
|
||
href="https://common-lisp.net/project/linedit/license.html">MIT-style</a>.</li>
|
||
<li><a href="https://github.com/HiTECNOLOGYs/cl-charms">cl-charms</a> -
|
||
an interface to <code>libcurses</code> in Common Lisp. It provides both
|
||
a raw, low-level interface to libcurses via CFFI, and a more
|
||
higher-level lispier interface. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://github.com/vindarel/replic/">replic</a> - helpers
|
||
to turn existing code into a readline application, with a focus on
|
||
defining the completion of the commands’ arguments. Also comes as a
|
||
ready to use executable, that transforms a user’s lispy init file into
|
||
readline commands. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://github.com/vindarel/cl-ansi-term">cl-ansi-term</a>
|
||
- print colorized text, horizontal lines, progress bars, (un)ordered
|
||
lists and tables on ANSI-compliant terminals. <a
|
||
href="http://www.gnu.org/copyleft/gpl.html">GPL3</a>.</li>
|
||
<li><a
|
||
href="https://github.com/sirherrbatka/cl-progress-bar/">cl-progress-bar</a>
|
||
- progress bars, just like in Quicklisp ! <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
</ul>
|
||
<h2 id="shells-shells-interfaces">Shells, shells interfaces</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/nibbula/lish">Lish</a> -
|
||
<code>lish</code> may someday be a lisp shell. <a
|
||
href="http://www.gnu.org/copyleft/gpl.html">GPL3</a>.
|
||
<ul>
|
||
<li>supports tab-completion of executables in the path and Lisp symbols,
|
||
allows to write and to mix shell commands and Lisp code, has a tiny REPL
|
||
and an interactive debugger, and more.</li>
|
||
</ul></li>
|
||
<li><a href="https://github.com/bradleyjensen/shcl">shcl</a> - a
|
||
POSIX-like shell in Common Lisp. <a
|
||
href="https://directory.fsf.org/wiki/License:Apache2.0">Apache2.0</a>.</li>
|
||
<li><a href="https://github.com/fukamachi/shelly">Shelly</a> - execute
|
||
Common Lisp functions like a shell command, without the need to write a
|
||
command line arguments parser. And it also can be used as a Make-like
|
||
build-tool. <a
|
||
href="https://directory.fsf.org/wiki?title=License:FreeBSD">FreeBSD</a>.</li>
|
||
<li><a
|
||
href="https://github.com/PuellaeMagicae/unix-in-lisp">unix-in-lisp</a> -
|
||
Mount Unix system into Common Lisp image.
|
||
<ul>
|
||
<li>Unix concepts are directly/shallowly embedded into Lisp (Unix
|
||
commands become Lisp macros, Unix file become Lisp variables, Unix
|
||
streams become lazy Lisp sequences, etc).</li>
|
||
</ul></li>
|
||
</ul>
|
||
<p>Lisp utilities:</p>
|
||
<ul>
|
||
<li><a href="https://github.com/ruricolist/cmd">cmd</a> - utility for
|
||
running external programs. Protects against shell interpolation, built
|
||
with multi-threaded programs in mind, Windows support. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.
|
||
<ul>
|
||
<li><code>uiop:run-program</code> (synchronous) and
|
||
<code>uiop:launch-program</code> (async) are shipped with ASDF and
|
||
available on all modern implementations. See the <a
|
||
href="https://lispcookbook.github.io/cl-cookbook/os.html#running-external-programs">CL
|
||
Cookbook: running external programs</a>.</li>
|
||
</ul></li>
|
||
<li><a href="https://github.com/Neronus/Clesh">Clesh</a> - extends
|
||
Common Lisp to embed shell code in a manner similar to perl’s backtick.
|
||
<a
|
||
href="https://directory.fsf.org/wiki?title=License:FreeBSD">FreeBSD</a>.</li>
|
||
</ul>
|
||
<h2 id="system-administration">System administration</h2>
|
||
<ul>
|
||
<li><a
|
||
href="https://spwhitton.name/tech/code/consfigurator/">Consfigurator</a>
|
||
- Lisp declarative configuration management system. You can use it to
|
||
configure hosts as root, deploy services as unprivileged users, build
|
||
and deploy containers, and produce disc images. <a
|
||
href="http://www.gnu.org/copyleft/gpl.html">GPL3</a>.</li>
|
||
<li><a
|
||
href="https://github.com/cl-unix-cybernetics/cl-unix-cybernetics">cl-unix-cybernetics</a>
|
||
(previously Adams) - UNIX system administration in Common Lisp. Not
|
||
unlike Ansible, Chef or Puppet. <a
|
||
href="https://en.wikipedia.org/wiki/ISC_license">ISC</a>.
|
||
<ul>
|
||
<li>You describe your systems (hosts) using resources having properties.
|
||
The properties are then probed and synchronized using only /bin/sh on
|
||
the remote host, and /usr/bin/ssh on the control host.</li>
|
||
</ul></li>
|
||
</ul>
|
||
<h2 id="other-scripting-utilities">Other scripting utilities</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/wadehennessey/wcl">WCL</a> [stalled] -
|
||
allow hundreds of Lisp applications to be realistically available at
|
||
once, while allowing several of them to run concurrently. WCL
|
||
accomplishes this by providing Common Lisp as a Unix shared library that
|
||
can be linked with Lisp and C code to produce efficient applications.
|
||
For example, the executable for a Lisp version of the canonical
|
||
<code>Hello World!</code> program requires only 20k bytes on 32 bit x86
|
||
Linux. WCL also supports a full development environment, including
|
||
dynamic file loading and debugging. A modified version of GDB is used to
|
||
debug WCL programs, providing support for mixed language debugging.
|
||
<ul>
|
||
<li>a <a
|
||
href="https://dl.acm.org/doi/abs/10.1145/141478.141560">paper</a>:
|
||
“Delivering efficient Common Lisp applications under Unix”.</li>
|
||
</ul></li>
|
||
</ul>
|
||
<h1 id="text-editor-resources">Text Editor Resources</h1>
|
||
<p>This contains plugins and other goodies for various text editors.</p>
|
||
<ul>
|
||
<li><a href="https://shaunlebron.github.io/parinfer/">Parinfer</a> -
|
||
Parinfer is a way to edit lisp code that helps to keep both the
|
||
indentation and the parenthesis balanced. It is easy to start with and
|
||
yet it offers advanced features à la Paredit. It is available on many
|
||
editors (Emacs, Vim, Neovim, Atom, Sublime Text, Visual Studio Code,
|
||
LightTable, CodeMirror,…).</li>
|
||
</ul>
|
||
<h2 id="emacs">Emacs</h2>
|
||
<ul>
|
||
<li>⭐ <a href="https://github.com/slime/slime">Slime</a> - Superior
|
||
Lisp Interaction Mode for Emacs; a full-blown environment for Common
|
||
Lisp inside of Emacs. Public domain.</li>
|
||
<li>👍 <a href="https://github.com/joaotavora/sly">Sly</a> - SLY is a
|
||
fork of SLIME and contains multiple improvements upon it, such as Sly
|
||
stickers.</li>
|
||
</ul>
|
||
<p>Starter kits:</p>
|
||
<ul>
|
||
<li>👍 <a href="https://shinmera.github.io/portacle/">Portacle</a> - A
|
||
portable and multiplatform Common Lisp environment: SBCL, Quicklisp,
|
||
Emacs, Slime, Git.</li>
|
||
<li><a href="https://github.com/susam/emacs4cl">Emacs4CL</a> - A tiny
|
||
Emacs initialization file to quickly set up vanilla Emacs for Common
|
||
Lisp programming. Comes with a line-by-line explanation of every line of
|
||
code in the initialization file.</li>
|
||
<li><a
|
||
href="https://github.com/pascalcombier/plain-common-lisp/">plain-common-lisp</a>
|
||
- A trivial way to get a native Common Lisp environment on Windows.
|
||
<ul>
|
||
<li>ships SBCL, Quicklisp, Emacs and Slime.</li>
|
||
<li>with example programs for a console program, accessing the Win32
|
||
API, displaying a GUI with IUP, running an OpenGL window.</li>
|
||
</ul></li>
|
||
<li><a
|
||
href="https://hub.docker.com/r/eshamster/cl-devel2/">cl-devel2</a> - a
|
||
Docker container for Common Lisp development environment. Ships SBCL,
|
||
CCL, Roswell and Emacs25 with Slime.</li>
|
||
</ul>
|
||
<p>Slime extensions:</p>
|
||
<ul>
|
||
<li><a href="https://github.com/mmontone/slime-star">slime-star</a> - a
|
||
SLIME configuration with extensions pre-installed, with also some custom
|
||
utilities and menus:
|
||
<ul>
|
||
<li>the Lisp system browser</li>
|
||
<li><a href="https://github.com/mmontone/slime-doc-contribs">SLIME doc
|
||
contrib</a> - enhance the default help buffer.</li>
|
||
<li><a href="https://github.com/mmontone/quicklisp-systems">Quicklisp
|
||
systems</a> - Search, browse and load Quicklisp systems from Emacs.</li>
|
||
<li><a href="https://github.com/tkych/quicksearch">Quicksearch</a></li>
|
||
<li><a href="https://github.com/mmontone/slime-breakpoints">Slime
|
||
breakpoints</a></li>
|
||
<li><a href="https://github.com/tdrhq/slite/">Slite</a> - a test runner
|
||
for FiveAM.</li>
|
||
<li><a
|
||
href="https://github.com/mmontone/quicklisp-apropos">Quicklisp-apropos</a>
|
||
- Perform <code>apropos</code> queries across libraries in Quicklisp
|
||
(full-text search on symbol names, classes, documentation…).</li>
|
||
<li><a href="https://github.com/mmontone/slime-critic">slime-critic</a>
|
||
- the lisp critic gently critiques your code for bad patterns.</li>
|
||
</ul></li>
|
||
</ul>
|
||
<p>Sly extensions:</p>
|
||
<ul>
|
||
<li><a href="https://git.sr.ht/~fosskers/sly-overlay">sly-overlay</a> -
|
||
an extension for Sly that enables the overlay of Common Lisp evaluation
|
||
results directly into the buffer in the spirit of CIDER (Clojure), Eros
|
||
(Emacs Lisp) and the Lem editor.</li>
|
||
</ul>
|
||
<h2 id="vim-neovim">Vim & Neovim</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/kovisoft/slimv">SLIMV</a> - Superior
|
||
Lisp Interaction Mode for Vim; a full-blown environment for Common Lisp
|
||
inside of Vim. No license specified.</li>
|
||
<li><a href="https://github.com/vlime/vlime">Vlime</a> - VLIME: Vim plus
|
||
Lisp Is Mostly Evil. A Common Lisp dev environment for Vim (and Neovim).
|
||
<a href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a
|
||
href="https://gitlab.com/HiPhish/quicklisp.nvim">quicklisp.nvim</a> - A
|
||
Quicklisp frontend for Neovim.</li>
|
||
<li><a href="https://github.com/justin2004/slimv_box">Slimv_box</a> -
|
||
slimv in a Docker container.</li>
|
||
</ul>
|
||
<h2 id="eclipse">Eclipse</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/Ragnaroek/dandelion">Dandelion</a> - a
|
||
Common Lisp plugin for the Eclipse IDE.</li>
|
||
</ul>
|
||
<h2 id="lem">Lem</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/lem-project/lem">Lem</a> - a ready to
|
||
use, Emacs-like, Slime-based editor tailored for Common Lisp development
|
||
out of the box, as well as other programming languages with its built-in
|
||
LSP client. With ncurses, Electron and SDL2 interfaces. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.
|
||
<ul>
|
||
<li><a href="https://github.com/lem-project/lem/releases/tag/v2.0.0">Lem
|
||
2.0</a>, released on May, 2023, added the SDL2 frontend, thus mouse
|
||
support, graphic capabilities and Windows support, among other new
|
||
features.</li>
|
||
<li>see also: an <a href="https://github.com/pupcraft/lem-opengl">opengl
|
||
frontend</a>, <a href="https://github.com/40ants/lem-docker">Lem in
|
||
Docker</a>, <a
|
||
href="https://github.com/40ants/lem-pareto">lem-pareto</a>.</li>
|
||
</ul></li>
|
||
</ul>
|
||
<h2 id="atom-pulsar">Atom, Pulsar</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/neil-lindquist/slima">SLIMA</a> allows
|
||
you to interactively develop Common Lisp code, turning Atom (or now
|
||
Pulsar) into a pretty good, and actively developped, Lisp IDE. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
</ul>
|
||
<h2 id="sublime-text">Sublime Text</h2>
|
||
<ul>
|
||
<li><a href="http://www.sublimetext.com/3">Sublime Text</a>
|
||
(proprietary) has Common Lisp support with its SublimeREPL and <a
|
||
href="https://github.com/s-clerc/slyblime">Slyblime</a> packages.
|
||
Slyblime is an implementation of SLY and it uses the same backend
|
||
(SLYNK). It ships advanced features including a debugger with stack
|
||
frame inspection.</li>
|
||
</ul>
|
||
<h2 id="vscode">VSCode</h2>
|
||
<ul>
|
||
<li><a
|
||
href="https://marketplace.visualstudio.com/items?itemName=ailisp.commonlisp-vscode">commonlisp-vscode</a>
|
||
- an extension to support syntax highlight, auto completion,
|
||
documentation on hover, go to definition, compile & load file, REPL.
|
||
It is <a href="https://github.com/ailisp/commonlisp-vscode/">On
|
||
GitHub</a>.</li>
|
||
<li><a href="https://github.com/nobody-famous/alive">alive</a> - Common
|
||
Lisp Extension for VSCode. Public domain.
|
||
<ul>
|
||
<li>see the Cookbook: <a
|
||
href="https://lispcookbook.github.io/cl-cookbook/vscode-alive.html">using
|
||
VSCode with Alive</a></li>
|
||
</ul></li>
|
||
<li><a
|
||
href="https://marketplace.visualstudio.com/items?itemName=ailisp.strict-paredit">strict-paredit-vscode</a>
|
||
- structural editing and navigation like Emacs.</li>
|
||
</ul>
|
||
<h2 id="jetbrains">JetBrains</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/Enerccio/SLT">SLT</a> - an IDE Plugin
|
||
for Itellij/Jetbrains IDE lineup implementing support for Common Lisp
|
||
via SBCL and Slime/Swank.
|
||
<ul>
|
||
<li>🎉 NEW! Released in Jan, 2023.</li>
|
||
</ul></li>
|
||
</ul>
|
||
<h2 id="geany-experimental">Geany (experimental)</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/jasom/geany-lisp">Geany-lisp</a> is an
|
||
experimental lisp mode for the <a href="https://geany.org/">Geany</a>
|
||
editor.</li>
|
||
</ul>
|
||
<h2 id="notebooks">Notebooks</h2>
|
||
<ul>
|
||
<li><a
|
||
href="https://github.com/yitzchak/common-lisp-jupyter">common-lisp-jupyter</a>
|
||
- A Common Lisp kernel for Jupyter along with a library for building
|
||
Jupyter kernels, based on Maxima-Jupyter by Robert Dodier which was
|
||
based on cl-jupyter by Frederic Peschanski. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.
|
||
<ul>
|
||
<li><a
|
||
href="https://github.com/yitzchak/jupyterlab-debugger-restarts">jupyterlab-debugger-restarts</a>
|
||
- restart functionality for the JupyterLab debugger.</li>
|
||
<li><a href="https://github.com/yitzchak/cytoscape-clj">Cytoscape
|
||
widget</a> - Cytoscape.js widget for common-lisp-jupyter.</li>
|
||
<li><a href="https://github.com/yitzchak/kekule-clj">Kekule widget</a> -
|
||
Kekule.js widget for common-lisp-jupyter.</li>
|
||
<li><a href="https://github.com/yitzchak/jupyterlab-molviewer">molecule
|
||
viewer</a> - A molecule viewer for JupyterLab using ngl.</li>
|
||
<li><a href="https://github.com/yitzchak/ngl-clj">ngl widget</a> - A ngl
|
||
widget (protein viewer) for common-lisp-jupyter.</li>
|
||
<li><a href="https://github.com/yitzchak/sheet-clj">sheet widget</a> -
|
||
Data grid widget for common-lisp-jupyter.</li>
|
||
</ul></li>
|
||
<li><a href="https://github.com/fredokun/cl-jupyter">cl-jupyter</a> - A
|
||
Common Lisp kernel for Jupyter notebooks <a
|
||
href="https://github.com/fredokun/cl-jupyter/blob/master/LICENSE">custom
|
||
licence</a>.</li>
|
||
<li><a href="https://github.com/tamamu/darkmatter">Darkmatter</a> - A
|
||
notebook-style Common Lisp environment. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
</ul>
|
||
<h2 id="repls">REPLs</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/lisp-maintainers/cl-repl">cl-repl</a> -
|
||
an ipython-like REPL. With completion, shell commands, magic commands,
|
||
debugger, etc. <a href="http://www.gnu.org/copyleft/gpl.html">GPL3</a>.
|
||
With <a
|
||
href="https://github.com/koji-kojiro/lem-pygments-colorthemes">colorthemes</a>.
|
||
<ul>
|
||
<li>new as of 2024: it now provides multi-line input and binary
|
||
releases. Simply download a binary (Ubuntu so far) and run it.</li>
|
||
</ul></li>
|
||
<li><a href="https://github.com/hellerve/sbcli">sbcli</a> - a readline
|
||
REPL for SBCL. With completion, quick commands, optional syntax
|
||
highlighting (with pygments), and no interactive debugger. <a
|
||
href="http://www.gnu.org/copyleft/gpl.html">GPL3</a>.</li>
|
||
<li><a href="https://github.com/sanel/magic-ed">magic-ed</a> - a tiny
|
||
editing facility, where you can directly load, edit, manipulate and
|
||
evaluate file or file content from the REPL, when going to a full IDE is
|
||
too much. <a href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
</ul>
|
||
<h2 id="online-editors">Online editors</h2>
|
||
<ul>
|
||
<li><a href="https://ide.judge0.com/?lUpj">Judge0 IDE</a> is an online
|
||
editor which supports Common Lisp (SBCL). <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://riju.codes/commonlisp">Riju</a>, a “fast online
|
||
playground for every programming language”, supports Common Lisp
|
||
(SBCL).</li>
|
||
</ul>
|
||
<h2 id="apps">Apps</h2>
|
||
<ul>
|
||
<li><a href="https://codeplayground.app/">CodePlayground</a> - an iPhone
|
||
and iPad app with Lisp support via CCL.</li>
|
||
</ul>
|
||
<h1 id="text-and-binary-parsers">Text and binary parsers</h1>
|
||
<ul>
|
||
<li>⭐ <a href="https://github.com/scymtym/esrap">esrap</a> - Packrat
|
||
parser. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat">Expat</a>.</li>
|
||
<li><a href="https://github.com/quil-lang/alexa">alexa</a> - A Lexical
|
||
Analyzer Generator. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">BSD_3Clause</a>.
|
||
<ul>
|
||
<li>ALEXA is a tool similar to lex or flex for generating lexical
|
||
analyzers. Unlike tools like lex, however, ALEXA defines a
|
||
domain-specific language within your Lisp program, so you don’t need to
|
||
invoke a separate tool.</li>
|
||
</ul></li>
|
||
<li><a href="https://github.com/jech/cl-yacc">cl-yacc</a> - a LALR(1)
|
||
parser generator. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://github.com/ruricolist/cl-shlex/">cl-shlex</a> -
|
||
simple lexical analyzer for shell-like syntaxes. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://github.com/drewc/smug">smug</a> - parser
|
||
combinators for Common Lisp. SMUG makes it simple to create quick
|
||
extensible recursive descent parsers without funky syntax or
|
||
impenetrable macrology. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://github.com/mrossini-ethz/parseq">parseq</a> - a
|
||
library for parsing sequences such as strings and lists using parsing
|
||
expression grammars. Inspired by Esrap. GPL2.</li>
|
||
<li><a href="https://github.com/j3pic/lisp-binary">lisp-binary</a> - A
|
||
library to easily read and write complex binary formats. <a
|
||
href="http://www.gnu.org/copyleft/gpl.html">GPL3</a>.</li>
|
||
<li><a href="https://github.com/ravi-delia/uclp">uclp</a> - An
|
||
experimental implementation of parsing expression grammars (PEGs, a la
|
||
Janet) in Common Lisp. MIT.</li>
|
||
</ul>
|
||
<p>see also:</p>
|
||
<ul>
|
||
<li><a href="https://github.com/eugeneia/texp/">texp</a> - A DSL to
|
||
generate TeX. <a
|
||
href="https://directory.fsf.org/wiki/License:AGPL-3.0">AGPL-3.0</a>.</li>
|
||
</ul>
|
||
<h1 id="text-processing">Text Processing</h1>
|
||
<ul>
|
||
<li><a href="https://github.com/sharplispers/montezuma/">montezuma</a> -
|
||
Full-text indexing and search for Common Lisp. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat">Expat</a>.</li>
|
||
<li><a
|
||
href="https://github.com/cbaggers/mk-string-metrics">mk-string-metrics</a>
|
||
- Calculate various string metrics efficiently in Common Lisp
|
||
(Damerau-Levenshtein, Hamming, Jaro, Jaro-Winkler, Levenshtein, etc). <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a
|
||
href="https://github.com/vseloved/wiki-lang-detect">wiki-lang-detect</a>
|
||
- Text language identification using Wikipedia data. No license
|
||
specified.</li>
|
||
<li><a href="https://github.com/bgutter/cl-phonetic">cl-phonetic</a> -
|
||
Phonetic pattern matching library for Common Lisp (intended to replace
|
||
the Sylvia library for Python). <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a
|
||
href="https://github.com/pokepay/cl-string-generator">cl-string-generator</a>
|
||
- Generate string from regular expression. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a
|
||
href="https://notabug.org/cage/trivial-sanitize">trivial-sanitize</a> -
|
||
clean html strings: <code>"<a>foo</a>"</code> →
|
||
<code>"foo"</code>. <a
|
||
href="http://opensource.franz.com/preamble.html">LLGPL</a>.</li>
|
||
</ul>
|
||
<p>See also:</p>
|
||
<ul>
|
||
<li><a href="https://github.com/GrammaTech/resolve">Resolve</a> - A
|
||
software for AST-based diff calculation, display, and automated
|
||
resolution. Written in C++ and CL, you’ll find Lisp utilities.</li>
|
||
</ul>
|
||
<h1 id="tools-1">Tools</h1>
|
||
<p>These are applications or bits of code that make development in
|
||
Common Lisp easier without being Common Lisp libraries themselves.</p>
|
||
<ul>
|
||
<li><a href="https://github.com/tkych/quicksearch">quicksearch</a> -
|
||
Look up online libraries from the REPL. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat">Expat</a>.</li>
|
||
<li><a href="https://github.com/takagi/lake">lake</a> - a GNU make like
|
||
build utility. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
</ul>
|
||
<h1 id="unit-testing">Unit Testing</h1>
|
||
<ul>
|
||
<li>⭐ <a href="https://github.com/sionescu/fiveam">FiveAM</a> - Simple
|
||
regression testing framework. <a
|
||
href="https://directory.fsf.org/wiki?title=License:FreeBSD">FreeBSD</a>.
|
||
<ul>
|
||
<li><a
|
||
href="https://github.com/tdrhq/fiveam-matchers/">fiveam-matchers</a> -
|
||
an extensible, composable matchers library for fiveam. <a
|
||
href="https://directory.fsf.org/wiki/License:Apache2.0">Apache2.0</a>.</li>
|
||
</ul></li>
|
||
<li><a href="https://notabug.org/cage/clunit2/">CLUnit2</a> - A unit
|
||
testing library. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://github.com/Shinmera/parachute">Parachute</a> - An
|
||
extensible and cross-compatible testing framework. With test
|
||
dependencies, conditions, fixtures and restarts. <a
|
||
href="https://directory.fsf.org/wiki/License:Zlib">zlib</a>.</li>
|
||
<li><a href="https://github.com/Chream/mockingbird">Mockingbird</a> - A
|
||
small stubbing and mocking library for Common Lisp. Can also check
|
||
wether a stubbed function was called, how many times and with which
|
||
arguments. <a href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://github.com/Ferada/cl-mock">cl-mock</a> - Another
|
||
mocking library. It has more features than Mockingbird, like pattern
|
||
matching on the mocked call, etc.</li>
|
||
<li><a href="https://github.com/DalekBaldwin/check-it">Check-it</a> - A
|
||
QuickCheck-style randomized property-based testing. <a
|
||
href="http://opensource.franz.com/preamble.html">LLGPL</a>.</li>
|
||
<li><a href="https://github.com/fukamachi/cl-coveralls">cl-coveralls</a>
|
||
- a helper library to post test coverage to Coveralls. See <a
|
||
href="http://www.sbcl.org/manual/index.html#sb_002dcover">SBCL’s code
|
||
coverage tool</a>. <a
|
||
href="https://directory.fsf.org/wiki?title=License:FreeBSD">FreeBSD</a>.</li>
|
||
<li><a href="https://github.com/rpav/CheckL/">CheckL</a> - Why write
|
||
programs in Common Lisp but tests like Java? Meet CheckL!
|
||
<ul>
|
||
<li>a testing library that checks the current test value against the
|
||
previous one and offers restarts.</li>
|
||
</ul></li>
|
||
</ul>
|
||
<p>See also:</p>
|
||
<ul>
|
||
<li><a
|
||
href="https://cicadas.surf/cgit/colin/testiere.git/about/">testieren</a>
|
||
- a testing utility where tests are included at the top of a
|
||
<code>defun/t</code> form. They are run when you recompile your
|
||
functions interactively. With mocking and stubbing support. <a
|
||
href="http://www.gnu.org/copyleft/gpl.html">GPL3</a>.</li>
|
||
</ul>
|
||
<p>Editor utilities:</p>
|
||
<ul>
|
||
<li><a href="https://github.com/tdrhq/slite/">Slite</a> - a SLIme-based
|
||
TEst runner for FiveAM Tests. <a
|
||
href="https://directory.fsf.org/wiki/License:Apache2.0">Apache2.0</a>
|
||
<ul>
|
||
<li>Slite interactively runs your Common Lisp tests (at the time of
|
||
writing only FiveAM is supported). It allows you to see the summary of
|
||
test failures, jump to test definitions, rerun tests with the debugger,
|
||
all from inside Emacs.</li>
|
||
</ul></li>
|
||
</ul>
|
||
<p>For more: <a
|
||
href="https://sabracrolleton.github.io/testing-framework">Sabra
|
||
Crolleton’s extensive test frameworks comparison</a>.</p>
|
||
<h1 id="utilities">Utilities</h1>
|
||
<h2 id="caching">Caching</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/html/clache">clache</a> - General
|
||
caching facility. Cache any Lisp object on disk or in memory. A cache
|
||
can be persistent or have an expiration time. <a
|
||
href="http://opensource.franz.com/preamble.html">LLGPL</a>.</li>
|
||
<li><a
|
||
href="https://github.com/AccelerationNet/function-cache">function-cache</a>
|
||
- A Common Lisp function caching / memoization library. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">BSD</a>.</li>
|
||
</ul>
|
||
<h2 id="compression-decompression">Compression / decompression</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/froydnj/chipz">chipz</a> - A
|
||
decompression library. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">3-clause
|
||
BSD</a>.</li>
|
||
<li><a href="http://www.xach.com/lisp/salza2/">Salza2</a> - A library
|
||
for creating compressed data. <a
|
||
href="https://directory.fsf.org/wiki?title=License:FreeBSD">FreeBSD</a>.</li>
|
||
<li><a href="https://github.com/Shinmera/zippy">zippy</a> - A ZIP
|
||
archive format library based on 3bz. <a
|
||
href="https://directory.fsf.org/wiki/License:Zlib">zlib</a>.</li>
|
||
<li><a href="https://github.com/froydnj/archive">archive</a> - a library
|
||
for reading and creating archive (tar, cpio) files. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">BSD_3Clause</a>.
|
||
A pure Common Lisp replacement for the <code>tar</code> program.
|
||
<ul>
|
||
<li>see its recent fork <a
|
||
href="https://common-lisp.net/project/cl-tar/">cl-tar</a> (2021). <a
|
||
href="https://www.timmons.dev/posts/new-project-cl-tar.html">Announce</a>.</li>
|
||
</ul></li>
|
||
</ul>
|
||
<h2 id="configuration">Configuration</h2>
|
||
<ul>
|
||
<li>👍 <a
|
||
href="https://common-lisp.net/project/py-configparser/">py-configparser</a>
|
||
- reads and writes Python’s ConfigParser-like configuration files. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://github.com/fukamachi/envy">envy</a> - Configuration
|
||
switcher. <a
|
||
href="https://directory.fsf.org/wiki?title=License:FreeBSD">FreeBSD</a>.</li>
|
||
<li><a href="https://github.com/sheepduke/chameleon/">chameleon</a> - a
|
||
configuration management library shipped with profile support. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
</ul>
|
||
<h2 id="csv">CSV</h2>
|
||
<ul>
|
||
<li>⭐ <a href="https://github.com/AccelerationNet/cl-csv">cl-csv</a> -
|
||
A library for parsing CSV files. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">3-clause
|
||
BSD</a>.</li>
|
||
<li><a href="https://github.com/tlikonen/cl-decimals">cl-decimals</a> -
|
||
Decimal number parser and formatter. Public domain.</li>
|
||
<li><a href="https://github.com/defunkydrummer/auto-text">auto-text</a>
|
||
- automatic (encoding, end of line, column width, csv delimiter etc)
|
||
detection for text files. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>. See also <a
|
||
href="https://github.com/t-sin/inquisitor">inquisitor</a> for detection
|
||
of asian and far eastern languages.</li>
|
||
<li><a
|
||
href="https://github.com/KoenvdBerg/csv-validator">csv-validator</a> -
|
||
Validates tabular CSV data using predefined validations, inspired from
|
||
its Python homologue “Great Expectations”. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">BSD_3Clause</a>.</li>
|
||
</ul>
|
||
<h2 id="date-and-time">Date and time</h2>
|
||
<ul>
|
||
<li>⭐ <a
|
||
href="https://common-lisp.net/project/local-time/">local-time</a> - A
|
||
development library for manipulating date and time information in a
|
||
semi-standard manner. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">3-clause
|
||
BSD</a>.</li>
|
||
<li><a href="https://github.com/Shinmera/fuzzy-dates">fuzzy-dates</a> -
|
||
A library to fuzzily parse date and time strings. Zlib.</li>
|
||
<li><a
|
||
href="https://github.com/tkych/cl-date-time-parser">cl-date-time-parser</a>
|
||
- Parse date-time-string, liberally. Hides the difference between
|
||
date-time formats, and enables to manage date and time as the one
|
||
date-time format. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a
|
||
href="https://github.com/chaitanyagupta/chronicity">chronicity</a> - A
|
||
natural language date and time parse, to parse strings like “3 days from
|
||
now”. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">BSD_3Clause</a>.</li>
|
||
<li><a
|
||
href="https://github.com/enaeher/local-time-duration">local-time-duration</a>
|
||
- Duration processing library built on top of local-time. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.
|
||
<ul>
|
||
<li>see this fork: <a
|
||
href="https://github.com/40ants/humanize-duration">humanize-duration</a>,
|
||
that outputs only significant parts of a duration object. Has
|
||
localization suport.</li>
|
||
</ul></li>
|
||
<li><a
|
||
href="https://gitlab.com/DataLinkDroid/iso-8601-date">iso-8601-date</a>
|
||
- Miscellaneous date routines in Common Lisp, based around the ISO 8601
|
||
string representation. <a
|
||
href="http://opensource.franz.com/preamble.html">LLGPL</a>.</li>
|
||
<li><a href="https://github.com/takagi/calendar-date">calendar-date</a>
|
||
- a Gregorian calendar date library. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://github.com/jwiegley/periods">periods</a> -
|
||
manipulating date/time objects at a higher level. With series-compatible
|
||
data structure. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">BSD_3Clause</a>.
|
||
<ul>
|
||
<li>with <a href="https://lisp-maintainers.github.io/periods/">some
|
||
documentation</a></li>
|
||
</ul></li>
|
||
<li><a href="https://github.com/Gleefre/stopclock">stopclock</a> - a
|
||
library for measuring time using (stop)clocks. It allows you to create a
|
||
clock, pause it, resume it and change its speed. <a
|
||
href="https://directory.fsf.org/wiki/License:Apache2.0">Apache2.0</a>.</li>
|
||
</ul>
|
||
<p>See also the book <a
|
||
href="https://www.cambridge.org/us/academic/subjects/computer-science/computing-general-interest/calendrical-calculations-ultimate-edition-4th-edition?format=HB#resources">Calendrical
|
||
calculations</a>, by Edward M. Reingold, Nachum Dershowitz, Cambridge
|
||
Press. It provides Lisp sources.</p>
|
||
<h2 id="data-validation">Data validation</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/Shinmera/ratify">ratify</a> - A
|
||
collection of utilities to ratify, validate and parse inputs. <a
|
||
href="https://directory.fsf.org/wiki/License:Zlib">zlib</a>.</li>
|
||
<li><a href="https://github.com/mmontone/clavier">clavier</a> - General
|
||
purpose validation library for Common Lisp. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://github.com/fisxoj/json-schema">json-schema</a> - A
|
||
library for validating data against schemas of drafts 4, 6, 7, and
|
||
2019-09 of the <a href="https://json-schema.org/">JSON Schema</a>
|
||
standard. <a
|
||
href="http://opensource.franz.com/preamble.html">LLGPL</a>.</li>
|
||
<li><a href="https://github.com/fisxoj/sanity-clause">sanity-clause</a>
|
||
- a data serialization/contract library for Common Lisp. Schemas can be
|
||
property lists or class-based, allowing to check slots’ types during
|
||
<code>make-instance</code>. <a
|
||
href="http://opensource.franz.com/preamble.html">LLGPL</a>.</li>
|
||
<li><a href="https://github.com/cldm/cl-semver">cl-semver</a> -
|
||
Implementation of the <a href="https://semver.org">Semantic
|
||
Versioning</a> Specification. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a></li>
|
||
</ul>
|
||
<h2 id="developer-utilities">Developer utilities</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/m-n/repl-utilities">repl-utilities</a> -
|
||
Ease common tasks at the REPL (print documentation, print external
|
||
symbols, call hooks when loading a package,…). <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_2Clause">BSD_2Clause</a>.</li>
|
||
<li><a
|
||
href="https://github.com/vseloved/flight-recorder">flight-recorder</a> -
|
||
a robust REPL history facility.</li>
|
||
<li><a href="https://github.com/TeMPOraL/tracer">tracer</a> - tracing
|
||
profiler for Common Lisp, with output suitable for display in
|
||
Chrome’s/Chromium’s Tracing Viewer. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://github.com/40ants/cl-flamegraph">cl-flamegraph</a>
|
||
- A wrapper around SBCL’s statistical profiler, to generate FlameGraph
|
||
charts for Common Lisp programs. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">BSD</a>.</li>
|
||
<li><a href="https://github.com/LowH/cl-debug">cl-debug</a> - a
|
||
cross-package debug facility. Provides a unified way to enable or
|
||
disable debug-specific code. Debugging code can be enabled or disabled
|
||
relative to program features denoted by either a symbol or a keyword.
|
||
ISC licence.</li>
|
||
<li><a href="https://github.com/fukamachi/supertrace">supertrace</a> -
|
||
Superior Common Lisp <code>trace</code> functionality for
|
||
debugging/profiling. Trace many functions at once, use before and after
|
||
hooks. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_2Clause">BSD_2Clause</a>.</li>
|
||
<li><a href="https://github.com/danlentz/printv">printv</a> - A
|
||
batteries-included tracing and debug-logging macro. <a
|
||
href="https://directory.fsf.org/wiki/License:Apache2.0">Apache2</a>.</li>
|
||
<li><a href="https://github.com/melisgl/journal">journal</a> - a library
|
||
for logging, tracing, record-and-replay testing and persistence.
|
||
MIT.</li>
|
||
</ul>
|
||
<p>and also:</p>
|
||
<ul>
|
||
<li><a href="http://www.martin-loetzsch.de/gtfl/">GTFL</a> - A graphical
|
||
terminal for Lisp, meant for Lisp programmers who want to debug or
|
||
visualize their own algorithms. A graphical trace in the browser.
|
||
BSD-style.</li>
|
||
<li><a
|
||
href="https://github.com/Shinmera/trivial-benchmark">trivial-benchmark</a>
|
||
- Tiny benchmarking library. <a
|
||
href="https://directory.fsf.org/wiki/License:Zlib">zlib</a>.
|
||
<ul>
|
||
<li>a <a
|
||
href="https://github.com/aartaka/graven-image#benchmark-macro">similar
|
||
macro</a> with additional support for more implementations (ABCL,
|
||
Allegro, CCL, CLISP, ECL).</li>
|
||
<li>Indeed, most trivial-benchmark’s metrics are only implemented on
|
||
SBCL. On other implementations, it measures real and user-space time
|
||
(and not bytes allocated (it does for ECL), system run-time or GC
|
||
run-time).</li>
|
||
</ul></li>
|
||
<li><a href="https://github.com/ahungry/glyphs/">glyphs</a> - A library
|
||
for cutting down the verboseness of Common Lisp in places. <a
|
||
href="http://www.gnu.org/copyleft/gpl.html">GNU GPL3</a>.</li>
|
||
<li><a href="https://gitlab.com/ambrevar/lisp-repl-core-dumper/">Lisp
|
||
REPL core dumper</a> - A portable wrapper to generate Lisp cores on
|
||
demand to start REPL blazing fast. It can preload provided systems to
|
||
help build a collection of specialized Lisp cores.</li>
|
||
</ul>
|
||
<h2 id="documentation-builders">Documentation builders</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/Shinmera/staple">Staple</a> - a tool to
|
||
generate documentation pages using an HTML template. Uses the existing
|
||
README, adds docstrings, crossreferences and links to the CLHS. <a
|
||
href="https://directory.fsf.org/wiki/License:Zlib">zlib</a>.</li>
|
||
<li><a href="https://github.com/melisgl/mgl-pax">mgl-pax</a> -
|
||
Exploratory programming environment and documentation generator. one may
|
||
accomplish similar effects as with Literate Programming, but
|
||
documentation is generated from code, not vice versa. Code is first,
|
||
code must look pretty, documentation is code. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.
|
||
<ul>
|
||
<li>see this <a href="https://github.com/40ants/doc">40ants/doc</a>
|
||
fork: a lighter core system, a JavaScript search index, multiple format
|
||
output, HTML themes, RSS and Atom feed for the Changelog and more.</li>
|
||
</ul></li>
|
||
<li><a
|
||
href="https://sphinxcontrib-cldomain.russellsim.org/">sphinxcontrib-cldomain</a>
|
||
- Extending Sphinx to cover Common Lisp. To build documentation with the
|
||
same ease as sphinx would a Python project. <a
|
||
href="http://www.gnu.org/copyleft/gpl.html">GPL3</a>
|
||
<ul>
|
||
<li>crossreferences, links to the CLHS, symbol index, search, and all
|
||
Sphinx features.</li>
|
||
</ul></li>
|
||
<li><a href="https://github.com/CommonDoc/codex">Codex</a> - A beautiful
|
||
documentation system for Common Lisp. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://github.com/mmontone/qbook">QBook</a> - generates
|
||
HTML (or LaTeX) formatted code listings of Common Lisp source files. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">BSD_3Clause</a>.
|
||
<ul>
|
||
<li>all comments started with 4 <code>;</code> (“;;;;”) are interpreted
|
||
as documentation. Enhance the documentation with headings and
|
||
directives.</li>
|
||
<li>QBook acts as “a lightweight literate programming system, where Lisp
|
||
code is not rendered inline, but in separate sections, and that makes
|
||
the document more pleasant to navigate.” <span class="citation"
|
||
data-cites="mmontone">@mmontone</span></li>
|
||
</ul></li>
|
||
<li><a href="https://github.com/didierverna/declt">Declt</a> - Reference
|
||
manual generator for Common Lisp libraries. Builds a texinfo document
|
||
that can be further processed into various formats, such as HTML or PDF.
|
||
BSD.</li>
|
||
<li><a href="https://github.com/mkoeppe/cl-bibtex">cl-bibtex</a> - A
|
||
compatible re-implementation of the BibTeX program in Common Lisp, with
|
||
a BST-to-CL compiler. <a
|
||
href="http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html">GNU
|
||
LGPL2.1</a>.</li>
|
||
</ul>
|
||
<p>See also:</p>
|
||
<ul>
|
||
<li><a href="https://github.com/lokedhs/docbrowser">docbrowser</a> - a
|
||
server that generates documentation for the loaded systems on the fly.
|
||
<ul>
|
||
<li>Its main page presents a list of all loaded systems in your Lisp
|
||
image. Click on one system, and you get a page with three panes:
|
||
functions, classes and variables. Click on a function to see its source,
|
||
in context, with line numbers. Click on classes to see their slots and
|
||
specializing functions.</li>
|
||
</ul></li>
|
||
<li><a href="https://github.com/mmontone/cl-livedocs">cl-livedocs</a> -
|
||
similar and newer, based on Webinfo, with full text search enabled by
|
||
default.</li>
|
||
</ul>
|
||
<p>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/</p>
|
||
<p>You might also like: <a href="#literate-programming">literate
|
||
programming systems</a>.</p>
|
||
<h2 id="files-and-directories">Files and directories</h2>
|
||
<ul>
|
||
<li>⭐ <a href="https://common-lisp.net/project/asdf/uiop.html">uiop</a>
|
||
and its <code>pathname</code> package (replaces <a
|
||
href="http://weitz.de/cl-fad/">cl-fad</a>). uiop is part of ASDF3 and as
|
||
thus is shipped in many implementations. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://common-lisp.net/project/osicat/">osicat</a> - A
|
||
lightweight operating system interface on POSIX-like systems (directory
|
||
iteration and deletion, environment variables, file permissions, etc) <a
|
||
href="https://directory.fsf.org/wiki/License:Expat">Expat</a>.</li>
|
||
<li><a
|
||
href="https://github.com/Shinmera/pathname-utils">pathname-utils</a> - A
|
||
collection of utilities to help with pathname operations. <a
|
||
href="https://directory.fsf.org/wiki/License:Zlib">zlib</a>.
|
||
<ul>
|
||
<li><a
|
||
href="https://github.com/Shinmera/filesystem-utils">filesystem-utils</a>
|
||
- deal with common problems with filesystems, such as listing files,
|
||
probing file types, determining default directories, etc.</li>
|
||
<li>no dependencies, doesn’t access the filesystem.</li>
|
||
<li><a
|
||
href="https://github.com/Shinmera/file-attributes">file-attributes</a> -
|
||
access to common file attributes (uid, gid, permissions, ctime, mtime,
|
||
atime).</li>
|
||
</ul></li>
|
||
<li><a href="https://github.com/fosskers/filepaths">filepaths</a> -
|
||
Modern and consistent filepath manipulation for Common Lisp. <a
|
||
href="https://www.gnu.org/licenses/lgpl-3.0.en.html">LGPL3</a>.
|
||
<ul>
|
||
<li>no dependencies, doesn’t access the filesystem.</li>
|
||
</ul></li>
|
||
<li><a href="https://codeberg.org/fourier/ppath">ppath</a> - Common
|
||
Lisp’s implementation of the Python’s os.path module. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">BSD</a>.</li>
|
||
<li><a href="https://github.com/Shinmera/mmap">mmap</a> - Portable mmap
|
||
file memory mapping utility library. <a
|
||
href="https://directory.fsf.org/wiki/License:Zlib">zlib</a>.</li>
|
||
<li><a href="https://gitlab.com/ambrevar/fof">fof</a> - File-object
|
||
finder Common Lisp library. Enable rapid file search, inspection and
|
||
manipulation. <a
|
||
href="http://www.gnu.org/copyleft/gpl.html">GPL3</a>.</li>
|
||
<li><a href="https://github.com/atlas-engineer/nfiles">nfiles</a> - File
|
||
persistence, watching, data synchronization, (per user profile) path
|
||
resolution, and structured data retrieval. Has pre-defined classes for
|
||
configuration files, remote fetched files, data files, Lisp-readable
|
||
files and many others. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">BSD</a>.</li>
|
||
</ul>
|
||
<p>File watching libraries:</p>
|
||
<ul>
|
||
<li><a href="https://github.com/shinmera/file-notify">file-notify</a> -
|
||
a cross-platform library for file change detection. <a
|
||
href="https://directory.fsf.org/wiki/License:Zlib">zlib</a>.</li>
|
||
</ul>
|
||
<h2 id="git">Git</h2>
|
||
<ul>
|
||
<li><a href="https://cl-git.russellsim.org/">cl-git</a> - a CFFI
|
||
interface to the libgit2 library. <a
|
||
href="https://www.gnu.org/licenses/lgpl-3.0.en.html">LGPL3</a>.</li>
|
||
<li><a href="https://shinmera.github.io/legit/">legit</a> - an interface
|
||
to the Git binary. <a
|
||
href="https://directory.fsf.org/wiki/License:Zlib">zlib</a>.</li>
|
||
<li><a href="https://github.com/fourier/git-api">git-api</a> - Common
|
||
Lisp library to access a git repository. It doesn’t need git or libgit
|
||
installed. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">BSD</a>.</li>
|
||
</ul>
|
||
<h2 id="i18n">i18n</h2>
|
||
<ul>
|
||
<li><a href="https://notabug.org/cage/cl-i18n">cl-i18n</a> - an i18n
|
||
library. Load translations from GNU gettext text or binary files or from
|
||
its native format. Localisation helpers of plural forms. <a
|
||
href="http://opensource.franz.com/preamble.html">LLGPL</a>.</li>
|
||
<li><a href="https://github.com/rotatef/gettext">gettext</a> - a port of
|
||
the gettext runtime to Common Lisp. <a
|
||
href="http://www.gnu.org/copyleft/gpl.html">GPL3</a>.</li>
|
||
<li><a href="https://github.com/dkochmanski/translate">translate</a> -
|
||
seamless language localization. LLGPL.</li>
|
||
<li><a href="https://github.com/tlikonen/cl-enchant">enchant</a> -
|
||
bindings for the Enchant spell-checker library. Public domain.</li>
|
||
<li><a href="https://github.com/Shinmera/oxenfurt">oxenfurt</a> - A
|
||
client library for the Oxford dictionary API. <a
|
||
href="https://directory.fsf.org/wiki/License:Zlib">zlib</a>.</li>
|
||
<li><a
|
||
href="https://shinmera.github.io/language-codes">language-codes</a> - A
|
||
database library for ISO language codes. <a
|
||
href="https://directory.fsf.org/wiki/License:Zlib">zlib</a></li>
|
||
<li><a href="https://shinmera.github.io/system-locale">system-locale</a>
|
||
- A library to retrieve the user’s preferred language, so that your
|
||
application may choose a sensible default. <a
|
||
href="https://directory.fsf.org/wiki/License:Zlib">zlib</a>.</li>
|
||
<li><a
|
||
href="https://shinmera.github.io/multilang-documentation">multilang-documentation</a>
|
||
- Allows writing docstrings in multiple languages, for truly
|
||
internationally documented libraries. <a
|
||
href="https://directory.fsf.org/wiki/License:Zlib">zlib</a>.</li>
|
||
</ul>
|
||
<h2 id="linting-code-formatting">Linting, code formatting</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/fukamachi/sblint">sblint</a> - a linter
|
||
for Common Lisp source code using SBCL, suited for Reviewdog (<a
|
||
href="http://www.slideshare.net/fukamachi/sblint">slides</a>). <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_2Clause">BSD_2Clause</a>.</li>
|
||
<li><a
|
||
href="https://github.com/hyotang666/trivial-formatter">trivial-formatter</a>
|
||
- code formatter for Common Lisp. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
</ul>
|
||
<p>and also: <a
|
||
href="https://github.com/eschulte/lisp-format">lisp-format</a> and <a
|
||
href="https://github.com/yitzchak/cl-indentify">cl-indentify</a>.</p>
|
||
<h2 id="literate-programming">Literate programming</h2>
|
||
<ul>
|
||
<li><a
|
||
href="https://github.com/jingtaozf/literate-lisp">literate-lisp</a> -
|
||
Load Common Lisp code blocks from Emacs’ Org files. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://github.com/mmontone/erudite">erudite</a> - Literate
|
||
Programming System built with interactive development in mind. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://github.com/tani/papyrus">papyrus</a> - Papyrus
|
||
makes your markdown executable with the reader macro of Common Lisp.<a
|
||
href="https://opensource.org/licenses/MIT">MIT</a></li>
|
||
</ul>
|
||
<h2 id="logging">Logging</h2>
|
||
<ul>
|
||
<li>⭐ <a href="https://github.com/sharplispers/log4cl/">log4cl</a> -
|
||
Logging framework modelled after Log4J. <a
|
||
href="https://directory.fsf.org/wiki/License:Apache2.0">Apache2.0</a>.
|
||
Advanced integration with Slime.
|
||
<ul>
|
||
<li><a href="https://github.com/40ants/log4cl-json">log4cl-json</a> -
|
||
JSON appender extension. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">BSD</a>.</li>
|
||
</ul></li>
|
||
<li><a href="https://shinmera.github.io/verbose">verbose</a> - A fast
|
||
and highly configurable logging framework. <a
|
||
href="https://directory.fsf.org/wiki/License:Zlib">zlib</a>.</li>
|
||
<li><a
|
||
href="https://github.com/AccelerationNet/a-cl-logger">a-cl-logger</a> -
|
||
Logging library providing context sensitive logging of more than just
|
||
strings to more than just local files or output streams. Features
|
||
logstash support, json support, logger hierarchies, context sensitive
|
||
logging, objects printed as an inspectable presentation,…</li>
|
||
</ul>
|
||
<p>To third parties:</p>
|
||
<ul>
|
||
<li><a
|
||
href="https://github.com/fukamachi/cl-fluent-logger">cl-fluent-logger</a>
|
||
- A Common Lisp structured logger for <a
|
||
href="https://www.fluentd.org/">Fluentd</a>.</li>
|
||
</ul>
|
||
<p>See also: <a
|
||
href="https://sabracrolleton.github.io/logging-comparison">extensive
|
||
comparison of logging libraries</a>.</p>
|
||
<h2 id="macro-helpers">Macro helpers</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/tdrhq/easy-macros/">easy-macros</a> - an
|
||
easy way to write 90% of your macros. <a
|
||
href="https://directory.fsf.org/wiki/License:Apache2.0">Apache2.0</a>.</li>
|
||
<li><a
|
||
href="https://github.com/scymtym/trivial-with-current-source-form/">trivial-with-current-source-from</a>
|
||
- Helps macro writers produce better errors for macro users. <a
|
||
href="http://www.gnu.org/copyleft/gpl.html">GPL3</a>.</li>
|
||
</ul>
|
||
<h2 id="markdown">Markdown</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/3b/3bmd">3bmd</a> - a markdown ->
|
||
html converter. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
</ul>
|
||
<h2 id="pdf">PDF</h2>
|
||
<ul>
|
||
<li><a
|
||
href="https://github.com/mbattyani/cl-typesetting">cl-typesetting</a>
|
||
and <a href="https://github.com/mbattyani/cl-pdf">cl-pdf</a> -
|
||
cross-platform Common Lisp libraries for generating PDF files. <a
|
||
href="https://directory.fsf.org/wiki?title=License:FreeBSD">FreeBSD</a>.</li>
|
||
<li><a href="https://notabug.org/cage/cl-pslib">cl-pslib</a> - a (thin)
|
||
wrapper around the <a href="http://pslib.sourceforge.net/">pslib</a>
|
||
library for generating PostScript files. Also <a
|
||
href="https://notabug.org/cage/cl-pslib-barcode">cl-pslib-barcode</a>.
|
||
<a href="http://opensource.franz.com/preamble.html">LLGPL</a>.</li>
|
||
</ul>
|
||
<h2 id="plotting">Plotting</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/volkers/vgplot">vgplot</a> - an
|
||
interface to the gnuplot plotting utility with the intention to resemble
|
||
some of the plot commands of octave or matlab. <a
|
||
href="http://www.gnu.org/copyleft/gpl.html">GPL3</a>.</li>
|
||
<li><a
|
||
href="https://github.com/guicho271828/eazy-gnuplot">eazy-gnuplot</a> - a
|
||
lispy, structure-less Gnuplot library. With its <a
|
||
href="http://guicho271828.github.io/eazy-gnuplot/">cookbook</a>. <a
|
||
href="http://opensource.franz.com/preamble.html">LLGPL</a></li>
|
||
<li><a href="https://github.com/komi1230/kai">kai</a> - A high-level
|
||
plotter library for Common Lisp. A wrapper around the <a
|
||
href="https://plotly.com/javascript/">Plotly</a> JS library. <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a
|
||
href="https://common-lisp.net/project/adw-charting/">ADW-Charting</a> -
|
||
A simple chart drawing library written completely in Common Lisp. Also
|
||
includes a backend to Google’s chart service. BSD-like.</li>
|
||
</ul>
|
||
<p>Plotting with text:</p>
|
||
<ul>
|
||
<li><a
|
||
href="https://github.com/moneylobster/cl-text-plot/">cl-text-plot</a> -
|
||
Plot with text in Common Lisp. No licence specified.</li>
|
||
<li><a href="https://github.com/tkych/cl-spark">cl-spark</a> - sparkline
|
||
strings for the console: <code>(spark '(1 1 2 3 5 8))</code> =>
|
||
“▁▁▂▃▅▇”. <a href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
</ul>
|
||
<p>See also the chart facilities of IUP and ltk-plotchart (GUI
|
||
section).</p>
|
||
<h2 id="project-skeletons">Project skeletons</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/fukamachi/cl-project">cl-project</a> -
|
||
General modern project skeletons. <a
|
||
href="http://opensource.franz.com/preamble.html">LLGPL</a>.</li>
|
||
<li><a
|
||
href="https://github.com/40ants/cl-project-with-docs">cl-project-with-docs</a>
|
||
- uses Sphinx and reStructured text to render nice and readable HTML
|
||
documentation. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">BSD</a>.</li>
|
||
<li><a
|
||
href="https://github.com/vindarel/cl-cookieproject">cl-cookieproject</a>
|
||
- Generate a ready-to-use Common Lisp project. Not in Quicklisp. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">BSD_3Clause</a>.
|
||
<ul>
|
||
<li>test definitions, entry point to run from sources, build a binary,
|
||
Roswell integration…</li>
|
||
</ul></li>
|
||
</ul>
|
||
<h2 id="security">Security</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/kanru/cl-isolated">cl-isolated</a> - A
|
||
restricted environment for Common Lisp code evaluation <a
|
||
href="https://directory.fsf.org/wiki/License:AGPL-3.0">AGPL-3.0</a>.</li>
|
||
</ul>
|
||
<h2 id="system-interface">System interface</h2>
|
||
<ul>
|
||
<li><a
|
||
href="https://github.com/Shinmera/machine-state/">machine-state</a> -
|
||
Retrieve machine state information about CPU time, memory usage, thread
|
||
processing time, etc.</li>
|
||
</ul>
|
||
<h2 id="xml">XML</h2>
|
||
<ul>
|
||
<li><a href="https://common-lisp.net/project/cxml/">CXML</a> - XML
|
||
parser and serializer, with a range of extension libraries. <a
|
||
href="http://opensource.franz.com/preamble.html">LLGPL</a>.
|
||
<ul>
|
||
<li>👍 has an incremental parser, allowing to parse big files.</li>
|
||
<li>see the <a href="https://github.com/ruricolist/FXML">FXML</a> fork,
|
||
with fixes and new features. You should use it if your are parsing
|
||
potentially ill-formed or malicious XML, or if you need to use Klacks
|
||
with namespaces.</li>
|
||
</ul></li>
|
||
<li><a href="https://github.com/Shinmera/plump">Plump</a> - A lenient
|
||
XML parser. <a
|
||
href="https://directory.fsf.org/wiki/License:Zlib">zlib</a>.</li>
|
||
<li><a href="https://github.com/sharplispers/xpath">xpath</a> (<a
|
||
href="https://common-lisp.net/project/plexippus-xpath/atdoc/index.html">homepage</a>
|
||
- Implementation of the XML Path Language (XPath) Version 1.0. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_2Clause">BSD_2Clause</a>.</li>
|
||
<li><a href="http://cliki.net/S-XML">s-xml</a> - A basic parser. <a
|
||
href="http://opensource.franz.com/preamble.html">LLGPL</a>.</li>
|
||
<li><a href="https://github.com/rpgoldman/xmls">xmls</a> - A small,
|
||
simple, non-validating XML parser. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">3-clause
|
||
BSD</a>.</li>
|
||
<li><a href="https://github.com/TBRSS/cl-feedparser">cl-feedparser</a> -
|
||
A Common Lisp (RSS, Atom) feed parser. <a
|
||
href="http://opensource.franz.com/preamble.html">LLGPL</a></li>
|
||
<li><a href="https://github.com/AccelerationNet/buildnode">Buildnode</a>
|
||
- A common lisp library to ease interaction with CXML-dom, such as
|
||
building Excel spreadsheets. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">BSD</a>.</li>
|
||
</ul>
|
||
<p>To read Excel files:</p>
|
||
<ul>
|
||
<li><a href="https://github.com/defunkydrummer/lisp-xl">lisp-xl</a> -
|
||
Common Lisp Microsoft XLSX (Microsoft Excel) loader for
|
||
arbitrarily-sized / big-size files. MIT.</li>
|
||
<li><a href="https://gitlab.common-lisp.net/cungil/xlsx">xlsx</a> - a
|
||
basic reader for Excel files.</li>
|
||
</ul>
|
||
<h2 id="other">Other</h2>
|
||
<p>This contains anything which doesn’t fit into another category.</p>
|
||
<ul>
|
||
<li><a href="https://github.com/cl-babel/babel">babel</a> - A charset
|
||
encoding/decoding library. <a
|
||
href="https://directory.fsf.org/wiki/License:Expat">Expat</a>.</li>
|
||
<li><a href="https://github.com/eudoxia0/corona">corona</a> - Create and
|
||
manage virtual machines from Common Lisp http://eudoxia.me/corona <a
|
||
href="https://opensource.org/licenses/MIT">MIT</a>.</li>
|
||
<li><a href="https://github.com/rpav/fast-io">fast-io</a> - Fast
|
||
octet-vector/stream I/O. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">3-clause
|
||
BSD</a>.</li>
|
||
<li><a
|
||
href="https://github.com/melisgl/named-readtables">named-readtables</a>
|
||
- Provides a readtable namespace, akin to package namespaces. <a
|
||
href="https://directory.fsf.org/wiki/License:BSD_3Clause">3-clause
|
||
BSD</a>.</li>
|
||
<li><a
|
||
href="https://github.com/a0-prw/simple-currency">simple-currency</a> - A
|
||
currency conversion library using daily information published by the
|
||
ECB. <a
|
||
href="https://directory.fsf.org/wiki?title=License:FreeBSD">FreeBSD</a>.</li>
|
||
<li><a
|
||
href="https://github.com/trivial-garbage/trivial-garbage">trivial-garbage</a>
|
||
- A portable finalizer, weak hash-table and weak pointer API. Public
|
||
domain.</li>
|
||
<li><a
|
||
href="https://common-lisp.net/project/trivial-utf-8/">trivial-utf8</a> -
|
||
A small library for doing UTF-8-based I/O. BSD.</li>
|
||
</ul>
|
||
<h1 id="contributing">Contributing</h1>
|
||
<p>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.</p>
|
||
<p>The rules we (try to) respect are the followings:</p>
|
||
<ul>
|
||
<li>by default, add a library to the end of its section.</li>
|
||
<li>absolute de-facto libraries, like BordeauxThreads or Quicklisp,
|
||
should be denoted with a ⭐ (Unicode code U+2B50).</li>
|
||
<li>two libraries very similar in scope should be side by side, or in a
|
||
section of their own.</li>
|
||
<li>do some curation based on your experience and the state of the
|
||
library’s documentation. We do <em>not</em> aim at listing every
|
||
existing CL library (see Cliki for that) nor to list every “popular”
|
||
library (see Quicklisp stats).</li>
|
||
<li>as such, the libraries we like best are marked with a 👍
|
||
(<code>1F44D</code> unicode character). See also the signs’ explanation
|
||
in the introduction.</li>
|
||
</ul>
|