Планира се голямо почистване на стандартната библиотека 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