aboutsummaryrefslogtreecommitdiffstats
path: root/README.md
diff options
context:
space:
mode:
authoreunhhu <[email protected]>2026-09-26 22:56:47 +0100
committereunhhu <[email protected]>2026-09-26 22:56:47 +0100
commita51232af741cb952d7deb72f238c583919ababc0 (patch)
tree43b250cb0d76460fb447461e878cce0a65aefc41 /README.md
parentea631f980a029141cd0b4835f35b27cd487ff3ea (diff)
downloadpure-a51232af741cb952d7deb72f238c583919ababc0.tar.gz
pure-a51232af741cb952d7deb72f238c583919ababc0.zip
Show views from the last save's snapshot on connection threads (080)
The owner publishes a snapshot of the saved states after every save, before it hands back the answers; connection threads take the newest one each round and show views from it with a reader app of their own. A read made after a write's answer sees the write, nothing unsaved or undone is ever shown, and reads no longer wait while the owner applies events or syncs. Apps with states always get an owner thread, even with one connection thread. A round's inputs go to the owner first; its views are shown and then answered together (answering each one as it was shown made one thread's 20-row page 8% slower). On the Pi 5, with 8 connections posting durable scores and 56 reading the total, reads went from 10-16k/s at p99 13-29 ms to 107-149k/s at p99 0.6-0.7 ms, and posts stayed in range; axum and drogon, which sync under their lock, read 1.1-1.3k/s at p99 111-156 ms. A snapshot of a changed 1,024-item list costs 1.2 us (65,536 items: 87 us) against a 3-4 ms save.
Diffstat (limited to 'README.md')
-rw-r--r--README.md7
1 files changed, 4 insertions, 3 deletions
diff --git a/README.md b/README.md
index f880a97..868c403 100644
--- a/README.md
+++ b/README.md
@@ -4,9 +4,10 @@
([format v5](docs/design/008-module-format.md)), verified completely before they execute: declared states persist
in Pure's tree store, every event is a transaction, views are pure functions of state. The same spec becomes a
terminal UI, a CLI, spoken sentences and a web page through [Vega](/srv/git/vega.git), and an HTTP service through
-`pure-serve` (views are GETs, inputs are POSTs with JSON bodies; answers are durable). Measurements against axum and
-drogon on a Raspberry Pi 5 are in [075](docs/research/075-http-host-against-axum.md) and
-[077](docs/research/077-apps-as-http-services.md); the status table is [CHECKPOINT.md](CHECKPOINT.md). The text below
+`pure-serve` (views are GETs, inputs are POSTs with JSON bodies; answers are durable; views are read from a snapshot of
+the last save, so reads never wait for a sync). Measurements against axum and drogon on a Raspberry Pi 5 are in
+[075](docs/research/075-http-host-against-axum.md), [077](docs/research/077-apps-as-http-services.md) and
+[080](docs/research/080-snapshot-reads.md); the status table is [CHECKPOINT.md](CHECKPOINT.md). The text below
records the earlier document runtime this grew from.
A standalone native micro runtime being designed as a small operating