Планирано е голямо почистване на стандартната библиотека на Python

Разработчици на проекта 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.8 да започнат да излизат предупреждения, а в 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 на вградени платформи с ограничен размер на хранилището.

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster