ZPB-TTF is a TrueType font file parser that provides an interface for reading typographic metrics, glyph outlines, and other information from the file.
This is a library for access to atomic operation primitives such as compare-and-swap. It aims to be a rather thin layer over what the implementations offer.
core-gp
is a Common Lisp library for genetic programming (GP) algorithms. It allows standard GP, strongly-typed GP, grammatical evolution as well as standard genetic algorithms.
This library is an implementation of Deflate (RFC 1951) decompression, with optional support for ZLIB-style (RFC 1950) and gzip-style (RFC 1952) wrappers of deflate streams. It currently does not handle compression.
Simple and fast marshalling of Lisp datastructures. Convert any object into a string representation, put it on a stream an revive it from there. Only minimal changes required to make your CLOS objects serializable.
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.
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).
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
).
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.
cl-annot
is an general annotation library for Common Lisp.
This is a Common Lisp library to extract EXIF information from image files.
Parse-js is a Common Lisp package for parsing JavaScript (ECMAScript 3). It has basic support for ECMAScript 5.
This library contains generic hacks meant to be used in any project. It was originally developed for the Cells library.
Anaphora is the anaphoric macro collection from Hell: it includes many new fiends in addition to old friends like aif
and awhen
.
This package provides a robust CSV parser and printer that tries to follow the fine print of de facto standards. It can be configured to choose which standard exactly.
CL-PPCRE is a portable regular expression library for Common Lisp, which is compatible with perl. It is pretty fast, thread-safe, and compatible with ANSI-compliant Common Lisp implementations.
This package provides a Common Lisp implementation of Base64 encoding and decoding. Base64 encoding is a technique to encode binary data in a portable, safe printable, 7-bit ASCII format.
This is a terminfo database front end in Common Lisp. The package provides a method for determining which capabilities a terminal (e.g. "xterm") has and methods to compile or put commands to a stream.
cl-css-lite
is a library for generating CSS from an s-exp based syntax. When compiled with Parenscript loaded in the Lisp image, it also provides the same CSS generation facilities in Parenscript-generated JavaScript code.
binascii
is a Common Lisp library for converting binary data to ASCII text of some kind. Such conversions are common in email protocols (for encoding attachments to support old non-8-bit clean transports) or encoding binary data in HTTP and XML applications. binascii
supports the encodings described in RFC 4648: base64, base32, base16, and variants. It also supports base85, used in Adobe's PostScript and PDF document formats, and a variant called ascii85, used by git for binary diff files.
Screamer is an extension of Common Lisp that adds support for nondeterministic programming. Screamer consists of two levels. The basic nondeterministic level adds support for backtracking and undoable side effects. On top of this nondeterministic substrate, Screamer provides a comprehensive constraint programming language in which one can formulate and solve mixed systems of numeric and symbolic constraints. Together, these two levels augment Common Lisp with practically all of the functionality of both Prolog and constraint logic programming languages such as CHiP and CLP(R). Furthermore, Screamer is fully integrated with Common Lisp. Screamer programs can coexist and interoperate with other extensions to as CLIM and Iterate.
Common Lisp comes with quite some functions to compare objects for equality, yet none is applicable in every situation and in general this is hard, as equality of objects depends on the semantics of operations on them. As consequence, users find themselves regularly in a situation where they have to roll their own specialized equality test.
This module provides one of many possible equivalence relations between standard Common Lisp objects. However, it can be extended for new objects through a simple CLOS protocol. The rules when two objects are considered equivalent distinguish between mutating and frozen objects. A frozen object is promised not to be mutated in the future in a way that operations on it can notice the difference.
We have chosen to compare mutating objects only for identity (pointer equality), to avoid various problems. Equivalence for frozen objects on the other hand is established by recursing on the objects' constituent parts and checking their equivalence. Hence, two objects are equivalent under the OBJECT=
relation, if they are either identical, or if they are frozen and structurally equivalent, i.e. their constituents are point-wise equivalent.
Since many objects are potentially mutable, but are not necessarily mutated from a certain point in their life time on, it is possible to promise to the equivalence relation that they remain frozen for the rest of their life time, thus enabling coarser equivalence than the often too fine-grained pointer equality.
This is a unit-testing framework for Common Lisp.