Python 3.12 Заметки о выпуске
Дата выпуска: 2 октября 2023
Python 3.12 — стабильный релиз Python, сосредоточенный на улучшении типизации, производительности и упрощении языка.
Что нового в Python 3.12
Улучшение производительности
- Оптимизации CPython и снижение использования памяти:
- Удалены устаревшие внутренние поля (
wstr), уменьшая размер объектов.
- Удалены устаревшие внутренние поля (
- Ускорение отдельных операций:
re.sub()быстрее до ~2–3 раз в некоторых сценариях.- Быстрее создание
asyncio.Task.
- Возможность использования оптимизатора BOLT (экспериментально).
- Общие улучшения производительности стандартной библиотеки. :contentReference[oaicite:0]{index=0}
Язык и синтаксис
-
PEP 695: Новый синтаксис параметров типов:
- Более простой и читаемый способ объявления generics.
- Новый оператор
typeдля type alias. :contentReference[oaicite:1]{index=1}
-
PEP 701: Формализация f-строк:
- Поддержка многострочных выражений, комментариев и сложных выражений.
- Убраны прежние ограничения синтаксиса. :contentReference[oaicite:2]{index=2}
-
Улучшенные сообщения об ошибках:
- Более точные подсказки (например, "Did you mean ..."). :contentReference[oaicite:3]{index=3}
Интерпретатор и выполнение
-
PEP 669: API низкоуровневого мониторинга:
- Практически без накладных расходов для профилировщиков и дебаггеров. :contentReference[oaicite:4]{index=4}
-
PEP 684: Отдельный GIL для каждого интерпретатора:
- Улучшает изоляцию и масштабируемость многопоточности.
-
Поддержка Linux
perfпрофилировщика:- Возможность отслеживания Python-функций на уровне системы.
Типизация
- PEP 692: Точная типизация
**kwargsчерезTypedDict. - PEP 698: Декоратор
typing.override. - Улучшения ergonomics при работе с typing. :contentReference[oaicite:5]{index=5}
Стандартная библиотека
-
Улучшения в
asyncio:- Быстрее работа с сокетами.
- Новые режимы выполнения задач.
-
Улучшения
os,pathlibи других модулей. -
Новые возможности работы с буферным протоколом (PEP 688). :contentReference[oaicite:6]{index=6}
Удаления и устаревшие возможности
- Удалён модуль
distutilsиз стандартной библиотеки. :contentReference[oaicite:7]{index=7} - Удалены устаревшие API и внутренние механизмы.
- Продолжение очистки стандартной библиотеки («dead batteries»).
Внутренние изменения
-
Изменения байткода CPython:
- Удалены и объединены некоторые инструкции.
- Добавлены новые инструкции (
BINARY_SLICE,STORE_SLICE).
-
Улучшения C API и внутренних структур.
Заметки о миграции
При переходе с Python 3.11:
- Удалён
distutils— используйтеsetuptools. - Проверьте использование устаревших API.
- Обновите код, связанный с typing (новый синтаксис).
- Протестируйте зависимости и сторонние библиотеки.