- the drop tables track bindings only, so six shapes had no owner: a comparison operand (`if parse_expr(s) == nil` abandoned a schedule record and its five containers per cron line), a borrowed call argument (a 1 KB string per MCP request), a container read's copy, a loop's iterable, a projected record, and any of those escaped by a `return` from inside the statement that built them - `c[i]` is the one place expression whose register holds a COPY: no second copy at a boundary (`let u = tokens[0]` copied twice and abandoned the first), and a drop where every other place is left be - never drop an argument register after a CALL — the callee's frame overlaps it; the reap moved into call_window's pre-call stash - a statement-owned temporary is parked in a LOCAL slot: a loop reclaims every temp for its body, and the end-of-statement DROP was releasing the loop counter instead of the record - reader builtins (get/latest/key_at/val_at) keep arg0 alive — their result points into it — but their key argument is ordinary - measured: run 2 112 B -> 64 B, flat 8 s to 20 s; MCP mix 21 312 B / 63 -> 64 B / 1; every handler flat from 2 to 6 requests; the 64 B left is Task 3's argv container - gates: oop-e2e 71/0, woc-test 565/0, wovm-test green, log-watcher 6/0 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| compiler | ||
| done | ||
| exploration | ||
| oop-vm | ||
| 05-hand-rolled-json.md | ||
| 06-bespoke-error.md | ||
| 07-inotify-content-watcher.md | ||
| 08-sendfile-static-assets.md | ||
| 09-concurrency-scaleout.md | ||
| 10-storage-foundations.md | ||
| 11-wal-and-recovery.md | ||
| 12-engine-disk-cutover.md | ||
| 13-class-model-live-pricing.md | ||
| 14-mvc-ui-implementation.md | ||
| 15-mcp-streamable-http.md | ||
| 16-postgres-mirror.md | ||
| discarded.md | ||
| learnings.md | ||