v1.3.1
Aren't you excited for the imminent release of Go 1.21 with GOOS=wasip1 GOARCH=wasm
? We are!
wazero 1.3.1 is a minor release with important changes. No public APIs have been affected in any way, but we improved portability and further moved forward support to nonblocking I/O, especially on Windows!
Remember to star wazero, and check our community for other cool wazero users like you!
Improve Support to Cross-Compilation
@SlashScreen noticed (#1578) that builds for GOOS=plan9
were failing due to some missing constant definitions; this is somewhat related to an earlier issue reported by @supermigo (#1526) that prevents building wazero against the new GOOS=wasip1
GOARCH=wasm
target pair with Go 1.21.
@codefromthecrypt has led a spike (#1582, #1584, #1586, #1588) of refactorings to decouple our core from the direct dependency on the syscall
package, which is obviously highly platform-specific; for instance, some error codes or flags may only exist on some platforms: referring to such constants in shared code paths prevents a successful cross-platform build. #1582 introduces sys.Errno
as an abstraction over platform-specific error codes, and #1586 defines fsapi.Oflag
to abstract over file open flags.
If you are interested in that kind of oddity, support to GOOS=wasip1
will allow you to run a wasm wazero on a native wazero because self-hosting is the ultimate test for a runtime, but also because... why not? 🔥
Improve Nonblocking I/O
This release is also improving support for nonblocking I/O, first by fixing a bug (#1538) that was originally addressed with #1542, but ultimately was not completely resolved. @johanbrandhorst reported that the Go CI was still producing corrupted output when writing to a redirected stdout. @evacchi uncovered the root cause of the bug rather quickly; in fact, most time was spent writing an automated test case that reproduced the conditions of the Go CI (i.e. spawning a stand-alone wazero process and hooking that stdout to a buffer). This was fixed with #1581.
Notably, @evacchi moved issue #1500 another step closer to resolving, i.e., nonblocking I/O on Windows, by emulating select
using a few different Windows APIs. Details on how this has been realized are described in #1579 and are summarized in /RATIONALE.md. Further work is still needed to close the gap in poll_oneoff
.
Minor changes
- @abraithwaite contributed the RunReveal project to community page (#1577)
- @codefromthecrypt bumped the CI version of Go to the latest Go 1.21rc3 (#1589)