LLGo - C와 Python 라이브러리를 활용하는 LLVM 기반 Go 컴파일러

2 hours ago 1
  • Go로 코드를 작성하면서 C와 Python 생태계의 라이브러리를 함께 사용할 수 있도록 만든 컴파일러
  • Go 소스를 LLVM으로 컴파일하며, C 라이브러리와는 C ABI 공통 호출 규약으로 연결
  • C 함수를 직접 호출해 일반 Go의 cgo에서 발생하는 스택과 스케줄러 전환 비용을 피함
  • NumPy, pandas, PyTorch 같은 Python 라이브러리도 Go에서 호출 가능
    • llpyg로 Python 라이브러리의 Go 바인딩을 생성하며, 해당 Python 패키지는 별도 설치 필요
  • SQLite, OpenSSL, raylib 등의 바인딩과 데이터베이스 접근, 게임 제작 예제 제공
  • Go와는 소스 코드 수준의 호환성을 제공하지만 런타임은 다름
    • 네이티브 고루틴은 OS 스레드와 1:1로 대응하며, 기본 가비지 컬렉터로 BDWGC 사용
  • C/C++ 라이브러리 바인딩은 현재 수작업으로 관리하며, 자동 생성은 향후 계획
  • Linux와 macOS의 amd64/arm64 환경을 지원하고, WebAssembly와 일부 임베디드 보드용 빌드도 제공
  • LLVM 19 등 의존성을 설치한 뒤 install.sh로 설치하며, llgo run 등 Go 명령과 비슷한 방식으로 사용
  • Apache-2.0 라이선스
Read Entire Article