- CPython의 JIT 컴파일러가 macOS AArch64에서 11~12%, x86_64 Linux에서 5~6% 빠른 성능을 달성하며 목표를 조기 달성
- 3.13~3.14 버전에서는 JIT이 인터프리터보다 느렸으나, 커뮤니티 중심 개발과 구조 개선으로 성능이 크게 향상
-
트레이스 기록(trace recording) 방식과 참조 카운트 제거(reference count elimination) 같은 실험적 시도가 주요 전환점
-
Savannah Ostrowski, Mark Shannon, Diego Russo, Brandt Bucher 등 핵심 기여자와 다수의 신규 참여자가 협력
- 이번 성과는 커뮤니티 주도 개발과 협업 문화가 오픈소스 성능 개선에 실질적 효과를 낼 수 있음을 보여줌
CPython JIT 성능 향상 현황
- macOS AArch64에서 11~12%, x86_64 Linux에서 5~6% 빠른 성능을 기록
- 측정값은 기하평균 기준이며, 일부 벤치마크에서는 20% 느림에서 100% 이상 빠름까지 다양
- 아직 free-threading 지원은 미완성 상태로, 3.15/3.16 버전에서 목표
- 3.13~3.14 버전의 JIT은 인터프리터보다 느렸으나, 이번 버전에서 의미 있는 속도 향상 달성
커뮤니티 중심의 JIT 개발
- 2025년 Faster CPython 팀의 주요 후원 중단 이후, 커뮤니티 주도 개발 체제로 전환
- 목표: 3.15에서 5% 향상, 3.16에서 10% 향상 및 free-threading 지원
-
버스 팩터 감소를 위해 각 단계(프론트엔드, 미들엔드, 백엔드)에 2명 이상의 유지보수자 확보
- 복잡한 문제를 세분화해 신규 기여자 참여를 유도
- Brandt Bucher가 ‘mega-issues’ 를 통해 작업 단위를 분리
- 11명의 기여자가 인터프리터 명령어를 JIT 최적화 친화적으로 변환
-
기여 독려와 성취 공유 문화가 참여 지속에 기여
- 결과적으로 x86_64 Linux에서 성능이 1% → 3~4% 향상
주요 기술적 전환점
트레이스 기록(trace recording)
- CPython 코어 스프린트에서 트레이싱 기반 프론트엔드로 전환
- 초기에는 6% 느렸으나, dual dispatch 구조 도입으로 성능 개선
- 인터프리터 크기 증가를 최소화하면서 기본 인터프리터 속도 유지
- 트레이스 기록 도입으로 JIT 코드 커버리지 50% 증가, 이후 최적화 효율 향상
참조 카운트 제거(reference count elimination)
- Matt Page의 바이트코드 최적화 작업에서 착안
- 참조 카운트 감소 시 발생하는 분기(branch) 제거로 성능 향상
- 단일 분기 제거만으로도 누적 비용 절감 효과 확인
- 병렬화가 용이하고, JIT 구조 학습용 과제로 신규 기여자 교육에 활용
인프라와 팀 구성
-
Savannah Ostrowski가 4대의 머신으로 JIT 성능 측정 인프라 운영
- 일일 JIT 실행 결과로 성능 회귀(regression) 조기 탐지
-
Diego Russo는 ARM 하드웨어용 JIT과 프로파일러 호환성 개선 담당
-
Brandt Bucher는 머신 코드 백엔드 기반을 구축해 신규 기여자 진입 장벽 완화
협업과 지식 교류
-
CF Bolz-Tereick로부터 PyPy 관련 조언을 받아 JIT 설계 이해도 향상
-
Max Bernstein 등 컴파일러 전문가들과의 교류를 통해 지속적 동기 부여와 기술 성장 확보
- PyPy 코드 분석 경험이 CPython JIT 품질 향상에 기여
결론
- Python 3.15의 JIT은 커뮤니티 협력, 기술적 실험, 인프라 개선이 결합된 결과
-
사람과 운, 그리고 협업 문화가 오픈소스 성능 혁신의 핵심 동력임을 입증