Разработчики Python готовятся к глобальной чистке стандартной библиотеки. Из нее вынесут устаревшие компоненты и возможности, которые редко используются. Удалят и компоненты, которые не получается унифицировать для разных платформ.
Что пойдет под нож
Автор предложения Кристиан Хаймс считает, что модуль crypt уже не актуален. Он недоступен на Windows, к тому же алгоритмы хеширования, использованные здесь, зависят от системных библиотек.
Удалить намерены и популярный модуль cgi. Он требует для каждого запроса создавать новый процесс – это слишком затратно. К тому же архитектура модуля неоптимальна – проще использовать что-то другое, чем «чинить» имеющееся.
Разработчики советуют заменять устаревшие компоненты: использовать importlib вместо imp, subprocess вместо pipes, NSS, LDAP или Kerberos/GSSAPI вместо nis. Посоветовали не включать в проекты и spwd – работать с базой данных учетных записей напрямую небезопасно.
А вот ftplib, getopt, optparse, fileinput, colorsys, lib2to3 и wave в стандартной библиотеке пока останутся. Они устарели, но используются слишком часто, поэтому будут «жить».
Как будут удалять компоненты
Разработчики намерены чистить библиотеку постепенно. В новой версии Python 3.8 устаревшие модули останутся, но в документации их пометят устаревшими. Для части модулей будут выводить раннее предупреждение.
В версии Python 3.9 предупреждения появятся для всех устаревших компонентов. Но разработчики смогут продолжать их использовать. В Python 3.10 все, что планировали удалить, уберут из репозиториев Cpython.
Отдельно отметим, что модуль parser удалят в Python 3.9 – его пометили устаревшим еще в версии 2.5. А из Python 3.8 исчезнет macpath.
Как использовать удаленные модули
Код компонентов, удаленных из стандартной библиотеки, отправят в отдельный репозиторий legacylib. Что будет с ним, решит сообщество.
Разработчики пообещали поддерживать ветку Python 3.9 до 2026 года. Таким образом, у всех будет достаточно времени, чтобы перевести свои проекты на решения вне стандартной библиотеки.
Такой подход не соответствует изначальной концепции Python «батарейки в комплекте». Язык создавался как универсальное средство со всеми возможностями на борту. С другой стороны, избавившись от устаревшего кода, проект будет проще поддерживать. Количество потенциальных уязвимостей снизится.
Перечень компонентов, которые хотят убрать из стандартной библиотеки