<feed xmlns='http://www.w3.org/2005/Atom'>
<title>aup/docs/design/001-language-v0.md, branch master</title>
<subtitle>Declarative systems language and compiler targeting verified Pure modules.
</subtitle>
<id>http://git.yeowoo.org/aup/atom?h=master</id>
<link rel='self' href='http://git.yeowoo.org/aup/atom?h=master'/>
<link rel='alternate' type='text/html' href='http://git.yeowoo.org/aup/'/>
<updated>2026-10-04T13:43:11Z</updated>
<entry>
<title>Give a view a body that computes and returns its value (Pure 018)</title>
<updated>2026-10-04T13:43:11Z</updated>
<author>
<name>eunhhu</name>
<email>necpition205@gmail.com</email>
</author>
<published>2026-10-04T13:43:11Z</published>
<link rel='alternate' type='text/html' href='http://git.yeowoo.org/aup/commit/?id=da7361aae4e896edaad37dbcf404c5005a7f8596'/>
<id>urn:sha1:da7361aae4e896edaad37dbcf404c5005a7f8596</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Count with for i in a .. b, break, nest fors and let an event's own lists (Pure 018)</title>
<updated>2026-10-04T12:58:19Z</updated>
<author>
<name>eunhhu</name>
<email>necpition205@gmail.com</email>
</author>
<published>2026-10-04T12:58:19Z</published>
<link rel='alternate' type='text/html' href='http://git.yeowoo.org/aup/commit/?id=7340ba9af757b6f135dff9c51a193ba527f061b3'/>
<id>urn:sha1:7340ba9af757b6f135dff9c51a193ba527f061b3</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Declare transient state: held while the app runs, never stored (Pure 018)</title>
<updated>2026-10-04T12:30:31Z</updated>
<author>
<name>eunhhu</name>
<email>necpition205@gmail.com</email>
</author>
<published>2026-10-04T12:30:31Z</published>
<link rel='alternate' type='text/html' href='http://git.yeowoo.org/aup/commit/?id=fafed7edaf36ba18c200d395bd229d1f071cd409'/>
<id>urn:sha1:fafed7edaf36ba18c200d395bd229d1f071cd409</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Say what library records showed (002)</title>
<updated>2026-10-04T10:50:55Z</updated>
<author>
<name>eunhhu</name>
<email>necpition205@gmail.com</email>
</author>
<published>2026-10-04T10:50:55Z</published>
<link rel='alternate' type='text/html' href='http://git.yeowoo.org/aup/commit/?id=da7e2c63117d58684d45eb0adde36243f96342f6'/>
<id>urn:sha1:da7e2c63117d58684d45eb0adde36243f96342f6</id>
<content type='text'>
The task list's module is the same with its record in a library (2,509
bytes); one record of a library's three goes into a module using one; a
migration of the same library moves what the app stored; eleven
diagnostics. The example compiles.
</content>
</entry>
<entry>
<title>Give aup an i64: exact integers, and literals typed by what they meet</title>
<updated>2026-09-30T15:32:17Z</updated>
<author>
<name>eunhhu</name>
<email>necpition205@gmail.com</email>
</author>
<published>2026-09-30T15:32:17Z</published>
<link rel='alternate' type='text/html' href='http://git.yeowoo.org/aup/commit/?id=24d95e19b4eec44c5f8c9f551ebf4e8fc465d5f5'/>
<id>urn:sha1:24d95e19b4eec44c5f8c9f551ebf4e8fc465d5f5</id>
<content type='text'>
state, record, message, output and argument fields, lets, views, keys
and slices can be i64 (Pure 016 stage 2). An integer literal becomes
an i64 where the other side of an operation, a comparison or an
assignment is one; a literal-only side follows the other, found by
compiling it on trial and rolling back. + - * and negation fail the
event with overflow, / and % floor, and i64(x) and number(n) are the
only way between the two, so a mix is a diagnostic that says so.

The check adds 18 i64 diagnostics, i64 accepted forms (with a 30-deep
chain that must stay linear), an event-by-event program past 2^53
and at the edges, and i64 values in the generated programs.
</content>
</entry>
<entry>
<title>Give aup a bool: true and false, and conditions that take one</title>
<updated>2026-09-30T14:23:30Z</updated>
<author>
<name>eunhhu</name>
<email>necpition205@gmail.com</email>
</author>
<published>2026-09-30T14:23:30Z</published>
<link rel='alternate' type='text/html' href='http://git.yeowoo.org/aup/commit/?id=b8e3faaf1a3766591d31e6c5411c9e4fcc59a7a4'/>
<id>urn:sha1:b8e3faaf1a3766591d31e6c5411c9e4fcc59a7a4</id>
<content type='text'>
A condition was any number, non-zero being true: done was a number field,
a view showed 1 for true, and done + 1 was no type error. Now bool is its
own type (Pure 016, module format v6):

