
Valen creator links new languages to Rust without the C ABI
Evan Ovadia, creator of the Valen language and a former Google engineer, has demonstrated cross-language generics with Rust by running the Rust compiler as a library instead of routing calls through C.
Evan Ovadia, the developer behind the Valen language, has published an experimental way to link a new language to Rust without routing calls through the C application binary interface (ABI). The Register reported the work on 25 September 2026.
Ovadia, a former Google engineer and a Mojo core contributor, set out the project in a blog post on 17 September 2026. He borrowed the name "Golden Spike" from the 1869 ceremony in Utah where a 17.6-karat spike completed the first US transcontinental railroad.

Why the C ABI stops at generics
Libraries normally cross language boundaries as C: a Rust crate exposes functions as extern "C" and types as repr(C), and other languages call them through a foreign function interface. But C has no generics, so a generic Rust function cannot be called from outside Rust, and Rust has no stable ABI of its own.
Ovadia wanted Valen to be a faster, friendlier alternative to Rust that still uses Rust's libraries, including his own wgpu-based graphics library. "The central question, the central mystery to solve, is how do we do cross-language generics?" he wrote.
Two compilers, one dance
Instead of generating C bindings, the Valen compiler drives rustc directly. It reads Valen imports, generates a small Rust lib.rs with the matching use declarations and passes it to rustc_driver::run_compiler, which runs the Rust compiler as a library; a callback reports when the dependencies Valen needs are loaded.
The hard part is instantiation: because both sides are generic, the two compilers must find together which concrete versions of a function are called. Ovadia calls this "the dance". When rustc needs a Valen-written function, Valen's monomorphizer produces it. He patched rustc with about 100 lines of extra callbacks that rely on private, unstable APIs and cannot be upstreamed, he warns.
First render, and what is missing
The proof came when a Valen program opened a Rust window, passed a Valen closure implementing a Rust trait into a generic Rust main loop and rendered a frame from his graphics library. "The golden spike was hammered into place, and the transcontinental compiler was born," he wrote.
Memory safety across the boundary is next. Valen uses group borrowing, a compile-time technique that permits shared mutable references, and the prototype already does some borrow checking across the Rust boundary. Sharp edges remain: structs must be zero-sized at the boundary, an existing Rust type cannot yet be declared linear, and generational references are disabled. The repository is published under Apache 2.0 and remains a prototype.
SiTech — AI-powered web development
We build fast, modern websites and bring AI into real business workflows. Have a project or a question? We'd love to help.