feat(v4.0.0): a node finds the way -- routes, passing on, SEND; one fault stands
MESH.md step 4. Each node has a table of destinations and the port toward each, and a port for everything else (ROUTE, DEFAULT-ROUTE, NO-ROUTES). A message not for this node is passed on whole; one with nowhere to go is dropped and counted. What text prints and how it ended go back to the node it came from by the same table. SEND sends text to another node. test_host_mesh.c: three StarForth nodes in a row behind a console, 28 checks at both widths and under ASan+UBSan. hosted-check on three ISAs. Bare metal: logs/20261006-115225 (amd64), -115501 (aarch64), -115849 (riscv64). NOT DONE. Two neighbours that write to each other at once wait for ever: a write blocks until the neighbour reads, and a node that is writing is not reading. The last check in test_host_mesh.c shows it (KNOWN FAULT). MESH.md section 7a sets out the ways out; none is chosen. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
a041b401ea
commit
630d03fa4e
@@ -112,6 +112,15 @@ their ports are wired, both of which change while they run. The products
|
||||
below are still one node each; they become the five nodes at `MESH.md`
|
||||
steps 8 and 9.
|
||||
|
||||
**Finding the way** (`MESH.md` step 4) is built: a node has a table of
|
||||
which port leads toward which node (`ROUTE`, `DEFAULT-ROUTE`, `NO-ROUTES`),
|
||||
passes on a message that is not for it, and `SEND`s text to another node;
|
||||
`v4/tests/test_host_mesh.c` runs three StarForth nodes in a row. **It has
|
||||
a fault that stands:** two neighbours that write to each other at the same
|
||||
moment wait for ever, because a write blocks until the neighbour reads and
|
||||
a node that is writing is not reading. The test shows it, named KNOWN
|
||||
FAULT. The ways out are in `MESH.md` section 7a and none is chosen yet.
|
||||
|
||||
**This is still the lone node.** On bare metal `kernel_main.c` starts it
|
||||
before the fleet tables, beside the kernel's own system and not in the VM's
|
||||
place. `ENGINE.md` sets out the steps from here; step 1 is done and step 2 is
|
||||
|
||||
Reference in New Issue
Block a user