Chez Phase 2 (inc N): type (jolt-fmm4)
Implement (type x) on the Chez RT (host/chez/natives-meta.ss). Mirrors the seed's core-type: the :type metadata wins when present, a record yields its ns-qualified class-name SYMBOL (user.TyR — no-ns sentinel #f so it = the overlay's (symbol (str t))), everything else a host-taxonomy keyword (:number/:string/:vector/:map/:set/:seq/:fn/…). Total by construction — a non-record value falling through to a crash would read as a divergence, so the cond covers every value type incl. the host wrappers (atom/volatile/regex/var/ transient/uuid -> :jolt/*, a :jolt/type-tagged map like ex-info -> its tag, sorted-set -> :jolt/sorted-set, sorted-map -> :map) and a final :object. Also pin sequential?/seq? on lazy seqs (test/chez/_seqpred.janet): the inc M seq? re-def-var! fix already covers sequential? transitively (sequential? is overlay and delegates to seq?), so no code change — the earlier "still broken" note was wrong, it assumed sequential? was native like seq?. Prelude corpus parity 2000 -> 2002 (the two type cases), floor raised, 0 new divergences. Gate: _type 37/37 + _seqpred 22/22 (both vs build/jolt oracle), emit-test 321/321, full jpm test, conformance 355x3.
This commit is contained in:
parent
fc6551f877
commit
b7158e0690
5 changed files with 218 additions and 4 deletions
|
|
@ -193,8 +193,10 @@
|
|||
# bound-fn*/get-thread-bindings/alter-var-root; var-deref + jolt-var-get chained
|
||||
# onto the stack. Also fixed seq? to recognize a lazy-seq, which unblocked
|
||||
# with-in-str/line-seq) 2000.
|
||||
# jolt-fmm4 ((type x) — :type meta override, record ns-qualified class-name
|
||||
# symbol, total value->taxonomy keyword mapping) 2002.
|
||||
# Strided runs scale down.
|
||||
(def base-floor (scan-number (or (os/getenv "JOLT_CHEZ_PRELUDE_FLOOR") "2000")))
|
||||
(def base-floor (scan-number (or (os/getenv "JOLT_CHEZ_PRELUDE_FLOOR") "2002")))
|
||||
(def floor (if (os/getenv "JOLT_CORPUS_LIMIT") 0 base-floor))
|
||||
(when (or (> (length diverged) 0) (< pass floor))
|
||||
(printf "REGRESSION: pass %d < floor %d or %d new divergence(s)" pass floor (length diverged)))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue