기타 Hacker News · 4일 전

"휴가 중에 심심해서 만들었다"… 거물 개발자가 일주일 만에 완성한 터보 하스켈 컴파일러

핵심 요약
  • 하스켈 유명 개발자 에드워드 크멧이 휴가 중 장난삼아 일주일 만에 JVM 기반 JIT/AOT 컴파일러 'THC'를 개발해 공개했습니다.
  • 하스켈에서 파이썬, JS 등 타 언어 라이브러리를 제로 카피로 호출할 수 있고, 벤치마크에 따라 기존 GHC보다 최대 3배 빠른 성능을 보였습니다.
  • GHC 자체 컴파일까지 성공했으며 깃허브와 IRC를 통해 프로젝트 개발을 이어가고 있습니다.
요약 유명 하스켈(Haskell) 개발자 에드워드 크멧(Edward Kmett)이 동료 바르토시 밀레프스키의 집으로 휴가를 떠났다가, 장난삼아 시작한 프로젝트 '터보 하스켈 컴파일러(THC)'의 개발 진척 상황을 공개해 해외 개발자 커뮤니티에서 화제를 모으고 있습니다. 시작한 지 일주일밖에 되지 않았지만 프로젝트 규모는 상상을 초월할 정도로 급속히 커졌습니다. THC는 GHC Core를 GraalVM과 Truffle 기반으로 JIT 컴파일하여 JVM 위에서 하스켈 코드를 실행할 수 있게 해주는 런타임이자 컴파일러입니다. 파싱과 타입 체킹, 최적화는 기존 GHC가 담당하고 이후 단계부터 THC가 넘겨받아 처리하는 방식인데, 템플릿 하스켈과 리니어 하스켈 같은 고급 기능은 물론 GHC 9.14.1의 모든 프리모프(prim-ops)를 완벽하게 구현했습니다. 심지어 JIT 컴파일뿐 아니라 네이티브 이미지 기반의 AOT 컴파일까지 지원해 단독 실행 파일 제작도 가능하며, pandoc이나 alex, 심지어 GHC 자체까지 성공적으로 컴파일해 냈습니다. 특히 관심을 끄는 부분은 강력한 이기종 언어 FFI 연동 기능입니다. 하스켈 안에서 파이썬, 루비, R, 자바스크립트 라이브러리를 직접 가져와 호출할 수 있으며, 텍스트 변환 시 UTF-8 문자열에 대해 제로 카피(zero-copy)를 지원해 성능 손실 없이 데이터프레임 조작, LLM 구동, D3.js 시각화 등을 하스켈 코드 내에서 바로 처리할 수 있게 설계되었습니다. 성능 측면에서는 JVM 환경의 고질적 난제였던 꼬리 호출(tail call) 문제를 트레이싱 JIT와 블룸 필터(Bloom filter)를 활용한 최적화 기법으로 해결했습니다. 핫 루프 구간에서는 트램펄린 오버헤드를 대폭 줄여 일반적인 하스켈 벤치마크에서 GHC 대비 10~20% 느린 수준부터 최대 3배 빠른 성능까지 확인했다고 밝혔습니다. 개발자는 깃허브(github.com/ekmett/thc)에 코드를 공개하고 IRC 채널에서 계속해서 개발을 이어가고 있습니다.
Sponsored · 광고