En större sanering av Python-standardbiblioteket är planerad

Python projektutvecklare publicerat förslag (PEP 594) att göra en större sanering av standardbiblioteket. Både klart föråldrade och mycket specialiserade funktioner och komponenter som har arkitektoniska problem och inte kan förenas för alla plattformar erbjuds för borttagning från Python-standardbiblioteket.

Till exempel föreslås det att från standardbiblioteket utesluta sådana moduler som krypt (otillgänglighet för Windows och beroende av tillgängligheten av hashalgoritmer på systembibliotek), cgi (inte optimal arkitektur, kräver att en ny process startas för varje begäran), imp. (rekommenderas att använda importlib), pipes (det rekommenderas att använda delprocessmodulen), nis (det rekommenderas att använda NSS, LDAP eller Kerberos/GSSAPI), spwd (det rekommenderas inte att arbeta direkt med kontodatabasen). Modulerna binhex, uu, xdrlib, är också markerade för borttagning.
aifc,
audioop,
bit
imghdr,
ossaudiodev,
sndhdr,
sunau
asynkront,
asyncore,
cgitb,
smtpd
nntplib, macpath,
formatter, msilib och parser.

Den föreslagna planen är att fasa ut ovanstående moduler i Python 3.8, utfärda en varning i Python 3.8 och ta bort dem från CPython-förråden i Python 3.10.
Parsermodulen är planerad att tas bort i version 3.9, eftersom den föråldrades i Python 2.5-versionen, och macpath-modulen i 3.8-grenen. Efter att ha tagits bort från huvudkoden kommer koden att flyttas till ett separat legacylib-förråd och dess öde kommer att bero på communitymedlemmarnas intresse. Python 3.9-grenen förväntas stödjas fram till 2026, vilket kommer att ge gott om tid för projekt att migrera till externa alternativ.

Inledningsvis föreslogs också modulerna ftplib, optparse, getopt, colorsys, fileinput, lib2to3 och wave för borttagning, men det beslutades att lämna dem som en del av standardbiblioteket för nu, eftersom de är utbredda och förblir relevanta, trots närvaron av mer avancerade alternativ eller bindningar till specifika funktioner hos operativsystem.

Kom ihåg att Python-projektet till en början använde ett tillvägagångssätt med "batterier inkluderade", som erbjuder en rik uppsättning funktioner i standardbiblioteket för en mängd olika applikationer. Bland fördelarna med detta tillvägagångssätt är förenklingen av att underhålla Python-projekt och övervaka säkerheten för moduler som används i projekt. Sårbarheter i moduler blir ofta en källa till sårbarheter i applikationer som använder dem. Om funktionerna ingår i standardbiblioteket räcker det att kontrollera huvudprojektets tillstånd. När man delar upp standardbiblioteket måste utvecklare använda tredjepartsmoduler, vars sårbarheter måste övervakas separat. Med en hög grad av fragmentering och ett stort antal beroenden finns det ett hot om attacker genom att äventyra modulutvecklarnas infrastruktur.

Å andra sidan kräver varje ytterligare modul i standardbiblioteket resurser från Python-utvecklingsteamet för att underhålla. Biblioteket har samlat på sig ett stort antal duplicerings- och redundanta funktioner, vilket eliminerar vilket kan minska underhållskostnaderna. Allt eftersom katalogen utvecklas PyPI och för att förenkla processen att installera och ladda ner ytterligare paket, har användningen av externa moduler nu blivit lika vanlig som inbyggda funktioner.

Fler och fler utvecklare använder mer funktionella externa ersättningar för standardmoduler, till exempel genom att använda lxml-modulen istället för xml. Att ta bort övergivna moduler från standardbiblioteket kommer att öka populariteten för alternativ som aktivt utvecklas av samhället. Dessutom kommer en minskning av standardbiblioteket att leda till en minskning av storleken på basdistributionen, vilket är viktigt när man använder Python på inbäddade plattformar med begränsad lagringsstorlek.

Källa: opennet.ru

Lägg en kommentar