Написать пост

Разработчики Python представили версию 3.7.0

Аватар Тимур Кондратьев

Релиз добавил C API для TLS, новый формат файлов .рус, в которых кэшируется байткод, а также встроенную программную точку останова breakpoint().

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

Подробнее о нововведениях в Python 3.7.0

Релиз добавил обновленный C API для локальной памяти потока (TLS), предоставляющий новый TSS (Thread Specific Storage) API вместо ранее использовавшегося TLS API. Новый API вводит тип Py_tss_t вместо int, что позволяет запускать CPython на платформах, не позволяющих безопасное транслирование TLS-ключей в int.

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

В Python 3.7.0 стала доступной встроенная точка останова breakpoint() для программного вызова отладчика.

В набор инструментов добавлен новый модуль dataclass вместе с декоратором dataclass(), который предоставляет средства для определения классов данных, в которых применяются аннотации переменных класса с автоматической генерацией методов __repr__(), __eq__() и __hash__() для определения атрибутов. Кроме того, появилась поддержка модуля typing и generic-типов.

Также в новой версии появились несколько новых модулей, улучшающих работу с TLS и ресурсами внутри пакетов.

Обновления существующих компонентов

В модуле time реализована поддержка операций с наносекундами. Для их включения необходимо дописать _ns к существующим функциям.

Предупреждения DeprecationWarning теперь появляются только для кода в основном модуле и при выполнении тестов, а для всех импортированных модулей и библиотек скрыты по умолчанию.

Также исключено использование кодировки ASCII по умолчанию. Вместо этого добавлена опция -X utf8 и переменная окружения PYTHONUTF8 для принудительного использования кодировки UTF-8. Кроме того, в классах str, bytes и bytearray появился новый метод isascii() для проверки строки на наличие только ASCII-символов.

Подробнее со всеми изменениями и улучшениями можно ознакомиться в техническом документе релиза Python 3.7.0. Предварительная версия вышла 14 июня 2018 года.

Следите за новыми постами
Следите за новыми постами по любимым темам
5К открытий5К показов