Re-scope the remaining language queue against what the work turned up
Group A is blocked on block skipping that works by statement rather than by source line, and RESTORE is blocked on a DATA pointer that does not exist -- which is a live defect rather than only a missing verb. Both were found while doing other work and neither is skippable by the group that needs it. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
33
TODO.md
33
TODO.md
@@ -1125,18 +1125,29 @@ What remains, in priority order:
|
|||||||
2. ~~**A line editor for the akgl sink.**~~ **Done** — `readline` in `src/sink_akgl.c`, over
|
2. ~~**A line editor for the akgl sink.**~~ **Done** — `readline` in `src/sink_akgl.c`, over
|
||||||
the keystroke ring, borrowing frames from the host through an `akbasic_AkglPump`. It cannot
|
the keystroke ring, borrowing frames from the host through an `akbasic_AkglPump`. It cannot
|
||||||
type a shifted character, which is `libakgl` item 10 rather than work outstanding here.
|
type a shifted character, which is `libakgl` item 10 rather than work outstanding here.
|
||||||
3. **§4 — the language completion work queue.** Groups G and I, the `GET`/`GETKEY`/`SCNCLR`
|
3. **§4 — the language completion work queue**, and it is the only substantial thing left.
|
||||||
part of E, and **multiple statements per line** are done. What is left is groups A, B, D, F
|
Done: groups G and I, the `GET`/`GETKEY`/`SCNCLR` part of E, group B, multiple statements
|
||||||
and J, none of which need anything from `libakgl`.
|
per line, and array references in parameter lists. Left: groups A, D, F and J, plus
|
||||||
|
`RESTORE` and `RENUMBER` out of B and the sprite group H. None needs anything from
|
||||||
|
`libakgl` except H.
|
||||||
|
|
||||||
**Do group A next, and expect it to cost more than the table suggests.** Multiple statements
|
**Two pieces of structural work come before the verbs, and both were found rather than
|
||||||
per line turned up the wall it will hit: the `waitingForCommand` model skips forward *by
|
guessed.** Neither is a verb and neither can be skipped by the group that needs it:
|
||||||
source line*, so a whole loop written on one line
|
|
||||||
(`FOR I# = 1 TO 3 : PRINT I# : NEXT I#`) never reaches its `NEXT`. §4 records it as a known
|
- **Block skipping works by source line, and group A needs it to work by statement.**
|
||||||
limitation rather than a defect, because it is inherited structure and not a slip — but
|
`waitingForCommand` skips forward to a verb one *line* at a time, so a whole loop written
|
||||||
`DO`/`LOOP`/`WHILE`/`UNTIL` are exactly the verbs people write on one line, so group A
|
on one line — `FOR I# = 1 TO 3 : PRINT I# : NEXT I#` — never reaches its `NEXT`. That is
|
||||||
probably has to move block skipping from lines to statements before it starts. That is a
|
inherited structure rather than a slip, and it did not matter until a line could hold more
|
||||||
deliberate restructure and wants its own commit and its own test, ahead of any verb.
|
than one statement. `DO`/`LOOP`/`WHILE`/`UNTIL` are exactly the verbs people write on one
|
||||||
|
line, so group A starts here or it ships something that does not work.
|
||||||
|
- **`READ` has no DATA pointer, and `RESTORE` is the verb that needs one.** §4 has the
|
||||||
|
detail; the short version is that `READ` skips forward to the next `DATA` *reached in
|
||||||
|
execution order*, so a `DATA` line placed before its `READ` is never found at all and a
|
||||||
|
second `READ` re-reads the same line. It is a live defect, not only a blocked verb.
|
||||||
|
|
||||||
|
Ordering suggestion, unchanged in spirit from the original: A (after the restructure), then
|
||||||
|
D and J, which are self-contained, then F, which is 21 verbs of `aksl_f*` and mostly
|
||||||
|
mechanical. H needs a look at `libakgl`'s sprite and actor API before anything is filed.
|
||||||
4. ~~**CI does not cover `-DAKBASIC_WITH_AKGL=ON`.**~~ **Done** — the `akgl_build` job in
|
4. ~~**CI does not cover `-DAKBASIC_WITH_AKGL=ON`.**~~ **Done** — the `akgl_build` job in
|
||||||
`.gitea/workflows/ci.yaml`. It turned out much cheaper than the deferral assumed, and the
|
`.gitea/workflows/ci.yaml`. It turned out much cheaper than the deferral assumed, and the
|
||||||
two reasons are worth keeping because both were guesses that measurement corrected:
|
two reasons are worth keeping because both were guesses that measurement corrected:
|
||||||
|
|||||||
Reference in New Issue
Block a user