Python 3.11 выходит с улучшениями производительности, редизайном кэширования и многим другим.

Питон

Python — это высокоуровневый интерпретируемый язык программирования, философия которого делает упор на удобочитаемость кода.

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

В то же время началось альфа-тестирование ветки Python 3.12. (по новому графику разработки работа над новой веткой начинается за пять месяцев до релиза предыдущей ветки и доходит до альфа-тестирования к моменту выхода следующей версии).



Ветка Python 3.12 будет находиться в альфа-версии в течение семи месяцев, в течение которых будут добавлены новые функции и исправлены ошибки. После этого в течение трех месяцев будет проходить бета-тестирование, в течение которого будет запрещено добавление новых функций и все внимание будет уделено исправлению ошибок. Последние два месяца перед запуском ветка будет находиться в стадии кандидата на запуск, после чего произойдет окончательная стабилизация.



Основные новые функции Python 3.11

В этой новой версии Проделана большая работа по оптимизации производительности., так как новая ветка включает в себя соответствующие изменения с ускорением и встроенным развертыванием вызовов функций, использование быстрых интерпретаторов типовых операций, а также оптимизации, подготовленные проектами Cinder и HotPy. В зависимости от типа нагрузки скорость выполнения кода увеличивается от 10% до 60%. В среднем производительность при прохождении набора тестов pyperformance увеличилась на 25%.

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



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

Добавлен специальный тип LiteralString это только может включать литеральные строки, совместимые с типом LiteralString (то есть голые строки и строки типа LiteralString, но не произвольные или смешанные строки типа str). Тип LiteralString можно использовать для ограничения передачи строковых аргументов функциям, произвольной подстановки частей строк там, где это может привести к уязвимостям, например, при генерации строк для SQL-запросов или команд оболочки.

Кроме того, также предусмотрена возможность пометить отдельные элементы словарей (TypedDict) с флагами Required и Not Required для определения обязательных и необязательных полей (по умолчанию все объявленные поля являются обязательными, если для параметра total не установлено значение Фальшивый).



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

Из других изменений, которые выделяются в этой новой версии:



  • Добавлена ​​возможность использовать атомарную группировку ((?>…)) и ревнивые (притяжательные) квантификаторы (*+, ++, ?+, {m,n}+) в регулярных выражениях.
  • Добавлен тип TypeVarTuple, который позволяет использовать дженерики переменных, в отличие от TypeVar, который охватывает не один тип, а произвольное количество типов.
  • Стандартная библиотека включает модуль tomllib с функциями для разбора формата TOML.
  • В класс BaseException был добавлен метод add_note(), который позволяет прикреплять текстовую заметку к исключению, например, для добавления контекстной информации, которая не была доступна во время создания исключения.
  • Для представления текущего закрытого класса был добавлен специальный тип Self. Self можно использовать для аннотирования методов, возвращающих экземпляр вашего класса, более простым способом, чем использование TypeVar.
  • Добавлен параметр командной строки «-P» и переменная среды PYTHONSAFEPATH для отключения автоматического подключения потенциально небезопасных путей к файлам в sys.path.
  • Утилита py.exe для платформы Windows была значительно улучшена и теперь поддерживает синтаксис «-V:». / » в дополнение к «- . ».
  • Многие макросы C API были преобразованы в обычные или статические встроенные функции.
  • Модули uu, cgi, pipe, crypt, aifc, chunk, msilib, telnetlib, audioop, nis, sndhdr, imghdr, nntplib, spwd, xdrlib, cgitb, mailcap, ossaudiodev и sunau объявлены устаревшими и будут удалены из Python. выпуск 3.13.
  • Удалены функции PyUnicode_Encode*.
  • Класс TaskGroup был добавлен в модуль asyncio с реализацией асинхронного менеджера контекста, который ожидает завершения группы задач.
  • Добавление задач в группу осуществляется с помощью метода create_task().

В конце концов если вам интересно узнать об этом больше, вы можете проверить подробности в по следующей ссылке. 




2022-10-24T15:32:36
новости