Fixes space leak by switching to objects
The integer-arena approach (parallel global arrays) never freed nodes, causing 6GB+ memory usage when running the self-hosted kernel. PHP arrays don't shrink and we have no GC for them. - Replace int-arena with plain Node objects so PHP's refcounting GC reclaims unreachable subtrees automatically. - Hash-cons Stem/Fork nodes to collapse duplicate immutable subtrees. - Cache ofNumber(0..255) to avoid re-creating byte trees. - Eliminate indirection (tag 4) nodes entirely; projection rules now eagerly reduce and copy tag/a/b into the original App node. - Remove all deref() loops — every node is exactly what it says. Memory: 6GB+ → 24MB for `id "hello"` with runArboricxToString kernel
This commit is contained in:
BIN
test/fixtures/append.arboricx
vendored
Normal file
BIN
test/fixtures/append.arboricx
vendored
Normal file
Binary file not shown.
Reference in New Issue
Block a user