Adds spec/conformance coverage for everything landed enabling migratus:
- conformance corpus (runs interpret/compile/self-host): def 3-arg docstring,
def/defn ^{:map} name meta, defmacro arity-clause + docstring, defmulti
docstring, assoc-nil/assoc-in real maps, try multi-body + finally-on-success,
current-ns restore after a caught throw, cross-ns methods visibility.
- spec suites: host-interop (exception ctors, Character/Thread/Long, Timestamp/
SimpleDateFormat, java.io.File model + File-aware file-seq, clojure.tools.logging),
regex (Pattern statics + MULTILINE + quote, String .matches/.replaceAll/
.replaceFirst), maps (assoc on nil), multimethods (defmulti docstring +
value-based methods/get-method), macros (defmacro arity-clause + name meta).
Rewrote clojure.tools.logging/spy as a single variadic arity (jolt defmacro
takes only the first clause of a multi-arity macro — jolt-q8l).
docs/libraries.md: add migratus and the next.jdbc compatibility layer, with the
janet-lang/sqlite3 int64 caveat for 14-digit timestamp ids.
Full gate green; conformance 350/350 x3 modes.
2 KiB
2 KiB
Clojure libraries known to work with Jolt
Libraries confirmed to load and pass their conformance checks on Jolt
(see test/integration/deps-conformance-test.janet and the
ring-app example).
- config
- Selmer
- medley
- cuerdas
- ring-core — via
:deps/root "ring-core", on the ring-app example's spork/http adapter - ring-codec
- reitit-core — data-driven routing; the
reitit.Trie Java class is mirrored in Clojure by
jolt-lang/router. Load with
JOLT_FEATURESincludingclj. - honeysql — full formatter + helpers (select/insert/update/delete/joins/:inline), loaded unmodified from git
- clojure.jdbc — as jolt-lang/db's
jdbc.core, reimplemented over janet sqlite3/pq drivers (SQLite + PostgreSQL) - next.jdbc — a compatibility layer in
jolt-lang/db (
next.jdbc,next.jdbc.sql,next.jdbc.prepare,next.jdbc.transaction) overjdbc.core, for libraries that target the next.jdbc API - migratus — database migrations; loads
unmodified and runs filesystem SQL/EDN migrations against SQLite through the
next.jdbc layer above.
migrate/rollbackround-trip end to end. Caveat: migration ids are 14-digit timestamps, and the janet-lang/sqlite3 driver currently truncates INTEGER columns to 32 bits, so completion tracking needs the one-line upstream fix (sqlite3_column_int64); ids under 2^31 work as is.