From 602780a58c3286d6843e8ff89bd7a3093891a7ad Mon Sep 17 00:00:00 2001 From: eunhhu Date: Sun, 4 Oct 2026 17:39:18 +0100 Subject: 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. --- core/module.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'core/module.h') 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). */ -- cgit v1.2.3