Skip to content

Dialect roadmap: v1 strings → v7 processes #2

Description

@softwarewrighter

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions