Python 3.11 надходить із покращеною продуктивністю, оновленим дизайном кешування тощо

Python

Python — це інтерпретована мова програмування високого рівня, філософія якої наголошує на зручності читання коду.

Після року розробки вийшла нова версія мови програмування Python, 3.11 . Нова гілка підтримуватиметься протягом півтора року, після чого протягом ще трьох з половиною років випускатимуться патчі для усунення вразливостей.

Водночас розпочалося альфа-тестування гілки Python 3.12 (згідно з новим графіком розробки, робота над новою гілкою починається за п'ять місяців до виходу попередньої гілки та досягає стадії альфа-тестування на момент виходу наступної версії).

Гілка Python 3.12 перебуватиме в альфа-версії протягом семи місяців, протягом яких будуть додані нові функції та виправлені помилки. Після цього протягом трьох місяців триватиме бета-тестування, протягом якого додавання нових функцій буде заборонено, а повна увага приділятиметься виправленню помилок. Останні два місяці перед запуском філія перебуватиме на стадії кандидата на запуск, після чого відбудеться остаточна стабілізація.

Основні нові можливості Python 3.11

Ця нова версія включає значну роботу з оптимізації продуктивності . Нова гілка включає зміни, пов'язані з прискоренням та вбудованим розгортанням викликів функцій , використанням швидких інтерпретаторів для типових операцій та оптимізаціями, розробленими проектами Cinder та HotPy. Залежно від робочого навантаження, швидкість виконання коду збільшується від 10% до 60%. В середньому, продуктивність у наборі тестів pyperformance зросла на 25%.

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

Додано підтримку груп винятків , що дає програмі можливість одночасно генерувати та обробляти кілька різних винятків. Для групування та об'єднання кількох винятків запропоновано нові типи винятків, ExceptionGroup та BaseExceptionGroup, а також додано вираз "except*" для розділення винятків у групі.

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

Крім того, також передбачено можливість позначати окремі елементи типізованих словників (TypedDict) позначками Required та Not Required для визначення обов'язкових та необов'язкових полів (за замовчуванням усі оголошені поля є обов'язковими, якщо параметр total не встановлено на False).

Додано декоратор класу, методу та функції @dataclass_transform ; якщо його вказано, статична перевірка типів обробляє об'єкт так, ніби він використовує декоратор @dataclasses.dataclass.

З інших змін, які виділяються в цій новій версії:

  • Додано можливість використання атомарного групування ((?>…)) і ревнивих (присвійних) кванторів (*+, ++, ?+, {m,n}+) у регулярних виразах.
  • Додано тип TypeVarTuple, який дозволяє використовувати змінні генерики, на відміну від TypeVar, який охоплює не один тип, а довільну кількість типів.
  • Стандартна бібліотека включає модуль tomllib із функціями аналізу формату TOML.
  • Метод add_note() додано до класу BaseException, який дозволяє додавати текстову примітку до винятку, наприклад, щоб додати контекстну інформацію, яка була недоступна на момент створення винятку.
  • Для представлення поточного приватного класу додано спеціальний тип Self. Self можна використовувати для анотування методів, які повертають екземпляр вашого класу простіше, ніж за допомогою TypeVar.
  • Додано параметр командного рядка "-P" і змінну середовища PYTHONSAFEPATH, щоб вимкнути автоматичне підключення потенційно небезпечних шляхів файлів до sys.path.
  • Утиліту py.exe для платформи Windows було значно вдосконалено для підтримки синтаксису "-V:". / " на додаток до "- . ».
  • Багато макросів C API було перетворено на звичайні або статичні вбудовані функції
  • Модулі uu, cgi, pipes, 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().

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


Додати як пріоритетне джерело в Google