Triads is a simple command line tool that reads roman numeral notation from standard input (or a file) and an musical key and outputs the roman numeral in addition to the notes of the triad associated with that roman numeral given in the key.
cl-ratify
is a collection of utilities to perform validation checks and parsing. The main intention of usage for this is in web-applications in order to check form inputs for correctness and automatically parse them into their proper representations or return meaningful errors.
NDebug provides a small set of utilities to make graphical (or, rather non-REPL-resident) Common Lisp applications easier to integrate with the standard Lisp debugger (*debugger-hook*
, namely) and implementation-specific debugger hooks (via trivial-custom-debugger
), especially in a multi-threaded context.
This is a websocket server for Common Lisp using usockets to be portable between implementations and operating systems. It has a programming interface that allows for multiple websocket apps per server using Common Lisp keywords for different websocket events. It has useful restarts and customizable errors.
This package provides a Common Lisp library for defining OpenGL shader programs. There are also functions for referencing shader programs by name, querying for basic information about them, modifying uniform variables throughout the lifecycle of an OpenGL application, and managing certain OpenGL buffer object types (UBO, SSBO currently).
There are plenty of Lisp Markup Languages out there - every Lisp programmer seems to write at least one during his career - and CL-WHO (where WHO means "with-html-output" for want of a better acronym) is probably just as good or bad as the next one.
Bobbin is a simple word-wrapping library for strings in Common Lisp. It aims to be simple, work nicely for the majority of cases, and degrade gracefully for edge cases. It is not particularly concerned with speed — if you need very high-performance word wrapping, Bobbin is not for you.
cl-xkb
is a Common Lisp wrapper for the libxkbcommon keyboard handling library.
The library currently supports these xkb modules:
Keysyms
Library Context
Include Paths
Logging Handling
Keymap Creation
Keymap Components
Keyboard State
Compose and dead-keys support
CL-FAD (for "Files and Directories") is a thin layer atop Common Lisp's standard pathname functions. It is intended to provide some unification between current CL implementations on Windows, OS X, Linux, and Unix. Most of the code was written by Peter Seibel for his book Practical Common Lisp.
This package provides Common Lisp bindings to GSSAPI, which is designed to provide a standard API to authentication services. The API itself is generic, and the system can provide different underlying implementations. The most common one is Kerberos, which has several implementations, the most common of which is probably Active Directory.
Maiden is a collection of systems to help you build applications and libraries that interact with chat servers. It can help you build a chat bot, or a general chat client. It also offers a variety of parts that should make it much easier to write a client for a new chat protocol.
The server part of AllegroServe can be used either as a standalone web server or a module loaded into an application to provide a user interface to the application. AllegroServe's proxy ability allows it to run on the gateway machine between some internal network and the Internet. AllegroServe's client functions allow Lisp programs to explore the web.
lQuery
is a DOM manipulation library written in Common Lisp, inspired by and based on the jQuery syntax and functions. It uses Plump and CLSS as DOM and selector engines. The main idea behind lQuery is to provide a simple interface for crawling and modifying HTML sites, as well as to allow for an alternative approach to templating.
This package provides KONS-9 which can be considered as a traditional user interface driven 3D application for general artists, or as a REPL-based development environment for technical artists and software developers. These two approaches can be seamlessly combined into a flexible and powerful workflow, where non-technical users can immediately benefit from software tools and extensions developed by technical users.
A modern and consistent Common Lisp string manipulation library that focuses on modernity, simplicity and discoverability: (str:trim s)
instead of (string-trim '(#\Space ...) s)
), or str:concat strings
instead of an unusual format construct; one discoverable library instead of many; consistency and composability, where s
is always the last argument, which makes it easier to feed pipes and arrows.
KAPUTT is a test framework for Common Lisp that focuses on the following features:
KAPUTT is simple, it only defines three abstractions testcase, assertion and protocol and does not add any artefact on the backtrace when errors occur.
KAPUTT is extensible, it is possible to add problem-specific assertions to make test code more informative.
KAPUTT fits well interactive development.
This Common Lisp library provides a series data structure much like a sequence, with similar kinds of operations. The difference is that in many situations, operations on series may be composed functionally and yet execute iteratively, without the need to construct intermediate series values explicitly. In this manner, series provide both the clarity of a functional programming style and the efficiency of an iterative programming style.
cl-irc
is a Common Lisp IRC client library that features (partial) DCC, CTCP and all relevant commands from the IRC RFCs (RFC2810, RFC2811 and RFC2812).
Features:
implements all commands in the RFCs
extra convenience commands such as op/deop, ban, ignore, etc.
partial DCC SEND/CHAT support
event driven model with hooks makes interfacing easy
the user can keep multiple connections
all CTCP commands
CL-LOG is a general purpose logging utility, loosely modelled in some respects after Gary King's Log5. Its features include: logging to several destinations at once, via "messengers", each messenger is tailored to accept some log messages and reject others, and this tailoring can be changed on-the-fly, very rapid processing of messages which are rejected by all messengers, fully independent use of the utility by several different sub-systems in an application, support for messengers which cl:format text to a stream, support for messengers which do not invoke cl:format, timestamps in theory accurate to internal-time-units-per-second.
NFiles is a Common Lisp library to help manage file persistence and loading, in particular user-centric files like configuration files. It boasts the following features:
Dynamic and customizable path expansion.
Extensible serialization and deserialization.
Cached reads and writes. When a file object expands to the same path as another one, a read or write on it won’t do anything in case there was no change since last write.
(Experimental!) On-the-fly PGP encryption.
Profile support.
On read error, existing files are backed up.
On write error, no file is written to disk, the existing file is preserved.
This is an implementation of the Unicode Standards Annex #14 (http://www.unicode.org/reports/tr14/) line breaking algorithm. It provides a fast and convenient way to determine line breaking opportunities in text.
Note that this algorithm does not support break opportunities that require morphological analysis. In order to handle such cases, please consult a system that provides this kind of capability, such as a hyphenation algorithm.
Also note that this system is completely unaware of layouting decisions. Any kind of layouting decisions, such as which breaks to pick, how to space between words, how to handle bidirectionality, and what to do in emergency situations when there are no breaks on an overfull line are left up to the user.
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.