Načrtovano je veliko čiščenje standardne knjižnice Python

Razvijalci projektov Python objavljeno predlog (PEP 594) za temeljito čiščenje standardne knjižnice. Očitno zastarele in visoko specializirane zmogljivosti in komponente, ki imajo arhitekturne težave in jih ni mogoče poenotiti za vse platforme, so na voljo za odstranitev iz standardne knjižnice Python.

Na primer, predlaga se, da se iz standardne knjižnice izključijo moduli, kot so crypt (nerazpoložljivost za Windows in odvisnost razpoložljivosti algoritmov zgoščevanja od sistemskih knjižnic), cgi (ni optimalna arhitektura, zahteva zagon novega procesa za vsako zahtevo), imp (priporočamo uporabo importlib), cevi (priporočamo uporabo modula subprocess), nis (priporočamo uporabo NSS, LDAP ali Kerberos/GSSAPI), spwd (ni priporočljivo delati neposredno z bazo podatkov o računih). Za odstranitev so označeni tudi moduli binhex, uu, xdrlib.
aifc,
audioop,
kos
imghdr,
ossaudiodev,
sndhdr,
sunau
asynchat,
asyncore,
cgitb,
smtpd
nntplib, macpath,
formatter, msilib in razčlenjevalnik.

Predlagani načrt je opustiti zgornje module v Pythonu 3.8, izdati opozorilo v Pythonu 3.8 in jih odstraniti iz repozitorijev CPython v Pythonu 3.10.
Modul razčlenjevalnika naj bi bil odstranjen v različici 3.9, ker je bil opuščen v izdaji Python 2.5, in modul macpath v veji 3.8. Po odstranitvi iz glavne kode bo koda premaknjena v ločeno skladišče legacylib, njena usoda pa bo odvisna od interesa članov skupnosti. Pričakuje se, da bo veja Python 3.9 podprta do leta 2026, kar bo zagotovilo dovolj časa za prehod projektov na zunanje alternative.

Sprva so bili za odstranitev predlagani tudi moduli ftplib, optparse, getopt, colorys, fileinput, lib2to3 in wave, vendar je bilo odločeno, da jih za zdaj pustimo kot del standardne knjižnice, saj so razširjeni in ostajajo pomembni, kljub prisotnosti naprednejših alternativ ali vezav na specifične zmogljivosti operacijskih sistemov.

Spomnimo se, da je projekt Python prvotno uporabil pristop "vključene baterije", ki je ponujal bogat nabor funkcij v standardni knjižnici za različne aplikacije. Med prednostmi tega pristopa je poenostavitev vzdrževanja projektov Python in spremljanje varnosti modulov, ki se uporabljajo v projektih. Ranljivosti v modulih pogosto postanejo vir ranljivosti v aplikacijah, ki jih uporabljajo. Če so funkcije vključene v standardno knjižnico, je dovolj, da spremljate stanje glavnega projekta. Pri razdelitvi standardne knjižnice morajo razvijalci uporabljati module tretjih oseb, pri čemer je treba ranljivosti v vsakem nadzorovati ločeno. Z visoko stopnjo razdrobljenosti in velikim številom odvisnosti obstaja nevarnost napadov z ogrožanjem infrastrukture razvijalcev modulov.

Po drugi strani pa vsak dodatni modul v standardni knjižnici za vzdrževanje potrebuje vire razvojne skupine Python. V knjižnici se je nabralo veliko število podvojenih in odvečnih funkcij, katerih odprava lahko zmanjša stroške vzdrževanja. Ko se katalog razvija PyPI in poenostavitev postopka namestitve in prenosa dodatnih paketov je uporaba zunanjih modulov postala tako pogosta kot vgrajene funkcije.

Vse več razvijalcev uporablja bolj funkcionalne zunanje nadomestke za standardne module, na primer z uporabo modula lxml namesto xml. Odstranjevanje opuščenih modulov iz standardne knjižnice bo povečalo priljubljenost alternativ, ki jih aktivno razvija skupnost. Poleg tega bo zmanjšanje standardne knjižnice povzročilo zmanjšanje velikosti osnovne distribucije, kar je pomembno pri uporabi Pythona na vdelanih platformah z omejeno velikostjo pomnilnika.

Vir: opennet.ru

Dodaj komentar