Python-standardin kirjaston suuri puhdistus on suunniteltu

Python-projektien kehittäjät julkaistu ehdotus (PEP 594) tehdä peruskirjaston perusteellinen siivous. Python-standardikirjastosta tarjotaan poistettavaksi sekä selvästi vanhentuneita että pitkälle erikoistuneita ominaisuuksia ja komponentteja, joissa on arkkitehtonisia ongelmia ja joita ei voida yhdistää kaikille alustoille.

Esimerkiksi ehdotetaan, että standardikirjastosta jätetään pois sellaiset moduulit kuin crypt (Windowsin epäsaatavuus ja riippuvuus hajautusalgoritmien saatavuudesta järjestelmäkirjastoista), cgi (ei optimaalinen arkkitehtuuri, vaatii uuden prosessin käynnistämisen jokaiselle pyynnölle), imp (suositeltavaa käyttää importlib), pipes (suositeltavaa käyttää aliprosessimoduulia), nis (on suositeltavaa käyttää NSS, LDAP tai Kerberos/GSSAPI), spwd (ei ole suositeltavaa työskennellä suoraan tilitietokannan kanssa). Myös moduulit binhex, uu, xdrlib on merkitty poistettaviksi.
aifc,
audioop,
kimpale
imghdr,
ossaudiodev,
sndhdr,
sunau
asynchat,
asyncore,
cgitb,
smtpd
nntplib, macpath,
formatteri, msilib ja jäsentäjä.

Ehdotettu suunnitelma on poistaa yllä olevat moduulit Python 3.8:sta, antaa varoituksen Python 3.8:ssa ja poistaa ne Python 3.10:n CPython-varastoista.
Jäseninmoduuli aiotaan poistaa versiossa 3.9, koska se oli vanhentunut Python 2.5 -julkaisussa, ja macpath-moduuli versiossa 3.8. Pääkoodista poistamisen jälkeen koodi siirretään erilliseen legacylib-arkistoon ja sen kohtalo riippuu yhteisön jäsenten kiinnostuksesta. Python 3.9 -haaraa odotetaan olevan tuettu vuoteen 2026 asti, jolloin projekteille on riittävästi aikaa siirtyä ulkoisiin vaihtoehtoihin.

Aluksi ehdotettiin poistettavaksi myös ftplib-, optparse-, getopt-, colorys-, fileinput-, lib2to3- ja wave-moduuleja, mutta ne päätettiin jättää toistaiseksi osaksi standardikirjastoa, koska ne ovat laajalle levinneitä ja pysyvät merkityksellisinä olemassaolostaan ​​huolimatta. kehittyneempiä vaihtoehtoja tai sidoksia käyttöjärjestelmien tiettyihin ominaisuuksiin.

Muista, että Python-projekti omaksui alun perin "paristot mukana" -lähestymistavan, joka tarjosi runsaan joukon toimintoja vakiokirjastossa erilaisille sovelluksille. Tämän lähestymistavan etuja ovat Python-projektien ylläpidon yksinkertaistaminen ja projekteissa käytettyjen moduulien turvallisuuden valvonta. Moduulien haavoittuvuuksista tulee usein niitä käyttävien sovellusten haavoittuvuuksien lähde. Jos toiminnot sisältyvät vakiokirjastoon, riittää pääprojektin tilan seuranta. Vakiokirjastoa jaettaessa kehittäjien on käytettävä kolmannen osapuolen moduuleja, joiden haavoittuvuuksia on tarkkailtava erikseen. Suuren pirstoutuneisuuden ja suuren riippuvuuksien määrän vuoksi on olemassa hyökkäysten uhka moduulien kehittäjien infrastruktuurin vaarantamisesta.

Toisaalta jokaisen vakiokirjaston lisämoduulin ylläpito vaatii Python-kehitystiimin resursseja. Kirjastoon on kertynyt suuri määrä päällekkäisiä ja redundantteja toimintoja, joiden poistaminen voi vähentää ylläpitokustannuksia. Katalogin kehittyessä PyPI ja yksinkertaistamalla lisäpakettien asennusta ja lataamista, ulkoisten moduulien käyttö on nyt tullut yhtä yleiseksi kuin sisäänrakennetut toiminnot.

Yhä useammat kehittäjät käyttävät toiminnallisempia ulkoisia korvauksia vakiomoduuleille, esimerkiksi käyttämällä lxml-moduulia xml:n sijaan. Hylättyjen moduulien poistaminen vakiokirjastosta lisää yhteisön aktiivisesti kehittämien vaihtoehtojen suosiota. Lisäksi vakiokirjaston pienentäminen johtaa perusjakelun koon pienenemiseen, mikä on tärkeää käytettäessä Pythonia sulautetuilla alustoilla, joilla on rajoitettu tallennustila.

Lähde: opennet.ru

Lisää kommentti