host: scoped reader-feature toggle, clojure.template, java.util.Locale alias

Follow-ups for running reitit alongside default-feature libraries in one app:

- __reader-features / __reader-features-set! exposed to Clojure so a namespace
  can load a clj-targeted lib (reitit, under :clj) WITHOUT forcing the whole
  process to :clj — set features, require, restore. Honeysql/selmer/ring stay
  on the default set they were validated under. (jolt vector args coerced to a
  janet array — janet map over a pvec iterates keys otherwise.)

- clojure.template added to the stdlib (verbatim, pure Clojure over
  clojure.walk) — honeysql's :clj branch requires it.

- java.util.Locale registered as a qualified alias (+ ROOT) for selmer's :clj
  Locale/US use.
This commit is contained in:
Yogthos 2026-06-12 01:22:28 -04:00
parent 6ab76efd19
commit f3a9b9ab1f
4 changed files with 64 additions and 4 deletions

View file

@ -212,3 +212,14 @@
"(let [m (HashMap. {:a 1 :b 2})] (.get m :b))"]
["HashMap put + size" "2"
"(let [m (HashMap. {})] (.put m :x 1) (.put m :y 2) (.size m))"])
# Reader-feature toggle exposed to Clojure (scoped clj-lib loading): a
# namespace can load a clj-targeted library under :clj without forcing the
# whole process — set features, require, restore.
(defspec "host-interop / reader-feature toggle"
["features default to jolt+default" "true"
"(contains? (set (__reader-features)) \"jolt\")"]
["set + read back" "true"
"(do (def prev (__reader-features)) (__reader-features-set! [\"clj\" \"jolt\" \"default\"]) (def r (contains? (set (__reader-features)) \"clj\")) (__reader-features-set! prev) r)"]
["restore returns to default" "false"
"(do (def prev (__reader-features)) (__reader-features-set! [\"clj\"]) (__reader-features-set! prev) (contains? (set (__reader-features)) \"clj\"))"])