An AOT-compiled app only needs the analyzer/back end at runtime to compile from source — eval / load-string / load-file. Macros are expanded at build time and a require of a baked namespace no-ops, so a closed app that never compiles at runtime carries the compiler image (~0.8MB) as dead weight. Under --tree-shake, when reachability is trustworthy (no bail) and no reachable code references eval/load-string/load-file/load-reader/load, omit host/chez/seed/image.ss + compile-eval.ss from the runtime manifest. bld-tree-shake returns the flag alongside the shaken forms; bld-emit-runtime filters the manifest. Measured: build-app 9.84MB -> 9.05MB, still runs. Safety verified: an app that evals keeps the compiler (eval is a bail + compile ref) and eval works at runtime. build-smoke asserts the compiler is gone in the no-eval app; full make test green. |
||
|---|---|---|
| .. | ||
| chez | ||