aboutsummaryrefslogtreecommitdiffstats
path: root/store
Commit message (Collapse)AuthorAgeFilesLines
* Write list images a chunk at a time, and keep the log within the lists' sizeeunhhu2026-09-282-16/+38
|
* Keep lists as images and a log of their changes, checkpointed off the ownereunhhu2026-09-281-0/+2
|
* Log an app's saves in reused segments and write list images whole beside the ↵eunhhu2026-09-282-0/+807
| | | | store
* Share the store's digest between its fileseunhhu2026-09-282-70/+80
|
* Let a runtime-owned state grow past the document limiteunhhu2026-09-271-2/+8
| | | | | | | | | A list's stored form is one value in the tree store, so the limit on a document (1.38 MiB, what a host carries whole as an HTTP body) capped a table at about 51,000 rows of 28 bytes. A value the runtime owns, a state (a key starting with '.') or a draft without a key, may now grow to 1 GiB; documents keep their limit. The store's format is unchanged: its trees already reach far past either.
* Give a compacted file the zeros of its whole cycle (085)eunhhu2026-09-272-7/+63
| | | | | | | | | | | | | | | | Commits grew the tree store's tail 256 KiB at a time, each growth a sync that also committed the ext4 journal for the new size and blocks. A file installed by compaction now carries written zeros up to where the next compaction will come (4 x live + slack, plus a commit's margin), capped at the size of the file it replaces, so a store never takes more space than before and shrinks when its live data does. The cycle's commits then only overwrite blocks the file has. Store commits: 317.5 -> 385.5 a second, ext4 journal commits 109 -> 45 for 4,000 commits; durable app posts +5.3%, their p99 the same within this SD card's noise. The new cycles test keeps sizes still between compactions once the live data is whole, and shows the file shrinking with it.
* Lay Pure out as a core with the parts selected around iteunhhu2026-09-272-0/+2987
The app model, the tree store and the HTTP host lived in prototypes/connections among the earlier document runtime, the store was known only by its format's name, and Vega compiled six Pure sources by path. Now, as the README's principle has it: core/ runtime, flow and the app model (module*.c), with what the core asks of storage (state.h, store.h) store/ the tree store (PURETRE3, PUREREC1) serve/ pure-serve: HTTP host, outbound delivery, JSON in place cli/ pure-run, pure-edit-module A top-level make builds libpure.a (app model and store, for hosts to link) and the hosts; make check runs the store's and the app model's tests. The earlier runtime still builds from prototypes/connections against core/ and store/ (check, check-tree and check-core pass). Design 009 records the rule: parts by role behind libraries; git repositories split by coupling, so the store stays here while its contract moves with the core, and Vega stays apart.