<feed xmlns='http://www.w3.org/2005/Atom'>
<title>pure/CHECKPOINT.md, branch master</title>
<subtitle>Verified execution runtime unifying state, persistence, and replication.
</subtitle>
<id>http://git.yeowoo.org/pure/atom?h=master</id>
<link rel='self' href='http://git.yeowoo.org/pure/atom?h=master'/>
<link rel='alternate' type='text/html' href='http://git.yeowoo.org/pure/'/>
<updated>2026-10-19T09:08:53Z</updated>
<entry>
<title>CHECKPOINT: the evidence table rewritten on the app model as it is (aup, Pure, Vega; the messenger, TPC-C, 140's specs, the host, links and store measured), what is verified and what is not apart, each unverified one under 029's order; the document app's table and notes kept below as its time's record; the gaps section points to 029</title>
<updated>2026-10-19T09:08:53Z</updated>
<author>
<name>eunhhu</name>
<email>necpition205@gmail.com</email>
</author>
<published>2026-10-19T09:08:53Z</published>
<link rel='alternate' type='text/html' href='http://git.yeowoo.org/pure/commit/?id=dce9dfc09b5a4f16c023e3e94307cf5751fbb7e7'/>
<id>urn:sha1:dce9dfc09b5a4f16c023e3e94307cf5751fbb7e7</id>
<content type='text'>
</content>
</entry>
<entry>
<title>115: the modules replaced are freed (0 bytes a change over 4,000, was 19,284), how, what checks it (586 of 600 loads at a freed address, answers right; ASan clean), what a mutant comparing addresses showed (nothing: requests hold their module and freeing waits a pass), the push group woken again, the bindings left (24 B an input a module); the bank's queries within 0.4% (s50, s51); CHECKPOINT's remaining list without it</title>
<updated>2026-10-19T09:01:53Z</updated>
<author>
<name>eunhhu</name>
<email>necpition205@gmail.com</email>
</author>
<published>2026-10-19T09:01:53Z</published>
<link rel='alternate' type='text/html' href='http://git.yeowoo.org/pure/commit/?id=de1c3dd822c7bd6ae01c510a53372445b1b993ea'/>
<id>urn:sha1:de1c3dd822c7bd6ae01c510a53372445b1b993ea</id>
<content type='text'>
</content>
</entry>
<entry>
<title>CHECKPOINT: UAX #14 against Vega's C from one run (6,423 against 35.1 ns, 183x), not two runs' numbers</title>
<updated>2026-10-19T07:30:50Z</updated>
<author>
<name>eunhhu</name>
<email>necpition205@gmail.com</email>
</author>
<published>2026-10-19T07:30:50Z</published>
<link rel='alternate' type='text/html' href='http://git.yeowoo.org/pure/commit/?id=31ef28609c6135058ffa0645fed9edd75c1086c7'/>
<id>urn:sha1:31ef28609c6135058ffa0645fed9edd75c1086c7</id>
<content type='text'>
</content>
</entry>
<entry>
<title>CHECKPOINT: the gaps to 1.0 as they stand after 027 and 140 (the contract's rebuild left: the core's three gaps, the one-shot timer and lending list values as decision points, the work unit, the fixed limits, no frozen spec; byte and text work 61-186x C; aup 1.47-2.04x Python's lines; three machines last seen together 10-05; one entry point, packages, hosts beyond Linux, a C ABI; the evidence table still the document app's); the direction row's frictions and list values</title>
<updated>2026-10-19T07:21:45Z</updated>
<author>
<name>eunhhu</name>
<email>necpition205@gmail.com</email>
</author>
<published>2026-10-19T07:21:45Z</published>
<link rel='alternate' type='text/html' href='http://git.yeowoo.org/pure/commit/?id=e64b609d1f3b6ef314002156f3b882e10650f9fb'/>
<id>urn:sha1:e64b609d1f3b6ef314002156f3b882e10650f9fb</id>
<content type='text'>
</content>
</entry>
<entry>
<title>140's 8, box layout, written in aup with no new opcode (aup's examples/layout.aup: a subset of CSS Flexbox 1 written down first, one line, row or column, padding, gap, six justify-content, four align-items, grow and shrink with 9.7's loop, cross sizes stretched, nothing sized by content): 2,000 random trees (29,388 nodes; 7,659 items frozen at their padding by the loop) are Taffy 0.15's within 0.01 (layout_taffy, built by cargo; the worst 8.3e-5) and layout.py's bit for bit on the three paths, the paths the same; the single-pass subset first tried refused 66% of trees, so the loop came in; Taffy given min sizes equal to the padding (given 0 it floors at 0 while resolving lengths, where 9.7 floors the content box), the reference adding from the left (sum compensates since Python 3.12); module_specs in make check: 100 trees (tests/specs/layout); bars: 116 lines against Python's 54, 4,754 ns a node, Taffy's 644 (7.4x), pure Python 5,396 (Pure 1.14x faster), 1,494 instructions a node (9.7's loop 44%); four frictions; aup's rows read by position no longer copy (99,067 ns a node before); the suite table's row 8; CHECKPOINT's direction row</title>
<updated>2026-10-19T05:18:49Z</updated>
<author>
<name>eunhhu</name>
<email>necpition205@gmail.com</email>
</author>
<published>2026-10-19T05:18:49Z</published>
<link rel='alternate' type='text/html' href='http://git.yeowoo.org/pure/commit/?id=6215b1177e377b512aaa1296faa6311f809135f2'/>
<id>urn:sha1:6215b1177e377b512aaa1296faa6311f809135f2</id>
<content type='text'>
</content>
</entry>
<entry>
<title>140's 5, line breaking (UAX #14, Unicode 16.0), written in aup with no new opcode (aup's examples/linebreak.aup, the properties as data: 2,787 ranges from the UCD 16.0 Vega's text is frozen at, built by Vega's text/unicode.py, loaded once): every line of LineBreakTest.txt (16,672) and 2,000 random lines (their boundaries as linebreak.py, the Python reference, which passes the test whole, works them out) right on the three paths, the paths' outputs the same; module_specs in make check: the ranges and the lines kept in tests/specs/linebreak (derived from the UCD, the Unicode License v3's notice), run by pure-run --views; bars: written, no workaround (three frictions: hex literals always i64, number no let's name, a let's list one a line), 176 lines against Python's 99, 6,920 ns a code point against Vega's C 34.7 (199x), pure Python 2,523 (Pure 2.7x slower), 1,774 instructions a code point (setup 260, the ranges' binary search 360, decide about 1,150 a boundary); the decisions before 8 (box layout: Taffy can be fetched by cargo, a subset to choose first; as a handler) and 10 (a one-shot timer is a core primitive one spec needs: noted, not made); the suite table's row 5; CHECKPOINT's direction row</title>
<updated>2026-10-19T04:42:00Z</updated>
<author>
<name>eunhhu</name>
<email>necpition205@gmail.com</email>
</author>
<published>2026-10-19T04:42:00Z</published>
<link rel='alternate' type='text/html' href='http://git.yeowoo.org/pure/commit/?id=c545227f2461e92afc38a0e1317a288e8c653cc6'/>
<id>urn:sha1:c545227f2461e92afc38a0e1317a288e8c653cc6</id>
<content type='text'>
</content>
</entry>
<entry>
<title>140's 9, HTTP/1.1 requests a packet at a time (RFC 9112), written in aup with no new opcode (aup's examples/http.aup: each packet an event, its bytes added to what the last left, every request they complete read, h11's grammar): 200 streams (132,623 bytes, 578 requests: methods, targets, HTTP/1.1 and a last 1.0, mixed-case names, spaces around values, Content-Length and chunked bodies with extensions and trailers, some ending in part of a request) fed whole, at random boundaries and a byte at a time (the 50 under 400 bytes), the requests read h11's on every cut and the bytes left those after them, the three paths' outputs the same bytes; 200 damaged streams fed whole as http_requests.py (the Python reference) reads them, 35 refused by both and 165 the same; module_specs in make check: 80 streams and their reading (tests/specs/http, no h11 at check time) whole on the three paths and cut 88 ways; bars: written, three workarounds (the bytes left in a list of one: bytes are no state; names and codings compared as text: bytes have no ==; field lines returned in a record: a fn returns no bare list), 159 lines against Python's 79, 278 ns a byte against the same algorithm in C 3.27 (85x), pure Python 67 (its bytes methods are C: Pure 4.1x slower), h11 284; 140's decision point after 027: bytes alone as a state (inflate, HTTP) and bytes' == (DNS, HTTP) now each met by two written specs, so the two-spec rule lets them into the core (their design not begun); a view calling a block fn met by one (DNS); aup's three its compiler's; CHECKPOINT's direction row</title>
<updated>2026-10-19T02:02:51Z</updated>
<author>
<name>eunhhu</name>
<email>necpition205@gmail.com</email>
</author>
<published>2026-10-19T02:02:51Z</published>
<link rel='alternate' type='text/html' href='http://git.yeowoo.org/pure/commit/?id=5842b26e8353a38192afb1ebe4c08809da48dbf4'/>
<id>urn:sha1:5842b26e8353a38192afb1ebe4c08809da48dbf4</id>
<content type='text'>
</content>
</entry>
<entry>
<title>140's 1, DNS messages (RFC 1035), written in aup with no new opcode (aup's examples/dns.aup: a message read by a handler into its header and records, names uncompressed in their wire form, those in NS, CNAME, PTR, MX, SOA and SRV data too, each pointer pointing before the last; written back by the view wire, the owners compressed): 400 messages dnspython made (148,582 bytes, 3,466 records: A, AAAA, NS, CNAME, PTR, MX, SOA, TXT, SRV, EDNS, shared suffixes, 63-byte labels, bytes above 0x7f, 245-byte names) read on the three paths as dnspython reads them (each section's records as a set) and written back to bytes dnspython reads as the same message, the paths' outputs the same bytes; 300 damaged messages as dns_message.py (the Python reference) reads them, 185 refused by both and 115 the same records and bytes; module_specs in make check: 200 of those messages (tests/specs/dns, no dnspython at check time) read on the three paths, written back and read again to the same state and bytes, 23 cut ones failing; dnspython shuffles a set's records unless want_shuffle is off, and merges a set's differing TTLs to the least; bars: written, two workarounds both the core's (bytes have no ==: TEXT_COMPARE takes text alone; a view calls no block fn: CALL is in handlers and functions alone), 115 lines against Python's 72, 244 ns a message byte read and written against the same algorithm in C 3.65 (67x), glibc's resolver reading alone 4.4, pure Python 131 (Pure 1.9x slower), 218 compiled; 63.6 instructions a byte, reading 42%, writing 58%; CHECKPOINT's direction row</title>
<updated>2026-10-19T01:48:58Z</updated>
<author>
<name>eunhhu</name>
<email>necpition205@gmail.com</email>
</author>
<published>2026-10-19T01:48:58Z</published>
<link rel='alternate' type='text/html' href='http://git.yeowoo.org/pure/commit/?id=7d41626b1c8f343b5b59a35ea3bce6570b996213'/>
<id>urn:sha1:7d41626b1c8f343b5b59a35ea3bce6570b996213</id>
<content type='text'>
</content>
</entry>
<entry>
<title>140's 3, inflate (RFC 1951), written in aup with no new opcode (aup's examples/inflate.aup, codes read a bit at a time from canonical counts as zlib's puff.c): 640 streams zlib made (6,488,480 bytes: random bytes, words, runs and repeats 32,768 back; levels 0, 1, 6, 9 and zlib's five strategies, so stored, fixed and dynamic blocks) inflated to the original's bytes on the three paths, the paths' outputs the same bytes; 240 damaged streams (cut, a bit flipped) read as inflate.py (the Python reference) reads them, 165 refused by both and 75 the same bytes; module_specs in make check: 144 streams on the three paths, 21 cut ones failing and leaving the last bytes; bars: written (no new opcode), three workarounds (lists passed in records: a fn takes no list; the output a list of one: a bytes value is no state; a block's tables built in a fn: a let's list lives in the handler's own block), 132 lines against Python's 81, 1,152 ns an output byte against the same algorithm in C 10.7 (108x) and zlib 3.5 (329x), pure Python 1,214; 191 instructions a byte (a block fn called for each bit was 246 and 1,553 ns: small block fns' inlining is 2c's leftover); the four timing tools' message calls fixed for 4b's API (no keys); CHECKPOINT's direction row</title>
<updated>2026-10-19T01:28:34Z</updated>
<author>
<name>eunhhu</name>
<email>necpition205@gmail.com</email>
</author>
<published>2026-10-19T01:28:34Z</published>
<link rel='alternate' type='text/html' href='http://git.yeowoo.org/pure/commit/?id=ca214af2684b3c6e6982d1fe8be4e7ecc0849b00'/>
<id>urn:sha1:ca214af2684b3c6e6982d1fe8be4e7ecc0849b00</id>
<content type='text'>
</content>
</entry>
<entry>
<title>027's stage 5 closed: two numbers (number, binary64, the default of literals and of counts; i64 the exact integers, bits and money), / a number's division and // the floored quotient (FLOORDIV, 95 opcodes now 96), an i64 sum exact, money i64 minor units shown by .Nd, a replace and stored values moved when exact; the bar: TPC-C's money and rates integers in Pure and SQLite alike, every row of every table exactly the same after 20,000 transactions; core 22,766 lines to 22,791, serve.c 5,058 as it was, aup's compile.c 5,720 to 5,726; counts: b45 against stage 4's end (b42) within 0.04% on all five works; the bank's queries (s42 and s45 in turns, six each) per_branch -0.58%, in_credit +0.56%, ranks +0.20%, the rest within 0.01%, the seven answers the same bytes; TPC-C in RAM (W=1, 64 terminals, 20 s, in turns, three each): s42 on its own app (money numbers) 46,092 transactions a second, s42 on stage 5's (money i64) 47,303, s45 on it 47,287: the runtime the same (-0.03%), the app 2.6% faster with i64 money (the server's CPU a transaction 42.3 to 39.6-39.8 us, not taken apart), new-order p99 3,584 to 3,456 us; 027's status: the five stages made; CHECKPOINT's direction row through stage 5</title>
<updated>2026-10-19T01:07:33Z</updated>
<author>
<name>eunhhu</name>
<email>necpition205@gmail.com</email>
</author>
<published>2026-10-19T01:07:33Z</published>
<link rel='alternate' type='text/html' href='http://git.yeowoo.org/pure/commit/?id=81be688cc6fdfa52633b936a9b8793782b6f5acf'/>
<id>urn:sha1:81be688cc6fdfa52633b936a9b8793782b6f5acf</id>
<content type='text'>
</content>
</entry>
</feed>
