WebAssembly Today ✍️ #26

Updates & commentaries on WebAssembly related technologies, including Rust, serverless, cloud, blockchain, and AI. Focused on the server-side.

Editorial: This week, we learn about compilers, including how to compile and optimize for WebAssembly, as well as how to build a Rust-based compiler. With the release of .Net 5.0, we see more commitment from Microsoft to support WebAssembly. We are also excited that the Servo project found a new home at the Linux Foundation.

WebAssembly Today

WebAssembly compilation pipeline in V8 🖥

Learn more about the WebAssembly compilation pipeline in V8. The article describes how V8 compiler components, such as LiftOff and TurboFan, process WebAssembly modules in multiple passes to achieve the best runtime performance.

.NET adds supports for WebAssembly 🔦

The Microsoft .NET 5.0 adds support for WebAssembly and Windows Arm64.

WebAssembly on the Serverless edge 🦄

Fastly announced new features for their serverless compute environmentCompute@Edge, powered by WebAssembly and Lucet.The new features includenew CLI functionalities, Terraform API support, and AssemblyScript language support.

Pyodide: scientific Python compiled to WebAssembly 😛

Pyodide brings the Python 3.8 runtime to the browser via WebAssembly. It came with the Python scientific computing stack including NumPy, Pandas, Matplotlib, parts of SciPy, and NetworkX.

A simple WebAssembly linker in JavaScript 👀

The wasm-link-js is a JavaScript library to initialize and execute WebAssembly modules. It allows WebAssembly programs to be embedded into plain JavaScript programs.

1Password is looking for Rust WebAssembly Developer 👏

1Password is hiring a Rust WebAssembly developer for 1Password Core. The 1Password Core is a common library security-critical functions across all 1Password mobile, desktop, and browser products. It sounds like the exact kind of infrastructure projects Rust could excel on.

Why We Built a Compiler We Won’t Use 🤞

Developer Niels Simonides and Jerre van Veluw discussed how they built an WebAssembly compiler from scratch for the Dutch programming language. The compiler is written in Kotlin. It is a great tutorial on the inner workings of a compiler from application developer’s point of view.

Under the hood with debugging in Blazor WebAssembly 🤖

Blazor WebAssembly doesn't yet have a standard .NET debugger. But you can still debug it! This article teaches you how to debug in Blazor WebAssembly via the Chrome Devtools Protocol.

Visual Studio 2019 for Mac v8.8 adds Blazor WebAssembly debugging 👀

Microsoft released Visual Studio 2019 for Mac v8.8. A great feature of the v8.8 is its support for Blazor WebAssembly debugging. Debugging Blazor WebAssembly applications requires the latest browsers -- Google Chrome v70 or later or Microsoft Edge v80 or later. Apple Safari on macOS isn't currently supported.

Rusty News

Servo’s new home 🦀

The Mozilla layoffs we covered a few weeks ago continue to impact the Rust community. As we recall, Mozilla laid off most of the team behind the Servo browser engine, which is one of the largest Rust projects in the world. This week, the Servo Project announced it has moved to the Linux Foundation. It now has a board and a technical steering committee.

CXX — safe interop between Rust and C++ 🦄

CXXprovides asafemechanism for calling C++ code from Rust and vice versa. It eliminates many safety issues that could come up when using bindgen or cbindgen to generate unsafe C-style bindings.

Rust Performance Book 🦀

The Rust Performance Book discusses performance related subjects, covering both speed and memory usage, for intermediate and advanced Rust developers.

Learn Assembly by writing entirely too many Brainfuck compilers in Rust 👏

The author wrote 4 compilers for theBrainfuck programming language in Rust! They compile Brainfuck programs into x86, ARM, WebAssembly, and LLVM targets. This is a great tutorial if you are interested in compilers. Along the way, you will learn assembly languages for those compiler targets, as well as how to use Rust to generate code.

rkyv: a zero-copy deserialization framework for Rust 🤞

The rkyv crate is a pure Rust deserialization framework. It is functionally similar to other zero-copy deserialization frameworks like Cap'n Proto and FlatBuffers. It uses Rust macros to build its serialization functions as serde does.

Serverless World

Google Cloud introduces new serverless Database Migration Service ✌️

Google provides a serverless Database Migration Service (DMS) to help users migrate other SQL databases to the Google Cloud SQL. Customers do not have to set up server instances during the migration – DMS takes care of the underlying infrastructure provisioning and operations.

Cisco acquired Banzai Cloud 🦄

Cisco acquired Banzai Cloud to boost its portfolio of cloud-native technologies. Banzai Cloud provides an Kubernetes-based suite of automation solutions for cloud native development and deployment.

Enjoyed reading this newsletter? Please subscribe to make sure that you do not miss a future issue. ❤️

This newsletter is a collaborative effort. Don’t forget to leave comments! Suggest topics or projects you would like to see we cover next week via contact at webassembly dot today. Thanks!

Until then, stay safe, stay healthy! 😷