En større oprydning af Python-standardbiblioteket er planlagt

Python projektudviklere offentliggjort forslag (PEP 594) om at foretage en større oprydning af standardbiblioteket. Både klart forældede og højt specialiserede funktioner og komponenter, der har arkitektoniske problemer og ikke kan forenes for alle platforme, tilbydes til fjernelse fra Python-standardbiblioteket.

For eksempel foreslås det at udelukke sådanne moduler fra standardbiblioteket som krypt (utilgængelighed for Windows og afhængighed af tilgængeligheden af ​​hashingalgoritmer på systembiblioteker), cgi (ikke optimal arkitektur, kræver lancering af en ny proces for hver anmodning), imp. (anbefales at bruge importlib), pipes (det anbefales at bruge underprocesmodulet), nis (det anbefales at bruge NSS, LDAP eller Kerberos/GSSAPI), spwd (det anbefales ikke at arbejde direkte med kontodatabasen). Modulerne binhex, uu, xdrlib er også markeret til fjernelse.
aifc,
lydoptagelse,
luns
imghdr,
ossaudiodev,
sndhdr,
sunau
asynchat,
asyncore,
cgitb,
smtpd
nntplib, macpath,
formatter, msilib og parser.

Den foreslåede plan er at udfase ovenstående moduler i Python 3.8, udstede en advarsel i Python 3.8 og fjerne dem fra CPython-lagrene i Python 3.10.
Parser-modulet er planlagt til at blive fjernet i version 3.9, da det blev forældet i Python 2.5-udgivelsen, og macpath-modulet i 3.8-grenen. Efter at være blevet fjernet fra hovedkoden, vil koden blive flyttet til et separat legacylib-lager, og dens skæbne vil afhænge af fællesskabsmedlemmernes interesser. Python 3.9-grenen forventes at blive understøttet indtil 2026, hvilket vil give rigelig tid til, at projekter kan migrere til eksterne alternativer.

Oprindeligt blev modulerne ftplib, optparse, getopt, colorsys, fileinput, lib2to3 og wave også foreslået til fjernelse, men det blev besluttet at lade dem være en del af standardbiblioteket indtil videre, da de er udbredte og forbliver relevante på trods af tilstedeværelsen af mere avancerede alternativer eller bindinger til specifikke funktioner i operativsystemer.

Husk på, at Python-projektet oprindeligt tog en "batterier inkluderet" tilgang, der tilbyder et rigt sæt funktioner i standardbiblioteket til en række forskellige applikationer. Blandt fordelene ved denne tilgang er forenklingen af ​​at vedligeholde Python-projekter og overvåge sikkerheden af ​​moduler, der bruges i projekter. Sårbarheder i moduler bliver ofte en kilde til sårbarheder i applikationer, der bruger dem. Hvis funktionerne er inkluderet i standardbiblioteket, er det nok at overvåge hovedprojektets tilstand. Ved opdeling af standardbiblioteket er udviklere forpligtet til at bruge tredjepartsmoduler, hvor sårbarhederne i hver af dem skal overvåges separat. Med en høj grad af fragmentering og et stort antal afhængigheder er der en trussel om angreb gennem kompromittering af moduludvikleres infrastruktur.

På den anden side kræver hvert ekstra modul i standardbiblioteket ressourcer fra Python-udviklingsteamet for at vedligeholde. Biblioteket har akkumuleret et stort antal duplikerings- og redundante funktioner, hvilket eliminerer, hvilket kan reducere vedligeholdelsesomkostningerne. Efterhånden som kataloget udvikler sig PyPI og for at forenkle processen med at installere og downloade yderligere pakker, er brugen af ​​eksterne moduler nu blevet lige så almindelig som indbyggede funktioner.

Flere og flere udviklere bruger mere funktionelle eksterne erstatninger for standardmoduler, for eksempel ved at bruge lxml-modulet i stedet for xml. Fjernelse af forladte moduler fra standardbiblioteket vil øge populariteten af ​​alternativer aktivt udviklet af fællesskabet. Derudover vil reduktion af standardbiblioteket føre til en reduktion i størrelsen af ​​basisdistributionen, hvilket er vigtigt, når du bruger Python på indlejrede platforme med begrænset lagerstørrelse.

Kilde: opennet.ru

Tilføj en kommentar