Repolode
xgo-dev

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

    README의 How to install 섹션에 따라 llgo를 설치합니다

  2. 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 통계는 매일 갱신됩니다.

관련 프로젝트