Выпущен Python 3.14: GIL по умолчанию отключаем, t-строки, изолированные интерпретаторы и многое другое

Спустя год разработки вышел значительный релиз Python 3.14. Эта ветка будет получать полную поддержку в течение 1,5 лет, а затем ещё 3,5 года — только обновления безопасности.

Среди ключевых нововведений:​
  • Официальная поддержка сборки CPython без GIL (Global Interpreter Lock). Это позволяет эффективно использовать многопоточность на многоядерных системах, устраняя ограничение, при котором только один поток мог выполнять Python-код одновременно. Однако отключение GIL влечёт накладные расходы: из-за изменений в сборщике мусора, управлении памятью и механизмах блокировок производительность однопоточных программ снижается примерно на 10%. Тем не менее, в многопоточных сценариях общий прирост производительности может компенсировать эти потери.​
  • Введены t-строки (литералы с префиксом t), аналогичные f-строкам, но возвращающие специальный объект, в котором статическая часть строки и подставляемые значения хранятся отдельно. Это позволяет подключать пользовательские обработчики для динамических частей — например, автоматически экранировать HTML или переводить значения в верхний регистр:​
  • В стандартную библиотеку добавлен модуль concurrent.interpreters, позволяющий запускать несколько изолированных экземпляров интерпретатора Python в одном процессе. Ранее такая функциональность была доступна только через C API. Это даёт преимущества многопроцессности при меньших накладных расходах и открывает возможности для моделей вроде акторов или CSP.​
  • В CPython реализован новый интерпретатор байткода, основанный на хвостовых вызовах между C-функциями вместо единого switch-блока. При компиляции с Clang 19 он демонстрирует прирост производительности на 3–5% (по pyperformance). Пока доступен как опция для x86-64 и AArch64, сборка требует Clang 19 (поддержка GCC появится позже).​
  • Аннотации типов теперь обрабатываются лениво: они сохраняются в виде специальных объектов и вычисляются только при необходимости. Это снижает накладные расходы при запуске и упрощает работу с аннотациями. Для их инспекции добавлен модуль annotationlib.​
  • В стандартную библиотеку включён новый пакет compression, объединяющий модули lzma, bz2, gzip, zlib и добавляющий поддержку современного алгоритма Zstandard (ZSTD) через compression.zstd.​
  • Упрощён синтаксис обработки исключений: в конструкциях except и except* скобки больше не обязательны, если перечисляются несколько типов исключений без использования as:​
  • В интерактивной оболочке PyREPL появилась подсветка синтаксиса, а утилиты из модулей unittest, argparse, json и calendar теперь используют цветной вывод в терминале.​
  • Добавлена возможность подключать внешние отладчики и профилировщики к уже запущенным процессам без перезапуска и без ущерба для производительности.​
  • Модуль pdb теперь поддерживает удалённое подключение к работающим процессам:
    python -m pdb -p 1234.​
  • В модуль uuid добавлены функции uuid6(), uuid7() и uuid8(), реализующие новые версии UUID.​
  • Добавлено предупреждение при использовании return, break или continue внутри блока finally.​
  • Представлен новый C API PyInitConfig, позволяющий гибко настраивать инициализацию Python без жёсткой привязки к структурам на C. Включает функции PyConfig_Get(), PyConfig_Set() и PyInitConfig_AddModule() с сохранением ABI-совместимости.​
  • Улучшены сообщения об ошибках: теперь при опечатках в ключевых словах выводятся подсказки по исправлению.​
  • Криптографические реализации в модулях hashlib и hmac заменены на версии из проекта HACL* с формальным математическим доказательством корректности. В том числе добавлен HMAC-BLAKE2 с ускорением через AVX2.​
  • Добавлены новые команды CLI для инспекции асинхронных задач:
    python -m asyncio ps PID и python -m asyncio pstree PID.​
  • В официальные сборки для Windows и macOS включён экспериментальный JIT-компилятор. Инсталлятор для Windows заменён на менеджер установки.​
  • Для проверки подлинности релизов вместо PGP теперь используется система Sigstore.​
  • Впервые опубликованы официальные бинарные сборки для Android.​

Уже в ближайшие часы стартует альфа-тестирование Python 3.15. Согласно обновлённому графику разработки, новая ветка начинает формироваться за 5 месяцев до релиза предыдущей, и к моменту выхода Python 3.14 она уже достигает стадии альфа. Далее последуют 7 месяцев альфа-тестирования, 3 месяца бета-тестов (без новых функций) и 2 месяца финальной стабилизации в статусе release candidate.​
 
Назад
Сверху