Top all-time · #823
A. H. Zakai's Blog
Personal blog · kripken.github.ioprogrammingwebsystems
A. H. Zakai's Blog is a personal blog at kripken.github.io about programming, web and systems. Since 2013, 81 different Hacker News readers have linked it 122 times, most often “WasmBoxC: Simple, Fast, and VM-Less Sandboxing”. It is still writing: the last post was on 2026-06-20, and you can follow it by feed.
Rarely recommended · 0 of 40 sampled comments recommend it?
Why HN links it
HN readers link Zakai's blog as a source on WebAssembly, asm.js and Emscripten performance, with its sandboxing and bounds-check benchmarks cited often.
Summarised by Claude from a sample of 40 HN comments that link here. Each comment is marked recommending, critical or neutral (citing without judging); how this works.
Most-linked posts?
- /emscripten-site/7 people · 7 mentions · first linked 2014-11-30
- WasmBoxC: Simple, Fast, and VM-Less Sandboxing6 people · 12 mentions · first linked 2020-07-27
- Lua.vm.js5 people · 6 mentions · first linked 2013-05-31
- /emscripten-site/docs/porting/connecting_cpp_and_javascript/Interacting-with-code.html4 people · 4 mentions · first linked 2016-11-24
- Lua.vm.js4 people · 4 mentions · first linked 2015-09-23
- /lua.vm.js/repl.html3 people · 4 mentions · first linked 2013-05-31
- /Massive/3 people · 3 mentions · first linked 2014-11-03
- /emscripten-site/docs/porting/pthreads.html3 people · 3 mentions · first linked 2016-03-10
- /box2d.js/webgl_demo/box2d.html2 people · 3 mentions · first linked 2013-04-26
- Big web app? Compile it2 people · 2 mentions · first linked 2013-05-23
What Hacker News says?
On a technical level it's actually not that impressive. Mozilla got BananaBread/Sauerbraten running with WebGL on netbooks over a decade ago, with much more advanced graphics than Xash3D: https://kripken.github.io/misc-js-benchmarks/banana/index.ht... https://wiki.mozilla.org/HTML5_Games/BananaBread The Half Life "app" above actually just wraps an existing Emscripten port in an IFrame. Puter does provide an abstract…
Comment linking /misc-js-benchmarks/banana/index.html
on “Show HN: 3 years and 1M users later, I just open-sourced my "Internet OS"”Submitted WasmBoxC: Simple, Fast, and VM-Less Sandboxing as a story · 224 points
HN discussionRust -- https://github.com/koute/stdweb C++ -- https://github.com/mbasso/asm-dom I don't know exactly how these work but Emscripten allows interop both ways (embedding JS in native code and calling native code from JS) -- https://kripken.github.io/emscripten-site/docs/porting/conne...
Comment linking /emscripten-site/docs/porting/connecting_cpp_and_javascript/Interacting-with-code.html
on “Firefox’s new streaming and tiering compiler”Submitted Emscripten and asm.js: C++'s role in the modern web as a story · 183 points
HN discussion> Read up, you've missed a memo :-P. Plan for Harmony-era weak refs is to notify in next event loop turn. Got a link to the memo? I haven't heard about this one. > Why do you need to manually deallocate a callback function passed to setTimeout? One of my use cases is running lua in the browser. see lua.vm.js: https://kripken.github.io/lua.vm.js/repl.html When you pass a lua function to a javascript function, I creat…
Comment linking /lua.vm.js/repl.html
on “From Asm.js to WebAssembly”Submitted Run LLVM Assembly in the Browser as a story · 95 points
HN discussionEstimates vary (because benchmarks and use cases vary), but it's generally faster than 50%. That number was seen here, https://www.usenix.org/system/files/atc19-jangda.pdf (I assume that's what you refer to?) It's a good measurement, but it's from 2019, and it's just on 2 wasm engines. There are other estimates, like here: https://kripken.github.io/blog/wasm/2020/07/27/wasmboxc.html That tries to measure the fundame…
Comment linking /blog/wasm/2020/07/27/wasmboxc.html
on “Tell HN: We are trying to get tail calls into the WebAssembly standard”Submitted Big web app? Compile it as a story · 90 points
HN discussionNotably, with shared memory and atomics, pthreads support is on the horizon. https://kripken.github.io/emscripten-site/docs/porting/pthre... Granted it may be limited to consumption via Emscripten, it is nevertheless now within the realm of possibility. For this that cannot grok the gravity of this -- proper concurrent/parallel execution just got a lot closer for those targeting the browser.
Comment linking /emscripten-site/docs/porting/pthreads.html
on “ECMAScript 2017 Language Specification”Submitted Lua.vm.js as a story · 63 points
HN discussionCurrently, the best supported languages are C, C++, and Rust. Languages that have runtimes require their runtimes to also be compiled in, and so are much heavier weight. For C and C++, you have emscripten. For Rust, we have an emscripten-based toolchain that works today, but have a PR open for using LLVM's built-in wasm backend. For emscripten: https://kripken.github.io/emscripten-site/docs/# For Rust: https://hacke…
Comment linking /emscripten-site/docs/
on “WebAssembly support now shipping in all major browsers”Submitted Pause and Resume WebAssembly with Binaryen's Asyncify as a story · 39 points
HN discussionIf you target WebGL2 you can likely do it without hand modifying the shaders. In a small test I did I just patched the emscripten library_gl.js to do a very simple search and replace of the version string of shaders and stuff just worked. code: https://github.com/greggman/doodles/tree/master/glfw-imgui demo: https://greggman.github.io/doodles/glfw-imgui/out/glfw-imgui... You do have to decide if you want to restruct…
Comment linking /emscripten-site/docs/porting/emterpreter.html
on “Here be dragons: the same 3D scene implemented with 10 different 3D APIs”Submitted Small WebAssembly Binaries with Rust and Emscripten as a story · 17 points
HN discussionHow does it compare to, say, Box2D ported to JS using Emscripten? http://kripken.github.io/box2d.js/webgl_demo/box2d.html
Comment linking /box2d.js/webgl_demo/box2d.html
on “Matter.js – A 2D rigid body physics engine for the web”Submitted Emscripten and WebAssembly talk slides as a story · 11 points
HN discussionThe Emscripten File System API, "The API is inspired by the Linux/POSIX File System API, with each presenting a very similar interface." https://kripken.github.io/emscripten-site/docs/api_reference...
Comment linking /emscripten-site/docs/api_reference/Filesystem-API.html
on “PyPy.js: Python in the web browser”Submitted WasmBoxC: Simple, Easy, and Fast VM-Less Sandboxing as a story · 9 points
HN discussionModern JS VMs have type-specializing JITs. That's how they make code run fast, basically - they detect types at runtime, and emit efficient code for that. asm.js just gives them the types, which makes things easier, but it all builds upon the existing power of JS VMs. See e.g. http://kripken.github.io/mloc_emscripten_talk/sotu.html#/16
Comment linking /mloc_emscripten_talk/sotu.html
on “JavaScript at 20”Submitted Emscripten and WebAssembly as a story · 8 points
HN discussionyou could use emscripten to compile to wasm as a target https://kripken.github.io/emscripten-site/docs/compiling/Web...
Comment linking /emscripten-site/docs/compiling/WebAssembly.html
on “Hello wasm-pack”Submitted Fuzzers and Reducers as Productivity Tools as a story · 3 points
HN discussion42% slower only in the worst case using the slowest (explicit) bounds checks, only 12% slower with a signal handler: https://kripken.github.io/blog/wasm/2020/07/27/wasmboxc.html
Comment linking /blog/wasm/2020/07/27/wasmboxc.html
on “WebAssembly and Back Again: Fine-Grained Sandboxing in Firefox 95”Submitted Is this the death of REST? as a story · 3 points
HN discussionAnd I see the safe languages section[1] in the WasmBoxC post; that looks like it would address most of the remaining UB risk, but Firefox will take some time getting there. [1]: https://kripken.github.io/blog/wasm/2020/07/27/wasmboxc.html...
Comment linking /blog/wasm/2020/07/27/wasmboxc.html
on “WebAssembly and Back Again: Fine-Grained Sandboxing in Firefox 95”Submitted We Don't Understand Neural Networks at the Algorithmic Level as a story · 2 points
HN discussionThere are detailed performance numbers here on a variety of real-world codebases: https://kripken.github.io/blog/wasm/2020/07/27/wasmboxc.html tl;dr Something like ~14% when using the best bounds checking strategy, or ~42% when using the most portable one. (There are options in the middle as well.)
Comment linking /blog/wasm/2020/07/27/wasmboxc.html
on “WebAssembly and Back Again: Fine-Grained Sandboxing in Firefox 95”Submitted BananaBread: Cube2 Port to WebAssembly as a story · 2 points
HN discussionYou're right that this could be done on LLVM IR. The MinSFI project did exactly that basically, several years ago, but it did not see adoption sadly. The benefits of wasm over LLVM IR is that wasm has already done the work to define the sandboxed format and build the tooling to compile to it. Wasm is also almost as fast as running normally. (Wasm is also portable and lacks undefined behavior, although for this use c…
Comment linking /blog/wasm/2020/07/27/wasmboxc.html
on “WebAssembly and Back Again: Fine-Grained Sandboxing in Firefox 95”Submitted Fuzzers and Reducers as Productivity Tools as a story · 2 points
HN discussion