Everything reitit-core needs to load unmodified from git under :clj features: - The baked binary now re-reads JOLT_FEATURES at startup (like JOLT_PATH). reader-features-set! runs at module load = BUILD time for a binary, so a process opting into :clj (to read a lib's :clj branches) was ignored, and unmatched #?(...) forms silently spliced to nothing — defn of a fn with an empty arglist, hence the cryptic index errors. - (get s i) indexes a string and returns the char, as in Clojure (nth did; get returned nil). reitit's path parser is (get path i)-based — without this every route read as static. - Class-shim registration exposed to Clojure: __register-class-statics! / __register-class-methods! / __register-class-ctor!, so a library can mirror a Java class jolt doesn't ship (the reitit.Trie mirror lives in jolt-lang/ router on top of these). - Java surface reitit's :clj branches call: .getMessage (on exceptions and strings) and a small universal object-method set, .intern, java.util.HashMap (a mutable map wrapper). Plus defprotocol already took keyword options. Gate green; clojure-test-suite 4715 -> 4718 (the get-on-strings fix).
22 lines
1.3 KiB
Markdown
22 lines
1.3 KiB
Markdown
# 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](https://github.com/jolt-lang/examples/tree/main/ring-app)).
|
|
|
|
* [config](https://github.com/yogthos/config)
|
|
* [Selmer](https://github.com/yogthos/Selmer)
|
|
* [medley](https://github.com/weavejester/medley)
|
|
* [cuerdas](https://github.com/funcool/cuerdas)
|
|
* [ring-core](https://github.com/ring-clojure/ring) — via `:deps/root "ring-core"`,
|
|
on the [ring-app example](https://github.com/jolt-lang/examples/tree/main/ring-app)'s
|
|
spork/http adapter
|
|
* [ring-codec](https://github.com/ring-clojure/ring-codec)
|
|
* [reitit-core](https://github.com/metosin/reitit) — data-driven routing; the
|
|
reitit.Trie Java class is mirrored in Clojure by
|
|
[jolt-lang/router](https://github.com/jolt-lang/router). Load with
|
|
`JOLT_FEATURES` including `clj`.
|
|
* [honeysql](https://github.com/seancorfield/honeysql) — full formatter + helpers
|
|
(select/insert/update/delete/joins/:inline), loaded unmodified from git
|
|
* [clojure.jdbc](https://github.com/yogthos/clojure.jdbc) — as [jolt-lang/db](https://github.com/jolt-lang/db)'s
|
|
`jdbc.core`, reimplemented over janet sqlite3/pq drivers (SQLite + PostgreSQL)
|