Ruby 4.0의 ZJIT 컴파일러는 YJIT와는 근본적으로 다른 아키텍처를 기반으로 합니다. ### YJIT의 특징과 한계
-
성능: 매우 빠르며, Lazy Basic Block Versioning 아키텍처를 통해 런타임 타입에 기반한 점진적 코드 컴파일로 GitHub 및 Shopify에서 두 자릿수 속도 향상을 입증했습니다.
-
한계: 혁신적인 아키텍처 덕분에 외부 기여자가 이해하고 확장하기 매우 어렵습니다. 대부분의 전문 지식이 Shopify와 GitHub에 집중되어 있으며, 외부 기여가 적습니다. ### ZJIT의 아키텍처와 장점
-
교과서적 아키텍처: ZJIT는 고수준 SSA(Static Single Assignment) 기반 중간 표현(IR)을 사용하고, 전체 메서드를 한 번에 컴파일하며, 모듈식 최적화 단계를 가집니다. 이는 컴퓨터 과학 전공 학생들이 배우는 전통적인 컴파일러 구조와 일치합니다.
-
기여 용이성: 이러한 “교과서적” 아키텍처는 더 많은 개발자가 ZJIT에 기여할 수 있도록 합니다. 대학교 연구원, 다른 언어 커뮤니티의 컴파일러 전문가들이 Ruby 컴파일러 개발에 참여하기 용이해집니다.
- 미래 최적화 잠재력:
- 전체 메서드 컴파일을 통해 기본 블록 버전화 방식으로는 불가능한 전역 최적화가 가능합니다.
- SSA 기반 IR은 상수 폴딩(constant folding), 분기 폴딩(branch folding), 보다 정밀한 타입 추론 등을 가능하게 합니다.
- 명확한 최적화 단계 덕분에 전체 시스템을 이해하지 않고도 새로운 최적화를 추가하기 쉽습니다. ### 현재 상태와 미래
-
현황: Ruby 4.0의 ZJIT는 인터프리터보다는 빠르지만, YJIT만큼 빠르지는 않아 프로덕션 환경 배포는 권장되지 않습니다. 그러나 2025년 5월부터 12월까지 개발 속도가 매우 빨라져, 전체 Ruby 테스트 스위트를 실행하고 Shopify 및 GitHub의 테스트를 통과하는 수준에 도달했습니다.
- 목표: Ruby 팀은 ZJIT가 Ruby 4.1에서 YJIT의 성능을 따라잡거나 능가하며 아키텍처적 이점을 유지하는 것을 목표로 합니다. 이는 단기적인 벤치마크가 아닌, 향후 20년간 Ruby 커뮤니티가 지속적으로 유지하고 확장할 수 있는 기반을 마련하려는 장기적인 전략입니다.