Writing about the runtime, the engine, and what's underneath.
Release notes, technical deep dives, adapter walkthroughs, benchmark publications, and the occasional essay about why software ends up the way it does. Written for engineers who want to know how things work, not why they should care.
Introducing NativeRuntime 1.0.
After years of watching the industry settle for Electron, bridge-based mobile frameworks, and increasingly bloated JavaScript runtimes, I'm releasing the runtime I always wanted to exist. NativeRuntime combines QuickJS with a repeatable adapter pattern and a build tool that produces small native binaries for every major platform. Here's what it is, why it exists, and what ships in 1.0.
Read the launch post →Inside the SQLite adapter: how 200 lines of C exposes a database to JavaScript.
A complete walkthrough of the nr:sqlite adapter — from QuickJS's object binding model to prepared statements, from memory ownership to transaction lifecycle. The pattern shown here is the same one every adapter follows.
QuickJS is 30× smaller than V8. The interesting part is what that enables.
A look at why engine size matters more than raw execution speed for the kinds of applications NativeRuntime is built for, with comparison data across V8, JSC, SpiderMonkey, and QuickJS on a representative cross-section of workloads.
Why the industry built Electron when QuickJS already existed.
Fabrice Bellard released QuickJS in 2017. By any reasonable measure it was the engine the industry needed for embedded cross-platform JavaScript. Nobody used it. This is a short essay on why technically superior tools sometimes get ignored, and what that means for adoption now.
Building Magnum-on-WASM: pinned memory and the trick that makes 3D fast in JavaScript.
three.js makes JavaScript 3D rendering possible. It does not make it fast. Here's a technical walkthrough of how the Magnum adapter uses WebAssembly's pinned memory model to eliminate the marshalling tax that limits browser 3D performance.
The 0.9 preview: hello-world templates and the first reference adapters.
A pre-1.0 release covering the desktop, middleware, and mobile templates that ship with NativeRuntime, plus the AppGUI and Magnum reference adapters now in preview. What works, what doesn't, and what comes next.
The adapter pattern: connecting JavaScript to anything in three files.
A first principles walkthrough of how NativeRuntime adapters work, what makes them composable, and why the same three-file pattern that wraps SQLite also wraps Magnum, AppGUI, and any C, C++, or Rust library you care to bind.
373,000 context creations per second: what the number means and how it's measured.
A short methodology post on the headline QuickJS benchmark that appears on the NativeRuntime homepage — what the test actually measures, on what hardware, and why context creation rate is a more useful metric for embedded runtimes than raw arithmetic throughput.
// older posts
View full archive →Get new posts when they ship.
Release notes, technical deep dives, and benchmark publications. Low frequency. No marketing. Unsubscribe with one click.