LLVM 프로젝트 이야기 by 허준회님

허준회님의 `만화로 나누는 자유/오픈소스 소프트웨어 이야기` 이야기를 즐겨보는데요. 최근에 LLVM 프로젝트 이야기를 올려주셨는데, 이번 에피소드가 특히 재밌어서 공유해요. LLVM 이야기 뿐만 아니라 기본적인 컴파일러의 구조부터 왜 LLVM을 개발하게 되었는지 기존 컴파일러와는 어떻게 다른지 이해하기 쉽게 설명해주셔서, 컴파일러 멍청이인 저도 재밌게 읽을 수 있었어요. 소스코드를 읽어 AST(abstract syntax tree) 를 생성하는 프론트엔드 코드의 실행시간 개선을 위해 코드를 최적화하고, 변환작업을 수행하는 옵티마이저 대상 (아키텍쳐) 명령어 세트에 맞게 바이너리 코드를 생성하는 백엔드 의 구조를 설명하고, 기존 컴파일러들은 이 모든 과정의 코드가 (잘 분리되어 있지않아) 다른 컴파일러에 코드 공유(재활용)가 되지 않던 아쉬움을 LLVM의 개발자인 크리스래트너가 언어독립적인 intermediate representation계층을 넣어서 프론트엔드가 해석한 코드를 같은 옵티마이저가 공유할 수 있도록 만든 이야기를 그림으로 쉽게 이해할 수 있게 그려주셨어요. 다양한 아키텍쳐에 맞춰 백엔드를 개발해두면, 앞단의 프론트엔드만 새롭게 개발하는 것 만으로 옵티마이저, 백엔드를 그대로 공유할 수 있다는 설명을 보면서, LLVM, LLVM 말만 들었지. 이렇게 대단한 것이었구나. 새롭게 배울 수 있어서 좋았고, 조금 더 공부해 보고 싶다는 생각도 들었어요. LLVM 을 개발한 크리스래트너가 애플에서 Swift 언어를 혼자 개발했는데, 사내에 알려져 Objective-C를 대체하게 되었다는 이야기도 재밌었어요.

49. LLVM 프로젝트 (1/2)

만화로 나누는 자유/오픈소스 소프트웨어 이야기

49. LLVM 프로젝트 (1/2)

다음 내용이 궁금하다면?

지금 간편 가입하고 다음 내용을 확인해 보세요!

또는

이미 회원이신가요?

2023년 1월 28일 오후 9:40

댓글 0