En større opprydding av Python-standardbiblioteket er planlagt

Python prosjektutviklere publisert forslag (PEP 594) om å gjøre en større opprydding av standardbiblioteket. Både klart utdaterte og høyt spesialiserte funksjoner og komponenter som har arkitektoniske problemer og ikke kan forenes for alle plattformer, tilbys for fjerning fra Python-standardbiblioteket.

For eksempel foreslås det å ekskludere fra standardbiblioteket slike moduler som krypt (utilgjengelighet for Windows og avhengighet av tilgjengeligheten av hashingalgoritmer på systembiblioteker), cgi (ikke optimal arkitektur, krever lansering av en ny prosess for hver forespørsel), imp. (anbefales å bruke importlib), pipes (det anbefales å bruke delprosessmodulen), nis (det anbefales å bruke NSS, LDAP eller Kerberos/GSSAPI), spwd (det anbefales ikke å jobbe direkte med kontodatabasen). Modulene binhex, uu, xdrlib, er også merket for fjerning.
aifc,
audioop,
klump
imghdr,
ossaudiodev,
sndhdr,
sunau
asynchat,
asyncore,
cgitb,
smtpd
nntplib, macpath,
formatter, msilib og parser.

Den foreslåtte planen er å avvikle modulene ovenfor i Python 3.8, utstede en advarsel i Python 3.8 og fjerne dem fra CPython-repositoriene i Python 3.10.
Parsermodulen er planlagt fjernet i versjon 3.9, ettersom den ble avviklet i Python 2.5-utgivelsen, og macpath-modulen i 3.8-grenen. Etter å ha blitt fjernet fra hovedkoden, vil koden bli flyttet til et eget legacylib-depot, og dens skjebne vil avhenge av interessen til fellesskapsmedlemmer. Python 3.9-grenen forventes å bli støttet frem til 2026, noe som vil gi god tid for prosjekter å migrere til eksterne alternativer.

Opprinnelig ble modulene ftplib, optparse, getopt, colorsys, fileinput, lib2to3 og wave også foreslått for fjerning, men det ble besluttet å la dem være en del av standardbiblioteket for nå, siden de er utbredt og forblir relevante, til tross for tilstedeværelsen av mer avanserte alternativer eller bindinger til spesifikke funksjoner til operativsystemer.

Husk at Python-prosjektet opprinnelig tok en "batterier inkludert" tilnærming, og tilbyr et rikt sett med funksjoner i standardbiblioteket for en rekke applikasjoner. Blant fordelene med denne tilnærmingen er forenklingen av vedlikehold av Python-prosjekter og overvåking av sikkerheten til moduler som brukes i prosjekter. Sårbarheter i moduler blir ofte en kilde til sårbarheter i applikasjoner som bruker dem. Hvis funksjonene er inkludert i standardbiblioteket, er det nok å kontrollere tilstanden til hovedprosjektet. Når du deler standardbiblioteket, må utviklere bruke tredjepartsmoduler, hvor sårbarhetene i hver av dem må overvåkes separat. Med høy grad av fragmentering og et stort antall avhengigheter er det en trussel om angrep gjennom å kompromittere infrastrukturen til modulutviklere.

På den annen side krever hver tilleggsmodul i standardbiblioteket ressurser fra Python-utviklingsteamet for å vedlikeholde. Biblioteket har akkumulert et stort antall dupliserings- og redundante funksjoner, som eliminerer noe som kan redusere vedlikeholdskostnadene. Etter hvert som katalogen utvikler seg PyPI og for å forenkle prosessen med å installere og laste ned tilleggspakker, har bruken av eksterne moduler nå blitt like vanlig som innebygde funksjoner.

Flere og flere utviklere bruker mer funksjonelle eksterne erstatninger for standardmoduler, for eksempel ved å bruke lxml-modulen i stedet for xml. Fjerning av forlatte moduler fra standardbiblioteket vil øke populariteten til alternativer som er aktivt utviklet av fellesskapet. I tillegg vil reduksjon av standardbiblioteket føre til en reduksjon i størrelsen på basisdistribusjonen, noe som er viktig når du bruker Python på innebygde plattformer med begrenset lagringsstørrelse.

Kilde: opennet.ru

Legg til en kommentar