24 октября 2022 года объявлено о выпуске новой версии популярного языка программирования Python 3.11.
Python — это высокоуровневый язык программирования общего назначения с динамической строгой типизацией и автоматическим управлением памятью, ориентированный на повышение производительности разработчика, читаемости кода и его качества, а также на обеспечение переносимости написанных на нём программ (Википедия).
Основные улучшения заключаются в увеличении производительности интерпретатора CPython на 10-60% (в среднем в 1.25 раз по сравнению с Python 3.10). Этого удалось достичь в первую очередь за счёт оптимизации запуска интерпретатора, а также при помощи ускорения вызовов функций (в частности, за счёт оптимизации внутренней структуры фрейма; ранее фреймы содержали дополнительную информацию об отладке и управлении памятью).
Среди других изменений и улучшений можно отметить следующие:
- Поддержка групп исключений – возможность создания и обработки нескольких несвязанных исключений одновременно (PEP 654).
- Более точное указание местоположения ошибок в сообщениях об ошибках (PEP 657).
- Различные улучшения и добавления в аннотациях типов, в частности, новая аннотация Self, указывающая, что метод возвращает объект данного класса (PEP 673).
- Новый модуль стандартной библиотеки
tomllib
для работы с форматом TOML (PEP 680). - Множество улучшений в модулях стандартной библиотеки, в частности,
asyncio
,datetime
,enum
,functools
,inspect
,math
и других. Например, в модульmath
добавлены такие крайне полезные функции, какexp2
(возведение 2 в степень) иcbrt
(кубический корень).
Кроме того, продолжена работа по удалению из стандартной библиотеки устаревших или мало используемых функций и модулей. В частности, помечены как устаревшие (для удаления в Python 3.13) следующие модули: pipes
, crypt
, ossaudiodev
и некоторые другие не менее важные. Отметим, что для помеченных к удалению модулей имеются альтернативные реализации, либо их функционал (если он кому-то нужен) распределён среди оставшихся модулей. например, вместо модуля crypt
рекомендуется использовать модуль hashlib
, а вместо pipes
– subprocess
.
В целом, в данный релиз вошло более 9500 исправлений и улучшений от множества разработчиков по всему миру. Ответственный за данный выпуск – Pablo Galindo Salgado.