Book Image

Practical WebAssembly

By : Sendil Kumar Nellaiyapen
Book Image

Practical WebAssembly

By: Sendil Kumar Nellaiyapen

Overview of this book

Rust is an open source language tuned toward safety, concurrency, and performance. WebAssembly brings all the capabilities of the native world into the JavaScript world. Together, Rust and WebAssembly provide a way to create robust and performant web applications. They help make your web applications blazingly fast and have small binaries. Developers working with JavaScript will be able to put their knowledge to work with this practical guide to developing faster and maintainable code. Complete with step-by-step explanations of essential concepts, examples, and self-assessment questions, you’ll begin by exploring WebAssembly, using the various tools provided by the ecosystem, and understanding how to use WebAssembly and JavaScript together to build a high-performing application. You’ll then learn binary code to work with a variety of tools that help you to convert native code into WebAssembly. The book will introduce you to the world of Rust and the ecosystem that makes it easy to build/ship WebAssembly-based applications. By the end of this WebAssembly Rust book, you’ll be able to create and ship your own WebAssembly applications using Rust and JavaScript, understand how to debug, and use the right tools to optimize and deliver high-performing applications.
Table of Contents (15 chapters)
Section 1: Introduction to WebAssembly
Section 2: WebAssembly Tools
Section 3: Rust and WebAssembly

Converting WAST into WASM

wat2wasm helps to convert the WAST format into WASM. Let's take it for a spin:

  1. Create a new folder called wabt-playground and go into the folder:
    $ mkdir wabt-playground
    $ cd wabt-playground
  2. Create a .wat file called add.wat:
    $ touch add.wat
  3. Add the following contents to add.wat:
    (func $add (param $lhs i32) (param $rhs i32) (result i32)
     get_local $lhs 
      get_local $rhs
  4. Convert the WAST format into WASM using the wat2wasm binary:
    $ /path/to/build/directory/of/wabt/wat2wasm add.wat

This generates a valid WebAssembly binary in add.wasm file:

00 61 73 6d 01 00 00 00 01 07 01 60 02 7f 7f 017f 03
 02 01 00 0a 09 01 07 00 20 00 20 01 6a 0b

Note that the size of the generated binary is 32 bytes.

  1. WABT reads the WAST format file (.wat) and converts it into a WebAssembly module (.wasm). wat2wasm first validates the given file (.wat) and then converts it into a .wasm file...