Napovedana velika čiščenja standardne knjižnice Python

Razvijalci projekta Python sta objavili predlog (PEP 594) za izvedbo pomembnega čiščenja standardne knjižnice. Predlagano je odstraniti iz standardne knjižnice Python tako očitno zastarele in ozko specializirane funkcije kot tudi komponente, ki imajo arhitekturne težave in jih ni mogoče poenotiti za vse platforme.

Na primer, iz standardne knjižnice se predlaga odstranitev takih modulov, kot so crypt (nedostopnost za Windows in odvisnost od sistemskih knjižnic za dostopnost algoritmov za hashranje), cgi (neoptimalna arhitektura, zahteva zagon novega procesa za vsak zahtevek), imp (priporočeno je uporabljati importlib), pipes (priporočeno je uporabljati modul subprocess), nis (priporočeno je uporabljati NSS, LDAP ali Kerberos/GSSAPI), spwd (ni priporočljivo neposredno delati z bazo podatkov uporabniških računov). Za odstranitev so prav tako označeni moduli binhex, uu, xdrlib,
aifc,
audioop,
chunk,
imghdr,
ossaudiodev,
sndhdr,
sunau,
asynchat,
asyncore,
cgitb,
smtpd,
nntplib, macpath,
formatter, msilib in parser.

V skladu s predlaganim načrtom naj bi bila v Pythonu 3.8 zgoraj omenjena modula označena kot zastarela, v Pythonu 3.8 začeti izdajati opozorilo, v Pythonu 3.10 pa ju odstraniti iz repozitorijev CPython.
Modul parser naj bi bil odstranjen v različici 3.9, saj je bil označen kot zastarel že v izdaji Python 2.5, modul macpath pa v veji 3.8. Po odstranitvi iz osnovne zasedbe bo koda preseljena v ločen repozitorij legacylib, čigar usoda bo odvisna od zanimanja predstavnikov skupnosti. Očekuje se, da bo veja Python 3.9 podprta do leta 2026, kar bo omogočilo dovolj časa za prehod projektov na zunanje alternative.

Sprva so bili za odstranitev prav tako predlagani moduli ftplib, optparse, getopt, colorsys, fileinput, lib2to3 in wave, vendar so se odločili, da jih zaenkrat obdržijo v standardni knjižnici, saj so široko razširjeni in ostajajo aktualni, kljub temu da obstajajo bolj napredne alternative ali so vezani na specifične zmogljivosti operacijskih sistemov.

Pripomnimo, da projekt Python prvotno uporablja pristop „baterije so vključene“, pri katerem je v standardni knjižnici na voljo obsežen nabor funkcij za različna področja uporabe. Med prednostmi takega pristopa so poenostavitev vzdrževanja projektov Python in spremljanje varnosti uporabljenih modulov. Ranljivosti v modulih pogosto postanejo vir ranljivosti v aplikacijah, ki jih uporabljajo. Če funkcije vključujejo v standardno knjižnico, je dovolj, da nadziramo stanje glavnega projekta. Pri razdrobitvi standardne knjižnice morajo razvijalci uporabljati zunanje module, pri čemer je treba vsako ranljivost nadzorovati posebej. Pri visoki stopnji razdrobljenosti in številnih odvisnostih se pojavi grožnja napadom preko kompromitacije infrastrukture razvijalcev modulov.

Po drugi strani pa vsak dodaten modul v standardni knjižnici zahteva vire od ekipe razvijalcev Python za vzdrževanje. V knjižnici se je nabralo veliko število podvajajočih in odvečnih funkcij, katerih izločitev lahko zmanjša stroške vzdrževanja. S razvojem kataloga PyPI in poenostavitvijo postopka namestitve in nalaganja dodatnih paketov je uporaba zunanjih modulov danes prav tako običajna kot uporaba vgrajenih funkcij.

Čedalje več razvijalcev uporablja bolj funkcionalne zunanje nadomestke standardnim modulom, na primer, uporabljajo modul lxml namesto xml. Odstranitev zapuščenih modulov iz standardne knjižnice bo povečala priljubljenost aktivno razvijanih nadomestkov v skupnosti. Poleg tega bo zmanjšanje standardne knjižnice pripeljalo do zmanjšanja velikosti osnovne ponudbe, kar je pomembno pri uporabi Pythona na vgrajenih platformah z omejeno velikostjo shranjevanja.

Izvor: opennet.ru

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster