Solod (So): un subconjunto estricto de Go que compila a C
En un ecosistema saturado de nuevos lenguajes de programación que prometen ser "como Go pero con más características" o "como Rust pero más simples", Solod (So) irrumpe con una propuesta radicalmente diferente: no añade complejidad, sino que la elimina. Se trata de un subconjunto estricto de Go que traduce código a C estándar, combinando la ergonomía y seguridad de Go con el control de bajo nivel y el rendimiento del lenguaje C. A julio de 2026, el proyecto se encuentra en desarrollo activo y acaba de publicar su versión 0.2.
Según su sitio oficial (solod.dev), Solod está dirigido a dos perfiles muy concretos de desarrolladores: por un lado, programadores de Go que desean control a nivel de sistemas sin tener que aprender un lenguaje nuevo; por otro, programadores de C que valoran la seguridad, estructura y herramientas de Go. El lenguaje soporta structs, métodos, interfaces, slices, maps, retornos múltiples y la instrucción defer. Todo se asigna en el stack por defecto, mientras que el heap es opt-in a través de la biblioteca estándar. La compatibilidad con genéricos es limitada y la concurrencia se proporciona desde la biblioteca estándar en lugar de estar integrada en el lenguaje.
Lo que distingue a Solod de otros lenguajes inspirados en Go es que, literalmente, es un subconjunto del lenguaje original. Tal como explica su creador, Anton Zhiyanov, en su blog personal (antonz.org), Solod reutiliza gran parte del tooling existente de Go, incluyendo resaltado de sintaxis, LSP, linters y el sistema de gestión de paquetes. El flujo de trabajo resulta familiar para cualquier desarrollador de Go: se instala con "go install", se inicializa un proyecto con "go mod init", y se ejecuta con "so run".
La reutilización va más allá del tooling. Solod incorpora porciones sustanciales de la biblioteca estándar de Go, en ocasiones de forma verbatim. Funciones como CutPrefix y HasPrefix se mantienen idénticas al código fuente original de Go. Sin embargo, el código que depende de la gestión automática de memoria de Go requiere adaptaciones; por ejemplo, la función Clone, que en Go utiliza "make([]byte, len(s))", en Solod recibe un asignador explícito (mem.Allocator) y emplea "mem.AllocSlice". El proyecto conserva los créditos de copyright de los autores originales de Go.
Una advertencia importante señalada por Zhiyanov es que las herramientas de Go no distinguen entre Solod y Go estándar, por lo que no advertirán sobre características no soportadas, como function literals o iteradores. Estas advertencias provienen del tooling personalizado "so", que emite diagnósticos específicos. Además, aunque gran parte de la biblioteca estándar sea portable, Solod necesita sus propios tests, incluyendo aquellos que se ejecuten bajo sanitizers y analizadores estáticos.
El destino final de todo código Solod es C. Como explica el propio Zhiyanov, "es todo C al final". Todo el código se traduce a C11 estándar y luego se compila con GCC o Clang, aprovechando décadas de trabajo de optimización en estos compiladores. Un programa trivial con "math.Sqrt(1764)" se convierte en una llamada a "math_Sqrt(1764.0)" en C, con includes de headers generados automáticamente. El código C resultante es más verboso, especialmente en programas complejos, pero sigue siendo legible. Y, al no existir un runtime propio, la interoperabilidad entre Solod y C es gratuita.
La versión 0.2, la más reciente hasta la fecha, añadió soporte para networking, WebAssembly y modo freestanding. La próxima versión, 0.3, se encuentra en desarrollo e incorporará soporte para concurrencia, la pieza que actualmente se ofrece únicamente a través de la biblioteca estándar.
El enfoque de Solod plantea una pregunta filosófica interesante: ¿realmente un lenguaje nuevo necesita un ecosistema nuevo? Zhiyanov defiende que la dependencia de Go es una fortaleza, no una debilidad, ya que reutilizar herramientas probadas y una biblioteca estándar madura hace que Solod sea más confiable y fácil de usar. Para los desarrolladores interesados, el proyecto ofrece un playground en línea (solod.dev/#try), documentación completa en GitHub y ejemplos prácticos para empezar sin instalación previa. Aunque aún no está listo para producción, Solod representa una apuesta provocadora por la simplicidad en un sector que tiende a la complejidad.
