The main package contains no worlds

Open
#377 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
3/5
Estimated time
1-2 days
Newbie friendliness
38/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Stale
Tech stack
go, wasm
Domain
compilers, tooling

Research direction

Start with the reproduction linked in the issue and the go tool wit-bindgen-go generate --out internal ./wit command. Then inspect wit/bindgen/generator.go around line 2416, where witText is assembled. Done means generated WIT has a valid main package with a world and the command no longer reports that the package contains no worlds.

Written by the indexing model from the issue text.

Description

I'm encountering behavior that I don't understand in the latest version of wit-bindgen-go.

I've created a detailed reproduction and summary here

Here's a brief summary:

When I run go tool wit-bindgen-go generate --out internal ./wit I get the following output:

Generated WIT for custom section:
package wasi:clocks@0.2.0;

interface wall-clock {
        /// A time and date in seconds plus nanoseconds.
        record datetime {
                seconds: u64,
                nanoseconds: u32,
        }

        now: func() -> datetime;

        resolution: func() -> datetime;
}

package wasi:filesystem@0.2.0 {
...
}

package wasi:io@0.2.0 {
...
}

error: wasm-tools: error: The main package `wasi:clocks@0.2.0` contains no worlds

Something I noticed in the output: Both the filesystem package and the io package enclose their interfaces with brackets, while the clocks package ends with a semicolon and its corresponding interface is placed below it:

package wasi:clocks@0.2.0;
<INTERFACES>

package wasi:filesystem@0.2.0 {
    <INTERFACES>
}

package wasi:io@0.2.0 {
    <INTERFACES>
}

I tried manually creating the wasi:clocks package in a WIT file and tried inserting the file data in place of the witText variable here; however, it then complains about not having a package header:

error: wasm-tools: error: no `package` header was found in any WIT file for this package

If I try to add a generic package header, we get another "package contains no worlds" error:

error: wasm-tools: error: The main package `foo:bar@0.0.0` contains no worlds
Dominant language
Go
Stars
148
Forks
20
PR merge metrics
No merged PRs in 30d

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from bytecodealliance/go-modules

All issues in bytecodealliance/go-modules

Similar issues

More Go issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.