From 531200a6c24842784fad68102878c3ab77391b13 Mon Sep 17 00:00:00 2001 From: eunhhu Date: Sun, 18 Oct 2026 18:25:17 +0100 Subject: Module executor and pure-serve: 027's 4a, a message's rows holding lists: rows whose records hold lists are read, as the message arrives, by stage 3's decoder into the event's lists (value_take into the rows' list), the event beginning with them; the JSON edge reads an object's array as its record's objects, 64 lists deep at most (items_of: an item's lists encoded first and the item moved down over them); the load no longer refuses them; a hole closed: the decoder read past the end where fewer than 4 bytes were left for a length (size - at - 4 wrapped around), unseen while it read only what was stored; unit test nested_rows (three events, four rows not whole changing nothing); check server_trees (300 random forests over HTTP against a Python model walking them in the same order, a require refusing some, a list field not an array, a field the record lacks and 65 lists deep refused, a restart); counts: b30 against b29 within 0.001% but BFS with batches +0.12%, the bank's queries -0.00% to +0.23%; 027's stage 4 planned in six steps (4a to 4f, the counts it starts from, 4b in two commits) and 4a as made; 008 on nested rows --- core/module.h | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'core/module.h') diff --git a/core/module.h b/core/module.h index 15109b6..349c4d2 100644 --- a/core/module.h +++ b/core/module.h @@ -98,9 +98,11 @@ enum { PURE_MODULE_HELD = 32, PURE_HELD_TEXT = 16, PURE_HELD_APPEND = 1 << 8 }; * an empty one), an i64 in its cell, so moves and reads (ITEM_GET) are an * integer's; such lists go as the event or a view's body ends. A list is a * value: storing one in a second cell shares it, and a list shared or bound - * is copied before it changes (so no other value sees the change). Since - * stage 3 a stored or a transient list's records may hold lists too (a - * message's rows not, nor as a key): there the cell holds the value in its + * is copied before it changes (so no other value sees the change). A + * message's rows may hold lists (027's 4a): each comes in as one of the + * event's lists, read from its stored form (below) before the handler runs. + * Since stage 3 a stored or a transient list's records may hold lists too + * (never as a key): there the cell holds the value in its * items' stored form (PURE_CELL_LIST), read into one of the event's lists * as ITEM_GET reads it and written from one as it is set (LIST_APPEND, * LIST_INSERT, ITEM_SET; APPEND_IN reads, appends and writes back), so -- cgit v1.2.3