Giter VIP home page Giter VIP logo

awesome-cl's Introduction

Awesome Common Lisp Awesome Assertible status

A curated list of awesome Common Lisp stuff.

Add something new! See the contributing section for adding something to the list.

All libraries listed here are available from Quicklisp unless stated otherwise.

This is released under the GNU Free Documentation License - its text is provided in the LICENSE file. This repository is also mirrored on NotABug - a fully-free (as in libre) alternative to Github. Preference is given to free software and sellers who aren't evil for physical resources.

Table of Contents

Build Systems

Crypto

Database

Foreign Function Interface

C

  • CFFI - Portable, easy-to-use C foreign function interface. Expat.
  • cl-autowrap - Automatically parses header files into CFFI definitions. FreeBSD.

Java

  • cl+j - A JNI-based interface to a JVM via CFFI. Not available on Quicklisp. Does not reliably work with all implementations. Expat.

Miscellaneous

  • Foil - A foreign object interface; works with the JVM and CLI. Not available on Quicklisp. CPL 1.0.

Python

  • burgled-batteries - A bridge between Python and Common Lisp. Not available on Quicklisp. No license specified.

Game Development

  • Xelf - Extensible game library. Not available on Quicklisp. GNU LGPL2.1.
  • Trial - 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. Artistic License 2.0.
  • cl-mpg123 and cl-out123, bindings libraries for libmpg123 and libout123 respectively, giving you fast and easy to use mp3 decoding and cross-platform audio output. Artistic License 2.0.

Graphics

These are libraries for working with graphics, rather than making GUIs (i.e. widget toolkits), which have their own section.

GUI

Implementations

  • ABCL - Armed Bear Common Lisp; targets the JVM, compiles to bytecode. Standard conformance. GNU GPL3 with Classpath exception.
  • CCL - Clozure Common Lisp; compiler-only implementation, generates native code. LLGPL.
  • CLASP - 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. LGPL2.1 (and others).
  • CMUCL - An implementation from Carnegie Mellon University. Public domain.
  • ECL - Embeddable Common Lisp; compiles to C. GNU LGPL2.1.
  • GCL - Another GNU implementation; not yet fully ANSI-compliant. GNU LGPL2.1.
  • GNU CLISP - A GNU implementation; contains a compiler and an interpreter. Standard conformance. GNU GPL3.
  • SBCL - A fork of CMUCL; compiles to machine code. Standard compliance. Public domain, with some parts under Expat and 3-clause BSD.

JSON

Learning and Tutorials

Online

Beginner

Intermediate

Advanced

  • Let Over Lambda - A book on advanced macro techniques. The first six chapters are available online.
  • On Lisp - Paul Graham's amazing book on Lisp macros (and other interesting things).

Reference

  • Common Lisp Quick Reference - A distilled, pocket-size version of the ANSI CL spec. Available for download as a PDF.
  • CLHS - The Common Lisp HyperSpec; the ANSI CL standard, in hypertext form.
  • Common Lisp Standard Draft - The final draft of the Common Lisp specifications, in a well formatted PDF.
  • Common Lisp the Langauge - The original standard for Common Lisp before the ANSI spec.
  • Minispec - A friendlier, but less-complete, version of CLHS. Also contains documentation for some commonly-used CL libraries (such as Alexandria).
  • Quickdocs - A reference for the libraries provided by Quicklisp.

Offline

Beginner

  • Land of Lisp - A fun, game-oriented introduction to Common Lisp.
  • Practical Common Lisp - A good introductory text to Common Lisp, with practical examples.
  • Common Lisp Koans - The project guides the learner progressively through many Common Lisp language features.

Intermediate

  • ANSI Common Lisp - A thorough, practical covering of the entire language, with exercises. Not recommended as a starter text, due to some caveats.
  • Common Lisp Recipes - Common Lisp Recipes 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.

Advanced

Library Manager

  • Roswell - a Lisp implementation installer, script launcher and more. MIT.
  • qlot - A project-local library installer, similar to Bundler or Carton. Expat.
  • Quicklisp - A library manager containing many libraries, with easy depencency management. Expat.
  • Quickutil - A utility manager, similar to Quicklisp, but for small utilities rather than whole libraries. 3-clause BSD.

Natural Language Processing

  • cl-nlp - Natural language processing toolset. Apache2.0.
  • babel2 - A Fluid Construction Grammar implementation, computational framework, and unification-based grammar formalism Apache2.0.

Network and Internet

See Cliki for more.

HTTP clients

HTTP Servers

  • Clack - A web application environment inspired by Rack and WSGI. LLGPL. Provides a unified interface to a webserver of choice (default is Hunchentoot).
  • Hunchentoot - A web server. 2-clause BSD
  • aserve - AllegroServe; a web server. LLGPL.
  • clack-errors - Error page middleware for Clack. LLGPL.
  • hermetic - Security for Clack-based web applications. Expat.
  • wookie - Asynchronous HTTP server. Expat.
  • woo - A fast non-blocking HTTP server on top of libev. MIT.

Clack plugins

  • clath - 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. Apache2.0.
  • clack-pretend - a testing and debugging tool for clack. Apache2.0.

Web frameworks

There are more projects, more or less discontinued but interesting. See the other ressources.

Assets management

  • Rock - an asset manager for Common Lisp. It's basically a combination of Bower and webassets. MIT.

Parsing html

Querying HTML/DOM

See also XML below.

HTML generators and templates

URI handling

  • quri - Another URI library for Common Lisp. Supports userinfo, IPv6 hostname, encoding/decoding utilities,… BSD_3Clause.
  • purl - Provides a parser and defines a type for URLs as specified in RFC1738. GNU GPL3.
  • cl-slug - a small library to make slugs, mainly for URIs, transform in CamelCase, remove accentuation and punctuation, for english and beyound. LLGPL.

