Skip to content

Release 1.0.2: attributes and messages work on Windows too - #40

Merged
tap merged 2 commits into
mainfrom
v1/windows-not-found
Oct 8, 2026
Merged

tap merged 2 commits into
mainfrom
v1/windows-not-found

Conversation

@tap

@tap tap commented Oct 8, 2026

Copy link
Copy Markdown
Owner

Verified on Windows by you, with this branch's package.

The bug

1.0.1 still reserved every field and method on Windows. Your console showed "the field gain is reserved by the host", "greet() is reserved…", then "doesn't understand…".

found_method() compared object_getmethod()'s answer with &method_false. In a Windows DLL, that's the external's own import thunk, because the SDK declares the function without dllimport. It never equals the function Max returns, so every name read as found. On macOS the address is Max's real function, which is why the Mac session passed.

The fix

  • not_found_method() asks Max once what it answers for a name no class can have (it contains spaces). found_method() compares with that.
  • The glue test's kernel now answers an unknown name with its own max_method_false, not the method_false the module can take the address of. That's Windows' situation, on every platform. Every attribute and message scenario fails without the fix and passes with it (9 scenarios, 113 assertions).

Release

  • CHANGELOG: 1.0.1 was tagged but never released, so its section becomes 1.0.2 — 2026-10-08, with this fix described.
  • Plan: the finding is recorded under 8.2.
  • The 1.0.1 draft: I'm deleting the unpublished draft. Its tag stays, since a tag shouldn't be reused.

Checked

  • The full Max suite passes on macOS.
  • On Windows, you checked the branch's package. That package came from a hand-run release workflow on this branch (run), where every job passed.
  • clang-format and clang-tidy-18 pass.

After this merges, I'll tag v1.0.2. The workflow makes a draft for you to publish.

🤖 Generated with Claude Code

https://claude.ai/code/session_019rVV9SkjkWmiBXFMT4whkz

tap and others added 2 commits October 8, 2026 10:26
On Windows, 1.0.1 still reserved every field and method of every class: found_method() compared
object_getmethod()'s answer with the address of method_false as the external sees it, which on
Windows is the external's own import thunk (the SDK declares method_false without dllimport),
never the function Max returns. The object now asks Max once what it answers for a name no class
can have, and compares with that.

The glue test's kernel answers an unknown name with its own max_method_false, not the
method_false this module can take the address of — Windows' situation — and every attribute and
message scenario fails without the fix. Found by the maintainer trying the 1.0.1 package on
Windows.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019rVV9SkjkWmiBXFMT4whkz
1.0.1 was tagged but never released — its Windows package still reserved every name. The
changelog's 1.0.1 section becomes 1.0.2, dated, with that fix described; the plan records the
Windows finding under 8.2. Verified on Windows by the maintainer.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019rVV9SkjkWmiBXFMT4whkz
@tap
tap merged commit be85b34 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