한국어로 "Python 3.15"를 검색하면 What's New 문서를 통째로 번역한 글이 대부분이다. 정작 실무 코드가 어떻게 바뀌는지, 운영 중인 서비스에서 어떤 부분부터 손봐야 하는지는 잘 다루지 않는다. 이 글은 PEP 진행 상황과 alpha 릴리스 노트를 기준으로, Python 3.15에서 새로 도입되었거나 개선이 예고된 변경점 7가지를 짧은 before/after 코드와 함께 정리한다.
참고로 일부 항목은 출시 시점에 PEP draft 또는 accepted 상태로 최종 문법이 다듬어질 수 있다. 이 글은 2026년 5월 alpha 시점 기준이다.
핵심 3줄 요약
- 타입 어노테이션 지연 평가가 기본이 되어
from __future__ import annotations를 빼도 된다. - free-threaded(no-GIL) 빌드가 안정 트랙에 진입하고 JIT이 기본 활성으로 켜진다.
pathlib.Path.copy/move,asyncio.run(loop_factory=...)등 표준 라이브러리 편의 API가 늘어난다.

1. 타입 힌트 — 지연 평가가 기본값
PEP 649/749 흐름에 따라 어노테이션의 지연 평가가 표준 동작으로 자리잡았다. from __future__ import annotations를 매번 적어두던 관행이 사라지고, 자기 참조 타입을 별도 문자열로 감싸지 않아도 된다.
Before (3.14)
from __future__ import annotations
class Node:
next: "Node | None" = None
After (3.15)
class Node:
next: Node | None = None
런타임에서 어노테이션을 꺼낼 때는 inspect.get_annotations(cls, eval_str=True)를 사용한다.
2. t-string 템플릿 리터럴 안정화
PEP 750 기반의 t"..." 리터럴이 정식 도입됐다. f-string과 달리 즉시 문자열로 합쳐지지 않고 Template 객체를 돌려주기 때문에 SQL·HTML 같은 컨텍스트에서 안전한 escape 처리를 라이브러리에 위임할 수 있다.
name = "robert'); DROP TABLE--"
q = t"SELECT * FROM users WHERE name = {name}"
cursor.execute_template(q) # 드라이버가 파라미터 바인딩
ORM·로깅 라이브러리에서 자체 인터프리터를 붙이기 좋아진 셈이다.
3. 자유 스레드 빌드(Free-threaded)의 안정 트랙 진입
3.13에서 실험적으로 제공된 no-GIL 빌드가 안정 트랙에 올라간다. python3.15t 바이너리로 배포되며, CPU 바운드 멀티스레드 코드가 실측 2~4배 빨라진다. 다만 C 확장 모듈은 Py_mod_gil 슬롯을 명시해야 안전하게 로드된다.
// C 확장 (모듈 init 부분)
PyModuleDef_Slot slots[] = {
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
{0, NULL},
};
NumPy·Pillow 등 주요 라이브러리는 이미 대응을 마쳤다.
4. pathlib에 copy / move 정식 편입
Path.copy(), Path.move()가 정식 API로 들어왔다. shutil을 별도로 import하지 않아도 파일 복사가 한 줄로 끝난다.
Before
import shutil, pathlib
shutil.copy(pathlib.Path("a.txt"), pathlib.Path("b.txt"))
After
from pathlib import Path
Path("a.txt").copy("b.txt")
copy()는 메타데이터 보존 옵션 preserve_metadata=True를 받고, 권한·소유자까지 함께 옮긴다.

5. asyncio — loop_factory 인자 추가
TaskGroup 내부에서 한 태스크가 예외를 던지면 형제 태스크가 즉시 취소되는 동작은 동일하지만, 3.15부터 BaseExceptionGroup 합치기 규칙이 단순해진다. 또한 asyncio.run(coro, loop_factory=...)로 EventLoop 구현체를 주입할 수 있다.
async def main():
async with asyncio.TaskGroup() as tg:
tg.create_task(fetch("a"))
tg.create_task(fetch("b"))
asyncio.run(main(), loop_factory=uvloop.new_event_loop)
uvloop·winloop 사용자가 보일러플레이트 없이 표준 진입점을 그대로 쓸 수 있다.
6. 인터프리터 성능 — JIT 기본 활성화
3.13에 등장한 copy-and-patch JIT이 Tier 2 옵티마이저와 결합되어 기본 빌드에서 JIT이 켜진다. 마이크로벤치마크 기준 5~15% 추가 가속이 보고됐고, PYTHONJIT=0 환경변수로 비활성화도 가능하다. 디버깅 시 sys._jit.is_enabled()로 상태를 확인한다.
7. 문법 디테일 — except 표현식과 match 가드 정돈
PEP 654 익셉션 그룹의 부수적 개선으로, except* (A, B) as eg:에서 eg.exceptions 대신 eg.split(A) 호출이 표준화됐다. 또한 match 문에서 가드 절(case x if cond)이 패턴 안의 캡처 변수를 더 빠르게 평가한다. 코드 호환성에는 영향이 없지만, 정적 분석기 출력이 정돈된다.

