Where tomorrow starts: two binding lines, then a trap that should be a condition
This commit is contained in:
parent
422b698be7
commit
54027ca942
38
NEXT.md
38
NEXT.md
@ -1,3 +1,41 @@
|
||||
## Picked up first, 2026-09-13
|
||||
|
||||
Three things, in order. The first two are one line each and unblock a real game.
|
||||
|
||||
**1. `DrawTexturePro` is not bound, and it is the one true blocker for `siam-farmer`.** See `PORTING.md`, written
|
||||
against both the Clojure implementation and the WIP Common Lisp port. Every tile in both goes through it;
|
||||
`DrawTextureRec` does not scale and `DrawTextureEx` takes no source rect, so the renderer **cannot be written at all**
|
||||
in a default build. It is reachable only through the opt-in `FLAN_RAYLIB_H` import, which `vendor/raylib/headers`
|
||||
deliberately keeps optional. One `declare-c` line.
|
||||
|
||||
**2. `Key` has no `left-shift`.** Both implementations use shift+1..5 to pick the tilemap. One enum member.
|
||||
|
||||
**3. An out-of-bounds index should signal a condition, not `exit(134)`.** `PORTING.md`'s own first recommendation
|
||||
after the binding lines. The game indexes grids straight from mouse coordinates — `game.lisp` had to add an
|
||||
`in-bounds-p` to survive it — and today a trap ends the process *and* the `flan dev` session with it. `flan_rt.c`'s
|
||||
`flan_bounds_fail` should go through the condition machinery, which would make it a break loop with a restart instead
|
||||
of a dead session. Note this interacts with the merged one-process build: killing the program now kills the compiler.
|
||||
|
||||
**What `PORTING.md` says NOT to build, with evidence:** escaping closures (one capture site, fixed by one parameter),
|
||||
`Handle`/pools, `Result`/`try`, `handler-case`, `loop`/`recur` and tail calls, user allocators, structural typing —
|
||||
**none has a customer in that code**. And **generics is not the blocker** there either: the element-changing maps are
|
||||
five-line load-time loops. That last one hangs on a design decision the report states flatly — whether the game's
|
||||
state holds fixed arrays or `Vec`s.
|
||||
|
||||
**raylib 6.0 is not urgent:** all seven struct layouts on the game's path and every enum value it touches are
|
||||
byte-identical between 5.5 and the vendored 6.0.
|
||||
|
||||
### Left mid-flight when the session ended
|
||||
|
||||
Both lanes committed their main work and died on trailing polish; both are merged and the suite is green.
|
||||
|
||||
- **`pause` marking from Emacs was not built.** `DISCUSS.md` item 9 has the design, and the decisions are settled: the
|
||||
instrumentation travels as a *separate field* applied by the daemon **after** parsing (splicing text would shift
|
||||
every source location after it), and the mark **sticks** until the form is evaluated plainly. The watch lane got as
|
||||
far as deciding to splice into the `Ast` rather than the forms.
|
||||
- **Ghost text** for the watch window — values shown inline at the code they belong to — is noted and not designed.
|
||||
- `tools/unit-return.py` is re-runnable; run it over any `.flan` file a lane wrote before the conversion landed.
|
||||
|
||||
# Where this is
|
||||
|
||||
## Start here — next session
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user