Repolode
xgo-dev

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. 1

    Instale llgo seguindo a seção How to install do README

  2. 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