Login
Check-in [d4e9600a59]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Merge S.8a: a fixed arena for the program tree

Reviewed against docs/tasks/S.8a.md; verdict merge. Spec 5 examples, 0 failures; Arena(256) is 3,076 bytes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TUH8KMXZyLk8eDgCjvQ9hX

Downloads: Tarball | ZIP archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: d4e9600a596f6976b893657abf6976e4d9c8cb9c0ffb720f172418f476a47996
User & Date: x86-1-glint 2026-11-09 14:41:51.692
Context
2026-11-09
14:52
Merge S.8b: QEMU's microbit machine in Glint's qemu-system-aarch64

Reviewed against docs/tasks/S.8b.md; verdict merge.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TUH8KMXZyLk8eDgCjvQ9hX check-in: afb4181acf user: x86-1-glint tags: trunk

14:43
Create new branch named "slice/S.8b" check-in: 35204011a6 user: x86-1-glint tags: slice/S.8b
14:41
Merge S.8a: a fixed arena for the program tree

Reviewed against docs/tasks/S.8a.md; verdict merge. Spec 5 examples, 0 failures; Arena(256) is 3,076 bytes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TUH8KMXZyLk8eDgCjvQ9hX check-in: d4e9600a59 user: x86-1-glint tags: trunk

14:41
S.8a: a fixed arena for the program tree

Claim: src/glint/shell/tree.cr holds S.8's program tree in Arena(N), a caller-owned struct of 12-byte nodes with no heap and no start-up initialiser. Nine kinds (INT, LOCAL, ASSIGN, ADD, SUB, LT, IF, WHILE, SEQ). add returns NONE and writes nothing when the arena is full or a child is not an earlier node, so a tree can't loop.

Passage: S.8's finding that the heap's 4 KiB pages are a quarter of the Zepto's RAM each, so the tree needs a fixed arena with a stated node limit.

Demonstration: crystal spec spec/shell/tree_spec.cr: 5 examples, 0 failures. sizeof(Arena(256)) is 3,076 bytes: 256 nodes in 3 KiB of the 16. crystal tool format --check passes. Codex wrote both files from docs/tasks/S.8a.md (codex exec in a separate checkout); the reviewer read them against the task and made no changes. Nothing in the image uses it yet.

Size: 103 lines in tree.cr, spec 99.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TUH8KMXZyLk8eDgCjvQ9hX Leaf check-in: bd2f4cf4bb user: x86-1-glint tags: slice/S.8a

14:41
Tasks S.8b and S.8c: a Cortex-M0 machine in Glint's QEMU, and emit for the first nodes

Claim: docs/tasks/S.8b.md adds QEMU's microbit machine (nRF51, Cortex-M0) to Glint's qemu-system-aarch64, which S.2 needs as well. docs/tasks/S.8c.md has emit write ARMv6-M Thumb code for S.8a's nodes, keeping Crystal's meaning (overflow raises; Bool and nil values refused), checked by running ten programs on that machine. The plan's S.8 says these pieces start now.

Passage: docs/WORKFLOW.md, Handing out a slice, step 1; The One Place's relay (glint 210573ff9d) that the maintainer wants S.8.

Demonstration: S.8b's QEMU facts were read in QEMU 11.1.2's source (hw/arm/Kconfig 680, target/arm/Kconfig, nrf51_soc.c, microbit.c, m_helper.c 2375, arm-compat-semi.c). S.8c's encoder bytes are from the ARMv6-M manual and not yet disassembled, as the task says. Each expected output was computed (499500 = 0x00079f2c).

Size: two new files, 7 lines in the plan.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TUH8KMXZyLk8eDgCjvQ9hX check-in: 2f85cb8bd3 user: x86-1-glint tags: trunk

Changes
Unified Diff Side-by-Side Diff Patch
Added spec/shell/tree_spec.cr.
Added src/glint/shell/tree.cr.