#5573·tinygo

Compiling a wasip1 binary with scheduler=none fails due to net/textproto usage of goroutine

Author: rikatzCreated Aug 6, 2026Updated Sep 17, 2026

During the upgrade of https://github.com/corazawaf/coraza-proxy-wasm/ to latest Go and tinygo, I've faced a problem with the usage a Go Routine that wasn't happening on previous versions.

Coraza relies on the mime/multipart library, that imports net/textproto (and its Reader).

As an example, a simple program like the below will fail to compile:

go
package main
import (
  "mime/multipart"
  "strings"
)
func main() {
  r := multipart.NewReader(strings.NewReader("--x\r\n\r\n"), "x")
  _, err := r.NextPart()
  println(err != nil)
}
tinygo build -gc=precise -scheduler=none -target=wasip1 -opt=2  -o t.wasm .
/usr/local/go/src/time/sleep.go:182:2: attempted to start a goroutine without a scheduler

The compilation needs to target wasip1 for Envoy WASM, but apparently Envoy WASM refuses to load a WASM that contains threads, so using asincify scheduler also blocks the loading of this WASM on Envoy.

Thank you very much!