- true and false; comparisons, text comparisons, has and ! &amp;&amp; || give a
  bool. Bools are equal or not; they are no numbers and have no order.
- if, conditional expressions, require, where (folds, walks, filtered
  tables) take a bool. Given a number, the diagnostic says how to make
  one: "if takes a bool, not a number: compare it, as in n != 0".
- Bool states (state on = false), record fields (done = false), message,
  output and argument fields (ok: bool), lets, views and columns.
  Interpolation writes true or false. A list is not keyed by a bool.
- The examples' flags are bools (charge's holding, toggle's visible,
  tasks' done).

Checks: 20 bool diagnostics, a form using bools everywhere, an app whose
every output shows true and false (states, items, views, columns, text)
and whose replacement turns a number into a bool and back. Models hold
bools and compare them strictly: Python's True == 1 no longer hides a 1
where a true belongs. Generated programs are typed, numbers and bools.
</content>
</entry>
<entry>
<title>Let declared fields be apart by commas, as a value's are</title>
<updated>2026-09-30T12:02:39Z</updated>
<author>
<name>eunhhu</name>
<email>necpition205@gmail.com</email>
</author>
<published>2026-09-30T12:02:39Z</published>
<link rel='alternate' type='text/html' href='http://git.yeowoo.org/aup/commit/?id=be1122a2e8bc720bd9473c130255eba46389c883'/>
<id>urn:sha1:be1122a2e8bc720bd9473c130255eba46389c883</id>
<content type='text'>
A message's, a group's and a record's fields took a newline or a
semicolon after each, while a value's (Kept { id: 1, t: "a" }, send)
take commas, and the language's own examples declared
message { title: text, points: number } and to: { city: text, zip: u32 },
which did not compile. Now a comma, a newline or a semicolon ends a
declared field too (one after the last as well); without one it says
so.
</content>
</entry>
<entry>
<title>Write a message once for its output and the input that takes it</title>
<updated>2026-09-30T04:59:09Z</updated>
<author>
<name>eunhhu</name>
<email>necpition205@gmail.com</email>
</author>
<published>2026-09-30T04:59:09Z</published>
<link rel='alternate' type='text/html' href='http://git.yeowoo.org/aup/commit/?id=aa279fb959024134416fc33f90f648d8332e9af4'/>
<id>urn:sha1:aa279fb959024134416fc33f90f648d8332e9af4</id>
<content type='text'>
Growing a board two nodes share (Pure's research 105), one field took
five places, two of them the same list: the output a node sends its
changes on and the input it takes the other's with. A message may now
take the fields of a message input or output declared before, in their
order: input remote = message like changed.

The module is the same as with the fields written out, byte for byte
(checked). An unknown name, one that is no message, the message itself,
and an output taking an input's rows are diagnosed.
</content>
</entry>
<entry>
<title>Check a payments API's answers coming back as events exactly once</title>
<updated>2026-09-27T07:22:21Z</updated>
<author>
<name>eunhhu</name>
<email>necpition205@gmail.com</email>
</author>
<published>2026-09-27T07:22:21Z</published>
<link rel='alternate' type='text/html' href='http://git.yeowoo.org/aup/commit/?id=954e25c7f2d86b8be55405ab69027a32115b851a'/>
<id>urn:sha1:954e25c7f2d86b8be55405ab69027a32115b851a</id>
<content type='text'>
A Python payments API answers 200 or 402 and repeats a key's first
answer; the sender's output is wired to it and its answers to the
charged input. With the sender killed (-9) while clients buy, the
app's paid and declined counts and paid total match the API's answers
one per key. The language notes say how answers arrive.

</content>
</entry>
<entry>
<title>Declare outputs and send them: output ordered = message { ... }</title>
<updated>2026-09-27T06:54:35Z</updated>
<author>
<name>eunhhu</name>
<email>necpition205@gmail.com</email>
</author>
<published>2026-09-27T06:54:35Z</published>
<link rel='alternate' type='text/html' href='http://git.yeowoo.org/aup/commit/?id=6d219cbfb8f88aa51ce785ff78c5250d806b67c9'/>
<id>urn:sha1:6d219cbfb8f88aa51ce785ff78c5250d806b67c9</id>
<content type='text'>
An output is a message the app sends, with fields and groups as a
message has; send ordered { item: x, to: { city: y } } gives every
field once, in any order, groups in their own braces, and compiles to
Pure's SEND. Diagnostics cover a missing field, a group given a value,
an unknown field, a mistyped value, a send to a message, a handler for
an output, a field given twice and reading an output as a state; kinds
in messages now carry their article (an output, a key input).

</content>
</entry>
</feed>
