Skip to content

Release 1.0.1: the Mac session (8.8) — and a reload kept no attributes, fixed - #38

Merged
tap merged 1 commit into
mainfrom
v1/mac-session
Oct 8, 2026
Merged

tap merged 1 commit into
mainfrom
v1/mac-session

Conversation

@tap

@tap tap commented Oct 7, 2026

Copy link
Copy Markdown
Owner

The Mac session (plan 8.8), run in Max on main with 1.0.1's fix. It found a second bug in 8.2's reserved-name guard, which is fixed here. 1.0.1 is dated for release.

The bug

  • What it did: in Max, the attributes the object adds for a class's fields answer their names, just as its messages do. On a reload, the guard took them for Max's own and reserved every field, so a save left the object with no attributes. The console showed "the field gain is reserved by the host", then "doesn't understand gain".
  • Where it showed: reload failed this way. worker's hang failed the same way after its reload, with no message, because an unchanged file announces nothing.
  • The fix: answered_by_max() now leaves out the object's own attributes, as it already did its own messages.
  • Reproduced first: a new glue scenario fails without the fix. While it runs, the test's kernel answers an added attribute's name as Max does, then turns that off so the other scenarios are unaffected.

The rest of 8.8

  • faults passes: DSP toggled and a cord connected, with the C-argument names in the class.

  • worker's console count was wrong, not the worker. The reload before hang 1 begins a new load, so the 500 ms hang is reported late again; it also outlasts the ring (latency plus 0.25 s), so input is dropped too. That's four lines, not two, and the test now expects each. It passed twice in a row.

  • Whole suite: 12 patchers pass.

  • Stack measurement:

    thread stack recursion through sorted's key
    512 KiB (a fresh pthread_attr_t, what std::thread gets) crashes after about 98 levels, short of deep_recursion.py's 450
    16 MiB (the worker's) reaches CPython's own recursion limit, as threading.Thread does
  • Still by hand: the runbook's step 4 on the release packages, and Build Collective for fileusage.

Checked

  • The mock test passes: 9 scenarios, 108 assertions.
  • The full Max suite passes on this Intel Mac.
  • clang-format and clang-tidy-18 pass.

After this merges, I'll tag v1.0.1. From 1.0 on, release.yml makes a draft, so publishing is your step. Before you publish, I'll download the release's all-platform zip and run the suite on it.

🤖 Generated with Claude Code

https://claude.ai/code/session_019rVV9SkjkWmiBXFMT4whkz

…ixed

Run in Max on main, the suite found a second bug in 8.2's guard: the attributes the object adds
for a class's fields answer their names in Max, so on a reload the guard took them for Max's own
and reserved every field — a save left the object with no attributes. answered_by_max() now
leaves out the object's own attributes as it did its own messages. The glue test's kernel answers
an added attribute's name while a new scenario asks, and that scenario fails without the fix.

The worker runtime test's console count was wrong, not the worker: the reload before `hang 1`
begins a new load, so the hang is reported late again and, outlasting the ring, drops input too —
it now expects each of the four lines. Whole suite: 12 patchers pass. The plan records 8.8's
results and the stack measurement (512 KiB by default: about 98 levels of recursion through
sorted's key; 16 MiB: CPython's own limit). CHANGELOG: 1.0.1 dated, with this fix.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019rVV9SkjkWmiBXFMT4whkz
@tap
tap merged commit 6e5f112 into main Oct 8, 2026
18 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant