eskiuv0.10.0
Case study

ReactVision: cutting memory in an AR/VR rendering engine

“Eskiu is ReactVision's systems language. It replaces memory-sensitive C++ components in the ViroCore AR/VR rendering engine with explicit, auditable native modules, while preserving C ABI interoperability with the existing stack.” ≈85% less memory in the rendering modules migrated to Eskiu.

The setup

ReactVision builds ViroCore, the native AR/VR rendering engine behind @reactvision/react-viro on iOS, Android, Meta Quest, and visionOS. It is a large, long-lived C++ codebase, on the order of 2,200+ files and ~23 MB of engine source, split across the parts you'd expect of a real-time renderer:

SubsystemScale
Renderer~800 files
Physics~480 files
Scene graph~110 files
Image / texture, materials, lighting, text, particlesthe rest

It ships to phones and headsets, where memory is the scarce resource: every texture buffer, scene-graph node, and per-frame allocation counts. The hot, memory-sensitive paths (image and texture preprocessing, the scene graph, physics) are exactly the kind of native code where how you allocate decides the footprint.

Why Eskiu fit

The team didn't want to rewrite the engine, and didn't want to trade C++'s control for a language with a garbage collector or a heavy runtime. Eskiu's shape matched the constraints:

The approach

Selective, not a rewrite: take one memory-sensitive C++ component, re-implement it as an explicit Eskiu module, and link it in over the C ABI. The surrounding engine doesn't change; it sees the same symbols. Each migrated module is small enough to audit and measure on its own, so the footprint win is attributable. On the modules moved so far: ≈85% less memory.

So the same language that boots a bare-metal ARM64 kernel also drops a memory-tight module into a C++ rendering engine. One language across the stack, used where it pays off.