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

Vývojáři projektu Python publikovali navrhli (PEP 594) významné čištění standardní knihovny. Z standardní knihovny Python se navrhují vyřadit jak jasně zastaralé a specializované funkce, tak komponenty, které mají architektonické problémy a které se nedaří unifikovat pro všechny platformy.

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

V souladu s navrhovaným plánem se v Python 3.8 plánuje, že výše uvedené moduly budou označeny jako zastaralé, v Python 3.8 začnou generovat varování a v Python 3.10 budou odstraněny z repo CPython.
Modul parser se plánuje odstranit ve verzi 3.9, jelikož byl označen za zastaralý již v vydání Python 2.5, a modul macpath ve větvi 3.8. Po odstranění z hlavního souboru bude kód přesunut do samostatného repozitáře legacylib a jeho osud bude záviset na zájmu zástupců komunity. Očekává se, že větev Python 3.9 bude podporována do roku 2026, což poskytne dostatek času na migraci projektů na externí alternativy.

Zpočátku byly k odstranění navrženy také moduly ftplib, optparse, getopt, colorsys, fileinput, lib2to3 a wave, ale rozhodlo se je prozatím ponechat ve standardní knihovně, neboť jsou široce rozšířené a zůstávají aktuální, přestože existují dokonalejší alternativy nebo jsou vázány na specifické funkce operačních systémů.

Připomínáme, že projekt Python původně uplatňuje přístup „baterie zahrnuty“, přičemž ve standardní knihovně je nabízen rozsáhlý soubor funkcí pro různé oblasti použití. Mezi výhody tohoto přístupu patří zjednodušení údržby projektů v Pythonu a sledování bezpečnosti modulů používaných v těchto projektech. Zranitelnosti v modulech se často stávají zdrojem zranitelností v aplikacích, které je využívají. V případě, že funkce jsou součástí standardní knihovny, stačí sledovat stav hlavního projektu. Při rozdělení standardní knihovny musí vývojáři používat externí moduly, přičemž zranitelnosti v každém z nich je třeba sledovat zvlášť. 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 zdroje od týmu vývojářů Pythonu pro údržbu. V knihovně se nahromadilo velké množství duplicitních a nadbytečných funkcí, jejichž vyloučením lze snížit náklady na údržbu. Jak se vyvíjí katalog PyPI a zjednodušuje se proces instalace a načítání dodatečných balíčků, stalo se používání externích modulů běžně obvyklé, stejně jako využívání vestavěných funkcí.

Čím dál více vývojářů používá funkčnější externí alternativy ke standardním modulům, například preferují modul lxml místo xml. Odstranění opuštěných modulů ze standardní knihovny zvýší popularitu alternativ aktivně rozvíjených komunitou. Navíc zmenšení standardní knihovny povedě k 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

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster