aboutsummaryrefslogtreecommitdiffstats
path: root/core/module.h
diff options
context:
space:
mode:
authoreunhhu <[email protected]>2026-10-04 17:39:18 +0100
committereunhhu <[email protected]>2026-10-04 17:39:18 +0100
commit602780a58c3286d6843e8ff89bd7a3093891a7ad (patch)
treefc0e18c28b434314c83904580e160a2ba6f34eac /core/module.h
parente6bd261b845f5b88d454d0ddaf0b11c12a76e25d (diff)
downloadpure-602780a58c3286d6843e8ff89bd7a3093891a7ad.tar.gz
pure-602780a58c3286d6843e8ff89bd7a3093891a7ad.zip
Search an event's keyed lists by a key set and lists by fingers, add by key in one descent, and loop without recursion (020)
- An event's list keyed by a number keeps its keys beside its tree: bits while they are small whole numbers, else an open-addressing table; has() reads only that, and inserts, removes, key changes, their undoing and clears keep it. - Each thread keeps fingers on the last four leaves it read (list id and version must match): reads by position and searches by key that land in them do not descend. - pure_list_add finds a key's place and inserts there in one descent; a stored keyed list's appends take it too, journaled as inserts. - Child searches count over the whole guide; item fields know at load whether they are text; loops run on a stack of loop records, not by recursion; module-list.c builds at -O3. - test-module: the key set and fingers answer as a model at every step (bits to table, removes inside runs, undone changes, clears, shares), and a stored keyed list's adds replay from its journal.
Diffstat (limited to 'core/module.h')
-rw-r--r--core/module.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/core/module.h b/core/module.h
index c5b7ba0..80d4460 100644
--- a/core/module.h
+++ b/core/module.h
@@ -198,7 +198,8 @@ const char *pure_fault_name(PureFault);
/* plan, shape and range are the runtime's, set at load: a fold whose block
* has a form for every instruction that works on a leaf of its list at once
- * runs so (plan), one in a column may be answered for every row from one
+ * runs so (plan; for an item's field, or a keyed list's key, read or set:
+ * whether it is a text), one in a column may be answered for every row from one
* pass over its list (shape: its PureShape + 1), and a fold or a walk whose
* test bounds a keyed list's key reads only the items in bounds (range: its
* PureRange + 1). */