Финальный релиз 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 также получил явные отложенные импорты. Новый синтаксис <span class="font-RobotoMono">lazy import json</span> позволяет загрузить модуль только при первом реальном обращении. Для больших приложений такой подход может ускорить запуск: 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 опубликован в документации проекта.
Вышла первая бета 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 также получил явные отложенные импорты. Новый синтаксис <span class="font-RobotoMono">lazy import json</span> позволяет загрузить модуль только при первом реальном обращении. Для больших приложений такой подход может ускорить запуск: 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 опубликован в документации проекта.
- Источник новости
- www.securitylab.ru