На онлайн-конференции Python Language Summit 2021 автор языка и сотрудник Майкрософт Гвидо ван Россум рассказал о запланированном на версию 3.11 увеличении скорости CPython.
За проект Ван Россум благодарит пандемию и Майкрософт. Ему стало скучно на пенсии, он попробовал наняться в Майкрософт, его взяли и разрешили самому выбрать, чем заняться. Таким образом Майкрософт «возвращает долги» Питону.
В прошлом году уже предлагался 4-летний «план Шеннона», обещавший ускорение на 50% в год в течении 4 лет за 2 миллиона долларов (500 тысяч в год). Одним из условий было, чтобы направление разработки определяло сообщество, а не корпорации.
Сейчас разработкой на деньги Майкрософт занимаются Марк Шеннон, Эрик Сноу и Гвидо Ван Россум, могут привлечь и других программистов. Обещают прозрачное сотрудничество с ядром разработчиков основной ветки и плавное накопление изменений. Не будет ни долгосрочных параллельных форков, ни внезапных патчей из 6000 строк. Все изменения будут доступны для обсуждения на Гитхабе.
Разработчики приняли следующие ограничения:
- Не ломать совместимость со стабильным ABI.
- Не ломать частичную совместимость API.
- Не ломать и не замедлять граничные случаи (например, не кидать миллион объектов в стек eval).
- Не делать код несопровождаемым.
Поэтому нельзя менять базовые вещи: объекты, типы, счёт ссылок; байткод, стековый фрейм; компилятор, интерпретатор; внутреннее устройство большинства объектов…
Для ускорения версии 3.11 планируют:
- Адаптивный интерпретатор байткода.
- Множество сравнительно небольших оптимизаций:
фрейм стека;
ускорение вызовов;
аллокация. - Обработка исключений «без накладных расходов». (кавычки Ван Россума)
Гарантии успеха не дают.
Также хотят:
- Ускорить запуск.
- Изменить формат файлов .pyc.
- Ускорить операции с целыми.
- Фиксированное смещение для
__dict__
. - «Скрытые классы».
- «Tagged numbers».
В последующих версиях хотят добиться 5-кратного ускорения. Вероятно, будут генерировать машинный код (iOS в пролёте). Могут что-то сделать с ABI и API.
Кто выиграет — очевидно. Не будет особой разницы для библиотек на Си (numpy, tensorflow), программ, тормозящихся вводом-выводом, многопоточного кода. И для неэффективных алгоритмов.
PEP 659: https://www.python.org/dev/peps/pep-0659/
Гитхаб: https://github.com/faster-cpython/
>>> Презентация