core.match: regex + array patterns (full support); library-conformance directive

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.
This commit is contained in:
Yogthos 2026-06-25 00:45:29 -04:00
parent 5737a39b7c
commit 67e642bdfb
13 changed files with 77 additions and 83 deletions

View file

@ -100,16 +100,18 @@ Issue tracking and design notes live in beads (`bd prime`, `bd memories`).
## Library conformance
When a real Clojure library's tests start passing (in full or substantially) on
Jolt, treat the docs/specs/tests update as PART OF THE SAME WORK — not a
follow-up. In the change that lands the fixes:
When a real Clojure library's tests pass on Jolt, treat the docs/specs/tests
update as PART OF THE SAME WORK — not a follow-up. In the change that lands the
fixes:
- **Add JVM-certified corpus rows** (`test/chez/corpus.edn`) for every general
gap the library shook out — the corpus is the executable contract. Verify each
via `make test`'s certify step.
- **List the library** in BOTH the in-repo `docs/libraries.md` AND the website
(`jolt-lang.github.io`, `resources/md/libraries.md`). State what works and call
out any remaining gaps honestly (with the test tally if there is a suite).
(`jolt-lang.github.io`, `resources/md/libraries.md`) — one line (name + a short
description + any load note like `JOLT_FEATURES` `clj`). Do NOT enumerate what
works or paste test tallies; a listed library is assumed to work fully, so only
list it once it does.
- **Update the affected prose docs and RFCs**`docs/host-interop.md` for new
interop surface, `docs/spec/*.md` / `docs/rfc/*` for semantics, `docs/MODULES.md`
if files moved.