jolt/docs/libraries.md
Yogthos 44837f01ab data.csv: fully passes, three general fixes
clojure.data.csv runs its whole suite on jolt (4/4 reading/writing/eof/line-
endings). Three general gaps fixed, all runtime, no re-mint, JVM-certified:

- The prefix-list form of :require/:use — (:require (clojure [string :as str]))
  means clojure.string :as str — now expands (loader.ss). It silently failed
  before, trying to load a "clojure" namespace.
- extend-protocol to java.io.Reader / Writer / StringReader / PushbackReader now
  dispatches: those reader/writer host tags carry the right class names in
  value-host-tags AND are in host-type-set, so extend-protocol registers under
  the canonical tag instead of a local ns tag (records.ss). data.csv's
  Read-CSV-From protocol extends to String / Reader / PushbackReader.
- (str StringWriter) returns its accumulated content (register-str-render for the
  "writer" jhost), not the opaque host object — data.csv writes CSV to one and
  reads it back.

Listed in docs/libraries.md + the site.

make test green (+2 corpus rows, 0 new divergences), shakesmoke byte-identical.
2026-06-27 15:02:32 -04:00

4.3 KiB

Clojure libraries known to work with Jolt

Libraries confirmed to load and pass their conformance checks on Jolt. A library listed here works. See the examples, e.g. the ring-app example.

  • aero — EDN configuration with tag literals (#ref/#env/#or/#profile/#long/…)
  • config — environment configuration
  • Selmer — Django-style templates
  • medley — collection utilities
  • cuerdas — string manipulation
  • ring-core — via :deps/root "ring-core", on the ring-app example
  • ring-codec — URL/form encoding
  • ring-defaults — the standard middleware stack (params, static resources + content-type, session, security headers); its session/CSRF crypto comes from jolt-lang/jolt-crypto (OpenSSL)
  • reitit-core — data-driven routing; the reitit.Trie Java class is mirrored by jolt-lang/router.
  • integrant — data-driven system configuration (#ig/ref), with its dependency and meta-merge deps
  • honeysql — SQL formatter and helpers
  • clojure.jdbc — as jolt-lang/db's jdbc.core, over the built-in SQLite access (libsqlite3 via Chez's FFI)
  • next.jdbc — a compatibility layer in jolt-lang/db over jdbc.core
  • tools.logging — runs verbatim over a native clojure.tools.logging.impl stderr backend
  • migratus — database migrations over the next.jdbc layer
  • malli — data schema validation, on the malli-app example.
  • markdown-clj — Markdown → HTML, on the markdown-app example
  • hiccup — HTML from Clojure data, on the hiccup-app example
  • clojure.data.json — JSON reading and writing
  • clojure.spec.alpha — data specs
  • core.match — pattern matching.
  • core.cache — caching (Basic/FIFO/LRU/ LU/TTL/Soft + the wrapped atom API), over data.priority-map.
  • core.memoize — function memoization over core.cache.
  • core.async — CSP channels and go blocks (<!/>!/alts!, pipeline, mult/mix/pub/sub) on real OS threads.
  • core.logic — relational logic programming (unification, run/fresh/conde, finite domains).
  • math.combinatorics — permutations, combinations, subsets, selections, cartesian products, partitions.
  • core.contracts — programming by contract (contract/with-constraints/provide), over core.unify.
  • data.zip — zipper navigation, including clojure.data.zip.xml; XML parsing via jolt-lang/xml (which now ships clojure.xml/parse).
  • data.csv — reading and writing CSV.
  • tick — date/time over Jolt's java.time; #time/… literals via time-literals.
  • transit-jolt — Transit (JSON) read/write