Finishes core.match — its full test suite (115/115) now passes, including the two patterns the earlier work left out: - Regex-literal patterns. A #"…" now reads as a regex VALUE (Clojure parity: the reader constructs the Pattern, so a macro receives a regex, not jolt's tagged form), and the analyzer compiles a regex value to the same :regex IR leaf via its source. emit-quoted handles a quoted regex; a regex value carries the java.util.regex.Pattern host tag so extend-protocol/instance? dispatch on it. - Primitive-array patterns. A ^Type hint's :tag is now the SYMBOL (e.g. `ints`), matching the JVM, so core.match's array-tag lookup engages the array specialization (alength/aget). jolt's :tag consumers already tolerate a symbol (hc-cell-num-ret normalizes; tag->nkind/def-meta handle both). Also: a library-conformance directive in CLAUDE.md, and the supported-libraries list (docs + site) simplified to one-line entries — a listed library is assumed to work fully, so no tallies or feature enumerations. core.match + transit-jolt added to the list. Seed change (reader/backend/30-macros) -> re-minted; the rest runtime. JVM- certified corpus rows; the stale `symbol hint -> :tag` divergence is dropped from the allowlist (jolt now matches the JVM). make test + shakesmoke green.
2.9 KiB
2.9 KiB
Clojure libraries known to work with Jolt
Libraries confirmed to load and pass their conformance checks on Jolt. A library
listed here works; some need JOLT_FEATURES including clj (noted below). 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
- reitit-core — data-driven routing; the
reitit.TrieJava class is mirrored by jolt-lang/router.JOLT_FEATURESclj. - 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.implstderr backend - migratus — database migrations over the next.jdbc layer
- malli — data schema validation, on the
malli-app example.
JOLT_FEATURESclj. - 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.
JOLT_FEATURESclj. - tick — date/time over Jolt's
java.time;#time/…literals viatime-literals.JOLT_FEATURESclj. - transit-jolt — Transit (JSON) read/write