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.
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).
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.
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.
Common lisp wrapper around the SOIL library.
This package provides a client for SMTP.
Skitter is a repl friendly event system for games.