LLVM을 위해 개발된 BASIC09 프로그래밍 언어 프론트엔드
PROGRAMMING
오픈 소스 개발자 Boisy Gene Pitre는 오늘 LLVM 개발자들에게 자신의 BASIC09 프론트엔드를 발표하며, 이를 LLVM 코드베이스에 업스트리밍(upstreaming)하는 것에 대해 문의했습니다. 이 "basic09c" 컴파일러는 BASIC09 코드를 어휘 분석(lex) 및 구문 분석(parse)할 수 있으며, 적절한 AST(추상 구문 트리) 구축, 의미론적 검사(semantic checks)를 수행하고, 다양한 LLVM 백엔드(back-ends)에서 사용할 수 있도록 LLVM IR을 생성합니다. 이는 Motorola 6809 특정 지원이나 OS-9에 의존하지 않습니다.
Boisy Gene Pitre는 이 BASIC09 프론트엔드의 RFC 발표에서 다음과 같이 작성했습니다:
"BASIC09는 OS-9/6809 및 OS-9/68K 시스템, 특히 Tandy Color Computer 생태계에서 사용되었던 구조화된 BASIC 방언(dialect)이었습니다. 이 언어는 프로시저(procedures), 타입이 지정된 변수(typed variables), 배열(arrays), 제어 흐름(control flow)을 갖추고 있으며, 현대적인 컴파일러 인프라를 통해 보존하기에 적합한 컴파일 모델을 가지고 있습니다.
저의 목표는 기존 BASIC09 프로그램을 LLVM IR로 낮추어(lowering) 보존하고 컴파일하는 것입니다. 장기적으로 이는 BASIC09 프로그램이 과거의 6809 시스템뿐만 아니라 여러 백엔드를 대상으로 할 수 있게 해줄 것입니다.
이 작업은 MC6809/OS-9 실험의 맥락에서 시작되었지만, 컴파일러 프론트엔드를 해당 백엔드 특정 작업으로부터 분리했습니다. 프론트엔드는 독자적으로 존재해야 합니다."
기술적인 관점에서 흥미롭고 LLVM을 활용하는 또 다른 프론트엔드이기는 하지만, 이것이 리눅스 커널의 메인라인에 포함되기를 기대하지는 마십시오. LLVM 개발자 Eli Friedman은 오늘의 발표에 대해 다음과 같이 응답했습니다:
"당신의 컴파일러를 구축하는 데 LLVM이 유용하다는 소식을 들으니 기쁩니다. 하지만, 80년대의 틈새(niche) 프로그래밍 언어는 새로운 언어를 LLVM에 추가하기 위한 우리의 기준을 결코 충족하지 못할 것입니다."
마찬가지로, 저명한 LLVM 개발자인 Nikita Popov는 이 프로젝트가 독립적으로 존재하며 단순히 라이브러리로서 LLVM에 링크될 수 있다고 언급했습니다.