Compatibility¶
Supported environment¶
SBCL only, on the platforms the flake builds: x86_64-linux and
aarch64-darwin.
The library uses sb-thread, sb-gray, sb-ext, and sb-debug directly
for its locking, bounded output streams, atomics, and backtrace capture, so
it is deliberately not portable Common Lisp. The shipped cl-log-kit system
otherwise depends on nothing but ASDF 3.3.1 or newer, so there is no
third-party library to audit, pin, or break in a consumer's own dependency
graph.
Stability promise¶
The exported surface is versioned under
Semantic Versioning. Anything that
changes the shape or behavior of an exported symbol gets a major version and
a ### Breaking Changes section in the changelog with an
explicit migration path. Every behavior change is recorded there under the
version it shipped in.
Every exported symbol carries a docstring, so (documentation 'log-info
'function) answers at the REPL, and there is no undocumented private API
that a caller could come to depend on by accident.
What counts as a security defect¶
A logging library sits directly downstream of untrusted input — request paths, user names, error messages. The following are therefore treated as security defects rather than cosmetic bugs:
- Log injection or forgery. Any field value, key, or message that can
terminate a record early, start a second one, or visually disguise its own
content in
text-handleroutput (control characters, U+2028/U+2029, bidirectional or invisible formatting controls), or break out of a string injson-handleroutput. See Handlers. - Unbounded resource consumption from a field value. Any input that makes the snapshot walk exceed its documented depth, node, string-length, or collection-size bounds, or that makes it fail to terminate. Cyclic and hostile structures must signal, not hang or exhaust memory. See Fields.
- Unintended code execution while rendering. In particular, a path that
invokes a user-defined
print-objector conditionreportmethod that the documented API says will not be invoked. See Logging Conditions. - Concurrency defects with security consequences, such as interleaved or truncated records from handlers sharing a stream.
- Unsafe filesystem behavior in
rotating-file-handler, including deleting a file outside its own rotation set.
Out of scope: the contents a caller deliberately chooses to log. The library escapes and bounds what it is given; it cannot know that a field value was a credential.
Report a suspected vulnerability privately through GitHub security advisories, never in a public issue. The org-wide policy is in SECURITY.