Google, Microsoft, Mozilla, and a few other people have been secretly toiling away in a new W3C WebAssembly Community Group, and what they have been working on is no small thing.

For more depth, see the follow-up article, “Why We Need WebAssembly: An Interview with Brendan Eich”.

WebAssembly is:

An improvement to JavaScript: Implement your performance critical stuff in wasm and import it like a standard JavaScript module.

Implement your performance critical stuff in wasm and import it like a standard JavaScript module. A new language: WebAssembly code defines an AST (Abstract Syntax Tree) represented in a binary format . You can author and debug in a text format so it’s readable.

WebAssembly code defines an AST (Abstract Syntax Tree) represented in a . You can so it’s readable. A browser improvement: Browsers will understand the binary format , which means we’ll be able to compile binary bundles that compress smaller than the text JavaScript we use today. Smaller payloads mean faster delivery. Depending on compile-time optimization opportunities , WebAssembly bundles may run faster than JavaScript, too!

, which means we’ll be able to compile binary bundles that compress smaller than the text JavaScript we use today. Smaller payloads mean faster delivery. Depending on , WebAssembly bundles may run faster than JavaScript, too! A Compile Target: A way for other languages to get first-class binary support across the entire web platform stack.

What does this mean for JavaScript?

Before we answer this question, let’s back up a moment. Let me take you back in time… back… back…, back before React, before Angular, before Backbone, before jQuery…

Ah, here we are.

The web is a scattering of hypertext documents on bulletin board systems, not yet interlinked. The first web server is being hacked together on a NeXT workstation at CERN…

NeXT Computer used by Tim Berners-Lee at CERN

The year is 1991 and my hair isn’t gray yet. I’m hacking together my ten thousandth text adventure game (something like that, I’m not counting).

I made a peculiar language choice for this one. I was sick of working in BASIC and Pascal. I wanted to use C, but I was still saving up for my first Borland Turbo C++ boxed set (they literally came in boxes packed with manuals and install disks). I didn’t even have Turbo Assembler, yet.

I was writing in assembly language and “compiling” to an executable with the DOS `debug` command line tool. If that sounds crazy, believe me, it was. I’m betting even those of you who used DOS probably didn’t realize you could use debug to assemble instructions, as well as disassemble (reverse engineer) existing code.

Sound cool? I hated it. I couldn’t wait to get my hands on Borland Turbo C++ so I could write code like a human being. Eventually, I got it as a gift. Score!

But one of my favorite things about Borland Turbo C++ was that it came bundled with Borland Turbo Assembler. What?! Why would you want to write code in assembly language when you have a great high-level object-oriented language like C++ in your toolbelt?

Sometimes you want to get to the bare metal, or as close to it as you can get without melting your brain. Did I mention that I also wrote a lot of machine language prior to getting my hands on C++?