Python 3.15.0rc3 вышел 2 октября. Третий кандидат понадобился из-за нескольких блокирующих багов в ленивых импортах, которые решили обязательно закрыть до релиза. Финальная версия ожидается 9 октября. ABI больше не изменится, так что мейнтейнерам библиотек самое время собирать колёса под 3.15.
Главное, что войдёт в релиз:
lazy import torch # PEP 810: модуль загрузится только при первом обращении
cfg = frozendict(lr=3e-4) # PEP 814: неизменяемый и хешируемый словарь
flat = [*row for row in matrix] # PEP 798: распаковка прямо в генераторах списков
Ленивые импорты вслепую ускоряют запуск CLI и скриптов, где тянется тяжёлый стек вроде torch или pandas. Для ML-кода это, пожалуй, самое заметное изменение.
UTF-8 стал кодировкой по умолчанию на всех платформах, включая Windows, и проблема с
open() без encoding= наконец уходит в прошлое.Ещё в релизе встроенный тип
sentinel, новый семплирующий профайлер Tachyon в отдельном пакете для профилирования и улучшенные сообщения об ошибках. Экспериментальный JIT даёт 7–8% прироста на x86-64 Linux, а frame pointers включены по умолчанию, поэтому профилировать через perf станет проще.Для free-threaded сборок появился стабильный ABI, то есть шаг к Python без GIL в продакшене. В типизации добавили
TypedDict с типизированными дополнительными ключами и TypeForm.Это всё ещё релиз-кандидат, так что в прод пока не стоит. Но погонять тесты своих проектов на нём самое время.
https://www.python.org/downloads/release/python-3150rc3/
@pythonl
