5 Fun Wasm Projects (that you might not have known about)

Introduction

The WebAssembly ecosystem is growing at a remarkable pace and even beginning to break free of its origins in the browser. Today, there are quite a few exciting Wasm projects making waves in the community with a varied range of use cases. From CMSs to low-resource runtimes for the edge, we’re going to explore a few of these tools in this post.

1. Bartholomew

The first project we’re going to highlight is Bartholomew, which was developed by our very own Matt Butcher to serve as a micro-CMS that compiles to WebAssembly and can run in any WAGI capable system.

Bartholomew functions similarly to static site generators like Hugo, but calling it a static site generator is a misnomer. By building sites into lightweight WebAssembly modules, Bartholomew processes page requests individually on demand.

If you’re looking for a good example of how Bartholomew functions, a great way to get started with Bartholomew is by cloning the Spin repo and building the documentation site . Since Spin is built using Bartholomew, this will allow you to dive in and see exactly how a Bartholomew site functions as well as get inspiration for deploying one yourself.

2. Grain

Functional programming languages often leverage innovative and modern features but struggle with a reputation of being esoteric for greater community adoption. What the ecosystem needs is a programming language that blends the speed and innovation of functional programming languages with the simplicity of object-oriented languages.

The goal of Grain is to leverage the power of WebAssembly to embrace these ideas and present them in a form that is accessible and easy to understand. Grain compiles to WebAssembly and can be run in the browser, on a local computer, on a server, and potentially elsewhere.

If you’re interested in getting started with the Grain programming language, you can check out their website here.

3. WasmEdge

As more physical devices come online and computation moves closer to the network’s edge, application size constraints come into play that demand a much smaller footprint compared to traditional computing on the cloud.

Furthermore, the rise in serverless computing has necessitated a new demand for faster cold start times and overall speed in computation-heavy workloads.

WasmEdge is a lightweight, high-performance, and extensible WebAssembly runtime that is built for cloud-native, edge, and decentralized applications. Compared with traditional containers, WasmEdge has the potential to be up to 100x faster at startup and 20x faster at runtime.

If you’re interested in trying out WasmEdge for yourself, check out their site here.

4. Wasi-nn

The ability to leverage near-native runtime speeds is a huge draw for applications that require computational heavy workloads. It should be no surprise then that there is a lot of work going into porting machine learning frameworks over to WebAssembly and its runtimes.

The goal of wasi-nn is to provide a WASI module that enables machine learning functionality in the Wasm ecosystem by providing a platform for deploying machine learning models onto a variety of devices with different architectures and operating systems.

If you’re interested in learning more about wasi-nn, check out the proposal here.

5. Wasm-bindgen

The Wasm-bindgen tool is a CLI and library that facilitates high-level interactions between Wasm modules and JavaScript. By using Wasm-bindgen, you can define a JS class in Rust, take a string from JS, or return one back to JS. The project also enables JS features in Rust such as:

  • DOM manipulation
  • Console logging
  • Performance monitoring

In contrast, it also exports Rust functionality to JS such as classes, functions, etc. If you’re interested in learning more about Wasm-bindgen, check out the docs here.

Join us on Discord for more tools!

The WebAssembly community is changing rapidly, and if you want to stay up to date on the latest trends, come join our Discord server here.

Interested in learning more?

Get Updates