Vývojári projektu Python navrhujú (PEP 594) výrazné vyčistenie štandardnej knižnice. Na vylúčenie zo štandardnej knižnice Python sú navrhnuté ako očividne zastarané a úzko špecializované funkcie, tak aj komponenty, ktoré majú architektonické problémy a ktoré nie je možné zjednotiť pre všetky platformy.
Napríklad, zo štandardnej knižnice sa navrhuje vylúčiť také moduly ako crypt (neprístupnosť pre Windows a závislosť dostupnosti hashovacích algoritmov od systémových knižníc), cgi (neoptimálna architektúra, vyžaduje spustenie nového procesu na každý požiadavok), imp (odporúča sa použiť importlib), pipes (odporúča sa použiť modul subprocess), nis (odporúča sa použiť NSS, LDAP alebo Kerberos/GSSAPI), spwd (neodporúča sa priamo pracovať s databázou účtov). Na odstránenie sú tiež označené moduly binhex, uu, xdrlib,
aifc,
audioop,
chunk,
imghdr,
ossaudiodev,
sndhdr,
sunau,
asynchat,
asyncore,
cgitb,
smtpd,
nntplib, macpath,
formatter, msilib a parser.
V súlade s navrhovaným plánom v Python 3.8 sa plánuje označiť vyššie uvedené moduly ako zastarané, v Python 3.8 začať zobrazovať varovania a v Python 3.10 ich odstrániť z repozitárov CPython.
Modul parser sa plánuje odstrániť vo verzii 3.9, pretože bol označený ako zastaraný už vo verzii Python 2.5 a modul macpath vo vetve 3.8. Po odstránení z hlavného súboru bude kód presunutý do samostatného repozitára legacylib a jeho osud bude závisieť od záujmu zástupcov komunity. Očakáva sa, že vetva Python 3.9 bude podporovaná do roku 2026, čo poskytne dostatok času na prevod projektov na externé alternatívy.
Pôvodne sa navrhovali na odstránenie aj moduly ftplib, optparse, getopt, colorsys, fileinput, lib2to3 a wave, ale rozhodli sa ich zatiaľ ponechať v štandardnej knižnici, pretože sú široko rozšírené a zostávajú aktuálne, napriek existencii sofistikovanejších alternatív alebo viazania na špecifické funkcie operačných systémov.
Pripomeňme, že projekt Python pôvodne používa prístup "baterky sú súčasťou balenia", pri ktorom je v štandardnej knižnici ponúkaný rozsiahly súbor funkcií pre rôzne oblasti použitia. Medzi výhody tohto prístupu patrí zjednodušenie údržby projektov v Pythone a sledovanie bezpečnosti použitých modulov v projektoch. Zraniteľnosti v moduloch sa často stávajú zdrojom zraniteľností v aplikáciách, ktoré ich používajú. V prípade, že funkcie sú súčasťou štandardnej knižnice, stačí kontrolovať stav hlavného projektu. Pri rozdelení štandardnej knižnice musia vývojári používať externé moduly, zraniteľnosti v každom z nich je nutné kontrolovať samostatne. Pri vysokej miere fragmentácie a veľkom počte závislostí vzniká hrozba útokov cez kompromitáciu infraštruktúry vývojárov modulov.
Na druhej strane, každý ďalší modul v štandardnej knižnici vyžaduje zdroje od tímu vývojárov Python pre jeho údržbu. Knižnica zhromaždila veľké množstvo duplicitných a nadbytočných funkcií, ktorých vylúčením je možné znížiť náklady na údržbu. S rozvojom katalógu a zjednodušením procesu inštalácie a sťahovania ďalších balíkov, sa používanie externých modulov stalo rovnako bežným ako integrované funkcie.
Stále viac vývojárov používa funkčnejšie externé náhrady štandardným modulom, napríklad používajú modul lxml namiesto xml. Odstránenie opustených modulov zo štandardnej knižnice umožní zvýšiť popularitu aktívne vyvíjaných komunít alternatív. Okrem toho zníženie štandardnej knižnice povedie k zmenšeniu veľkosti základnej dodávky, čo je aktuálne pri používaní Pythonu na vstavaných platformách s obmedzeným úložiskom.
Zdroj: opennet.ru
