Hacker Blogs
Work in progress: 15,409 of 181,233 sites checked so far, more every week · updated 2 Nov 2026Missing a blog? Tell us

Top all-time · #823

A

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.

Visit the blog
122mentions?
0recommend?
81HN people?
2013–2026first – last linked?
Links on Hacker News per year · peak 24 in 2013

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?

  1. /emscripten-site/
    7 people · 7 mentions · first linked 2014-11-30
  2. WasmBoxC: Simple, Fast, and VM-Less Sandboxing
    6 people · 12 mentions · first linked 2020-07-27
  3. Lua.vm.js
    5 people · 6 mentions · first linked 2013-05-31
  4. /emscripten-site/docs/porting/connecting_cpp_and_javascript/Interacting-with-code.html
    4 people · 4 mentions · first linked 2016-11-24
  5. Lua.vm.js
    4 people · 4 mentions · first linked 2015-09-23
  6. /lua.vm.js/repl.html
    3 people · 4 mentions · first linked 2013-05-31
  7. /Massive/
    3 people · 3 mentions · first linked 2014-11-03
  8. /emscripten-site/docs/porting/pthreads.html
    3 people · 3 mentions · first linked 2016-03-10
  9. /box2d.js/webgl_demo/box2d.html
    2 people · 3 mentions · first linked 2013-04-26
  10. Big web app? Compile it
    2 people · 2 mentions · first linked 2013-05-23

What Hacker News says?

  1. 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"”
  2. Submitted WasmBoxC: Simple, Fast, and VM-Less Sandboxing as a story · 224 points

    HN discussion
  3. Rust -- 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”
  4. Submitted Emscripten and asm.js: C++'s role in the modern web as a story · 183 points

    HN discussion
  5. > 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”
  6. Submitted Run LLVM Assembly in the Browser as a story · 95 points

    HN discussion
  7. Estimates 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”
  8. Submitted Big web app? Compile it as a story · 90 points

    HN discussion
  9. Notably, 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”
  10. Submitted Lua.vm.js as a story · 63 points

    HN discussion
  11. Currently, 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”
  12. Submitted Pause and Resume WebAssembly with Binaryen's Asyncify as a story · 39 points

    HN discussion
  13. If 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”
  14. Submitted Small WebAssembly Binaries with Rust and Emscripten as a story · 17 points

    HN discussion
  15. How 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”
  16. Submitted Emscripten and WebAssembly talk slides as a story · 11 points

    HN discussion
  17. The 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”
  18. Submitted WasmBoxC: Simple, Easy, and Fast VM-Less Sandboxing as a story · 9 points

    HN discussion
  19. Modern 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”
  20. Submitted Emscripten and WebAssembly as a story · 8 points

    HN discussion
  21. you 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”
  22. Submitted Fuzzers and Reducers as Productivity Tools as a story · 3 points

    HN discussion
  23. 42% 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”
  24. Submitted Is this the death of REST? as a story · 3 points

    HN discussion
  25. And 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”
  26. Submitted We Don't Understand Neural Networks at the Algorithmic Level as a story · 2 points

    HN discussion
  27. There 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”
  28. Submitted BananaBread: Cube2 Port to WebAssembly as a story · 2 points

    HN discussion
  29. You'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”
  30. Submitted Fuzzers and Reducers as Productivity Tools as a story · 2 points

    HN discussion

Search all of HN for kripken.github.io

Linked by the same people?