5f9cad5908c351e9bbb554f828449ba705ae812a
The --emit-header path previously called parse() which builds the entire program AST in memory before writing the .elh file. For checkout.el (~491 lines with HTML template trees and deep BinOp string-concat chains), this exhausted memory before the header could be written. Fix: replace parse() + emit_header() with scan_fn_sigs_el() + emit_header_from_sigs(). The new path tokenises the source once, then walks the flat token list skipping over function bodies entirely — peak memory is O(tokens) instead of O(whole-program AST). New functions in parser.el: - scan_type_el: reads a type annotation and returns its El source string - scan_params_el: reads (name: Type, ...) and returns El params string - scan_fn_sigs_el: token-level scan that collects El-style fn signatures without building any expression AST nodes New function in compiler.el: - emit_header_from_sigs: writes .elh from scan_fn_sigs_el output Self-hosting check: elc compiled with new elc, diff of outputs is identical (zero difference). Smoke test: elc --emit-header checkout.el produces correct three-entry .elh (previously truncated at two entries due to mid-parse OOM).
Description
The Engram programming language — types as knowledge nodes, quantum-sealed prod target
147 MiB
Releases
5
El SDK (latest)
Latest
Languages
Emacs Lisp
74.6%
C
21.9%
HTML
1.5%
Objective-C
0.6%
Shell
0.6%
Other
0.8%