web24.team

Python 3.15: frozendict, ленивые импорты и JIT-компилятор

Вышел Python 3.15.0 — стабильный релиз с новыми встроенными типами, ленивыми импортами, улучшенным JIT и типизацией. Разбираем ключевые изменения и предостережение для macOS 27.0.

Логотип Python 3.15 на фоне интерпретатора
Изображение: blog.python.org

Что нового в Python 3.15

  • Добавлены встроенные типы sentinel (PEP 661), frozendict (PEP 814) и распаковка в comprehensions (PEP 798).
  • Python теперь использует UTF-8 как кодировку по умолчанию (PEP 686).
  • Появились явные ленивые импорты для ускорения запуска (PEP 810) и файлы конфигурации запуска пакетов (PEP 829).
  • Экспериментальный JIT-компилятор значительно улучшен: в среднем на 7–8% быстрее на x86-64 Linux и на 11–12% быстрее на AArch64 macOS по сравнению со стандартным интерпретатором.
  • В стандартной библиотеке: пакет профилирования (PEP 799), высокочастотный статистический профайлер Tachyon и больше цвета в выводе.
  • Новые возможности типизации: TypedDict с типизированными дополнительными элементами (PEP 728), аннотирование форм типов через TypeForm (PEP 747) и непересекающиеся базовые классы (PEP 800).
  • В C API: новый PyBytesWriter (PEP 782), защита от финализации (PEP 788) и стабильный ABI для free-threaded сборок (PEP 803, 820, 793).
  • Официальные 64-битные сборки Windows используют tail-calling интерпретатор, а macOS-сборки включают поддержку free-threading по умолчанию.

Стоит ли обновляться на Python 3.15 сейчас

Обновление имеет смысл тем, кто хочет ускорить запуск приложений за счёт ленивых импортов или получить прирост производительности от JIT. Но JIT пока экспериментальный, а free-threading в macOS-сборках может повлиять на поведение расширений, написанных на C. Перед внедрением проверьте совместимость ваших зависимостей и C-расширений.

Отдельное предупреждение для пользователей macOS 27.0: приложения на tkinter, включая IDLE, могут зависать при открытии диалоговых окон из меню. Проблема связана с изменением в macOS 27.0 и затрагивает все текущие версии Tk. Если вы используете Tk-приложения, отложите обновление ОС до выхода исправления или протестируйте свой сценарий работы.

Коротко

Какие новые встроенные типы появились в Python 3.15?

В Python 3.15 добавлены `sentinel` (PEP 661) и `frozendict` (PEP 814).

Что такое ленивые импорты в Python 3.15?

Ленивые импорты (PEP 810) позволяют откладывать загрузку модулей до момента их фактического использования, что ускоряет время запуска программ.

Есть ли проблемы с Python 3.15 на macOS 27.0?

Да, приложения на `tkinter` (включая IDLE) могут зависать при открытии диалоговых окон из меню. Рекомендуется отложить обновление macOS 27.0 или проверить свои приложения.

Источник: blog.python.org ↗