Plánuje sa veľké vyčistenie štandardnej knižnice Pythonu

Vývojári projektu Python uverejnené návrh (PEP 594) vykonať veľké vyčistenie štandardnej knižnice. Jasne zastarané a vysoko špecializované schopnosti a komponenty, ktoré majú architektonické problémy a nie je možné ich zjednotiť pre všetky platformy, sú ponúkané na odstránenie zo štandardnej knižnice Pythonu.

Napríklad sa navrhuje vylúčiť zo štandardnej knižnice moduly ako crypt (nedostupnosť pre Windows a závislosť dostupnosti hashovacích algoritmov na systémových knižniciach), cgi (nie optimálna architektúra, vyžaduje spustenie nového procesu pre každú požiadavku), 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 pracovať priamo s databázou účtov). Moduly binhex, uu, xdrlib sú tiež označené na odstránenie.
aifc,
audioop,
kusok
imghdr,
ossaudiodev,
sndhdr,
sunau
asynchat,
asyncore,
cgitb,
smtpd
nntplib, macpath,
formátovač, msilib a syntaktický analyzátor.

Navrhovaným plánom je zastarať vyššie uvedené moduly v Pythone 3.8, vydať varovanie v Pythone 3.8 a odstrániť ich z repozitárov CPythonu v Pythone 3.10.
Modul syntaktického analyzátora sa plánuje odstrániť vo verzii 3.9, pretože vo vydaní Python 2.5 bol zastaraný, a modul macpath vo vetve 3.8. Po odstránení z hlavného kódu sa kód presunie do samostatného legacylib repozitára a jeho osud bude závisieť od záujmu členov komunity. Očakáva sa, že pobočka Python 3.9 bude podporovaná do roku 2026, čo poskytne projektom dostatok času na migráciu na externé alternatívy.

Pôvodne boli na odstránenie navrhnuté aj moduly ftplib, optparse, getopt, colorsys, fileinput, lib2to3 a wave, ale rozhodlo sa ich ponechať ako súčasť štandardnej knižnice, pretože sú rozšírené a zostávajú relevantné napriek prítomnosti pokročilejších alternatív alebo väzieb na špecifické možnosti operačných systémov.

Pripomeňme, že projekt Python pôvodne zvolil prístup „vrátane batérií“, ktorý ponúka bohatú sadu funkcií v štandardnej knižnici pre rôzne aplikácie. Medzi výhody tohto prístupu patrí zjednodušenie údržby Python projektov a monitorovanie bezpečnosti modulov používaných v projektoch. Chyby v moduloch sa často stávajú zdrojom zraniteľností v aplikáciách, ktoré ich používajú. Ak sú funkcie zahrnuté v štandardnej knižnici, stačí sledovať stav hlavného projektu. Pri rozdelení štandardnej knižnice sú vývojári povinní používať moduly tretích strán, pričom zraniteľné miesta v každom z nich musia byť monitorované samostatne. Pri vysokej miere fragmentácie a veľkom množstve závislostí hrozia útoky kompromitovaním infraštruktúry vývojárov modulov.

Na druhej strane, každý ďalší modul v štandardnej knižnici vyžaduje na údržbu zdroje od vývojového tímu Pythonu. V knižnici sa nahromadilo veľké množstvo duplikujúcich sa a nadbytočných funkcií, ktorých odstránenie môže znížiť náklady na údržbu. Ako sa katalóg vyvíja PyPI a zjednodušenie procesu inštalácie a sťahovania dodatočných balíkov, používanie externých modulov je teraz také bežné ako vstavané funkcie.

Čoraz viac vývojárov používa funkčnejšie externé náhrady za štandardné moduly, napríklad pomocou modulu lxml namiesto xml. Odstránenie opustených modulov zo štandardnej knižnice zvýši popularitu alternatív aktívne vyvinutých komunitou. Zníženie štandardnej knižnice navyše povedie k zmenšeniu veľkosti základnej distribúcie, čo je dôležité pri používaní Pythonu na vstavaných platformách s obmedzenou veľkosťou úložiska.

Zdroj: opennet.ru

Pridať komentár