Plánuje se velké vyčištění standardní knihovny Pythonu

Vývojáři projektu Python publikováno návrh (PEP 594) provést zásadní vyčištění standardní knihovny. Jak zjevně zastaralé, tak vysoce specializované schopnosti a komponenty, které mají architektonické problémy a nelze je sjednotit pro všechny platformy, jsou nabízeny k odstranění ze standardní knihovny Pythonu.

Například se navrhuje vyloučit ze standardní knihovny moduly jako crypt (nedostupnost pro Windows a závislost dostupnosti hashovacích algoritmů na systémových knihovnách), cgi (není optimální architektura, vyžaduje spuštění nového procesu pro každý požadavek), imp (doporučeno použít importlib), pipes (doporučuje se použít modul subprocess), nis (doporučuje se použít NSS, LDAP nebo Kerberos/GSSAPI), spwd (nedoporučuje se pracovat přímo s databází účtů). Moduly binhex, uu, xdrlib jsou také označeny k odstranění.
aifc,
audioop,
kus
imghdr,
ossaudiodev,
sndhdr,
sunau
asynchat,
asyncore,
cgitb,
smtpd
nntplib, macpath,
formátovač, msilib a parser.

Navrhovaný plán je zavrhnout výše uvedené moduly v Pythonu 3.8, vydat varování v Pythonu 3.8 a odstranit je z úložišť CPythonu v Pythonu 3.10.
Modul analyzátoru je plánován na odstranění ve verzi 3.9, protože byl zastaralý ve verzi Python 2.5, a modul macpath ve větvi 3.8. Po odstranění z hlavního kódu se kód přesune do samostatného úložiště legacylib a jeho osud bude záviset na zájmu členů komunity. Očekává se, že větev Pythonu 3.9 bude podporována do roku 2026, což poskytne projektům dostatek času na migraci na externí alternativy.

Původně byly také navrženy k odstranění moduly ftplib, optparse, getopt, colorsys, fileinput, lib2to3 a wave, ale bylo rozhodnuto ponechat je zatím jako součást standardní knihovny, protože jsou rozšířené a zůstávají relevantní, navzdory přítomnosti pokročilejších alternativ nebo vazeb na konkrétní možnosti operačních systémů.

Připomeňme, že projekt Python zpočátku zvolil přístup „včetně baterií“, který nabízí bohatou sadu funkcí ve standardní knihovně pro různé aplikace. Mezi výhody tohoto přístupu patří zjednodušení údržby Python projektů a sledování bezpečnosti modulů používaných v projektech. Chyby v modulech se často stávají zdrojem zranitelností v aplikacích, které je používají. Pokud jsou funkce obsaženy ve standardní knihovně, stačí ovládat stav hlavního projektu. Při rozdělování standardní knihovny jsou vývojáři povinni používat moduly třetích stran, zranitelnosti v každém z nich je nutné sledovat samostatně. Při vysokém stupni fragmentace a velkém počtu závislostí hrozí útoky prostřednictvím kompromitace infrastruktury vývojářů modulů.

Na druhou stranu každý další modul ve standardní knihovně vyžaduje k údržbě zdroje od vývojového týmu Pythonu. Knihovna nashromáždila velké množství duplikujících a nadbytečných funkcí, jejichž odstraněním lze snížit náklady na údržbu. Jak se katalog vyvíjí PyPI a zjednodušením procesu instalace a stahování dalších balíčků se nyní používání externích modulů stalo stejně běžné jako vestavěné funkce.

Stále více vývojářů používá funkčnější externí náhrady za standardní moduly, například pomocí modulu lxml místo xml. Odstranění opuštěných modulů ze standardní knihovny zvýší popularitu alternativ aktivně vyvíjených komunitou. Zmenšení standardní knihovny navíc povede ke zmenšení velikosti základní distribuce, což je důležité při používání Pythonu na vestavěných platformách s omezenou velikostí úložiště.

Zdroj: opennet.ru

Přidat komentář