Hi philippe!, It's nice to see other french people interested by wasm in Go :)
I'm french too and started few month a go a framework for wasm in go with an ambitious goal : make an angular/React concurrent framework with wasm/Go.
Hogosuru .
Don't hesitate to send me a mail , we can speak together ;)
Great post. I will wait for your post about Rust too.
Hello thank you for this tutorials. I took your examples as a base for writing my demo
I would like to suggest a point that could be actually more explicit (IMHO): the WebAssembly functions once instantiated are available as any JS function.
This may sound obvious when you know it but it wasn't for me until I read another article (I can't find it back) where the author had the same observation.
For those in the same situation, here is what I did: loadWasm.then dispatches a custom event and Hello is called in the custom event handler.
For instance:
loadWasm(wasmFile).then(wasm => { const wasmLoaded = new Event('wasmLoaded', { bubbles: false, cancelable: true, composed: false }) document.dispatchEvent(wasmLoaded) console.log("wasmLoaded") }).catch(error => { console.log(error) })I extracted the <script></script> part from your index.html file and put it in a separate file loadWsm.Js which can be generically used to load and instantiate any wasm file (at least those written and compiled from GO).
Then WASM functions can be used:
document.addEventListener("wasmLoaded",()=>{ let jsonData = Hello("Bob", "Morane") console.log(jsonData) document.querySelector("h1").innerHTML = JSON.stringify(jsonData) })I'd like also to add a remark: tinygo doesn't support all libraries/functions.
For instance, as you did in your example, objects have to be converted by "hand" to JSON strings.
It took me some time to realize that the issues I had with crypto/rand (resolved with tinygo 0.21) and json.Marshal were due to tinygo
Amari