Гвидо ван Россум хочет ускорить Питон вдвое

good-penguin.png

На онлайн-конференции 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/

>>> Презентация

©  Linux.org.ru