diff options
| author | eunhhu <[email protected]> | 2026-09-26 22:56:32 +0100 |
|---|---|---|
| committer | eunhhu <[email protected]> | 2026-09-26 22:56:32 +0100 |
| commit | 42021a500d19dbe091075338d1a621498a81f167 (patch) | |
| tree | ee3e2df5f0d1ba20ef5d681bf67a148d8c896b03 /prototypes/workbench/qa-shared-rules.js | |
| parent | d2adae5deacc1545cd5dbdfcc5b80697c91dac09 (diff) | |
| download | pure-42021a500d19dbe091075338d1a621498a81f167.tar.gz pure-42021a500d19dbe091075338d1a621498a81f167.zip | |
Snapshot an app's saved states for readers on other threads
Right after a save, pure_app_snapshot makes a read-only snapshot of the
saved states: numbers are copied, text states are frozen drafts that
share the store mapping (pure_draft_freeze, no copy), and lists are
copies of their item pointers that share the items. An unchanged list
shares the last snapshot's copy. pure_app_read binds a reader app on
another thread to a snapshot so the existing view functions read it.
A shared item never changes again: a list stamps each item with its
share count, copies a shared item it changes, and retires shared items
it lets go instead of freeing them. Snapshots form a chain that goes
oldest first, and items retired while a snapshot was the newest go
with it. References are atomic and may be released on any thread.
test-module checks that each snapshot equals the app, that kept
snapshots stay as made through changes, removals, a module switch, the
app stopping and the store closing, that a failed save's snapshot
equals the one before, and that two threads read the newest snapshots
while the app goes on (also under ASan, UBSan and LeakSanitizer).
Diffstat (limited to 'prototypes/workbench/qa-shared-rules.js')
0 files changed, 0 insertions, 0 deletions
