Building

WASM-Frontmatter:

A Javascript package written in Rust leveraging WASM

Josh Finnie

What is WASM-Frontmatter?

  • It's a javascript package to "replace" gray-matter
  • It's API is completely Web Assembly
  • It's currently about twice as fast as gray-matter
  • It's almost at API parity (still working on callbacks)

[1] Gray Matter: https://www.npmjs.com/package/gray-matter
[2] WASM Frontmatter: https://www.npmjs.com/package/wasm-frontmatter

What is WASM?

  • WebAssembly (WASM) is an open web standard that defines a portable binary-code format for executable programs in the web giving near-native code execution speed in the web browser. [1]

[1] https://en.wikipedia.org/wiki/WebAssembly

Tools WASM-Frontmatter Uses

Below are the two tools I use to build WASM-Frontmatter:

  • Rust, of course
  • WASM-Pack

Rust

  • All logic for WASM-Frontmatter is written using Rust.
  • It uses the wasm-bindgen[1] crate heavily to build connections between the Rust code and Javascript.

[1] https://rustwasm.github.io/docs/wasm-bindgen/

WASM-Pack

  • A tool seeks to be a one-stop shop for building and working with rust- generated WebAssembly that you would like to interop with JavaScript, in the browser or with Node.js [1]
  • This command line tool is tightly coupled to the wasm-bindgen package we use to code our application in rust
  • It also very nicely helps build and publish your application to NPM

[1] https://rustwasm.github.io/docs/wasm-pack/

WASM-Pack (Con't)

  • Have Rust installed.
  • Install WASM-pack through this script:                              

 

  • Once installed, run the following commands to get your package up and running:
$ wasm-pack new hello-world
$ cd hello-world
$ wasm-pack build
$ wasm-pack publish
$ curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh

Live Code!

Thank you!

Josh Finnie

@joshfinnie (almost everywhere)