This library implements a basic promise datastructure, which is useful for dealing with asynchronous behaviours. Importantly, this library does not use any other libraries or frameworks, and instead leaves the execution and state transition of promise objects in your control, making it easy to integrate.
Cluster is an assembler (initially for x86 and x86-64) with a difference. To avoid the issue of defining a syntax, the input to Cluster is a list of standard objects (i.e., instances of the class STANDARD-OBJECT), as opposed to a character file or S-expressions.
HARMONY is a library that provides you with audio processing tools as well as an audio server to play back music, sfx, and so forth. It is most suited for use in a game engine, but may feasibly also be used for more advanced things such as a DAW
defstar
is a collection of Common Lisp macros that can be used in place of defun
, defmethod
, defgeneric
, defvar
, defparameter
, flet
, labels
, let
* and lambda
. Each macro has the same name as the form it replaces, with a star added at the end.
ST-JSON (ST
because it originated at Streamtech) is a Common Lisp library for encoding and decoding JSON values (as specified on json.org).
This library does mostly the same thing as CL-JSON, but is simpler and more precise about types (distinguishing boolean false, the empty array, and the empty object).
The 3d-math
library implements types, operators, and algorithms commonly used in math for 2D and 3D graphics. It supersedes and combines the prior libraries 3d-vectors
, 3d-matrices
, 3d-quaternions
, and 3d-transforms
. The new API is largely but not entirely backwards compatible, and adds new functionality.
cl-json
provides an encoder of Lisp objects to JSON format and a corresponding decoder of JSON data to Lisp objects. Both the encoder and the decoder are highly customizable; at the same time, the default settings ensure a very simple mode of operation, similar to that provided by yason
or st-json
.
iterate
is an iteration construct for Common Lisp. It is similar to the CL:LOOP
macro, with these distinguishing marks:
it is extensible,
it helps editors like Emacs indent iterate forms by having a more lisp-like syntax, and
it isn't part of the ANSI standard for Common Lisp.
Defstar is a collection of Common Lisp macros that can be used in place of defun
, defmethod
, defgeneric
, defvar
, defparameter
, flet
, labels
, let*
and lambda
. Each macro has the same name as the form it replaces, with a star added at the end, e.g. defun
. (the exception is the let*
replacement, which is called *let
).
This Common Lisp library implements a parser generator for the ABNF grammar format as described in RFC2234. The generated parser is a regular expression scanner provided by the cl-ppcre lib, which means that we can't parse recursive grammar definition. One such definition is the ABNF definition as given by the RFC. Fortunately, as you have this lib, you most probably don't need to generate another parser to handle that particular ABNF grammar.
CL-Yacc is a LALR(1) parser generator for Common Lisp, similar in spirit to AT&T Yacc, Berkeley Yacc, GNU Bison, Zebu, lalr.cl or lalr.scm.
CL-Yacc uses the algorithm due to Aho and Ullman, which is the one also used by AT&T Yacc, Berkeley Yacc and Zebu. It does not use the faster algorithm due to DeRemer and Pennello, which is used by Bison and lalr.scm (not lalr.cl).
PAX provides an extremely poor man's Explorable Programming environment. Narrative primarily lives in so called sections that mix markdown docstrings with references to functions, variables, etc, all of which should probably have their own docstrings.
The primary focus is on making code easily explorable by using SLIME's M-.
(slime-edit-definition
). See how to enable some fanciness in Emacs Integration. Generating documentation from sections and all the referenced items in Markdown or HTML format is also implemented.
With the simplistic tools provided, one may accomplish similar effects as with Literate Programming, but documentation is generated from code, not vice versa and there is no support for chunking yet. Code is first, code must look pretty, documentation is code.
Wayflan is a from-scratch Wayland communication library for Common Lisp. It makes a good-faith effort to mimic libwayland
behavior not defined in the Wayland spec, to keep compatibility between the two libraries.
Wayflan is not a compositor nor a GUI toolkit. Its purpose is to parse Wayland protocol XML documents and exchange Wayland messages between other processes.
Features:
Client support
All implementation done in Common Lisp from the socket up
Enum values are translated into keywords
Wayland protocol introspection
ASDF component
:wayflan-client-impl
generates code from XML. ASDF's extensible components make it possible to teach your program new protocols for Wayland without the need of a special build system.
When dealing with network protocols and file formats, it's common to have to read or write 16-, 32-, or 64-bit datatypes in signed or unsigned flavors. Common Lisp sort of supports this by specifying :element-type for streams, but that facility is underspecified and there's nothing similar for read/write from octet vectors. What most people wind up doing is rolling their own small facility for their particular needs and calling it a day.
This library attempts to be comprehensive and centralize such facilities. Functions to read 16-, 32-, and 64-bit quantities from octet vectors in signed or unsigned flavors are provided; these functions are also SETFable. Since it's sometimes desirable to read/write directly from streams, functions for doing so are also provided. On some implementations, reading/writing IEEE singles/doubles (i.e. single-float and double-float) will also be supported.
clingon
is a command-line option parsing library for Common Lisp. Its features include:
Support for subcommands
Support for command aliases
Support for short and long options
Related options may be grouped into categories
Short options may be collapsed into a single argument, as in
-xyz
Long options support the notations
--long-opt arg
and--long-opt=arg
Automatic generation of help/usage information for commands and subcommands
Out-of-the-box support for
--version
and--help
Support for various kinds of options including string, integer, boolean, switch, enum, list, counter, filepath, etc.
Subcommands can look up global options defined in parent commands
Support for required options
Options can be initialized via environment variables
Single interface for creating options using
CLINGON:MAKE-OPTION
Generate documentation for your command-line application
Support for
pre-hook
andpost-hook
actions for commands, which allow invoking functions before and after the respective handler of the command is executedSupport for Bash and Zsh completions
Extensibility, so if you don't find something you need you can extend it by developing a new option kind, or even a new mechanism for initializing options, e.g., by looking up an external key/value store
SCRibe-like reader extension for Common Lisp.
SCRibe-like reader extension for Common Lisp.
This package provides a Common Lisp collection of assertions.
Coleslaw is a static site generator written in Common Lisp.
High performance JSON encoder and decoder. Currently support: SBCL, CCL.
CL-PUNCH is a Scala-like anonymous lambda literal.
This package provides a Common Lisp system implementing event bus.
This package provides first-class global environments for Common Lisp.
This library provides low-level libuv bindings for Common Lisp.