Today we are very excited to launch a new initiative that will start shaping the future of WebAssembly on both the browser and the server.
WASI was announced about 4 years ago and was a great push to move the Wasm community forward. It got everyone so excited that even Solomon, the founder of Docker tweeted about it:
Note: Solomon Hykes is also an investor in Wasmer
The ambition of WASI is a great one and we continue to support it, but it's slow iteration pace it's holding back the progress on making Wasm widely adopted.
The Wasmer team and key community members have been working relentlessly to enhance the existing WASI ABI, stabilizing it and making it more compatible with POSIX programs.
Today, we are incredibly excited to launch WASIX!
WASIX is ready today for the community to build awesome apps and complete their runtimes: supporting threads, Berkeley sockets, forking and many more things that have been available for almost all the life of POSIX.
We believe this step will pave the way by making it easier to compile any apps into Wasm, to run them anywhere.
And here’s the proof:
curl fully running on WASIX! 🚀
# Run curl compiled to WASIX with Wasmer! $ wasmer run --net curl/curl -- http://neverssl.com <html> <head> <title>NeverSSL - Connecting ... </title> <style> [...]
Note: You will need Wasmer
4.0.0-alpha.1to run it
But not only
curl... we also got
static-web-server and many more apps and libraries running on WASIX. Even this very own website runs on WASIX!
Did you get as excited reading this as we did working on it? Continue reading to learn more about WASIX and how you can use it!
WASIX is the long term stabilization and support of the existing WASI ABI plus additional non-invasive syscall extensions that complete the missing gaps sufficiently enough to enable real, practical and useful applications to be compiled and used now. It aims to speed up the ecosystem around WASI so that the Wasm’ification of code bases around the world can really start today! And it does so without any breaking changes to
longjmpsupport (used extensively in
WASIX programs can run anywhere: in the browser or the server.
As an example, we have created
wasmer-web , which basically showcases that any WASIX program published to Wasmer (including those with threads and forking!) works also with Wasmer running on the browser.
Too good to be true?
Try it yourself online and let us know your thoughts!
bashcompiled to Wasm/WASIX and pipes the stdin/stdout to xterm.js. When you run
wasmer run syrusakbary/pythona new subprocess is created/forked.
Please note that this is a preview release of the WASIX toolchains. Building code isn't trivial yet, and there are some implementation kinks to iron out. But we'll be working hard to make WASIX as reliable and easy to use as any other build target!
Compiling to Wasm/WASIX from Rust is simple. You can use
mio (with full sockets support), …and anything you want!
Just use the WASIX toolchain!
$ cargo install cargo-wasix # In a directory with a Cargo.toml: $ cargo wasix build
Note: support for some libraries is not added upstream yet, so you may need to use a patched version.
Sample Rust applications that you can compile to Wasm with WASIX:
wasmer run wasmer/static-web-serverUses tokio/mio under the hood.
See more examples here: https://wasix.org/docs/language-guide/rust/examples
We are working on a toolchain for C that will make it a breeze to compile your C applications to WASIX.
Meanwhile, you can use wasix-libc to compile your C/C++ programs to WASIX.
Here are some C applications that we compiled to WASIX:
wasmer run sharrattj/bash
wasmer run sharrattj/dash
wasmer run curl/curl
wasmer run wasmer/python
See more examples here: https://wasix.org/docs/language-guide/c/examples
WASIX was started by just Wasmer, but we don't want it to stay that way!
We welcome all interested parties to help us evolve and improve the specification, and are hopeful that other runtimes will add support soon.
axum, and many more programs with minimal-to-no-modifications compiling to Wasm/WASIX.
WASIX is here to allow any developer to target WebAssembly with their already existing applications without requiring any code modification, at all...
Stay tuned for more updates… incredible exciting stuff is on the horizon!
Syrus Akbary is an enterpreneur and programmer. Specifically known for his contributions to the field of WebAssembly. He is the Founder and CEO of Wasmer, an innovative company that focuses on creating developer tools and infrastructure for running WebAss
Founder & CEO
Syrus AkbaryMay 11, 2022