Un compilador de Go basado en LLVM que genera código para microcontroladores, WebAssembly (WASM/WASI) y herramientas de línea de comandos.
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
Instala llgo siguiendo la sección How to install del README
- 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
Una cadena de herramientas de compilación que convierte código C y C++ en WebAssembly para ejecutarlo en navegadores, Node.js y otros runtimes de Wasm.
Colección modular de tecnologías para compiladores y cadenas de herramientas, que incluye el núcleo de LLVM, el frontend Clang para C/C++, libc++ y el linker LLD.
Emulador open source de ESP32 en Rust que ejecuta firmware real en tu computadora o en el navegador, sin necesidad de hardware.
El lenguaje de programación Kotlin, su compilador, biblioteca estándar y herramientas de compilación, desarrollados por JetBrains para el desarrollo multiplataforma.
Lenguaje similar a TypeScript y compilador que convierte un subconjunto tipado de TypeScript en módulos WebAssembly.