Tree-shake: count #'x references; multi-app soundness smoke
Two things, both from studying Stalin's closed-world DCE: 1. Soundness fix: dce-collect-refs now counts a :the-var (#'x / (var x)) reference, not just a :var. Stalin's rule is that ANY reference — value position, not only a direct call — keeps the target live; a var referenced as #'x would otherwise be wrongly dropped. (My :var collection already covered value-position refs; this closes the the-var hole.) 2. host/chez/tree-shake-smoke.sh (make shakesmoke): builds example apps default vs --tree-shake and requires identical output — the real risk is shaking a binary that pulled libraries via deps.edn. Covers markdown/malli/commonmark/hiccup (git-lib apps). All produce byte-identical output shaken vs not, and drop ~0.8-1MB (malli 10.0MB -> 9.0MB) from the compiler-drop. Slow; not in the default gate. Skips without the examples repo.
This commit is contained in:
parent
709d152a1e
commit
e0c1564ff9
3 changed files with 80 additions and 6 deletions
8
Makefile
8
Makefile
|
|
@ -4,7 +4,7 @@
|
|||
# build step. `make test` is the full gate. `make remint` rebuilds the seed after a
|
||||
# source change.
|
||||
|
||||
.PHONY: test ci values corpus unit smoke buildsmoke selfhost sci certify ffi transient infer directlink numeric inline remint
|
||||
.PHONY: test ci values corpus unit smoke buildsmoke selfhost sci certify ffi transient infer directlink numeric inline shakesmoke remint
|
||||
|
||||
# Full gate (dev machine). Includes the self-host byte-fixpoint, which only holds
|
||||
# on the same Chez that minted the seed.
|
||||
|
|
@ -77,6 +77,12 @@ numeric:
|
|||
inline:
|
||||
@chez --script test/chez/inline-test.ss
|
||||
|
||||
# Tree-shake soundness: build example apps (incl. deps.edn git-lib apps) default vs
|
||||
# --tree-shake and require identical output. Slow (two builds per app); not in the
|
||||
# default gate. Skips without the examples repo / Chez kernel dev files.
|
||||
shakesmoke:
|
||||
@sh host/chez/tree-shake-smoke.sh
|
||||
|
||||
# JVM oracle: certify the corpus against reference Clojure. Skips if clojure absent.
|
||||
certify:
|
||||
@if command -v clojure >/dev/null 2>&1; then \
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue