-- (Updated)

Achronyme: From a 500 KB Hello World to Cryptographic Circuits

#achronyme #rust #engineering-mistakes #cryptography #optimization

Achronyme started as an experiment for digital signal processing pipelines. I quickly expanded the scope to include a general-purpose language, a graphics engine, UI, and async support. The project had no single constraint strong enough to guide its architecture.

The 500 KB measurement

In an early build, a Hello World program retained roughly 500 KB of memory. A desktop program could absorb that amount, but the measurement exposed how little discipline the runtime had. Most values were heap objects, Arc<T> appeared throughout the data model, and JavaScript-like structures were the default even when a compact value would have worked.

The runtime paid for pointer chasing, reference counts, and poor cache locality before the program did meaningful work. I paused the project because adding features on top of that model would only make it harder to replace.

A narrower problem

I restarted Achronyme around cryptographic programs and proof circuits. That scope gave the runtime useful constraints: finite-field values needed to be first-class, memory behavior needed to be inspectable, and circuit execution had to remain separate from dynamic host behavior.

The redesign included three early choices:

  1. Typed arenas for managed objects. Objects with similar lifetimes could live together instead of carrying atomic reference counts everywhere.
  2. Compact tagged values. NaN boxing let common values fit in 64 bits without a heap allocation.
  3. Native large integers and field elements. Cryptographic arithmetic could use dedicated representations instead of passing through floating-point types.

Those choices only started the redesign. The VM later split into specialized execution engines, the proving pipeline gained its own intermediate representations, and the release requirements became much stricter than I imagined in January.

The old Hello World exposed a representation problem: I had chosen data structures without measuring their cost or defining what the runtime was for. Once the purpose became concrete, the tradeoffs became easier to test.

Update, August 2026: Achronyme 0.1.0 is now available. The release story covers the architecture and proving work that followed this first redesign.