포스트

CPython 3.15 JIT, 목표 성능을 조기 달성하다

목차

  1. 개요
  2. 핵심 성과
  3. 주요 기술 혁신
  4. 프로젝트 운영에서 얻은 교훈
  5. 결론
  6. Reference

개요

CPython 3.15의 JIT(Just-In-Time) 컴파일러가 당초 목표를 수개월에서 1년 이상 앞당겨 달성했다. Ken Jin이 공식 Python 블로그를 통해 이 소식을 전했으며, macOS AArch64에서 11~12%, x86_64 Linux에서 5~6%의 성능 향상을 기록했다. 2025년 주요 스폰서 철수라는 위기 속에서도 커뮤니티 주도의 개발 방식으로 오히려 기여자 수가 증가한 점이 주목할 만하다.

핵심 성과

원래 3.15 릴리스에서 5% 성능 향상을 목표로 했으나 이를 조기에 초과 달성했다.

플랫폼성능 향상목표 대비
macOS AArch6411~12%1년 이상 조기 달성
x86_64 Linux5~6%수개월 조기 달성

벤치마크별로는 약 20% 느려지는 케이스부터 100% 이상 빨라지는 케이스까지 편차가 있다. 원시 성능 데이터는 doesjitgobrrr.com에서 확인할 수 있다.

주요 기술 혁신

트레이스 레코딩

JIT 프론트엔드를 트레이싱 시스템으로 재작성한 것이 핵심 전환점이었다. Ken Jin이 Mark Shannon의 명령어 디스패치 테이블 관련 조언을 “잘못 이해”한 것이 오히려 혁신으로 이어졌다. 이로 인해 탄생한 “듀얼 디스패치” 메커니즘은 인터프리터에 단 하나의 명령어만 추가하면서도 기본 속도를 유지하는 효율적인 방식이다.

참조 카운트 브랜치 제거

Python의 거의 모든 명령어는 최소 하나의 참조 카운트 분기를 생성한다. 이 분기들을 제거하는 작업은 단순해 보이지만 누적 효과가 상당했다. 11명의 기여자가 함께 인터프리터 명령어 변환 작업에 참여하여 x86_64 Linux에서 1%였던 성능 향상을 3~4%까지 끌어올렸다. 이 과정에서 신규 기여자들이 JIT 핵심 개발자로 성장하는 부수 효과도 있었다.

프로젝트 운영에서 얻은 교훈

2025년 주요 스폰서가 철수하면서 프로젝트가 위기에 처했다. 하지만 커뮤니티 자발적 기여로 전환하면서 오히려 기여자 수가 늘어났다.

저자가 뽑은 5가지 핵심 교훈은 다음과 같다.

  • 복잡한 작업을 “단일 명령어 최적화” 같은 단위로 분해하면 신규 기여자의 진입 장벽이 낮아진다
  • 버스 팩터 감소를 위해 JIT 미들엔드 담당자를 2명에서 4명으로 확대했다
  • doesjitgobrrr.com 같은 일일 성능 벤치마크 시스템이 회귀 조기 발견과 팀 동기 부여에 결정적이었다
  • PyPy 팀, 컴파일러 전문가와의 비공식 교류가 실질적 기술 발전으로 연결되었다
  • 명확한 기여 가이드라인과 세부 목표 제시가 커뮤니티 참여를 이끌었다

주요 기여자로는 Savannah Ostrowski(인프라), Mark Shannon(기술 리더십), Diego Russo(ARM 지원), Brandt Bucher(백엔드 기반) 등이 있다.

결론

Ken Jin은 “기술보다는 사람과 약간의 운이 성공의 핵심”이라고 강조했다. 스폰서 철수라는 위기 속에서도 커뮤니티 중심의 협업, 명확한 작업 분해, 성능 측정 인프라가 프로젝트를 구한 요소였다. 다음 목표는 free-threading 지원으로, Python 3.15/3.16 릴리스에서 다뤄질 예정이다.

Reference