The Art of WebAssembly

Author: Rick Battagline
Publisher: No Starch
Date: May 2021
Pages: 304
ISBN: 978-1718501447
Print: 1718501447
Kindle: B08TSYXJTS
Audience: WebAssembly developers
Rating: 5
Reviewer: Ian Elliot
WebAssembly is the coming thing - or so we are told.

WebAssembly (WA) is an attempt to introduce a universal intermediate language that can run in the browser among other things. In principle it should make it possible to take existing application written in C and other languages and compile them to WebAssembly and from there you should be able to run them anywhere. You must have heard this sort of idea before. It goes back to the early days of P code and today is best known as the Java byte code language and possibly .NET IL.

At the moment the impact of WA on the average JavaScript programmer is minimal as most of us don't need the speed and ability to use existing code it provides. Even if you do need to use WA the chances are you will opt to use a high level language and a suitable compiler. At the moment this is difficult enough to make it a barrier to the casual use of WA, but this is likely to change. More to the point, it has to change if WA is going to become more widely used.

So a book on WA is a good idea even if you might not need it just yet. However, you need to know that this particular book takes the approach of teaching you all about the raw use of WA. That is no high-level language or compiler involved - just write the WA code as if it really was assembler. 

Yes, this is low level coding!


The good news is that getting started it much easier with assembler than with a high level language. The book suggests using Visual Studio Code and a suitable extension. This lets you write assembly code in text and try it out. You also need to install Node.JS for many of the early examples - you can't get away from JavaScript as WA needs it to get started and do most of the user interaction. 

The book starts off with a general look at WA and explains why you might want to use it. This is where we learn about Visual Studio and Node and look at a first simple example. Chapter 2 gets into the details of writing WA. Chapter 3 is all about functions and function tables.

Chapter 4 starts to tell you about things that you probably should know before you start with any assembly language - low-level bit manipulation. However, given the range of backgrounds programmers have today and the number who don't encounter low-level programming, perhaps it is a good idea to go over the basics. I found some of the illustrations a little too simplistic and more suitable for a dummy's book, but this is a style problem and doesn't make the book any less readable or useful. Chapter 5 explains how to use strings - always more difficult in a low-level language.

The rest of the book slowly moves away from learning the basics of WA to how to make it work with the rest of the system. Chapter 6 is about dealing with memory; Chapter 7 explains how to interact with the DOM to create a Web App; Chapter 8 extends this to working specifically with the Canvas element to create graphics; Chapter 9 is about optimization and profiling and Chapter 10 introduces the debugger.

The final chapter introduces AssemblyScript which is a TypeScript-like higher level language that is easy to compile into AW. It isn't clear why this is covered in a book on AW and it probably deserves a book in its own right. Using AssemblyScript makes writing larger programs much more feasible, but whether this is a good bet for the future is too early to say. It is undeniably a more familiar way to program for most JavaScript programmers.

This is a really good book, but it isn't essential reading for every JavaScript programmer. It is more suited to the experimenter and the existing assembly language programmer wanting to try out new ideas. Unlike many of the books out there this one actually has some technical content, but it might be too technical for many readers - this is a failure of the reader rather than the book. 

To keep up with our coverage of books for programmers, follow @bookwatchiprog on Twitter or subscribe to I Programmer's Books RSS feed for each day's new addition to Book Watch and for new reviews.


Beginning Rust Programming

Author: Ric Messier
Publisher: Wiley
Date: March 2021
Pages: 416
ISBN: 978-1119712978
Print: 1119712971
Kindle: B08WZ2D7WC
Audience: Developers wanting to learn Rust
Rating: 3
Reviewer: Mike James
Everyone seems to want to know what makes Rust special. Does this book give the answers?

Getting MEAN with Mongo, Second Edition

Author: Simon Holmes and Clive Harber
Publisher: Manning
Pages: 504
ISBN: 978-1617294754
Print: 1617294756
Audience: JavaScript web developers 
Rating: 4
Reviewer: Kay Ewbank

The so-called MEAN stack of MongoDB, Express, Angular and Node.js offers the tools for developing data-driven web appli [ ... ]

More Reviews


Last Updated ( Friday, 24 December 2021 )