Намечена большая чистка стандартной библиотеки Python

23 мая 2019 года

Разработчики проекта Python опубликовали предложение (PEP 594) по проведению значительной чистки стандартной библиотеки. К выносу из стандартной библиотеки Python предлагаются как явно устаревшие и узкоспециализированные возможности, так и компоненты, в которых имеются архитектурные проблемы и которые не удаётся унифицировать для всех платформ.

Например, из стандартной библиотеки предложено исключить такие модули, как crypt (недоступность для Windows и зависимость доступности алгоритмов хэширования от системных библиотек), cgi (неоптимальная архитектура, требуется запуск нового процесса на каждый запрос), imp (рекомендовано использовать importlib), pipes (рекомендовано использовать модуль subprocess), nis (рекомендовано использовать NSS, LDAP или Kerberos/GSSAPI), spwd (не рекомендовано напрямую работать с БД учётных записей). Для удаления также помечены модули binhex, uu, xdrlib, aifc, audioop, chunk, imghdr, ossaudiodev, sndhdr, sunau, asynchat, asyncore, cgitb, smtpd, nntplib, macpath, formatter, msilib и parser.

В соответствии с предложенным планом в Python 3.8 вышеупомянутые модули планируется отметить устаревшими в документации (частично выводить раннее предупреждение), в Python 3.9 начать выводить предупреждение, а в Python 3.10 удалить из репозиториев CPython. Модуль parser планируется удалить в версии 3.9, так как он помечен устаревшим ещё в выпуске Python 2.5, а модуль macpath в ветке 3.8. После удаления из основного состава код будет вынесен в отдельный репозиторий legacylib и его судьба будет зависеть от интереса представителей сообщества. Ожидается, что ветка Python 3.9 будет поддерживаться до 2026 года, что предоставит достаточно времени для перевода проектов на внешние альтернативы.

Изначально для удаления также были предложены модули ftplib, optparse, getopt, colorsys, fileinput, lib2to3 и wave, но их было решено пока оставить в составе стандартной библиотеки, так как они широко распространены и остаются актуальными, несмотря на наличие более совершенных альтернатив или привязки к специфичным возможностям операционных систем.

Напомним, что изначально проектом Python применяется подход "батарейки входят в комплект", при котором в стандартной библиотеке предлагается обширный набор функций для различных областей применения. Среди достоинств такого подхода - упрощение сопровождения проектов на Python и отслеживания безопасности используемых в проектах модулей. Уязвимости в модулях нередко становятся источником уязвимостей в использующих их приложениях. В случае если функции входят в стандартную библиотеку достаточно контролировать состояние основного проекта. При расщеплении стандартной библиотеки разработчикам требуется использовать сторонние модули, уязвимости в каждом из которых необходимо контролировать отдельно. При высокой степени дробления и большом числе зависимостей возникает угроза атак через компрометацию инфраструктуры разработчиков модулей.

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

Всё больше разработчиков используют более функциональные внешние замены стандартным модулям, например, применяют модуль lxml вместо xml. Удаление заброшенных модулей из стандартной библиотеки позволит повысить популярность активно развиваемых сообществом альтернатив. Кроме того, сокращение стандартной библиотеки приведёт к уменьшению размера базовой поставки, что актуально при использовании Python на встраиваемых платформах с ограниченным размером хранилища.

Источники править


 
 
Creative Commons
Эта статья содержит материалы из статьи «Намечена большая чистка стандартной библиотеки Python», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.