Planuojamas didelis Python standartinės bibliotekos valymas

Python projektų kūrėjai paskelbtas pasiūlymas (PEP 594) atlikti kapitalinį standartinės bibliotekos sutvarkymą. Tiek aiškiai pasenusios, tiek labai specializuotos galimybės ir komponentai, kurie turi architektūrinių problemų ir negali būti suvienodinti visoms platformoms, siūlomi pašalinti iš Python standartinės bibliotekos.

Pavyzdžiui, iš standartinės bibliotekos siūloma išskirti tokius modulius kaip crypt (nepasiekiamumas Windows ir maišos algoritmų prieinamumo priklausomybė nuo sistemos bibliotekų), cgi (neoptimali architektūra, kiekvienai užklausai reikia paleisti naują procesą), imp. (rekomenduojama naudoti importlib), pipes (rekomenduojama naudoti subprocesų modulį), nis (rekomenduojama naudoti NSS, LDAP arba Kerberos/GSSAPI), spwd (nerekomenduojama tiesiogiai dirbti su paskyros duomenų baze). Moduliai binhex, uu, xdrlib taip pat pažymėti pašalinimui.
aifc,
audioop,
gabalas
imghdr,
ossaudiodevas,
sndhdr,
sunau
asinchatas,
asyncore,
cgitb,
smtpd
nntplib, macpath,
formatuotojas, msilib ir analizatorius.

Siūlomas planas yra panaikinti aukščiau nurodytus modulius Python 3.8 versijoje, pateikti įspėjimą Python 3.8 versijoje ir pašalinti juos iš CPython saugyklų Python 3.10 versijoje.
Planuojama pašalinti analizavimo modulį 3.9 versijoje, nes jis buvo nebenaudojamas Python 2.5 versijoje, o macpath modulis – 3.8 šakoje. Pašalinus iš pagrindinio kodo, kodas bus perkeltas į atskirą legacylib saugyklą ir jo likimas priklausys nuo bendruomenės narių interesų. Tikimasi, kad Python 3.9 atšaka bus palaikoma iki 2026 m., o tai suteiks pakankamai laiko projektams pereiti prie išorinių alternatyvų.

Iš pradžių taip pat buvo pasiūlyta pašalinti ftplib, optparse, getopt, colorys, fileinput, lib2to3 ir wave modulius, tačiau buvo nuspręsta kol kas juos palikti kaip standartinės bibliotekos dalį, nes jie yra plačiai paplitę ir išlieka aktualūs, nepaisant jų buvimo. pažangesnių alternatyvų ar susiejimo su konkrečiomis operacinių sistemų galimybėmis.

Prisiminkite, kad „Python“ projektas iš pradžių laikėsi „baterijų įtraukimo“ metodo, siūlydamas gausų funkcijų rinkinį standartinėje bibliotekoje įvairioms programoms. Tarp šio metodo privalumų galima paminėti Python projektų priežiūros supaprastinimą ir projektuose naudojamų modulių saugumo stebėjimą. Modulių pažeidžiamumas dažnai tampa juos naudojančių programų pažeidžiamumų šaltiniu. Jei funkcijos yra įtrauktos į standartinę biblioteką, pakanka valdyti pagrindinio projekto būseną. Išskaidydami standartinę biblioteką, kūrėjai privalo naudoti trečiųjų šalių modulius, kurių kiekvieno pažeidžiamumas turi būti stebimas atskirai. Esant dideliam susiskaidymo laipsniui ir daugybei priklausomybių, kyla atakų grėsmė pažeidžiant modulių kūrėjų infrastruktūrą.

Kita vertus, kiekvienam papildomam moduliui standartinėje bibliotekoje prižiūrėti reikia išteklių iš Python kūrimo komandos. Bibliotekoje sukaupta daug besikartojančių ir perteklinių funkcijų, kurių pašalinimas gali sumažinti priežiūros išlaidas. Kai katalogas vystosi PyPI ir supaprastinus papildomų paketų diegimo ir atsisiuntimo procesą, išorinių modulių naudojimas tapo toks pat įprastas kaip ir įmontuotos funkcijos.

Vis daugiau kūrėjų naudoja funkcionalesnius išorinius standartinių modulių pakaitalus, pavyzdžiui, naudoja lxml modulį, o ne xml. Pašalinus apleistus modulius iš standartinės bibliotekos, išaugs bendruomenės aktyviai kuriamų alternatyvų populiarumas. Be to, sumažinus standartinę biblioteką, sumažės bazinio paskirstymo dydis, o tai svarbu naudojant Python įterptosiose platformose, kurių saugykla yra ribota.

Šaltinis: opennet.ru

Добавить комментарий