Skip to content

GOOS=js GOARCH=wasm has not compiled for 3 days, and the test that catches it is behind an env var no workflow sets #682

Closed

Description

@tannevaled

GOOS=js GOARCH=wasm does not compile, and has not for about three days:

$ CGO_ENABLED=0 GOOS=js GOARCH=wasm go build ./internal/vm
internal/vm/errno.go:101:35: undefined: syscall.ENOTRECOVERABLE
internal/vm/errno.go:108:35: undefined: syscall.EOWNERDEAD
internal/vm/errno.go:120:35: undefined: syscall.ETXTBSY

errno.go carries no build tags, so it compiles for every target. wasip1
defines those three names; js does not. This breaks cmd/rbgo, the cmd/wasm
playground and rbgo build --closed --target wasm — the whole browser story.

It is a regression, and the bisect is done: internal/vm and cmd/rbgo
both build for js/wasm at 68cb53a, the commit before d498ddc (the Errno
subsystem, #629, 2026-09-23). A 95 MB module came out.

Two screens, both of which failed open

This is the more useful half of the report.

  1. ci.yml gates wasip1 only. There is no js/wasm lane, so no PR could
    have caught it.

  2. TestClosedWasmBuildIntegration does catch it — and cannot run. It sits
    behind RBGO_BUILD_IT=1, and:

    $ grep -rn 'RBGO_BUILD_IT' .github/workflows/
    (no output)
    

    Nothing sets it, anywhere. Run with it set, the test fails with exactly the
    three errors above. The guard was correct, complete, and unreachable.

So the fix is two parts, and the second matters more than the first:

  • build-tag errno.go (or guard the three constants per-GOOS);
  • give js/wasm a CI lane, and either wire RBGO_BUILD_IT=1 into a lane or stop
    pretending that test is a gate. A guard behind an env var that no workflow sets
    is documentation, not a check.

A third, smaller finding from the same pass: rbgo build only works from a
checkout
— run elsewhere it fails with stat .../cmd/rbgo: directory not found. The docs never said so.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions