본문 바로가기
오픈소스2026년 9월 20일6분 읽기

PyPy v8.0.0 공개 — 파이썬 3.12 지원 첫 릴리스, 3.11 지원은 이번이 마지막

YS
김영삼
조회 136
PyPy v8.0.0 공개 — 파이썬 3.12 지원 첫 릴리스, 3.11 지원은 이번이 마지막

대체 파이썬 구현체 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 이상 필요
glibc 2.28 요건 확인 오래된 배포판(예: CentOS 7 계열)에서는 새 타르볼이 동작하지 않는다. 컨테이너 베이스 이미지를 고정해 쓰는 팀이라면 배포 전에 ldd --version으로 확인하는 편이 빠르다.

PyPy가 빠른 이유와 여전한 제약

PyPy의 핵심은 추적 기반 JIT다. 반복 실행되는 코드 경로를 관찰해 기계어로 컴파일하고, 타입이 고정된 구간에서 최적화를 적용한다. 그래서 순수 파이썬으로 짠 루프가 많은 코드에서 효과가 크다. 반대로 대부분의 시간을 C 확장 안에서 보내는 코드(넘파이 연산, DB 드라이버, 암호화)는 이득이 작거나 오히려 손해다.

PyPy가 유리한 경우
  • 순수 파이썬 계산이 지배적인 워크로드
  • 장시간 실행되는 프로세스(JIT 예열 시간 확보)
  • 파서·인터프리터·시뮬레이션 같은 루프 집약 코드
  • 메모리 사용이 많은 객체 연산(전략적 표현 최적화)
PyPy가 불리한 경우
  • C 확장 의존이 큰 스택
  • 짧게 실행되는 CLI 도구(예열 전에 끝남)
  • 최신 파이썬 기능을 즉시 필요로 하는 프로젝트
  • 일부 확장 모듈의 호환성 공백

지금 시험해 볼 만한가

1
후보 선정
전체 서비스가 아니라, 순수 파이썬 계산이 많고 오래 도는 워커 한 종류를 고른다.
2
의존성 점검
requirements에서 네이티브 확장을 쓰는 패키지를 먼저 목록화하고 PyPy 지원 여부를 확인한다.
3
동일 조건 벤치마크
CPython과 PyPy를 같은 입력·같은 하드웨어에서 측정한다. 예열 구간을 제외한 정상 상태 처리량을 본다.
4
메모리 확인
PyPy는 메모리 사용 패턴이 다르다. 컨테이너 메모리 한도에 걸리지 않는지 확인한다.
5
3.12 지원은 베타임을 감안
프로덕션 전환은 품질 표기가 안정화된 이후로 미루는 편이 안전하다.
# 간단한 비교 실행 예 (동일 스크립트를 두 런타임에서)
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 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

아직 댓글이 없습니다.
Ctrl+Enter로 등록