Python – язык с очень низким порогом входа. Вместе с тем за простоту синтаксиса приходится платить производительностью. Организация Python Software Foundation (PSF) представили три новые версии языка, которые призваны сохранить его простоту, но вместе с тем ускорить работу программ.
Первые релизы года
Для загрузки уже доступны стабильные Python 3.9.10 и 3.10.2, а также превью-версия 3.11.0a4. Их должны были представить раньше, но, по словам разработчиков, они неоднократно сталкивались с самыми неожиданными проблемами.
Из-за проблем с обновлением сертификатов все три версии – 3.9.10, 3.10.2 и 3.11.0a4, – вышли без варианта для установки на Windows. Но разработчикам пришлось пойти на это, потому что в более ранних релизах были обнаружены утечки памяти. Позднее проблемы с сертификатами решили, и версии для «окон» стали доступны.
Программисты также пояснили: Python 3.10.2 пришлось выпускать в ускоренном темпе и пренебречь частью запланированных улучшений, у версии 3.11.0a4 нашлось около двадцати багов-блокировщиков релиза. А Python 3.9.10 создавали на новых компьютерах Apple с процессорами M1 и macOS Monterey, что сделало обычно скучный процесс довольно увлекательным.
Что внутри
Python 3.9.10 – по сути, обновление легаси-проекта – устаревшей версии, в которой исправлены баги и закрыты уязвимости. И это последний релиз 3.9.х с новыми функциями.
Выход следующего, 3.9.11, запланирован на Pi Day '22 (14 марта 2022 года) и будет включать изменения для повышения безопасности, борьбы с утечками памяти и логическими ошибками. В релиз вошло более 130 коммитов. Например, теперь функция Py_EndInterpreter() явно отменяет отслеживание всех объектов, которые отслеживаются сборщиком мусора – раньше здесь возникали сбои в работе из-за появления висячих указателей на объекты, которые были удалены. Также в новом релизе можно восстановиться после переполнения стека без сбоя интерпретатора. Полный список изменений доступен на официальном сайте.
Ключевой момент Python 3.10.2 – решение проблемы с утечкой памяти. Она происходила при вызове определенных функций на Cython. Это язык программирования, который поддерживает синтаксис Python и позволяет напрямую вызывать функции на C/C++, чтобы ускорить работу отдельных блоков программы.
Полный список изменений также есть в официальной документации. Следующий релиз, 3.10.3, запланирован на 4 апреля 2022 года.
Скорость прежде всего
Разработчики рассказали, что в Python 3.11 сделан упор на максимальном ускорении работы приложений. Основные изменения релиза – PEP 657, который позволяет более точно отследить места возникновения ошибок по трассировке, и PEP 654, которое вносит изменения в иерархию исключений.
Создатель Python Гвидо ван Россум однажды озвучил амбициозную цель: сделать каждую следующую версию языка вдвое быстрее предыдущей. Сейчас он работает в Microsoft и занимается, в частности, проектом Faster CPython. Собственно, CPython – это эталонная реализация языка Python.
Тесты в рамках проекта показали, что CPython 3.11 примерно на 19% быстрее в вычислении среднего геометрического, чем 3.10.0. Не вдвое, конечно, но рост впечатляющий.