CL-SDM
CL-SDM is a library that provides utility functions and some extra batteries to Common Lisp. It is, essentially, my personal standard library of things I tend to use often. CL-SDM supports SBCL primarily, but is also intended to work in ClozureCL, and Clisp.
Most of my other Common Lisp projects use it in some way or another.
Sub-Packages
The main CL-SDM system is divided into a few separate sub-packages:
- :sdm: The core library functions.
- :sdm-args: Command line argument parser.
- :sdm-file: File information and pathname manipulation.
- :sdm-log: Logging facility.
- :sdm-term: ANSI terminal handling.
- :sdm-time: Date/Time Handling.
Most of the code was either designed out of need, but also occasionally to reduce typing. The library draws inspiration from Alexandria, UIOP, and the standard library in Crystal (and Ruby, by extension), and in some cases overlaps.
There are also some additional ASDF systems that ship with CL-SDM that are designed to work with the main CL-SDM system:
- :cl-sdm-asdf: Defines some common ASDF stuff, such as the
APPLY-BLOCK-COMPILATION
function. - :cl-sdm-log-concurrent: A concurrent version of
:sdm-log
. - :cl-sdm-mmapped-file: A Grey Streams interface over
mmap()
that lets you read/write mmapped files like a stream. - :cl-sdm-uds: Provides a Unix Domain Sockets API.
- :sdm-hjson: HJSON parsing and emitting.
- :sdm-config: Abstract configuration file/data directory management.
- :sdm-config-remimarshal: CL-RemiMarshal support for
:SDM-CONFIG
. - :sdm-config-hjson: HJSON support for
:SDM-CONFIG
. - :sdm-semver: Semantic Version parsing and comparisons.
- :sdm-clocks: Clock handling (like
clock_gettime()
in C).