Repolode
xgo-dev

xgo-dev/llgo

Un compilador de Go basado en LLVM que permite llamar directamente a bibliotecas de C e importar bibliotecas de Python.

Estrellas
845
Forks
53
Issues abiertos
197
Último commit
hace 1 hora

¿Qué es?

LLGo es un compilador de Go basado en LLVM, diseñado para integrar Go con el ecosistema de ABI de C, incluidos C/C++, Python y otros lenguajes que exponen interfaces compatibles con C. Es compatible con Go a nivel de código fuente y es un subproyecto de XGo.

En lugar de depender de cgo, LLGo vincula directamente las declaraciones de Go a los símbolos de C mediante go:linkname, de modo que las llamadas a C se compilan como llamadas nativas, sin cambiar de pila ni de scheduler entre Go y C. Incluye bindings para muchas bibliotecas de C, como SQLite, zlib, libuv, OpenSSL y raylib, y para paquetes de Python, como NumPy y PyTorch, mediante la herramienta llpyg. Su runtime usa goroutines nativas asignadas a hilos del sistema operativo y, de forma predeterminada, el recolector de basura conservador BDWGC.

El compilador es compatible de forma nativa con Linux, macOS y Windows, además de WebAssembly y plataformas embebidas. Para compilarlo y ejecutar programas se necesitan LLVM 22, Clang 22 y LLD.

Funciones clave

  • 01Llama directamente a funciones de C mediante go:linkname, sin la sobrecarga de cgo.
  • 02Importa bibliotecas de Python, como NumPy y PyTorch, mediante bindings generados.
  • 03Compila código fuente compatible con Go 1.20+ y admite cgo.
  • 04Ofrece bindings para la biblioteca estándar de C/C++ y para muchas bibliotecas de C de uso común.
  • 05Admite como destinos Linux, macOS y Windows nativos, WebAssembly y placas embebidas.

Casos de uso

  • Llamar desde código Go a bibliotecas de C existentes, como SQLite o raylib.
  • Usar bibliotecas de Python para cálculo numérico o ciencia de datos desde programas Go.
  • Crear programas Go para WebAssembly o placas de microcontroladores embebidas.
  • Experimentar con la compilación de Go mediante LLVM para interoperar con el ecosistema de C.

Inicio rápido

  1. 1

    Instala llgo siguiendo la sección How to install del README

  2. 2

    Ejecuta una demo, como _demo/c/hello, desde su directorio

    llgo run .

Antes de usarlo

  • Otros destinos, como WebAssembly y los sistemas embebidos, pueden no ofrecer todos los servicios del sistema operativo ni todos los comportamientos del runtime.
  • Las bibliotecas Python de terceros, como pandas y PyTorch, deben instalarse por separado.
  • Los bindings de C y C++ se mantienen manualmente, por lo que la cobertura de bibliotecas es limitada.
  • El reenvío de llamadas variádicas de C a través de wrappers de métodos promovidos solo se admite en destinos nativos con sistema operativo anfitrión.

Temas

Preguntas frecuentes

¿Qué es llgo?
Un compilador de Go basado en LLVM que permite llamar directamente a bibliotecas de C e importar bibliotecas de Python. LLGo es un compilador de Go basado en LLVM, diseñado para integrar Go con el ecosistema de ABI de C, incluidos C/C++, Python y otros lenguajes que exponen interfaces compatibles con C. Es compatible con Go a nivel de código fuente y es un subproyecto de XGo.
¿llgo es gratuito? ¿Qué licencia tiene?
llgo es open source bajo la licencia Apache-2.0. Revisa los términos de la licencia antes de usarlo en productos comerciales.
¿llgo sigue mantenido?
Mantenimiento activo. El último commit de llgo fue el 22 oct 2026.
¿Para qué puedo usar llgo?
Llamar desde código Go a bibliotecas de C existentes, como SQLite o raylib. Usar bibliotecas de Python para cálculo numérico o ciencia de datos desde programas Go. Crear programas Go para WebAssembly o placas de microcontroladores embebidas. Experimentar con la compilación de Go mediante LLVM para interoperar con el ecosistema de C.
¿Cómo se instala llgo?
Instala llgo siguiendo la sección How to install del README Ejecuta una demo, como _demo/c/hello, desde su directorio: llgo run .
¿Dónde consigo llgo?
El código fuente y las instrucciones de instalación están en GitHub: https://github.com/xgo-dev/llgo

Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.

Proyectos relacionados