bytecodealliance / bytecodealliance/wasmtime-go

unknown import: `wasi::thread-spawn` has not been defined

Open
#218 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
Go
Stars
913
Forks
100
Avg merge
10m
Merged PRs (30d)
1

Description

I'm trying to run a wasi program with threads enabled, but I'm getting the following when running it with wasmtime-go:

```go
package main

import (
"fmt"
"log"
"os"
"path/filepath"

"github.com/bytecodealliance/wasmtime-go"
)

func main() {
dir, err := os.MkdirTemp("", "out")
if err != nil {
log.Fatal(err)
}
defer os.RemoveAll(dir)
stdoutPath := filepath.Join(dir, "stdout")

f, err := os.ReadFile(os.Args[1])
if err != nil {
log.Fatal(err)
}

cfg := wasmtime.NewConfig()
cfg.SetWasmThreads(true)

engine := wasmtime.NewEngineWithConfig(cfg)

module, err := wasmtime.NewModule(engine, f)
if err != nil {
log.Fatal(err)
}

linker := wasmtime.NewLinker(engine)
err = linker.DefineWasi()
if err != nil {
log.Fatal(err)
}

wasiConfig := wasmtime.NewWasiConfig()
wasiConfig.SetStdoutFile(stdoutPath)

store := wasmtime.NewStore(engine)
store.SetWasi(wasiConfig)
instance, err := linker.Instantiate(store, module)
if err != nil {
log.Fatal(err)
}

nom := instance.GetFunc(store, "_start")
_, err = nom.Call(store)
if err != nil {
log.Fatal(err)
}

// Print WASM stdout
out, err := os.ReadFile(stdoutPath)
if err != nil {
log.Fatal(err)
}
fmt.Print(string(out))
}
```

I was able to run it with wasmtime though: `wasmtime --wasm threads --wasi threads program.wasm`

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.