Um compilador Go baseado em LLVM para microcontroladores, WebAssembly (WASM/WASI) e ferramentas de linha de comando.
xgo-dev/llgo
Um compilador Go baseado em LLVM que permite chamar bibliotecas C diretamente e importar bibliotecas Python.
- Estrelas
- 845
- Forks
- 53
- Issues abertas
- 197
- Último commit
- há 1 hora
O que é?
LLGo é um compilador Go baseado em LLVM, voltado à integração do Go com o ecossistema de ABI C, incluindo C/C++, Python e outras linguagens que oferecem interfaces compatíveis com C. Ele é compatível com Go no nível do código-fonte e é um subprojeto do projeto XGo.
Em vez de depender de cgo, o LLGo vincula declarações Go diretamente a símbolos C usando go:linkname. Assim, as chamadas a C são compiladas como chamadas nativas, sem transição de pilha ou de scheduler entre Go e C. O projeto inclui bindings para várias bibliotecas C, como SQLite, zlib, libuv, OpenSSL e raylib, e para pacotes Python, como NumPy e PyTorch, por meio das ferramentas llpyg. Por padrão, o runtime usa goroutines nativas mapeadas para threads do sistema operacional e o coletor de lixo conservador BDWGC.
O compilador oferece suporte nativo a Linux, macOS e Windows, além de WebAssembly e plataformas embarcadas. Para compilar o LLGo e executar programas, são necessários LLVM 22, Clang 22 e LLD.
Recursos principais
- 01Chama funções C diretamente por meio de go:linkname, sem o overhead do cgo.
- 02Importa bibliotecas Python, como NumPy e PyTorch, por meio de bindings gerados.
- 03Compila código-fonte Go compatível com Go 1.20+ e oferece suporte a cgo.
- 04Oferece bindings para a biblioteca padrão de C/C++ e para várias bibliotecas C comuns.
- 05Gera binários para Linux, macOS e Windows nativos, WebAssembly e placas embarcadas.
Casos de uso
- Chamar bibliotecas C existentes, como SQLite ou raylib, a partir de código Go.
- Usar bibliotecas Python de computação numérica ou ciência de dados em programas Go.
- Criar programas Go para WebAssembly ou placas embarcadas com microcontroladores.
- Experimentar compilar Go por meio do LLVM para interoperar com o ecossistema C.
Início rápido
- 1
Instale llgo seguindo a seção How to install do README
- 2
Execute uma demonstração, como _demo/c/hello, a partir do diretório correspondente
llgo run .
Antes de usar
- Outros targets, como WebAssembly e sistemas embarcados, podem não oferecer todos os serviços do sistema operacional nem todos os comportamentos do runtime.
- Bibliotecas Python de terceiros, como pandas e PyTorch, precisam ser instaladas separadamente.
- Os bindings de C e C++ são mantidos manualmente, por isso a cobertura de bibliotecas é limitada.
- O encaminhamento de chamadas variádicas de C por meio de wrappers de métodos promovidos só é compatível com targets nativos hospedados.
Tópicos
Perguntas frequentes
- O que é llgo?
- Um compilador Go baseado em LLVM que permite chamar bibliotecas C diretamente e importar bibliotecas Python. LLGo é um compilador Go baseado em LLVM, voltado à integração do Go com o ecossistema de ABI C, incluindo C/C++, Python e outras linguagens que oferecem interfaces compatíveis com C. Ele é compatível com Go no nível do código-fonte e é um subprojeto do projeto XGo.
- llgo é gratuito? Qual é a licença?
- llgo é open source sob a licença Apache-2.0. Confira os termos da licença antes de usá-lo em produtos comerciais.
- llgo ainda é mantido?
- Manutenção ativa. O último commit de llgo foi em 22 de out. de 2026.
- Para que posso usar llgo?
- Chamar bibliotecas C existentes, como SQLite ou raylib, a partir de código Go. Usar bibliotecas Python de computação numérica ou ciência de dados em programas Go. Criar programas Go para WebAssembly ou placas embarcadas com microcontroladores. Experimentar compilar Go por meio do LLVM para interoperar com o ecossistema C.
- Como instalar llgo?
- Instale llgo seguindo a seção How to install do README Execute uma demonstração, como _demo/c/hello, a partir do diretório correspondente: llgo run .
- Onde consigo llgo?
- O código-fonte e as instruções de instalação estão no GitHub: https://github.com/xgo-dev/llgo
Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.
Projetos relacionados
Uma toolchain de compilação que transforma código C e C++ em WebAssembly para execução em navegadores, Node.js e outros runtimes Wasm.
Coleção modular de tecnologias para compiladores e toolchains, incluindo o núcleo do LLVM, o frontend Clang para C/C++, libc++ e o linker LLD.
Um emulador open source de ESP32 em Rust que executa firmware real no computador ou no navegador, sem precisar de hardware.
A linguagem de programação Kotlin, seu compilador, sua biblioteca padrão e ferramentas de build, desenvolvidos pela JetBrains para desenvolvimento multiplataforma.
Uma linguagem e um compilador semelhantes a TypeScript que transformam um subconjunto tipado de TypeScript em módulos WebAssembly.