aboutsummaryrefslogtreecommitdiffstats
path: root/docs/research/011-direct-presentation.md
diff options
context:
space:
mode:
authoreunhhu <[email protected]>2026-09-26 07:29:11 +0100
committereunhhu <[email protected]>2026-09-26 07:29:11 +0100
commit9c37c5fa0f58eefe517ca0456324f5618a13b87d (patch)
tree6174666c8fb4084ff79a26e6f1e1dadfc0c511d0 /docs/research/011-direct-presentation.md
parent46fd0601c89a535a6501b475ff08ae11b3137ea9 (diff)
downloadpure-9c37c5fa0f58eefe517ca0456324f5618a13b87d.tar.gz
pure-9c37c5fa0f58eefe517ca0456324f5618a13b87d.zip
Compress the module executor's paths
The executor shrinks from 49.8 to 42.2 KB of -O2 text (module.c 34.0 to 27.0 KB) with the module format and API unchanged: - The verifier reads its rules from the signature table: what each opcode's argument names, and which text or list it works on. Cursor and index operands must belong to that text or list and so does a pushed one; other values belong to nothing, so a value that merely came from a text no longer blocks a join. The loader and verifier fail through one path. - The interpreter advances as it fetches and leaves through two exits: a stated fault, or a change the data refused. - Key, text and message events take one path; a message brings its base revision and key. Starting an app opens its module over none, the path replacing takes, so every new state starts from its stored value. - Paths that run once per module or app are marked cold and built for size; event paths stay built for speed (small GETs: 128k/s, as before).
Diffstat (limited to 'docs/research/011-direct-presentation.md')
0 files changed, 0 insertions, 0 deletions