Volver al inicio

Solod: Go sin GC con compilación a C

Solod es un lenguaje abierto, un subconjunto de Go con transcompilación a C11 y gestión manual de memoria. Soporta construcciones clave de Go sin GC, canales y goroutines. Rendimiento superior a Go en operaciones de memoria y cadenas.

Solod abierto: subconjunto de Go para desarrollo en C
Advertisement 728x90

Solod: Subconjunto de Go con gestión manual de memoria y compilación a C

Solod (So) es un proyecto de código abierto que proporciona un subconjunto de Go transcompilable a C11. El código se compila con GCC, Clang o zig cc sin un entorno de ejecución ni recolector de basura. El transpilador está escrito en Go bajo la licencia BSD y es compatible con Linux, macOS y Windows.

La gestión manual de memoria elimina el GC, la asignación automática y el conteo de referencias. La memoria se coloca en la pila por defecto, con el montón disponible mediante Alloc/Free de la biblioteca estándar. Incluye comprobaciones de tipos y verificación de límites para desbordamientos de arrays, pero no rastrea punteros colgantes ni fugas de memoria. Para depuración, se recomienda AddressSanitizer (-fsanitize=address).

Constructos compatibles

Solod conserva las características clave de Go por comodidad:

Google AdInline article slot
  • Estructuras y métodos.
  • Interfaces.
  • Slices.
  • Retornos de múltiples valores (resultado + error).
  • Genéricos.
  • Defer.

No incluye canales, goroutines ni cierres: el enfoque está en el determinismo y el rendimiento.

Integración con herramientas existentes de Go: servidores LSP, linters, IDE, go test. El código de Solod se puede llamar desde C y viceversa sin un entorno de ejecución.

Bibliotecas y casos de uso

Paquetes de Go portados a C:

Google AdInline article slot
  • strings
  • io
  • bytes
  • mem
  • slices

Hay envoltorios sobre libc disponibles. Principales casos de uso:

  • Programación de sistemas con sintaxis de Go y tipado a nivel de C.
  • Portar bibliotecas de Go a proyectos en C.
  • Aplicaciones de alto rendimiento sin sobrecarga de GC.

Rendimiento

Los benchmarks muestran ventajas sobre Go:

| Operación | Aceleración vs Go | Consumo de memoria |

Google AdInline article slot

|-------------------------------|-------------------|--------------------|

| Funciones de bytes | 1.5x | idéntico |

| Buffers de bytes (lectura) | 1.3x | - |

| Buffers de bytes (escritura) | 2–4x | - |

| Map (obtención clave int) | 3.4x | - |

| Map (modif. clave int) | 0.6x (más lento) | - |

| Map (obtención clave string) | equivalente | - |

| Map (modif. clave string) | 0.67x | - |

| Análisis/formateo de int | 2x | - |

| float | 1.5/1.2x | - |

| Funciones de strings | 1.3x | - |

| Creación de strings | 2–4x | -10–20% |

Solod es ideal para desarrolladores intermedios y senior que buscan un equilibrio entre la expresividad de Go y el control de bajo nivel de C.

Puntos clave

  • Sin GC: gestión manual de memoria para un rendimiento predecible.
  • Interop con C: llamadas directas sin entorno de ejecución.
  • Herramientas de Go: compatibilidad con el ecosistema.
  • Rendimiento: 1.3–4x más rápido que Go en operaciones clave.
  • Comprobaciones: verificación de límites y seguridad de tipos sin sobrecarga de entorno de ejecución.

— Editorial Team

Advertisement 728x90

Leer después