Python 3.15 почти собран. Финальный релиз Python 3.15 запланирован на 1 октября
Вышла первая бета Python 3.15. Финальный релиз запланирован на 1 октября, а после первой беты команда разработки уже не добавляет в язык новые функции. Значит, главные изменения будущей версии почти сформированы: Python станет быстрее запускаться, получит более удобную поддержку CPython без GIL, новый профилировщик и доработанный JIT-компилятор.
Одним из важных изменений стала стабильная ABI для сборок CPython без GIL. В Python 3.14 разработчики получили возможность запускать интерпретатор без глобальной блокировки, что улучшило параллельную работу на многоядерных процессорах. В Python 3.15 авторы C-расширений смогут собирать модули сразу для нескольких минорных версий Python в режиме без GIL. Команда предупреждает, что при таком подходе доступна только часть полного CPython API, но поддержка расширений всё равно станет проще: разработчикам не придётся пересобирать пакеты под каждый небольшой релиз.
Python 3.15 также получил явные отложенные импорты. Новый синтаксис lazy import json позволяет загрузить модуль только при первом реальном обращении. Для больших приложений такой подход может ускорить запуск: Python не будет сразу загружать и компилировать в байткод всё, что указано в импортах. Раньше похожего поведения добивались обходными способами, но подобные решения часто портили читаемость кода.
Ещё одно заметное новшество — профилировщик Tachyon. Инструмент собирает стеки вызовов у работающих процессов и не встраивается в каждый вызов функции. Документация описывает подход как почти бесплатный по накладным расходам: Tachyon может работать с частотой выборки до 1 000 000 Гц и подходит для поиска проблем производительности даже на рабочих системах.
В Python 3.15 кодировкой текста по умолчанию стал UTF-8. Разработчики всё равно советуют явно указывать кодировку там, где важна максимальная совместимость, но новое поведение должно сократить число странных ошибок при работе с файлами и текстом на разных платформах.
Команда CPython продолжила ускорять интерпретатор. Экспериментальный JIT-компилятор появился ещё в Python 3.14, но тогда разработчики не советовали использовать механизм в рабочих проектах: часть программ могла работать медленнее обычного интерпретатора. В Python 3.15 JIT заметно доработали. По текущим данным команды, средний прирост производительности составляет 8-9% на x86-64 Linux и 12-13% на macOS с Apple silicon. В отдельных случаях код всё ещё может замедляться до 15%, а цифры могут измениться до финального релиза.
Не все эксперименты добрались до новой версии. Инкрементальный сборщик мусора, выпущенный в Python 3.14, убрали после сообщений об утечках памяти. Механизм должен был повышать производительность за счёт более редкого освобождения памяти, но разработчики откатили изменение в Python 3.14.5. Команда CPython допустила возвращение идеи в Python 3.16, но только после полноценного обсуждения через обычный процесс PEP.
Полный список изменений Python 3.15 опубликован в документации проекта.