3D-VECTORS
is a library for vector math in 3D space. It contains most of the vector operations one would usually expect out of such a library and offers them both in non-modifying and modifying versions where applicable.
3D-VECTORS
is a library for vector math in 3D space. It contains most of the vector operations one would usually expect out of such a library and offers them both in non-modifying and modifying versions where applicable.
This is a binding to the libyaml library. It's not meant as a full library for YAML, just a bare binding with a couple of utility macros. For a YAML parser and emitter using this, check out cl-yaml.
(X)HTMLambda is yet another (X)HTML library which emphasizes programmability and user-friendliness. Each (X)HTML element is a structured object and pretty-printing of (X)HTML trees is well defined to provide properly indented human-readable output even for complex recursive arrangements.
This library provides a modern project skeleton generator. In contract with other generators, CL-Project generates one package per file and encourages unit testing by generating a system for unit testing, so you can begin writing unit tests as soon as the project is generated.
atomichron
is a Common Lisp library which implements a time meter which tracks how many times a form is evaluated, and how long evaluation takes. It uses atomic instructions so that meters will present correct results in the presence of multiple threads, while trying to minimize synchronization latency.
Wu-Decimal enables convenient, arbitrary-precision decimal arithmetic through a reader macro, #$
, and an update to the pprint
dispatch table. Wu-Decimal uses the CL rational type to store decimals, which enables numeric functions such as +
, -
, etc., to operate on decimal numbers in a natural way.
This is a very simple color library for Common Lisp, providing:
Types for representing colors in HSV, HSL, and RGB spaces.
Simple conversion functions between the above types.
Function printing colors to HEX, RGB, RGBA, and HSL.
Predefined colors from X11, SVG, and GDK.
generic-cl
provides a generic function wrapper over various functions in the Common Lisp standard, such as equality predicates and sequence operations. The goal of this wrapper is to provide a standard interface to common operations, such as testing for the equality of two objects, which is extensible to user-defined types.
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.
Antik provides a foundation for scientific and engineering computation in Common Lisp. It is designed not only to facilitate numerical computations, but to permit the use of numerical computation libraries and the interchange of data and procedures, whether foreign (non-Lisp) or Lisp libraries. It is named after the Antikythera mechanism, one of the oldest examples of a scientific computer known.
MODULARIZE
is an attempt at providing a common interface to segregate major application components. This is achieved by adding special treatment to packages. Each module is a package that is specially registered, which allows it to interact and co-exist with other modules in better ways. For instance, by adding module definition options you can introduce mechanisms to tie modules together in functionality, hook into each other and so on.
Vernacular is a build and module system for languages that compile to Common Lisp. It allows languages to compile to Lisp while remaining part of the Common Lisp ecosystem. Vernacular languages interoperate with Common Lisp and one another.
Vernacular handles locating files, compiling files into FASLs, tracking dependencies and rebuilding, and export and import between your new language, Lisp, and any other language Vernacular supports.
Vernacular builds on Overlord and is inspired by Racket.
A Common Lisp library implementing a few different kinds of queues:
Bounded and unbounded FIFO queues.
Lossy bounded FIFO queues that drop elements when full.
Unbounded random-order queues that use less memory than unbounded FIFO queues.
Additionally, a synchronization wrapper is provided to make any queue conforming to the jpl-queues
API thread-safe for lightweight multithreading applications. (See Calispel for a more sophisticated CL multithreaded message-passing library with timeouts and alternation among several blockable channels.)
exit-hooks
provides a portable way to automatically call some user-defined function when exiting Common Lisp (both quit
from the REPL or a kill in a shell). Like atexit
in C and Python or Java’s Runtime.addShutdownHook()
. It currently supports SBCL, CCL, ECL, ABCL, Allegro CL, clisp and CMUCL. Before exit-hooks, there was no portable way of doing so and no staightforward way to use an exit hook on ABCL. It can be used for tasks like parmenantly save something when exiting Lisp.
cl-libxml2 is high-level Common Lisp wrapper around the libxml2
and libxslt
libraries.
Interfaces for tree manipulation (like
cxml-stp
).Interface for HTML 4.0 non-validating parsers.
Specific APIs to process HTML trees, especially serialization.
XPath API.
XSLT API.
Custom URL resolvers.
XPath extension functions.
XSLT extension elements.
Translates
libxml2
andlibxslt
errors to Lisp conditions.Extends the Common Lisp
iterate
library with custom drivers for child nodes enumeration, etc.The
XFACTORY
system provides a simple and compact syntax for XML generation.
CXML does an excellent job at parsing XML elements, but what do you do when you have a XML file that's larger than you want to fit in memory, and you want to extract some information from it? Writing code to deal with SAX events, or even using Klacks, quickly becomes tedious. cl-xmlspam
(for XML Stream PAttern Matcher) is designed to make it easy to write code that mirrors the structure of the XML that it's parsing. It also makes it easy to shift paradigms when necessary - the usual Lisp control constructs can be used interchangeably with pattern matching, and the full power of CXML is available when necessary.
40ants-doc
provides a rudimentary explorable programming environment. The 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
). Generating documentation in Markdown or HTML format from sections and all the referenced items is also implemented.
With the simplistic tools provided, one may obtain results similar to literate programming, but documentation is generated from code, not the other way around, and there is no support for chunking. Code comes first, code must look pretty, documentation is code.
40ants-doc
is a fork of MGL-PAX with fewer dependencies (only named-readtables
and pythonic-string-reader
) for the core system, and additional features in the full system.
This is a system implementing an advanced dialogue system that is capable of complex dialogue flow including choice trees and conditional branching. Speechless was first developed for the "Kandria" (https://kandria.com) game, and has since been separated and made public in the hopes that it may find use elsewhere or inspire other developers to build similar systems.
Speechless is based on the "Markless" (https://shirakumo.github.io/markless) document standard for its syntax and makes use of Markless' ability to be extended to add additional constructs useful for dialogue systems.
Speechless can compile dialogue from its base textual form into an efficient instruction set, which is then executed when the game is run. Execution of the dialogue is completely engine-agnostic, and only requires some simple integration with a client protocol to run.
Thanks to Markless' extensibility, Speechless can also be further extended to include additional syntax and constructs that may be useful for your particular game.
postmodern
is a Common Lisp library for interacting with PostgreSQL databases. It provides the following features:
Efficient communication with the database server without need for foreign libraries.
Support for UTF-8 on Unicode-aware Lisp implementations.
A syntax for mixing SQL and Lisp code.
Convenient support for prepared statements and stored procedures.
A metaclass for simple database-access objects.
This package produces 4 systems: postmodern, cl-postgres, s-sql, simple-date
SIMPLE-DATE
is a very basic implementation of date and time objects, used to support storing and retrieving time-related SQL types. It is not loaded by default and you can use local-time (which has support for timezones) instead.
S-SQL
is used to compile s-expressions to strings of SQL code, escaping any Lisp values inside, and doing as much as possible of the work at compile time.
CL-POSTGRES
is the low-level library used for interfacing with a PostgreSQL server over a socket.
POSTMODERN
itself is a wrapper around these packages and provides higher level functions, a very simple data access object that can be mapped directly to database tables and some convient utilities. It then tries to put all these things together into a convenient programming interface
Modeline support for network connectivity.
Modeline support for memory info.
Modeline support for CPU info.