대체 파이썬 구현체 PyPy가 v8.0.0을 공개했다. 5월 26일 이후의 주요 릴리스로, 파이썬 3.12 지원이 처음 포함됐다. 다만 3.12 지원은 베타 품질로 표시돼 있다.
빌드 환경도 정리됐다. 리눅스 빌드봇(linux64·linux32·aarch64)이 AlmaLinux 8과 glibc 2.28 기반 manylinux_2_28 이미지로 이동했고, 컴파일러도 gcc5에서 gcc14로 올라갔다. 배포되는 타르볼은 glibc 2.28 이상을 요구한다. 또한 보안 이슈가 없는 한 이번이 파이썬 3.11을 지원하는 마지막 릴리스가 된다.
PyPy는 파이썬 생태계에서 묘한 위치에 있다. 순수 파이썬 코드에서는 CPython보다 몇 배 빠른 경우가 흔한데, 정작 많은 프로젝트가 쓰지 못한다. 이유는 대부분 C 확장 호환성이다. 그래서 PyPy 릴리스에서 진짜 눈여겨볼 항목은 벤치마크 숫자가 아니라 C 레이어 관련 변경이다.
릴리스 요약
| 항목 | 내용 |
|---|---|
| 파이썬 3.12 | 첫 지원 릴리스, 베타 품질로 표기 |
| 파이썬 3.11 | 보안 이슈가 없는 한 이번이 마지막 지원 릴리스 |
| C 레이어 | PyObject에 내부 RPython 객체와 연결하는 ob_pypy_link 필드 추가 |
| 리눅스 빌드 | manylinux_2_28(AlmaLinux 8, glibc 2.28), gcc14로 이동 |
| 요구 사항 | 배포 타르볼은 glibc 2.28 이상 필요 |
ldd --version으로 확인하는 편이 빠르다.PyPy가 빠른 이유와 여전한 제약
PyPy의 핵심은 추적 기반 JIT다. 반복 실행되는 코드 경로를 관찰해 기계어로 컴파일하고, 타입이 고정된 구간에서 최적화를 적용한다. 그래서 순수 파이썬으로 짠 루프가 많은 코드에서 효과가 크다. 반대로 대부분의 시간을 C 확장 안에서 보내는 코드(넘파이 연산, DB 드라이버, 암호화)는 이득이 작거나 오히려 손해다.
- 순수 파이썬 계산이 지배적인 워크로드
- 장시간 실행되는 프로세스(JIT 예열 시간 확보)
- 파서·인터프리터·시뮬레이션 같은 루프 집약 코드
- 메모리 사용이 많은 객체 연산(전략적 표현 최적화)
- C 확장 의존이 큰 스택
- 짧게 실행되는 CLI 도구(예열 전에 끝남)
- 최신 파이썬 기능을 즉시 필요로 하는 프로젝트
- 일부 확장 모듈의 호환성 공백
지금 시험해 볼 만한가
# 간단한 비교 실행 예 (동일 스크립트를 두 런타임에서)
python3 -X importtime -c "import time; t=time.time(); exec(open('bench.py').read()); print('cpython', time.time()-t)"
pypy3 -c "import time; t=time.time(); exec(open('bench.py').read()); print('pypy', time.time()-t)"
# glibc 요건 확인
ldd --version | head -1
맥락 — 파이썬 성능 경쟁이 다시 뜨겁다
최근 몇 년간 CPython 자체도 빨라졌고, 한편에서는 네이티브 확장을 러스트로 다시 쓰는 흐름이 강해졌다. 여기에 PyPy 같은 대체 구현체와 각종 JIT 시도가 겹친다. 사용자 입장에서 선택지가 늘어난 건 반갑지만, 판단 기준은 단순하다. 내 코드의 시간이 어디서 소모되는지 먼저 측정하는 것. 프로파일링 없이 런타임을 바꾸는 건 동전 던지기다.
출처
- PyPy 공식 릴리스 공지 (2026-09) — https://pypy.org/posts/2026/09/pypy-v800-release.html
- PyPy 블로그 — https://pypy.org/blog/
- PyPy 릴리스 카테고리 목록 — https://pypy.org/categories/release.html
자주 묻는 질문
PyPy v8.0.0의 가장 큰 변화는 무엇인가요?
파이썬 3.12 지원이 처음 포함됐다는 점입니다. 다만 베타 품질로 표기돼 있어 프로덕션 도입은 신중해야 합니다. 함께 C 레이어 PyObject 모델이 변경됐고 리눅스 빌드 기반이 manylinux_2_28로 이동했습니다.
PyPy를 쓰면 무조건 빨라지나요?
아닙니다. 순수 파이썬 계산이 많고 오래 실행되는 프로세스에서 효과가 큽니다. 시간 대부분을 C 확장 안에서 보내거나 짧게 끝나는 스크립트에서는 이득이 없거나 오히려 느려질 수 있습니다.
기존 패키지가 그대로 동작하나요?
순수 파이썬 패키지는 대체로 문제없지만 네이티브 확장을 쓰는 패키지는 지원 여부를 확인해야 합니다. 전환 전에 의존성 목록에서 확장 모듈을 먼저 골라내 검증하는 순서를 권합니다.
glibc 2.28 요건이 문제가 될 수 있나요?
오래된 배포판 기반 이미지에서는 새 타르볼이 동작하지 않습니다. 컨테이너 베이스 이미지를 고정해 쓰는 환경이라면 ldd --version으로 확인하고, 필요하면 베이스 이미지를 함께 올려야 합니다.
파이썬 3.11을 계속 쓰고 있는데 어떻게 하나요?
이번 릴리스가 보안 이슈를 제외하면 3.11을 지원하는 마지막 릴리스입니다. 앞으로 PyPy 업데이트를 계속 받으려면 3.12 이상으로 옮기는 계획을 세워야 하며, 3.12 지원이 베타인 점을 감안해 전환 시점을 조율하는 것이 좋습니다.

댓글 0