Parseq (pronounced parsec) is a parsing library for common lisp. It can be used for parsing lisp's sequences types: strings, vectors (e.g. binary data) and lists. Furthermore, parseq is able to parse nested structures such as trees (e.g. lists of lists, lists of vectors, vectors of strings).
Parseq uses parsing expression grammars (PEG) that can be defined through a simple interface. Extensions to the standard parsing expressions are available. Parsing expressions can be parameterised and made context aware. Additionally, the definition of each parsing expression allows the arbitrary transformation of the parsing tree.
The library is inspired by Esrap and uses a very similar interface. No code is shared between the two projects, however. The features of Esrap are are mostly included in parseq and complemented with additional, orthogonal features. Any resemblance to esrap-liquid is merely coincidental.
Colony provides a system and workflow that helps describe the elements needed to write 2D or 3D games. It was designed with several domain specific languages that make it easier to describe, manipulate, and use assets commonly found in game making. Such assets include (but are not limited to) textures, materials, shader programs, and scene trees of actors that are available for instantiation. Colony Engine also knows how to accept input from keyboards and most joysticks and gamepads.
The component system is a hybrid model between an ECS and an object model. The components are defined similar to CLOS defclass, and regular generic methods can be used with them. Components are added to Actors which represent game concepts like players, scenery, effects, etc. We define a component protocol invoked by Colony Engine to move your components to the next state and render them each frame.
This package holds an enhanced implementation of hooks (extension points). It works similarly to Emacs hooks with crucial improvements:
If the compiler allows it (such as SBCL), type-checking is performed at compile-time and at run-time when adding handlers to a hook.
On failure, multiple restarts are offered, such as disabling the offending handler or simply continuing to the next function.
The hook handler execution order and combination can be customized.
Anonymous functions (lambdas) can be added to hooks as handler objects. When inspecting hooks, readable names are thus exposed instead of lambda blackboxes. Handlers are compared through their names (through the mandatory name slot). A hook can not contain multiple handlers with the same name.
A special provision is taken for “setters”, handlers that are meant to set a given place to a given values. Such handler objects can be compared and identified uniquely.
This package provides a client for SMTP.
Datafly is a lightweight database library for Common Lisp.
Common lisp wrapper around the SOIL library.
This package provides a Common Lisp test runner system SIMPLET.
Clavier is a general purpose validation library for Common Lisp.
Skitter is a repl friendly event system for games.
cl-incless implements print-object methods for many standard classes.
This is a Gettext-style internationalisation framework for Common Lisp.
cl-pass is a password hashing and verification library.
This library features a rectangle packer for sprite and texture atlases.
XSubseq provides functions to be able to handle "subseq"s more effieiently.
This package provides a Common Lisp parser for glTF file format.
This an implementation of CDR 2: generic hash tables for Common Lisp
This package provides a general-purpose connection pooling library for Common Lisp.
ptester is a portable testing framework based on Franz's tester module.
This is a library for representing and mapping colours between their various spaces.
MT19937 is a portable Mersenne Twister pseudo-random number generator for Common Lisp.
This package provides a JSON-RPC 2.0 server/client for Common Lisp.
qbase64 provides a fast and flexible base64 encoder and decoder for Common Lisp.