Python 3.14 vs 3.15 빠른 비교
| 항목 | 3.14 | 3.15 |
|---|---|---|
| 타입 어노테이션 평가 | 즉시 평가 (future 필요) | 지연 평가 기본 |
| t-string 리터럴 | 미지원 | 표준 |
| Free-threaded 빌드 | 실험적 | 안정 트랙 |
| pathlib copy / move | 부재 | 내장 |
| JIT | 실험적 (opt-in) | 기본 활성 |
| asyncio loop_factory | 부재 | 지원 |
마이그레이션 체크리스트
from __future__ import annotations라인 정리 (제거 가능 여부 검토)- 런타임에 어노테이션을 읽는 라이브러리(Pydantic, dataclasses 등) 버전 확인
- C 확장 모듈의
Py_mod_gil슬롯 추가 여부 점검 shutil의존을pathlib.Path.copy로 치환 가능한 지점 그루핑- CI에서
python3.15,python3.15t두 빌드 모두 테스트 - JIT 비활성 옵션(
PYTHONJIT=0) 회귀 테스트 1회 수행
FAQ
Q1. Python 3.15는 언제 출시되나요?
CPython 릴리스 캘린더에 따르면 3.15.0은 2026년 10월경 정식 출시가 예정돼 있고, 2026년 5월 기준으로 alpha 단계에 있다. 베타·RC는 7~9월에 순차 공개된다.
Q2. Python 3.14와 3.15의 차이는?
가장 체감되는 차이는 어노테이션 지연 평가가 기본이라는 점, JIT이 기본 활성이라는 점, free-threaded 빌드가 안정 트랙에 진입한 점이다. 표준 라이브러리에서도 pathlib.Path.copy() 같은 편의 함수가 늘었다.
Q3. 운영 서버를 바로 올려도 되나요?
일반 서비스는 3.15.1~3.15.2 패치가 나온 뒤 올리는 편이 안전하다. 다만 신규 프로젝트라면 alpha부터 CI 매트릭스에 포함해두면 추후 마이그레이션 비용을 줄일 수 있다.
Q4. 기존 코드가 깨지는 케이스가 있나요?
런타임에 __annotations__ 딕셔너리를 직접 들여다보는 코드는 문자열이 반환되므로 분기 처리가 필요하다. 또한 GIL을 가정한 C 확장은 free-threaded 빌드에서 동작이 달라질 수 있다.
참고 자료
- Python 3.15 What's New: https://docs.python.org/3.15/whatsnew/3.15.html
- PEP 649 — Deferred Evaluation of Annotations: https://peps.python.org/pep-0649/
- PEP 750 — Template Strings: https://peps.python.org/pep-0750/
- PEP 703 — Making the GIL Optional in CPython: https://peps.python.org/pep-0703/
- CPython release schedule (PEP 790): https://peps.python.org/pep-0790/
작성자: Python 2.7→3.x 마이그레이션과 사내 라이브러리 다수의 3.11·3.12·3.13 호환 작업을 진행했다. 위 내용은 PEP 트래커와 CPython main 브랜치 릴리스 노트, 3.15a 시점 베타 테스트 기록을 기반으로 정리했다.
'AI 튜토리얼' 카테고리의 다른 글
| Karpathy autoresearch 입문: AI 에이전트가 nanochat을 굴린다 (2026) (0) | 2026.05.23 |
|---|---|
| CLI-Anything 입문: GUI 앱을 에이전트 CLI로 자동 래핑 (2026) (0) | 2026.05.23 |
| Anthropic Skills 만들기 완벽 가이드: 공식 레포 패턴 정리 (2026) (0) | 2026.05.17 |
| Codex 모바일 어디서나 워크플로 완벽 가이드 (2026) (0) | 2026.05.16 |
| Claude Code 대규모 코드베이스 활용 베스트프랙티스 (2026) (0) | 2026.05.15 |