Valen permite pasar genéricos de Rust a nuevos lenguajes sin C ABI
El creador de Valen, Evan Ovadia, ha demostrado que los genéricos de Rust pueden viajar entre compiladores usando un parche experimental que elimina la dependencia del ABI de C.
Evan Ovadia, ex‑ingeniero de Google y colaborador central de Mojo, ha publicado un prototipo llamado Golden Spike que permite a su nuevo lenguaje, Valen, consumir y ofrecer funciones genéricas de Rust sin pasar por el tradicional ABI de C. El objetivo es evitar la pérdida de expresividad que ocurre cuando los genéricos se reducen a tipos primitivos para cumplir con la interfaz de C.
El proceso consta de dos pasos. Primero, Ovadia incorpora el compilador de Rust como una biblioteca mediante rustc_driver, lo que permite que Valen invoque directamente al compilador dentro de su propio proceso. Segundo, parchea el compilador para delegar la compilación de tipos que no son Rust a Valen, retomando el control una vez que el código está listo. El parche ocupa unas 100 líneas y asume que Rust usa LLVM, por lo que no es una solución portable ni aceptable para el upstream.
Este enfoque abre la puerta a que futuros lenguajes se construyan sobre bibliotecas Rust sin depender del C ABI, que no soporta genéricos. En la práctica, Valen podrá reutilizar la biblioteca gráfica wgpu y otras crates que dependen intensamente de genéricos, algo que antes requería un contorno complejo.
La comunidad ha reaccionado con sorpresa. En el canal de YouTube Let’s Get Rusty se describió el trabajo como “Rust++”, y en foros como Reddit y Lobste.rs se elogió el intento de reemplazar a C como “lenguaje universal de FFI”. Algunos críticos advierten que el propio tipo‑sistema de Rust impone límites y que la solución podría ser más viable sobre lenguajes como Ada.
Aunque el parche es “hacky” y no se espera que sea aceptado en el repositorio oficial, demuestra que la interoperabilidad de alto nivel es factible. Si Valen gana tracción, podríamos ver un ecosistema donde nuevos lenguajes aprovechan directamente las crates de Rust, reduciendo la fricción de integración y potencialmente dejando atrás la capa de C ABI.
Enlaces

