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 --- serve/message-json.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'serve/message-json.h') diff --git a/serve/message-json.h b/serve/message-json.h index ffb1651..45fae92 100644 --- a/serve/message-json.h +++ b/serve/message-json.h @@ -16,14 +16,16 @@ typedef struct { bool seen[PURE_MODULE_FIELDS]; /* A rows field's array of objects is encoded in the stored form of its * list into rows (grown with malloc: the caller frees it), which the - * caller places from rows_base on in the payload, as the table says. */ + * caller places from rows_base on in the payload, as the table says. A + * list field of an object is an array of its record's objects so, 64 + * lists deep at most. */ unsigned char *rows; size_t rows_size, rows_capacity, rows_base; } PureJsonMessage; /* The object at json[*at] (its opening brace), *at moved past it: NULL, or * what is wrong ("json", "json_field": unknown or given twice, "json_type", - * "limit": rows past what a payload holds, "memory"). */ + * "limit": rows past what a payload holds or 64 lists deep, "memory"). */ const char *pure_json_message(PureJsonMessage *, unsigned char *json, size_t size, size_t *at); size_t pure_json_space(const unsigned char *json, size_t at, size_t size); /* A fixed field's value from its text (a query value or a JSON value) into -- cgit v1.2.3