You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I saw that I cannot easily convert the string path in SetStdoutFile(path string) to the io.ReadWriter on wasmtime-go, so this is a suggestion to wasmtime.
io.ReadWriter is an interface which implemented by os.File and bytes.Buffer. With an io.ReadWriter as the parameter for WASI config, golang can operate its favor bytes without filesystem-level io, which means the WASI call will be more easy safe and stable.
buf:=bytes.NewBuffer(nil)
config:=wasmtime.NewWasiConfig()
config.SetStdin(buf)
config.SetStdout(buf)
// then instaniate the wasi with the configgofunc(){
b, err buf.ReadBytes('\n')
// handle this
}()
goinstance.GetExport("_start").Func().Call()
// now intance request a stdinbuf.Write("continue exec")
Reacted by Hassan (Däni) Shahbazi, gaboose, David Schneider, Max Smythe, guregu, Ed Pelc, Ilshat Nasyrov and Michał Dobaczewski
This is similar to bytecodealliance/wasmtime-py#34 where there's support for this in the Rust wasmtime API but support has yet to be added to the C API
Implementing this would first need to start out at the Wasmtime C API layer. There's not a ton of Wasmtime-specific prior art to choose from unfortunately, so the APIs for this at the C layer need to be designed from scratch and implemented. Once that's landed then the Go support can be built on top of that.
Activity
alexcrichton commentedon Jul 20, 2020
This is similar to bytecodealliance/wasmtime-py#34 where there's support for this in the Rust wasmtime API but support has yet to be added to the C API
cohix commentedon Oct 20, 2022
Bumping this, as it would be extremely useful to be able to pass stdin and get stdout from modules :)
@alexcrichton if you have any advice on how we could help implement this, we'd love to contribute.
alexcrichton commentedon Oct 20, 2022
Implementing this would first need to start out at the Wasmtime C API layer. There's not a ton of Wasmtime-specific prior art to choose from unfortunately, so the APIs for this at the C layer need to be designed from scratch and implemented. Once that's landed then the Go support can be built on top of that.
jaime-amate commentedon Feb 15, 2024
Bumping this as well, I think it would be pretty handy to have this functionality implemented as in the Rust implementation.