Python 3.15 ускоряет запуск и выполнение кода благодаря ленивым импортам и JIT-компилятору
Python 3.15.0
Вышел стабильный релиз Python 3.15.0 — 5 643 коммита от 1 012 участников. Главные новшества: ленивые импорты (PEP 810) для быстрого старта, экспериментальный JIT-компилятор с ускорением до 12% на AArch64 macOS, UTF-8 по умолчанию, встроенные типы sentinel и frozendict, а также профилировщик Tachyon. Официальные сборки для Windows и macOS теперь используют tail-calling интерпретатор и поддержку free-threading.
Вы просыпаетесь в Startup Foyer где-то внутри интерпретатора и пробираетесь к Release Gate. По пути вас ждут восемнадцать головоломок, и каждая из них — это реальная возможность Python 3.15, которую нужно действительно использовать.
- simonw
Как мейнтейнер целой кучи open source Python-библиотек, больше всего в новом релизе Python я люблю то, что он означает прекращение поддержки более старого. В данном случае это Python 3.10... а значит, мои библиотеки, которые стремятся поддерживать все текущие версии Python, наконец-то могут начать использовать фичи из Python 3.11!
Вот документ «что нового в Python 3.11»: https://docs.python.org/3/whatsnew/3.11.html
- ngoldbaum
Моя главная фича — новый стабильный ABI «abi3t» для сборки без GIL. Хотя большую часть реализации в CPython сделал Petr Viktorin, я старался позаботиться о том, чтобы экосистема была готова. Это был полезный, но довольно сложный проект — убедиться, что всё работает. Были поздние вечера перед выпуском beta1, когда мы нашли проблему, специфичную для Windows, которую нужно было исправить.
Я особенно горжусь тем, что проект cryptography уже выпускает единый wheel abi3.abi3t для каждой платформы на Python 3.15 или новее. Сборка с GIL и сборка без GIL теперь могут использовать один и тот же wheel, потому что PyObject стал непрозрачным.
Если хотите узнать больше, я выступал с докладом на EuroPython в этом году про ABI Python и путь к сборке и выпуску abi3t сегодня. Смотрите https://youtu.be/An8lO29SxXE.
- zahlman
Сжатый XZ архив с исходниками примерно в полтора раза больше, чем для 3.14. Что случилось?
Edit: Копнув немного, многое в целом стало чуть больше, как и ожидалось; но заметно, что папка с документацией пополнилась двумя анимированными GIF-ками общим размером более 10MB (которые, предположительно, не сожмутся сильно даже с XZ), демонстрирующими «tachyon» (что, вероятно, относится к новому сэмплирующему профайлеру, https://docs.python.org/3.15/library/profiling.sampling.html). Похоже, это записи экрана из терминальных сессий, которые достаточно хорошо показывают, как выглядит TUI, но, вероятно, не очень информативны насчёт того, как им пользоваться. Я бы гораздо предпочёл SVG-диаграммы на основе статических скриншотов.
- wg0
Это может многих раздражать, но в будущем, как я вижу, выживут только следующие языки:
1. Typescript + Javascript
2. Rust.
3. Python — из-за data science и интерактивных приложений.
По сути, всё, что можно переписать на Rust с AI или без него, будет переписано на Rust с AI или без него в ближайшее десятилетие.
Известные случаи:
1. Некоторые бэкенды в 37 signals с Ruby на Rust.
2. Bun с Zig на Rust.
3. Git в процессе перехода.
4. Линкер Mold с C на Rust.
5. Biome
6. TailwindCSS CLI
И многое-многое другое. Даже интерпретатор Python, если я не ошибаюсь, в процессе использования Rust в качестве основного языка.
[0]. https://github.com/kevincouton/awesome-rust-migrations#1
- kbumsik
> PEP 810: Явные ленивые импорты для ускорения запуска
Да, ленивые импорты! Наконец-то!