LLVM 기반 Go 컴파일러로, 마이크로컨트롤러, WebAssembly(WASM/WASI), 명령줄 도구를 대상으로 합니다.
xgo-dev/llgo
LLVM 기반 Go 컴파일러로, Go 코드에서 C 라이브러리를 직접 호출하고 Python 라이브러리를 가져올 수 있습니다.
- 스타
- 845
- 포크
- 53
- 열린 이슈
- 197
- 마지막 커밋
- 1시간 전
어떤 프로젝트인가요?
LLGo는 LLVM 기반 Go 컴파일러로, C/C++, Python 등 C 호환 인터페이스를 제공하는 언어를 포함한 C ABI 생태계와 Go를 통합하는 것을 목표로 합니다. 소스 코드 수준에서 Go와 호환되며 XGo 프로젝트의 하위 프로젝트입니다.
cgo에 의존하는 대신 go:linkname을 사용해 Go 선언을 C 심볼에 직접 연결하므로, C 함수 호출은 Go와 C 사이의 스택 전환이나 스케줄러 전환 없이 네이티브 호출로 컴파일됩니다. SQLite, zlib, libuv, OpenSSL, raylib 등 여러 C 라이브러리의 바인딩과 llpyg 도구를 통한 NumPy, PyTorch 등 Python 패키지 바인딩을 제공합니다. 런타임은 기본적으로 OS 스레드에 매핑되는 네이티브 goroutine과 BDWGC 보수적 가비지 컬렉터를 사용합니다.
컴파일러는 Linux, macOS, Windows를 네이티브로 지원하며 WebAssembly와 임베디드 타깃도 지원합니다. 빌드하고 프로그램을 실행하려면 LLVM 22, Clang 22, LLD가 필요합니다.
핵심 기능
- 01cgo 오버헤드 없이 go:linkname을 통해 C 함수를 직접 호출합니다.
- 02생성된 바인딩을 통해 NumPy, PyTorch 등의 Python 라이브러리를 가져옵니다.
- 03Go 1.20 이상과 호환되는 Go 소스를 컴파일하고 cgo를 지원합니다.
- 04C/C++ 표준 라이브러리 바인딩과 여러 일반적인 C 라이브러리의 바인딩을 제공합니다.
- 05네이티브 Linux, macOS, Windows, WebAssembly 및 임베디드 보드를 대상으로 합니다.
활용 사례
- Go 코드에서 SQLite나 raylib 같은 기존 C 라이브러리를 호출합니다.
- Go 프로그램에서 Python 수치 계산 또는 데이터 과학 라이브러리를 사용합니다.
- WebAssembly 또는 임베디드 마이크로컨트롤러 보드용 Go 프로그램을 빌드합니다.
- C 생태계와의 상호 운용을 위해 LLVM으로 Go를 컴파일하는 방식을 실험합니다.
빠른 시작
- 1
README의 How to install 섹션에 따라 llgo를 설치합니다
- 2
_demo/c/hello와 같은 데모를 해당 디렉터리에서 실행합니다
llgo run .
사용 전 알아둘 점
- WebAssembly 및 임베디드와 같은 다른 타깃에서는 모든 OS 서비스나 런타임 동작을 제공하지 않을 수 있습니다.
- pandas 및 PyTorch와 같은 서드파티 Python 라이브러리는 별도로 설치해야 합니다.
- C 및 C++ 바인딩은 수작업으로 유지 관리되므로 지원되는 라이브러리가 제한적입니다.
- 승격된 메서드 래퍼를 통한 C 가변 인자 호출 전달은 호스팅 네이티브 타깃에서만 지원됩니다.
포함된 컬렉션
토픽
자주 묻는 질문
- llgo은(는) 무엇인가요?
- LLVM 기반 Go 컴파일러로, Go 코드에서 C 라이브러리를 직접 호출하고 Python 라이브러리를 가져올 수 있습니다. LLGo는 LLVM 기반 Go 컴파일러로, C/C++, Python 등 C 호환 인터페이스를 제공하는 언어를 포함한 C ABI 생태계와 Go를 통합하는 것을 목표로 합니다. 소스 코드 수준에서 Go와 호환되며 XGo 프로젝트의 하위 프로젝트입니다.
- llgo은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
- llgo은(는) Apache-2.0 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
- llgo은(는) 아직 유지보수되고 있나요?
- 활발히 유지보수 중. llgo의 마지막 커밋은 2026년 10월 22일입니다.
- llgo은(는) 어디에 사용할 수 있나요?
- Go 코드에서 SQLite나 raylib 같은 기존 C 라이브러리를 호출합니다. Go 프로그램에서 Python 수치 계산 또는 데이터 과학 라이브러리를 사용합니다. WebAssembly 또는 임베디드 마이크로컨트롤러 보드용 Go 프로그램을 빌드합니다. C 생태계와의 상호 운용을 위해 LLVM으로 Go를 컴파일하는 방식을 실험합니다.
- llgo는 어떻게 설치하나요?
- README의 How to install 섹션에 따라 llgo를 설치합니다 _demo/c/hello와 같은 데모를 해당 디렉터리에서 실행합니다: llgo run .
- llgo은(는) 어디서 받을 수 있나요?
- 소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/xgo-dev/llgo
요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.
관련 프로젝트
C와 C++ 코드를 WebAssembly로 컴파일해 브라우저, Node.js 및 기타 Wasm 런타임에서 실행할 수 있게 하는 컴파일러 툴체인입니다.
LLVM 코어, Clang C/C++ 프런트엔드, libc++ 및 LLD 링커를 포함하는 모듈형 컴파일러·툴체인 기술 모음입니다.
JetBrains가 멀티플랫폼 개발을 위해 개발한 Kotlin 프로그래밍 언어와 컴파일러, 표준 라이브러리, 빌드 도구입니다.
타입이 지정된 TypeScript 부분집합을 WebAssembly 모듈로 컴파일하는 TypeScript 유사 언어이자 컴파일러입니다.