터보 하스켈(Turbo Haskell)

2 hours ago 1

THC는 GHC가 최적화한 Core를 자체 Truffle/GraalVM 런타임에서 컴파일하고 실행해, Haskell을 JVM에서 구동하는 JIT 컴파일러임 GHC 9.14.1의 모든 prim-op과 Template Haskell, Linear Haskell을 지원하며, Native Image 기반 AOT 컴파일로 GHC 자체까지 실행 파일로 만들 수 있음 다중 언어 FFI로 Python, Ruby, R, JavaScript 라이브러리를 사용할 수 있으며, 다른 언어의 UTF-8 문자열과 Data.Text 사이에는 제로카피 변환을 지원함 핫 꼬리 호출을 루프로 변환하고 일반 호출로 쌓인 스택 프레임은 주기적으로 정리함으로써, 꼬리 호출마다 트램펄린을 거치는 방식을 피함 개발 초기에는 워밍업 후 성능이 대체로 GHC보다 10~20% 느렸지만, 지원 범위를 확장하는 동안 일부 간단한 벤치마크에서 약 10배의 성능 퇴행이 발생했으며 개선 작업이 진행 중임 GHC Core를 실행하는 JVM 런타임 THC(Turbo Haskell compiler) 는 휴가 중 Bartosz Milewski를 방문하면서 장난삼아 시작한 프로젝트로, 개발 시작 일주일 만에 GHC 9.14.1의 모든 prim-op을 구현함 타입이 있는 함수형 언어를 실행하기 위해 Cadenza에서 개발한 접근법을 사용하며, 관련 발표도 공개돼 있음 실행 기반은 Truffle 과 GraalVM 임 GHC가 파싱, 타입 검사, 디슈거링, Core 최적화를 담당하고, 이후 THC가 자체 런타임으로 Core를 컴파일하고 실행함 Template Haskell과 Linear Haskell 같은 고급 언어 기능도 완전히 지원함 JIT뿐 아니라 Native Image 기반 AOT 컴파일도 지원해 실행 파일을 생성할 수 있음 pandoc, happy, alex에 이어 게시 시점에는 GHC 자체도 JIT 또는 AOT 컴파일할 수 있음 Cabal로 패키지를 해석하며, Backpack을 포함해 여러 라이브러리를 가진 패키지를 완전히 지원함 다른 언어의 라이브러리 활용 다중 언어 FFI로 Python, Ruby, R, JavaScript 라이브러리의 출력을 JIT 컴파일된 Haskell 프로그램으로 바로 가져올 수 있음 다른 다중 언어 런타임의 UTF-8 문자열에 대해서는 Data.Text와 Truffle 문자열 사이의 변환이 제로카피로 이루어짐 데이터 프레임, LLM 실행, D3...

Read Entire Article