Новости Версия Python 3.12: что нового для разработчиков и какие перспективы открывает 3.13?

NewsMaker

I'm just a script
Премиум
14,594
22
8 Ноя 2022
Разбираем ключевые моменты Python 3.12.


53gbtsncujgn6gamdhcve8abts6u4d5v.jpg


После годовой разработки Для просмотра ссылки Войди или Зарегистрируйся значимая версия языка программирования Для просмотра ссылки Войди или Зарегистрируйся , поддержка которой продлится полтора года, после чего следует еще три с половиной года обновлений, направленных на устранение уязвимостей.

Разработчики также Для просмотра ссылки Войди или Зарегистрируйся альфа-тестирование Для просмотра ссылки Войди или Зарегистрируйся . Одной из заметных особенностей этой версии стал режим сборки CPython, который работает без глобальной блокировки интерпретатора (GIL). Планируется, что Python 3.13 будет в альфа-версии в течение 7 месяцев, с дальнейшим трёхмесячным тестированием бета-версий. Перед финальным релизом на протяжении двух месяцев версия будет на стадии кандидата в релизы.

Что Для просмотра ссылки Войди или Зарегистрируйся в Python 3.12?

  • Улучшена гибкость разбора f-строк (форматированные литералы с префиксом ‘f’), позволившая избавиться от многих ограничений. Например, теперь можно использовать любые допустимые для Python выражения внутри f-строк, включая многострочные выражения, комментарии, обратные слэши и escape-последовательности для Unicode. Кроме того, теперь можно использовать одинаковые кавычки для обрамления f-строки и для внутренней строки (т.е. теперь можно использовать двойные кавычки внутри двойных кавычек, не переключаясь на одинарные). Улучшена информативность сообщений об ошибках в f-строках, в которых теперь показывается точное место ошибки в строке.
  • Внесены улучшения для работы на многоядерных системах: Для просмотра ссылки Войди или Зарегистрируйся поддержка изолированных субинтерпретаторов и отдельных GIL (Global Interpreter Lock) для разных интерпретаторов в одном процессе. Пока эта функция доступна только через C-API.
  • В Python-код теперь Для просмотра ссылки Войди или Зарегистрируйся протокол Для просмотра ссылки Войди или Зарегистрируйся . Теперь классы, обеспечивающие метод "buffer()", могут быть использованы как типы, напрямую работающие с бинарными данными в памяти.
  • Для просмотра ссылки Войди или Зарегистрируйся модуль Для просмотра ссылки Войди или Зарегистрируйся для отладки и профилирования, позволяющий с минимальными накладными расходами отслеживать такие события в CPython, как вызовы, возвраты из функций, выполнение произвольных строк кода, исключения и переходы.
  • В интерпретаторе Для просмотра ссылки Войди или Зарегистрируйся функция для поддержки Linux ядра perf, что позволяет опознавать имена функций на Python в процессе профилирования с помощью утилиты perf.
  • Улучшена детальность сообщений об ошибках и расширен диапазон исключений, предоставляющих советы по коррекции опечаток. Например, теперь выводятся рекомендации по импорту забытых модулей стандартной библиотеки, показываются подсказки по добавлению префикса "self." в методах, определяется написание "import x from y" вместо "from y import x" и т.п
  • Ведутся работы по улучшению производительности, что привело к увеличению эффективности на 5%.
    • В процесс сборки добавлена экспериментальная поддержка бинарного оптимизатора BOLT, повышающего производительность на 1-5%.
    • Для просмотра ссылки Войди или Зарегистрируйся inline-развёртывание списковых включений ( Для просмотра ссылки Войди или Зарегистрируйся ), до двух раз ускоряющее работу со списковыми включениями (для кода, в котором активно используются списковые включения, тестирование показало общий прирост производительности на 11%).
    • Размер Unicode-элементов сокращен на 8-16 байт.
    • Действия с регулярными выражениями, такие как re.sub(), re.subn() и re.Pattern, теперь выполняются быстрее.
    • Проверки isinstance() для некоторых протоколов теперь в 2-20 раз быстрее.
    • Пакет asyncio стал значительно эффективнее, с ускорением до 75% в некоторых сценариях.
    • Ускорено создание объектов класса asyncio.Task.
    • Функции tokenize.tokenize() и tokenize.generate_tokens() значительно ускорены, в некоторых тестах на 64%.
    • Ускорена загрузка атрибутов и вызов метода super().
  • Для просмотра ссылки Войди или Зарегистрируйся усовершенствованный синтаксис аннотаций типов для обобщенных классов и функций.
  • Предоставлен новый способ определения псевдонимов типов при помощи выражения «type».
  • В typing Для просмотра ссылки Войди или Зарегистрируйся декоратор @override, информирующий системы проверки типов о том, что метод в подклассе предназначен для переопределения метода или атрибута в суперклассе. Декоратор может использоваться для выявления ошибок, связанных с тем, что предназначенный для переопределения метод не выполняет данное действие.
  • Для усиления безопасности встроенные реализации алгоритмов SHA1, SHA3, SHA2-384, SHA2-512 и MD5 в hashlib заменены на формально верифицированные варианты от проекта HACL* (встроенные реализации применяются только если отсутствует OpenSSL).
  • CPython теперь защищен от переполнения стека.
  • Для просмотра ссылки Войди или Зарегистрируйся теперь поддерживает подклассы.
  • Модуль Для просмотра ссылки Войди или Зарегистрируйся теперь предоставляет расширенную поддержку для Windows.
  • Модули Для просмотра ссылки Войди или Зарегистрируйся и Для просмотра ссылки Войди или Зарегистрируйся получили интерфейсы командной строки.
  • В C-API Для просмотра ссылки Войди или Зарегистрируйся поддержка «бессмертных» объектов, для которых не применяется подсчёт ссылок.
  • Для просмотра ссылки Войди или Зарегистрируйся концепция нестабильного уровня C API, предназначенного для использования в отладчиках, JIT-компиляторах и прочих низкоуровневых инструментах.
  • Выполнена очистка от устаревших компонентов.
    • Модули asynchat, asyncore, smtpd, imp и distutils были удалены (но distutils по-прежнему доступен в пакете setuptools).
    • В Си-версии unicode-объектов исключены атрибуты wstr и wstr_length.
    • Исключены устаревшие методы из модуля unittest.
    • Избавились от устаревших и неэффективных функций, классов и методов, таких как locale.format(), io_OpenWrapper, ssl.RAND_pseudo_bytes(), ElementTree.Element.copy(), hashlib.pbkdf2_hmac(), gzip.GzipFile и других.
    • Поддержка устаревших браузеров в модуле webbrowser завершена, включая Grail, Mosaic, Netscape, Galeon и другие до Firefox версии 36.
    • С целью будущих оптимизаций пересмотрено внутреннее представление целочисленных значений.
 
Источник новости
www.securitylab.ru

Похожие темы