Основные изменения
- PEP 498: форматированные строковые литералы.
- PEP 515: подчёркивания в числовых литералах.
- PEP 526: синтаксис аннотаций для переменных.
- PEP 525: асинхронные генераторы.
- PEP 530: асинхронные компоновки.
CPython
- Новая реализация словарей, использующая более быстрое и компактное представление аналогично тому, как это сделано в PyPy. Это позволило сократить количество памяти, выделяемой под словари, на 20-25% по сравнению с Python 3.5.
- Добавлена возможность управлять созданием подклассов без использования метаклассов.
- Порядок определения атрибутов класса теперь сохраняется.
- Порядок элементов в
**kwargs
теперь соответствует порядку, в котором именованные аргументы были переданы при вызове функции. - Новая переменная окружения
PYTHONMALLOC
, предназначенная для отслеживания операций выделения памяти и ошибок доступа. - Добавлена поддержка DTrace и SystemTap.
Стандартная библиотека
- Стабилизировано API модуля asyncio. Также была проведена работа над улучшением юзабилити, производительности и исправлением ряда ошибок.
- Реализованы протокол для путей в файловых системах и его поддержка во всех функциях стандартной библиотеки для работы с путями.
- С целью устранения неоднозначностей для локального времени в
datetime.datetime
иdatetime.time
добавлен атрибутfold
. - Модуль typing получил ряд улучшений и объявлен стабильным.
- Значительно переработан модуль tracemalloc.
Безопасность
- Для упрощения генерации криптостойких псевдослучайных чисел добавлен модуль secrets.
- Вызов
os.urandom()
на linux-системах теперь блокируется, пока пул энтропии не будет проинициализирован. - Модули hashlib и ssl теперь поддерживают OpenSSL 1.1.0.
- Улучшены настройки по умолчанию для модуля ssl.
- В модуль hashlib добавлены поддержка алгоритмов BLAKE2, SHA-3 и SHAKE, а также функция scrypt().
>>> Подробности