aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Emit Pure module format v5eunhhu2026-09-252-5/+5
| | | | | | | Pure now loads only v5 modules, where a view entry's type is one byte followed by the table it belongs to. Plain views encode as before, so the output changes only in its magic. The view limit follows Pure's to 64.
* Record the input limit of 32 in the language noteseunhhu2026-09-251-1/+1
|
* Add records, lists and indiceseunhhu2026-09-256-61/+589
| | | | | | | | | | | | | | A record declares named number and text fields with defaults. A list of a record is runtime-owned state, and an index of a list always names one of its items: it follows its item across inserts and removes and stops at the ends. Items are read and changed by field (tasks[at].title), appended or inserted as record values whose missing fields take defaults, and removed by index. Using an index of another list is a compile error. examples/tasks.aup matches a Python reference model over 4,800 random steps, including events that fail on an empty list. Replacing it with a module whose record gained and reordered fields keeps every item.
* Emit Pure module format v4eunhhu2026-09-253-4/+4
| | | | | | Pure now loads only v4 modules. The new header counts records, which aup does not declare yet, so the output changes only in its magic.
* Document the text language as implementedeunhhu2026-09-253-5/+23
| | | | | | | Record v0b as complete: which text syntax exists, what is still missing (multi-line strings, formats, graphemes, words), the insertion rule for cursors, and how the text model and parity checks verify it.
* Compile text, cursors and strings to module v3eunhhu2026-09-253-140/+696
| | | | | | | | | | | | | | | | | aup now emits Pure module v3 and adds text states with string initializers, cursors bound to a text, text inputs, string literals with escapes and {interpolation} of numbers and text, cursor distances in chars and lines, .start/.end, insert/remove, name.line(cursor), .chars/.lines/.bytes on text, .chars/.line on cursors, and text(bytes)/bytes(text). Replies and replace accept text as its UTF-8 bytes. Views are numbers or text. Up to 32 inputs. examples/notes.aup is a small editor. make check replays random typing (ASCII, Korean, emoji, combining marks, NUL, newlines), moves and deletions against a Python reference model: 4,800 snapshots of text, cursor, mark and views match. It also checks escapes and number text, 16 new diagnostics, a document loaded into text and saved back, and all earlier parity; the compiler and the Pure executor each pass under ASan/UBSan.
* Compile messages and keyed documents to module v2eunhhu2026-09-258-109/+536
| | | | | | | | | | | | | | | | | | aup now emits Pure module v2 and adds keyed byte collections (state documents: bytes by key), message inputs by key with u32 and a trailing bytes field, on-message handlers, field access, name[key] reads and .bytes sizes, replace(a .. b, value), reply and require, all checked for number/bytes types with file:line:column diagnostics. The document editor and its size-bounded variant are rewritten in aup. make check runs them through pure-edit-module against pure-edit running the original editor.pure programs: 1,280 random show/edit/apply operations, including conflicts, limits, missing documents, budgets and invalid keys, produce byte-identical stdout, stderr and exit codes, and each CLI reads the other's store identically. v0a parity with the workbench engine, 33 diagnostics and generated/damaged programs still pass, also with a sanitizer-built compiler.
* Set the DSL direction and the text modeleunhhu2026-09-251-0/+70
| | | | | | | | | | aup declares connections and leaves storage, transactions and screen models to Pure. Interface vocabulary lives in Vega, an aup library, not in the language. text is one immutable UTF-8 type from a word to a 1 MiB document; positions are cursors bound to a value that stay on character boundaries and follow edits, lengths name their unit, and comparison is exact without silent normalization. Stages v0b-v0d and their acceptance tests are listed.
* Compile v0a programs to verified Pure moduleseunhhu2026-09-2514-1/+1105
| | | | | | | | | | | | | | aup check/build parse states, key inputs, views and handlers (with if/else and else-if), resolve names, generate forward-only stack code and encode a Pure module v1 deterministically. Diagnostics carry file:line:column. make check loads every module with Pure's verifier, checks determinism, 20 diagnostics and accepted forms, replacement by name, 600 generated programs and damaged sources (every emitted module verifies), and replays random event scripts against the workbench Zig engine: 16,667 snapshots across counter, toggle, charge, else-if and fault programs matched, including 921 failed events. The sanitizer-built compiler passes the same checks.
* Charter aup and specify language v0eunhhu2026-09-252-0/+130
aup is the language and toolchain for the Pure runtime, as Java and javac are for the JVM. v0a unifies the workbench scalar dialect (state, key inputs, atomic handlers, views) with the same numeric semantics; v0b drafts byte values and runtime-owned persistent documents to replace the document dialect. Parity with the existing executors is the acceptance test.