diff options
| author | eunhhu <[email protected]> | 2026-09-26 07:29:11 +0100 |
|---|---|---|
| committer | eunhhu <[email protected]> | 2026-09-26 07:29:11 +0100 |
| commit | 9c37c5fa0f58eefe517ca0456324f5618a13b87d (patch) | |
| tree | 6174666c8fb4084ff79a26e6f1e1dadfc0c511d0 /CHECKPOINT.md | |
| parent | 46fd0601c89a535a6501b475ff08ae11b3137ea9 (diff) | |
| download | pure-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 'CHECKPOINT.md')
0 files changed, 0 insertions, 0 deletions
