Python 3.15.0
Python 3.15.0 정식 출시
Python 3.15.0이 3.14 이후의 주요 기능과 최적화를 담아 정식 출시됐습니다. 실험적 JIT 성능 개선과 UTF-8 기본 인코딩, 지연 임포트, 프리 스레딩 지원 확대가 포함됐으며 macOS 27.0의 Tk 기반 앱 문제도 안내합니다.
- 주제
AI 요약
Python 3.15.0은 3.14 이후 바뀐 기능과 최적화를 담은 정식 버전입니다. 이번 릴리스에는 기여자 1,012명이 참여해 커밋 5,643개를 반영했습니다.
인터프리터와 성능
새 내장 타입 sentinel과 frozendict를 추가하고, 컴프리헨션에서 언패킹을 지원합니다. UTF-8을 기본 인코딩으로 사용하며, 시작 시간을 줄이기 위한 명시적 지연 임포트(Explicit lazy imports)도 들어갔습니다. 패키지 시작 설정 파일 지원과 개선된 오류 메시지도 포함합니다.
실험적 JIT 컴파일러도 개선했습니다. 표준 인터프리터와 비교해 x86-64 Linux에서 기하평균 성능이 7~8% 높아졌고, AArch64 macOS에서는 테일콜 인터프리터보다 11~12% 빨라졌습니다.
표준 라이브러리와 타입 시스템
프로파일링 도구를 정리하는 전용 패키지와 고빈도 통계 샘플링 프로파일러 Tachyon을 추가합니다. 타입 기능으로는 추가 항목의 타입을 지정하는 TypedDict, 타입 형식을 주석으로 표현하는 TypeForm, 서로 겹치지 않는 기반 타입(Disjoint bases)을 지원합니다. 릴리스 안내는 터미널 출력에 색상도 더했다고 소개합니다.
C API와 빌드·배포 변경
새 PyBytesWriter C API로 Python bytes 객체를 만들 수 있습니다. C API에서 종료 처리(finalization) 중 발생할 수 있는 문제를 막는 보호 기능도 추가하고, 프리 스레딩 빌드와 관련된 Stable ABI를 지원합니다. 시스템 수준 관측성을 높이기 위해 프레임 포인터를 기본 활성화합니다.
공식 64비트 Windows 바이너리는 테일콜 인터프리터를 사용합니다. 공식 macOS 바이너리는 프리 스레딩 지원을 기본 설치합니다.
macOS 사용자가 확인할 점
macOS 27.0에서는 IDLE이나 다른 Tk 기반 GUI 앱이 대화상자를 여는 메뉴 명령을 실행할 때 멈출 수 있습니다. IDLE의 About IDLE, Settings, Open Module 명령이 예시로 제시됐으며, 강제 종료가 필요할 수 있습니다. Python 릴리스 안내는 운영체제 동작 변경이 현재 Tk 그래픽 툴킷 버전에 영향을 주는 것으로 보고 있습니다. Tk 기반 앱을 쓰는 macOS 사용자는 우회 방법이 나올 때까지 macOS 27.0 설치를 미루거나 업무 흐름에 문제가 없는지 확인하라고 안내합니다.
새 기능을 익히는 TUI 게임
Barry Warsaw는 Python 3.15의 새 기능을 활용하는 텍스트 어드벤처 게임 whatsnewt를 공개했습니다. 게임에는 퍼즐 18개가 있고, 각 퍼즐은 실제 3.15 기능을 코드로 작성하고 실행해야 풀 수 있습니다. 일부 퍼즐은 타입 검사기를 요구하며, 이 경우 pyrefly가 답을 검증합니다. 안내된 실행 명령은 uvx --python 3.15 whatsnewt입니다.
Lobsters 반응
- @hawski — 지난 3~4년 동안 Python을 점점 더 많이 쓰고 있습니다. 최근 로깅에 간단한 Formatter를 붙이려다가 실제 사용에 필요한 상용구 코드가 생각보다 많아 아쉬웠는데, 3.15에서는
logging.basicConfig가formatter매개변수를 받는다는 걸 알았습니다. 언어가 꾸준히 개선되는 점이 좋습니다. 가끔 쓰면서도 조금 불만이던 Python을 좋아한다고 말할 수 있게 된 건 3.11부터입니다. 타이핑과 구조적 패턴 매칭은 정말 좋습니다. 요즘은 if문보다 패턴 매칭을 훨씬 더 자주 씁니다.
원문: Python.org / 번역·요약: Trawling