WebAssembly Today ✍️ #23
Updates & commentaries on WebAssembly related technologies, including Rust, serverless, cloud, blockchain, and AI. Focused on the server-side.
Editorial: The big news of this week is Bytecode Alliance’s first anniversary.
Bytecode Alliance celebrated its one year anniversary with a blog post. The big news is that Fastly has acquired the wasm-on-the-server team from Mozilla. After the turmoil, the team is focused on technology again. The blog post lays out the vision of WebAssembly nanoprocess and the key elements in its implementation: WASI, Interface Types, and Module Linking. It is well worth a read.
FaaS (Function as a Service) allows developers to upload and execute code in the cloud without managing servers. FaaS offerings from leading public cloud providers are based on system microVM or application container technologies such as Firecracker or Docker. The authors demonstrate that lightweight high-level language runtimes, such as WebAssembly, could offer performance and scaling advantages over existing solutions, and could enable finely-grained pay-as-you-use business models in this paper. They compared widely used performance benchmarks between Docker native and WebAssembly implementations of the same algorithms and discussed the barriers for WebAssembly adoption in serverless computing, such as the lack of tooling support.
This article describes a way to deploy a WebAssembly WASI function as a service in cloud environments that do not explicitly support a WebAssembly runtime. It shows that you can just use the STDIN and STDOUT to pass data between the service host and WebAssembly function. The approach is tested on Azure Functions. It is the same approach as what Second State did with TencentCloud.
The author created a test suite for a GIF decoder in SerenityOS.He compiled ImageMagick to WebAssembly so that the examples could run interactively in the browser.
Lunatic is a platform for building actor systems that use WebAssembly instances as actors. It is heavily inspired by Erlang and works with any language that compiles into WebAssembly. However, currently, only Rust bindings are supported.
A very fast Markdown parser & HTML renderer based on md4c and compiled to WebAssembly.
Portable & safe
Fast and efficient
JS + WASM is only 31 kb gzipped
This article shows how to use the Rust Tract crate to run a Tensorflow model in WebAssembly.
Follow this step by step guide to create a WebAssembly program in Go and TinyGo. It is nice to see WebAssembly examples beyond Rust and C languages.
Looking for Rust developers
The rust-gpu project aims to make Rust a first-class citizen for GPU applications. The rust-gpu replaces the RLSL project.
Lemmy is an alternative to Reddit/Hacker News. It can be self-hosted and hence is decentralized. Lemmy is written in Rust and Actix.
The Rust-analyzer is a “new IDE backend” for Rust. The team recently released support for Ungrammer — a formalism for describing concrete syntax trees, which is one of the core data structures in the IDE.
cargo-chefis a new cargo sub-command to build just the dependencies of your Rust project based on a JSON description file (aka a recipe). In a benchmark test,
cargo-chefcut Docker build time from ~10 minutes to ~2 minutes.
NetApp released a new service called Spot Storage, which is a “serverless and storageless” solution for software containers.
A complete guide on how to deploy a serverless app using the AWS CDK.