A Python szabványkönyvtár nagytakarítását tervezik

Python projektfejlesztők közzétett javaslat (PEP 594) a standard könyvtár nagytakarítására. Mind az egyértelműen elavult, mind a rendkívül speciális képességeket és összetevőket, amelyek architekturális problémái vannak, és nem egységesíthetők minden platformon, eltávolíthatók a Python szabványkönyvtárból.

Például javasolt kizárni a szabványos könyvtárból az olyan modulokat, mint a crypt (nem elérhető Windows rendszerben és a kivonatolási algoritmusok elérhetőségének függősége a rendszerkönyvtáraktól), a cgi (nem optimális architektúra, minden kéréshez új folyamat indítását igényli), imp (ajánlott az importlib használata), pipes (a részfolyamat modul használata javasolt), nis (NSS, LDAP vagy Kerberos/GSSAPI használata javasolt), spwd (nem javasolt közvetlenül a fiókadatbázissal dolgozni). A binhex, uu, xdrlib modulok szintén meg vannak jelölve eltávolításra.
aifc,
audioop,
darab
imghdr,
ossaudiodev,
sndhdr,
sunau
aszinkron,
asyncore,
cgitb,
smtpd
nntplib, macpath,
formázó, msilib és elemző.

A javasolt terv az, hogy a fenti modulokat megszüntetjük a Python 3.8-ban, figyelmeztetést adunk a Python 3.8-ban, és eltávolítjuk őket a Python 3.10 CPython-tárolóiból.
A tervek szerint az elemző modult a 3.9-es verzióban eltávolítják, mivel a Python 2.5-ös kiadásában elavult, a macpath modult pedig a 3.8-as ágban. A fő kódból való eltávolítás után a kód egy külön legacylib tárolóba kerül, és sorsa a közösség tagjainak érdeklődésétől függ. A Python 3.9 ága várhatóan 2026-ig lesz támogatott, ami elegendő időt biztosít a projekteknek a külső alternatívákra való átállásra.

Kezdetben az ftplib, optparse, getopt, colorys, fileinput, lib2to3 és wave modulokat is javasolták eltávolításra, de úgy döntöttek, hogy egyelőre a szabványos könyvtár részeként hagyják őket, mivel széles körben elterjedtek és a jelenlétük ellenére továbbra is relevánsak. fejlettebb alternatívák vagy kötések az operációs rendszerek meghatározott képességeihez.

Emlékezzünk vissza, hogy a Python projekt kezdetben az „elemeket is magában foglaló” megközelítést alkalmazta, és funkciók gazdag készletét kínálta a szabványos könyvtárban különféle alkalmazásokhoz. Ennek a megközelítésnek az előnyei közé tartozik a Python-projektek karbantartásának egyszerűsítése és a projektekben használt modulok biztonságának felügyelete. A modulokban lévő sebezhetőségek gyakran az ezeket használó alkalmazások sebezhetőségeinek forrásává válnak. Ha a függvények szerepelnek a szabványos könyvtárban, akkor elegendő a fő projekt állapotát figyelni. A szabványos könyvtár felosztása során a fejlesztőknek harmadik féltől származó modulokat kell használniuk, amelyek sérülékenységét külön-külön kell figyelni. A nagyfokú széttagoltság és a függőségek nagy száma miatt fennáll a támadások veszélye a modulfejlesztők infrastruktúrájának veszélyeztetése révén.

Másrészt a szabványos könyvtár minden további moduljának karbantartása erőforrásokat igényel a Python fejlesztőcsapatától. A könyvtár nagyszámú duplikáló és redundáns funkciót halmozott fel, amelyek kiiktatásával csökkenthetők a karbantartási költségek. Ahogy a katalógus fejlődik PyPI és leegyszerűsítve a további csomagok telepítésének és letöltésének folyamatát, a külső modulok használata mára ugyanolyan általánossá vált, mint a beépített funkciók.

Egyre több fejlesztő használ funkcionálisabb külső cseréket a szabványos modulokhoz, például az lxml modult használja az xml helyett. Az elhagyott modulok standard könyvtárból való eltávolítása növeli a közösség által aktívan fejlesztett alternatívák népszerűségét. Ezenkívül a szabványos könyvtár csökkentése az alapterjesztés méretének csökkenéséhez vezet, ami fontos, ha a Pythont korlátozott tárhelymérettel rendelkező beágyazott platformokon használja.

Forrás: opennet.ru

Hozzászólás