RSSAmplifier

Blog

A. H. Zakai's Blog

Compiling to the Web, Emscripten, Binaryen, WebAssembly, etc.

kripken.github.ioRSS feed ↗9 posts

Latest posts

We Don't Understand Neural Networks At The Algorithmic Level

The largest ongoing debate about AI is “ Are Large Language Models (LLMs) intelligent? ” That makes sense, at least: the evidence is ambiguous and the stakes are high. Far more confusing is the disagreement on whether we understand LLMs - how can scientists studying a topic not broadly agree on how much we know about it? Yet respected academics have conflicting opinions, and it is worth seeing…

My "A House of Dynamite" Ending

( Massive spoilers below for A House of Dynamite )

When is an Alien NOT an Alien?

(spoilers for Alien: Earth Season 1 and the rest of the franchise)

My Game of Thrones Ending

Sometimes, when a TV show is almost complete, I write up how I would end it. Then I watch the final season or episode, and compare. Usually the show is much better! But, in my personal opinion, I prefer my own ending to Game of Thrones, and that is what is written up here.

WasmBoxC: Simple, Easy, and Fast VM-less Sandboxing

The software ecosystem has a lot of useful but unsafe code, and the easier it is to sandbox that code, the more often that’ll happen. If it were as simple as passing the compiler a --sandbox flag that makes an unsafe library unable to see or affect anything outside of it, that would be incredible! We can’t get it quite that easy, but this post describes WasmBoxC , a sandboxing approach that is…

Pause and Resume WebAssembly with Binaryen's Asyncify

Pausing and resuming code can be useful for various things, like implementing coroutines , async/await , limiting how much CPU time untrusted code gets, and so forth. If you are customizing a WebAssembly VM then you have various ways to instrument the compiled code to do this. On the other hand, if you want to do this in “userspace”, that is, if you are running inside of a standard WebAssembly VM…

Fuzzers & Reducers as Productivity Tools

Fuzzers generate random testcases in order to find interesting ones, like an input that causes a crash, and reducers take interesting testcases and find equally-interesting ones which are smaller and easier to debug. Fuzzers in particular are extremely important to modern software security, with massive amounts of fuzzing going into hardening important codebases like web browsers. But aside from…

Small WebAssembly Binaries with Rust + Emscripten

The Rust language is one of the earliest adopters of WebAssembly, and it has more than one way to compile to it:

A Silly Binaryen Optimization

The Binaryen optimizer compiles wasm to better (smaller, faster) wasm. A lot of the optimizations it has are very specific to WebAssembly, which is maybe not surprising since wasm is an ‘odd’ compiler target in many ways. So many of the optimization tricks are also odd!