Вышел Python 3.11

6fdb62ec86cfca7c2cb1c050cd33cc87.JPG

Разработчики опубликовали выпуск языка программирования Python 3.11. Новая ветка будет поддерживаться в течение полутора лет и три с половиной года для неё будут формироваться исправления с устранением уязвимостей.

оптимизацию производительности с добавлением изменений, связанных с ускорением и inline-развёртыванием вызова функций, применением быстрых интерпретаторов типовых операций (x+x, x*x, x-x, a[i], a[i] = z, f (arg) C (arg), o.method (), o.attr = z, *seq), а также оптимизацией в рамках проектов Cinder и HotPy. Разработчики обещают прирост скорости выполнения кода на 10–60%. В среднем производительность при прохождении тестового набора pyperformance увеличилась на 25%;

переработанный механизм кэширования байткода, что позволило сократить время запуска интерпретатора на 10–15%. Объекты с кодом и байткод статически размещаются интерпретатором, чтобы исключить стадии демаршалинга извлечённого из кэша байткода и преобразования объектов с кодом для размещения в динамической памяти;

вывод информации о выражении при отображении трассировки вызовов в диагностических сообщениях. Расширенную информацию о трассировке также можно получить через API и использовать для сопоставления отдельных инструкций байткода с конкретной позицией в исходном коде, используя метод codeobject.co_positions () или функцию C API PyCode_Addr2Location (). Это упрощает отладку проблем, связанных с вложенными объектами словарей, множественными вызовами функций и сложными арифметическими выражениями;

поддержку групп исключений, дающих программе возможность генерировать и обрабатывать сразу несколько разных исключений одновременно. Для группировки нескольких исключений и их совместного вызова предложены новые типы ExceptionGroup и BaseExceptionGroup, а для выделения отдельных исключений из группы добавлено выражение «except*»;

добавление метода add_note () в класс BaseException для прикрепления текстового примечания к исключению;

добавление типа Self, представляющего текущий закрытый класс, для аннотирования методов, возвращающих экземпляр своего класса, более простым путём;

добавление специального типа LiteralString, который может включать только строковые литералы, совместимые с типом LiteralString. Тип можно использовать для ограничения передачи функциям строковых аргументов, где произвольная подстановка частей строк может привести к уязвимостям;

добавление TypeVarTuple, охватывающего произвольное число типов;

включение модуля tomllib с функциями для разбора формата TOML в стандартную библиотеку;

возможность пометки отдельных элементов типизованных словарей (TypedDict) метками Required и NotRequired для определения обязательных и необязательных полей;

добавление класса TaskGroup в модуль asyncio с реализацией асинхронного контекстного менеджера, ожидающего завершения группы задач. Добавление задач в группу осуществляется при помощи метода create_task ();

добавление декоратора классов, методов и функций @dataclass_transform, при указании которого система проверки статических типов трактует объект, как при использовании декоратора @dataclasses.dataclass;

добавление возможности использования атомарной группировки ((?>…)) и possessive-квантификаторов (*+, ++, ?+, {m, n}+) в регулярных выражениях;

добавление опции командной строки »-P» и переменной окружения PYTHONSAFEPATH для отключения автоматического прикрепления к sys.path потенциально небезопасных файловых путей;

улучшение утилиты py.exe для платформы Windows, в которой реализована поддержка синтаксиса »-V: /» в дополнение к »-.»;

преобразование многих макросов в C API в обычные или статические inline-функции;

удаление модулей uu, cgi, pipes, crypt, aifc, chunk, msilib, telnetlib, audioop, nis, sndhdr, imghdr, nntplib, spwd, xdrlib, cgitb, mailcap, ossaudiodev и sunau. Удаление функции PyUnicode_Encode*.

Началось альфа-тестирование ветки Python 3.12. Она будет находиться на стадии альфа-выпусков в течение семи месяцев. Затем ещё три месяца будет проводиться тестирование бета-версий с исправлением ошибок. 

Версия Python 3.10.0 вышла в октябре 2021 года. В ней внедрили улучшенный вывод ошибок, структурное сопоставление и более строгое итерирование.

© Habrahabr.ru