Javascript

Websockets

See more on cliki.

Static site generators

Third-party APIs

Others

Numerical and Scientific

  • cl-spark - Generates sparkline strings for lists of numbers. Expat.
  • GSLL - GNU Scientific Library for Lisp; allows the use of the GSL from Common Lisp. GNU LGPL2.1.
  • common-lisp-stat - Common Lisp statistics library. FreeBSD.
  • maxima - Computer algebra system. Not available on Quicklisp. GNU GPL3.
  • lisp-matrix - A matrix package. FreeBSD.
  • 3-matrices - 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. Artistic License 2.0.

Parallelism and Concurrency

Regex

Scripting

  • Roswell - a lisp installer and scripting environment (helper, launcher, installer) and more. MIT.
  • Shelly - 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. FreeBSD.
  • cl-readline - 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. GPL3.
  • Unix-opts - a command line options parser with a concise declaration of options. MIT.
  • CLON - Command Line Options Nuker. ISC.
  • cl-ansi-term - print colorized text, horizontal lines, progress bars, (un)ordered lists and tables on ANSI-compliant terminals. GPL3.
  • Deploy - a system to help you easily and quickly deploy standalone common lisp applications as binaries. Specifically it is geared towards applications with foreign library dependencies that run some kind of GUI. Artistic License 2.0.

Text Editor Resources

This contains plugins and other goodies for various text editors.

  • Parinfer - 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,…).

Emacs

  • SLIME - Superior Lisp Interaction Mode for Emacs; a full-blown environment for Common Lisp inside of Emacs. Public domain.
  • PORTACLE - A portable and multiplatform Common Lisp environment: SBCL, Quicklisp, Emacs, Slime, Git.
  • LISP-MACHINE - A Common Lisp IDE in a Docker Container: Roswell Managed, Clozure CL, Spacemacs, Quicklisp, CLHS

Vim

  • SLIMV - Superior Lisp Interaction Mode for Vim; a full-blown environment for Common Lisp inside of Vim. No license specified.
  • Vlime - VLIME: Vim plus Lisp Is Mostly Evil. A Common Lisp dev environment for Vim (and Neovim). MIT.

Sublime Text

  • Sublime Text has Common Lisp support with its "SublimeREPL" package. [Proprietary].

Atom

  • ATOM-SLIME allows you to interactively develop Common Lisp code, helping turn Atom into a full-featured Lisp IDE. MIT.

Notebooks

Tools

These are applications or bits of code that make development in Common Lisp easier without being Common Lisp libraries themselves.

Unit Testing

Utilities

Language extensions

  • cl21 - An experimental project to move Common Lisp into the 21st century. Expat.
  • alexandria - A general-purpose utility library. Public domain.
  • serapeum - Another general-purpose utility library. Expat.
  • anaphora - A collection of anaphoric macros. Public domain.
  • cl-algebraic-data-type - A library for defining algebraic data types in a similar spirit to Haskell or ML. 3-clause BSD.
  • FSet - A functional, set-theoretic collections data structure library. LLGPL.
  • iterate - An iteration construct for Common Lisp which is extensible and Lispier. No license specified.
  • for - 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. Artistic License 2.0.
  • series - Functional style without any runtime penalty at all. MIT.
  • optima - Optimized pattern-matching library. LLGPL.
  • trivial-types - Trivial type definitions. LLGPL.
  • interface - A protocol library. 3-clause BSD.
  • cl-syntax - Reader syntax conventions. LLGPL.
  • closer-mop - A compatibility layer that rectifies many absent or incorrect MOP features. Expat.
  • cl-2dsyntax - An indentation-sensitive reader system. Not available on Quicklisp. No license specified.
  • cl-annot - Python-like annotations for Common Lisp. LLGPL.
  • cl-interpol - A set of reader modifications to allow string interpolation. No license specified.
  • dissect - 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. Artistic License 2.0.

Files and directories

  • uiop and its pathname package (replaces cl-fad). uiop is part of ASDF3 and as thus is shipped in many implementations. MIT.
  • osicat - A lightweight operating system interface on POSIX-like systems (directory iteration and deletion, environment variables, file permissions, etc) Expat.
  • pathname-utils - A collection of utilities to help with pathname operations. Artistic License 2.0.

Git

Date and time

  • localtime - A development library for manipulating date and time information in a semi-standard manner. 3-clause BSD.

Data validation

CSV

Documentation builders

  • sphinxcontrib-cldomain - Extending Sphinx to cover Common Lisp. To build documentation with the same ease as sphinx would a Python project. GPL3
  • Codex - A beautiful documentation system for Common Lisp. MIT.

Markdown

  • 3bmd - a markdown -> html converter. MIT.

Plotting

  • vgplot - an interface to the gnuplot plotting utility with the intention to resemble some of the plot commands of octave or matlab. GPL3.
  • eazy-gnuplot - a lispy, structure-less Gnuplot library. With its cookbook. LLGPL

i18n

Logging

Text Processing

  • montezuma - Full-text indexing and search for Common Lisp. Expat.
  • mk-string-metrics - Calculate various string metrics efficiently in Common Lisp (Damerau-Levenshtein, Hamming, Jaro, Jaro-Winkler, Levenshtein, etc). MIT.
  • cl-yacc - a LALR(1) parser generator. MIT.

Other

This contains anything which doesn't fit into another category.

XML

Contributing

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.

awesome-cl's People

Contributors

vindarel avatar codyreichert avatar kozross avatar readmecritic avatar rudolfochrist avatar malisper avatar muddlebee avatar l04m33 avatar marsam avatar phoe avatar rmhsilva avatar harleqin avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.