Practical WebAssembly: Explore the fundamentals of WebAssembly programming using Rust

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

Understand the basic building blocks of WebAssembly and learn, install, and use various tools from the Rust and WebAssembly ecosystem

Key Features

  • Understand the Rust programming language and WebAssembly concepts for web development
  • Build web, mobile, and embedded apps using WebAssembly
  • Enhance the scalability and resilience of your web apps

Book Description

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.

What you will learn

  • Explore WebAssembly and the different tools available in the WebAssembly ecosystem
  • Understand the raw WebAssembly binary and the WebAssembly text format
  • Use the Web and JavaScript API with wasm-bindgen
  • Optimize Rust and WebAssembly for high performance
  • Run and debug WebAssembly and Rust code
  • Explore various tools available in the RustWASM ecosystem

Who This Book Is For

This book is for JavaScript developers who want to deliver better performance and ship type-safe code. Rust developers or backend engineers looking to build full-stack applications without worrying too much about JavaScript programming will also find the book useful.

Table of Contents

  1. Understanding LLVM
  2. Compiling Wasm with Emscripten
  3. Exploring WebAssembly Modules
  4. Understanding the WebAssembly Binary Toolkit
  5. Sections in the WebAssembly Module
  6. Working with Binaryen
  7. Integrating Rust with WebAssembly
  8. Bundling WebAssembly Using wasm-pack
  9. Crossing Boundaries between Rust and WebAssembly
  10. Optimizing Rust and WebAssembly

Author(s): Sendil Kumar Nellaiyapen
Edition: 1
Publisher: Packt Publishing
Year: 2022

Language: English
Pages: 226
Tags: WebAssembly; Rust; Web; Mobile; Embedded; WASM;

Cover
Title page
Copyright and Credits
Dedication
Contributors
Table of Contents
Preface
Section 1: Introduction to WebAssembly
Chapter 1: Understanding LLVM
Technical requirements
Understanding compilers
Compiled languages
Compiler efficiency
Exploring LLVM
LLVM in action
Summary
Chapter 2: Understanding Emscripten
Technical requirements
Installing Emscripten using emsdk
Generating asm.js using Emscripten
Running Hello World with Emscripten in Node.js
Running Hello World with Emscripten in the browser
Exploring other options in emsdk
Listing the tools and SDK
Managing the tools and SDK
Understanding various levels of optimizations
Optimizations
Closure Compiler
Summary
Chapter 3: Exploring WebAssembly Modules
Technical requirements
Understanding how WebAssembly works
Understanding JavaScript execution inside the JavaScript engine
Understanding WebAssembly execution inside the JavaScript engine
Exploring the WebAssembly text format
Building a function in WebAssembly text format
Summary
Section 2: WebAssembly Tools
Chapter 4: Understanding WebAssembly Binary Toolkit
Technical requirements
Getting started with WABT
Installing WABT
Converting WAST into WASM
Converting WASM into WAST
-f or --fold-exprs
Converting WASM into C
simple.h
simple.c
Converting WAST into JSON
Understanding a few other tools provided by WABT
wasm-objdump
wasm-strip
wasm-validate
wasm-interp
Summary
Chapter 5: Understanding Sections in WebAssembly Modules
Technical requirements
Exports and imports
Exports
Imports
Globals
Start
Memory
Summary
Chapter 6: Installing and Using Binaryen
Technical requirements
Installing and using Binaryen
Linux/macOS
Windows
wasm-as
wasm-dis
wasm-opt
wasm2js
Summary
Section 3: Rust and WebAssembly
Chapter 7: Integrating Rust with WebAssembly
Technical requirements
Installing Rust
Converting Rust into WebAssembly via rustc
Converting Rust into WebAssembly via Cargo
Installing wasm-bindgen
Converting Rust into WebAssembly via wasm-bindgen
Summary
Chapter 8: Bundling WebAssembly Using wasm-pack
Technical requirements
Bundling WebAssembly modules with webpack
Bundling WebAssembly modules with Parcel
Introducing wasm-pack
Why do you need wasm-pack?
How to use wasm-pack
Packing and publishing using wasm-pack
Summary
Chapter 9: Crossing the Boundary between Rust and WebAssembly
Technical requirements
Sharing classes from Rust with JavaScript
Sharing classes from JavaScript with Rust
Calling the JavaScript API via WebAssembly
Calling closures via WebAssembly
Importing the JavaScript function into Rust
Calling a web API via WebAssembly
Summary
Chapter 10: Optimizing Rust and WebAssembly
Technical requirements
Minimizing the WebAssembly modules
Analyzing the memory model in the WebAssembly module
Sharing memory between JavaScript and WebAssembly using Rust
Creating a memory object in JavaScript to use in the Rust application
Analyzing the WebAssembly module with Twiggy
top
monos
garbage
Summary
Index
About Packt
Other Books You May Enjoy