Go 언어 개발자들이 C와 파이썬(Python) 생태계의 풍부한 라이브러리를 손쉽게 활용할 수 있도록 돕는 새로운 컴파일러 'LLGo'가 공개되었습니다. 이는 Go 소스 코드를 LLVM 기반으로 컴파일하여, 기존 Go의 C 연동 방식인 cgo에서 발생하던 스택 및 스케줄러 전환 비용 없이 C 함수를 직접 호출할 수 있게 합니다. 이를 통해 Go 개발자들은 성능 저하 없이 C/C++로 작성된 고성능 라이브러리를 통합할 수 있게 됩니다.
LLGo는 C 라이브러리와 C ABI(Application Binary Interface) 공통 호출 규약을 통해 연결되며, 파이썬 라이브러리의 경우 'llpyg' 도구를 사용하여 Go 바인딩을 생성합니다. 덕분에 NumPy, pandas, PyTorch와 같은 인기 파이썬 라이브러리들을 Go 코드 내에서 직접 호출하는 것이 가능해졌습니다. SQLite, OpenSSL, raylib 등 다양한 C 라이브러리 바인딩과 데이터베이스 접근, 게임 제작 예제도 제공되어 활용 가능성을 보여줍니다. 현재 C/C++ 라이브러리 바인딩은 수작업으로 관리되지만, 향후 자동 생성 기능이 추가될 예정입니다. LLGo는 리눅스(Linux)와 macOS의 amd64/arm64 환경을 지원하며, 웹어셈블리(WebAssembly) 및 일부 임베디드 보드용 빌드도 제공합니다.
이러한 LLGo의 등장은 Go 개발 생태계에 상당한 유연성과 확장성을 가져올 것으로 기대됩니다. 특히 데이터 과학, 머신러닝, 고성능 컴퓨팅 분야에서 파이썬과 C/C++ 라이브러리의 강점을 Go의 효율성과 결합할 수 있게 되어 새로운 애플리케이션 개발 기회를 창출할 수 있습니다. 기존 Go의 cgo는 사용 편의성과 성능 오버헤드 문제로 인해 대규모 프로젝트에서 활용이 제한적이었으나, LLGo는 이러한 단점을 극복하며 Go 언어의 적용 범위를 넓히는 데 기여할 것입니다. 개발자들은 이제 언어의 제약 없이 최적의 라이브러리를 선택하여 프로젝트를 구현할 수 있게 되어, 더욱 강력하고 효율적인 소프트웨어 개발이 가능해질 전망입니다.