Tracking issue for Tinytalk dialect upgrades, ordered by impact-to-
effort ratio. Each level unlocks a class of demos that read naturally
over UART. Numbering is a sketch; actual ordering may differ.
v1: strings + literal pool + Transcript
- String class, literal-pool bytecode (PUSH_LIT generalized or
PUSH_STR), `String>>length` / `>>at:` / `>>,`,
`SmallInteger>>printString`, `Transcript show:` / `cr`.
- Biggest user-visible upgrade. Output goes from "7" to
"3 + 4 = 7", which makes nearly every demo readable.
- Unlocks: pretty calc, ELIZA-lite, single-room MUD, Caesar cipher,
Roman numerals, JUnit-style test runner, friendly `guess`.
v2: blocks + BlockContext
- Block literal, BlockContext frame, `value` / `value:` /
`value:value:` primitives.
- Biggest "feel" upgrade — control flow as message send.
- Replaces D3's eager-argument `ifTrue:ifFalse:` cheat with the
real form. Enables `whileTrue:`, `timesRepeat:`, `do:`,
`inject:into:`.
v3: fixed-size arrays + indexed access
- `Array` class, `at:` / `at:put:` primitives.
- Unlocks: Sieve of Eratosthenes, bubble/quicksort, Conway's Life
on a UART-renderable grid.
v4: variable-size collections
- `OrderedCollection`, `Set`, `Dictionary` in Smalltalk on
top of v3 arrays.
- Iterators `do:` / `collect:` / `select:` / `reject:` /
`inject:into:` (all on top of v2 blocks).
- Unlocks: N-queens (backtracking), symbol→value lookup, real
parser with token streams.
v5: doesNotUnderstand:
- `Object>>doesNotUnderstand:` hook in LOOKUP miss path.
- Unlocks: transparent message-logging proxy, MUD-style command
shell where verbs are selectors, lazy method materialization.
v6: exceptions
- `[ ... ] on: Error do: [:e | ...]`, `Error signal:`,
`ensure:` / `ifCurtailed:`.
- Unlocks: robust calc that recovers from `/0`, file/UART I/O
wrappers with retry.
v7: green-thread scheduler
- `Process`, `Semaphore`, `[ ... ] fork`. Cooperative — fits
COR24's tiny CPU well.
- Unlocks: producer/consumer, banker's algorithm, round-robin
walkthrough.
Notes
`web-sw-cor24-smalltalk`
already supports stdin/stdout-driven interactive demos (D5 calc
proves this), so v1+ demos that read input ship in-browser
without UI changes.
Tracking issue for Tinytalk dialect upgrades, ordered by impact-to-
effort ratio. Each level unlocks a class of demos that read naturally
over UART. Numbering is a sketch; actual ordering may differ.
v1: strings + literal pool + Transcript
PUSH_STR), `String>>length` / `>>at:` / `>>,`,
`SmallInteger>>printString`, `Transcript show:` / `cr`.
"3 + 4 = 7", which makes nearly every demo readable.
Roman numerals, JUnit-style test runner, friendly `guess`.
v2: blocks + BlockContext
`value:value:` primitives.
real form. Enables `whileTrue:`, `timesRepeat:`, `do:`,
`inject:into:`.
v3: fixed-size arrays + indexed access
on a UART-renderable grid.
v4: variable-size collections
top of v3 arrays.
`inject:into:` (all on top of v2 blocks).
parser with token streams.
v5: doesNotUnderstand:
shell where verbs are selectors, lazy method materialization.
v6: exceptions
`ensure:` / `ifCurtailed:`.
wrappers with retry.
v7: green-thread scheduler
COR24's tiny CPU well.
walkthrough.
Notes
`web-sw-cor24-smalltalk`
already supports stdin/stdout-driven interactive demos (D5 calc
proves this), so v1+ demos that read input ship in-browser
without UI changes.