해결책
2000년, 일리노이 대학교 어배너-섐페인에서 Vikram Adve와 Chris Lattner는 동적 컴파일에 관한 연구 프로젝트를 시작했다. 2004년 CGO 논문인 'LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation'은 타입 지정 중간 표현과 컴파일러 프레임워크를 설명했으며, 이 둘의 결합된 기능은 기존의 어떤 컴파일 방식도 제공하지 못했다고 주장했다.
결정적인 움직임은 모듈성과 개방성이었다. 하나의 단일 컴파일러 대신 LLVM은 라이브러리 기반 인프라다. 프런트 엔드는 소스를 LLVM IR로 번역하고, 백엔드는 그 IR을 기계어로 바꾸며, 최적화 패스는 그 사이에서 공유된다. 무료 오픈소스 소프트웨어로 공개되어 법적 마찰 없이 상용 제품에 내장될 수 있었다.
채택은 경제성을 따랐다. Apple은 2005년 Lattner를 고용하고 LLVM을 macOS와 iOS용 Xcode에 필수 요소로 만들었다. Intel은 LLVM을 자사 컴파일러가 구성 요소를 재사용하는 생산 품질의 컴파일러 인프라라고 설명하며, 이식성을 위해 LLVM IR을 타깃으로 삼는다. 중간이 공유되었기 때문에 생태계는 그것을 다시 구축하는 일을 멈추었다.
이룬 성과
컴파일러를 단일체가 아닌 재사용 가능한 라이브러리로 구축한다
성공한 이유
타입 지정 IR은 프런트 엔드와 백엔드를 분리하므로 하나의 인프라가 모든 언어를 지원한다.
허용적인 라이선스 덕분에 기업이 법적 마찰 없이 내장할 수 있다.
라이브러리 구성 요소 덕분에 공급업체는 다시 작성하는 대신 검증된 코드를 재사용한다.
Apple의 채택으로 수백만 개발자의 기본 툴체인 안에 자리 잡았다.
중간을 소유하여 생태계를 장악하라. 허용적 라이선스의 재사용 가능한 컴파일러 코어는 모든 언어 프런트 엔드와 기계 백엔드가 동일한 검증된 최적화 엔진을 공유하게 한다.
그 후
LLVM과 그 Clang 프런트 엔드는 Apple 플랫폼과 Rust에서 Swift에 이르는 언어들의 기본 컴파일러 스택이 되었고, Intel의 oneAPI 컴파일러도 그 위에 구축되어 있다. 재사용 가능한 중간이 컴파일러 생태계를 장악한 것이다. 새로운 언어 프로젝트들은 이제 일상적으로 LLVM을 타깃으로 가정한다.
근거 확인하기
출처
- LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation (CGO'04) LLVM Project · llvm.org
- Get to Know LLVM Intel · intel.com
- LLVM Wikipedia · en.wikipedia.org