Skip to content

TinyGo branch: catch up with jackielii/main (#40), fix what it exposed, skill and CI for TinyGo - #2

Merged
joeblew999 merged 9 commits into
tinygofrom
tinygo-tools
Oct 28, 2026
Merged

joeblew999 merged 9 commits into
tinygofrom
tinygo-tools

Conversation

@joeblew999

Copy link
Copy Markdown
Owner

Brings the fork's tinygo branch up to date and closes the tooling gaps found in joeblew999/go-htmx4#132. Fast-forward: tinygo is fully contained, nothing on it is lost. Nothing here goes to jackielii.

Commits

Checked locally

  • Their checks, Go 1.24 with golangci-lint (go-htmx4's mise run upstream:check): pass.
  • Tables build (structpages-gen -test, go test -tags structpages_tables ./...): pass.
  • TinyGo 0.43 (scripts/tinygo-test.sh): 732 pass, 14 skip (11 routing, 3 reflect-only as before), 0 fail. It was 11 fail, and after the merge a compile error and a panic.
  • Standard Go, the same packages: 766 pass, 0 skip.

CI here runs only on PRs into main, so these local runs are the proof for this PR.

Next, on its own branch: the routing rewritten so both compilers route the same way (routes registered the older way, matching done by structpages), so the 11 routing tests pass under TinyGo instead of skipping, with every example checked on Go and TinyGo. Tracked in joeblew999/go-htmx4#132.

🤖 Generated with Claude Code

https://claude.ai/code/session_01QDsbiFrZ6KW65Pectt3h97

jackielii and others added 9 commits October 26, 2026 10:12
…ackielii#40)

ID, IDTarget and RenderTarget.Is matched a bound method value (p.List)
to its page by the receiver's bare type name, dropping the package. With
same-named page types in two packages, as with a Page type per package,
a bound value errored as ambiguous with no current page, and silently
took the current page's id when that was the other package's type. The
htmx and method render targets had the same confusion in Is.

boundReceiverFromFuncName now keeps the package path from the function
name, unescaping its last element ("yaml%2ev3"), and methodInfo.receiverIs
matches bound values on package path and type name, so they resolve as
exactly as method expressions. A generic value receiver "Gen[...].M-fm"
now parses to "Gen[...]" rather than "Gen[". Not-found errors name the
type by package path for both forms.

A function counted as a bound method value whenever its name contained
"-fm", so a standalone function in a package path such as "go-fmt..."
failed. Only the "-fm" suffix counts now.

Fixes jackielii#39

Claude-Session: https://claude.ai/code/session_01NpjJeP32ycvAHNFXRgTviG
…ielii#40)

Conflicts in render_target.go and id_for.go: jackielii#40's matching (methodInfo.receiverIs, now with the
package path) through this branch's TinyGo-safe helpers (funcNumIn, funcIn, methodByName).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QDsbiFrZ6KW65Pectt3h97
A package with only standalone component functions (internal/fn-fmt, from jackielii#40) got an unused
reflect import, which doesn't compile.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QDsbiFrZ6KW65Pectt3h97
When to regenerate the tables, the build's tags, the stale-table error, and the mux TinyGo needs, so an agent using only the skill keeps a TinyGo build working.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QDsbiFrZ6KW65Pectt3h97
structpages-lint reports [region] since v0.9.0; the skill's category table and lint summary didn't list it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QDsbiFrZ6KW65Pectt3h97
The skill has changed a lot since 0.2.0 (gsx, v0.9's render targets, lint, TinyGo); a new version lets an installed plugin pick it up. The marketplace entry said MIT.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QDsbiFrZ6KW65Pectt3h97
Type.MethodByName panics under TinyGo; the other tests use the helper, which reads the tables there.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QDsbiFrZ6KW65Pectt3h97
The script generates the tables for TinyGo's own files (-tags tinygo) and runs tinygo test; CI runs the same script.

TinyGo's net/http mux lacks Go 1.22 patterns (tinygo-org/net#55). The 11 tests that route them through it skip only when a probe of the mux says it can't: Go 1.22 patterns, and an escaped / kept in one wildcard segment (which tinygo-org/net#56 alone doesn't fix). On standard Go nothing skips; under TinyGo they run again by themselves once its mux catches up.

TinyGo 0.43: 732 pass, 14 skip (11 these, 3 reflect-only as before), 0 fail.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QDsbiFrZ6KW65Pectt3h97
@joeblew999
joeblew999 merged commit c4dd489 into tinygo Oct 28, 2026
@joeblew999
joeblew999 deleted the tinygo-tools branch October 28, 2026 05:03
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.

2 participants