5호02 / 05

Python 3.15 — 지연 import, frozendict, UTF-8 기본, 그리고 JIT가 처음으로 빨라졌다

원문 Python.org ↗

Python 3.15.0이 10월 9일 공개됐습니다. 연례 릴리스이고, 올해 들어간 변경 중 실무에 닿는 것을 추립니다.

주요 PEP

PEP 810 — 지연 import. lazy import foo 구문으로 모듈을 실제로 쓸 때까지 로딩을 미룹니다. 큰 의존성을 가진 CLI 도구의 시작 시간이 목적입니다. 명시적 구문이라 기존 코드는 영향이 없습니다.

PEP 814 — frozendict. 불변 딕셔너리가 내장 타입으로 들어왔습니다. 해시 가능하므로 딕셔너리의 키나 집합의 원소로 쓸 수 있습니다.

PEP 661 — 센티널 값. None 외의 "값 없음"을 표현하는 표준 방법입니다. 라이브러리들이 각자 만들던 _MISSING 객체의 표준화입니다.

PEP 686 — UTF-8 기본. 파일을 열 때 인코딩을 지정하지 않으면 UTF-8입니다. 지금까지는 OS 로케일을 따랐고, Windows에서는 CP949 같은 레거시 인코딩이 기본이었습니다. open(path)로 한글 파일을 읽던 Windows 코드의 동작이 바뀝니다.

PEP 798, 829도 포함됐지만 릴리스 페이지는 제목만 나열합니다.

JIT

3.13에서 들어온 실험적 JIT가 x86-64에서 7~8% 빨라졌습니다. 작아 보이지만, 이전 두 릴리스에서는 0에 가까웠습니다. 처음으로 "켜면 빨라진다"가 된 셈입니다. 기본은 여전히 꺼져 있습니다.

자유 스레딩

GIL 없는 빌드가 macOS 공식 바이너리에 함께 실립니다. 3.13부터 있던 빌드가 더 쉽게 손에 닿게 된 것이고, 기본 빌드가 바뀐 것은 아닙니다.

글에 없는 것

릴리스 페이지는 PEP 번호와 한 줄 설명뿐입니다. 각 변경의 호환성 영향, 특히 UTF-8 기본화가 깨뜨리는 코드 유형은 "What's New" 문서를 봐야 합니다. JIT 수치의 측정 조건도 없습니다.

실무에서 할 일

Windows에서 도는 Python이 있다면 UTF-8 기본화가 첫 점검 대상입니다. encoding= 없이 open()하는 코드를 찾아, 읽는 파일이 실제로 어떤 인코딩인지 확인하세요. 3.15 전에도 PYTHONUTF8=1로 미리 겪어볼 수 있습니다. 나머지는 쓰고 싶을 때 쓰면 되는 기능들입니다.

  1. 01Deno 팀이 Cloudflare로 간다 — Deno 런타임은 1년 뒤 개발 종료, Deploy는 6개월 뒤 종료
  2. 02Python 3.15 — 지연 import, frozendict, UTF-8 기본, 그리고 JIT가 처음으로 빨라졌다지금 읽는 글
  3. 03Polars 2.0 — 스트리밍 엔진이 기본, 행 순서는 더 이상 보장 안 함
  4. 0410월 11일 DNS 루트 키 교체 — 2017년 이후 처음, 리졸버를 점검할 때
  5. 05Apple, macOS 전체 디스크 접근을 더 어렵게 만든다 — AI 에이전트를 명시

2026년 10월 9일에 올라온 글

그날 대시보드 →
  1. ·Deno 팀이 Cloudflare로 간다 — Deno 런타임은 1년 뒤 개발 종료, Deploy는 6개월 뒤 종료

댓글

불러오는 중…