Разбираем ключевые моменты Python 3.12.
После годовой разработки Для просмотра ссылки Войдиили Зарегистрируйся значимая версия языка программирования Для просмотра ссылки Войди или Зарегистрируйся , поддержка которой продлится полтора года, после чего следует еще три с половиной года обновлений, направленных на устранение уязвимостей.
Разработчики также Для просмотра ссылки Войдиили Зарегистрируйся альфа-тестирование Для просмотра ссылки Войди или Зарегистрируйся . Одной из заметных особенностей этой версии стал режим сборки 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(), ipenWrapper, ssl.RAND_pseudo_bytes(), ElementTree.Element.copy(), hashlib.pbkdf2_hmac(), gzip.GzipFile и других.
- Поддержка устаревших браузеров в модуле webbrowser завершена, включая Grail, Mosaic, Netscape, Galeon и другие до Firefox версии 36.
- С целью будущих оптимизаций пересмотрено внутреннее представление целочисленных значений.
- Источник новости
- www.securitylab.ru