Roman has been working on a Wasm test framework - firstly in Go as that’s where our focus is right now. PoC link for your delectation.
We’re calling this west. The main feature is this lets us compile our components and test against a WASI platform harness that supports the functionality we’re testing.
What this means is we can use pure developer tools out of the box, nothing unusual required here.
In this demonstration Roman shows what this testing program looks like and how it works.
Grabs all the Go files in my imports and replace all Wasm imports with those provided by wasmtime.
Debugs as a normal native application.
Essentially, this constructs an HTTP request then call the export handler and make assumptions based on how the component responds. This has been difficult to do until now.
Makes it possible to have full coverage on production functionality at runtime.
As always, it’s really difficult to express the goodness of the demo so please check out the recording below.
Also, check out the wider community discussion in the playback.
CTA: We’ll have WASI functionality to add to custom interfaces next week and so stay tuned for that.
We can use this if we want to use a standard wasm component in Go. This is the workflow that we would use.
Go-native, essentially an idiomatic way to build Go-native WebAssembly components.
The one we currently have in wasmCloud generates Go and C files - that’s pretty much how wit-bindgen works today.
If we look at components that use wit-bindgen Go, you’ll see a diff set of files that wil be 100% Go - C doesn’t get a look in.
We are now using a different bindgen that is hosted in ByteCode Alliance tools.
How will this change things?
If we take a look at the interface names, there’s a lot of text - code that is hard to read.
When we look at the new generator, things become more ‘Go-like’ when interacting with any WASI object, we no longer have the package names - it points to the correct Go package and the actual names - package stream, input stream etc.
This is a much more streamlined way of working!
This means streaming is now possible in Go with this component SDK - and you can run it with any runtime that is wasi:http compliant.
Making good progress - we want to thank everyone in the community for taking on these issues - super grateful to the entire community for driving significant progress. You rock!
Tons of progress on: sharing components and providers, sharing resources, consolidating wasmCloud Helm chart and much, much more!
Please take a look at the roadmap to identify all the good first issues ready for contribution - we’re excited for more of you to get involved.
Check out the recording for the wider discussion on progress and what comes next.
REMINDER: wasmCloud Innovation Day - 1 week to go!
We are super excited that wasmCloud Innovation Day is just a week away.
If you haven’t registered yet, you can do so here.
We’ll have talks on how wasmCloud is being used in industry (Akamai, Adove, MachineMetrics), a discussion with Wasm industry leaders Pat Hickey (Fastly), Yosh Wuyts (Microsoft), and a host of technical demos from your friendly, neighbourhood wasmCloud maintainers.
Please note the wasmCloud community meeting will take place at 10am ET next week and on a different link - we’ll publish the updated link and diary entry shortly!
wasmCloud Innovation Day, 18 Sep, 10-6pm EST: wasmCloud Innovation Day is just a week away! Don't forget to register! We’ll have talks on how wasmCloud is being used in industry (Akamai, Adove, MachineMetrics), a discussion with Wasm industry leaders Pat Hickey (Fastly), Yosh Wuyts (Microsoft), and a host of technical demos from your friendly, neighbourhood wasmCloud maintainers.