core: compiled macro expansion in every mode (+123 suite passes)
Macros are ordinary compiled fns in Clojure's model; compile mode has had that since the staged bootstrap, but interpret mode — the conformance battery's default — kept interpreted expanders, so every distinct (and ...)/ (cond ...) call form, and every fresh form produced by a recursive expansion, ran an interpreted closure. ensure-macros-compiled! now runs in every mode: interpret-mode init loads the tiers fast-interpreted, then one pass at the end builds the analyzer (which itself stays interpreted there) and compiles all stashed expanders; user defmacros after init compile too. The new :compile-macros? opt (JOLT_INTERPRET_MACROS=1) preserves the fully- interpreted oracle, and joins the ctx-image cache key. Battery: 4700 pass / 90 clean files / 7 timeouts, from 4577 / 87 / 9 — two macro-heavy files stopped timing out and 149 more assertions execute. The compiled-expander delta proper is +67 passes (oracle mode on the same tree measures 4633). Baselines raised 4540->4660, clean 86->88. Interpret init grows 0.12s -> 1.12s for the analyzer build; init-cached amortizes it to ~5ms per process. New macro-expansion-test pins: expanders compiled in interpret mode (core + post-init user defmacros), uncompilable bodies fall back interpreted and still work, compile mode unchanged, oracle opt-out honored. Follow-up filed (jolt-4j3): the same staged-recompile treatment for early overlay DEFNS, which is what still pins keys/vals/empty? to the seed.
This commit is contained in:
parent
1ec2fa4adf
commit
dc1f6d9755
5 changed files with 101 additions and 10 deletions
|
|
@ -43,9 +43,9 @@
|
|||
# Raised 4004 -> 4034 / clean 66 -> 67 porting partition-all + repeatedly to the
|
||||
# overlay, which required fixing two leniencies (a char is not callable; take
|
||||
# validates its count) — correct beyond those fns, so the suite rose broadly.
|
||||
(def baseline-pass 4540)
|
||||
(def baseline-pass 4660)
|
||||
# A file is "clean" when it ran with zero failures AND zero errors.
|
||||
(def baseline-clean-files 86)
|
||||
(def baseline-clean-files 88)
|
||||
# Per-file wall-clock budget (seconds). Normal files finish in well under 1s, so
|
||||
# this normally only fires on genuinely-infinite-sequence hangs. It's an env var
|
||||
# (JOLT_SUITE_TIMEOUT) so CI — whose runners are slower than a dev machine — can
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue