Python projekta izstrādātāji īsinājums (PEP 594) par ievērojamu tīrīšanu standarta bibliotēkā. No Python standarta bibliotēkas tiek piedāvāti izņemt gan acīmredzami novecojušas un šauras specializācijas iespējas, gan komponentes, kurām ir arhitektūras problēmas un kuras nav iespējams standartizēt visām platformām.
Piemēram, no standarta bibliotēkas tiek piedāvāts izslēgt šādus moduļus kā crypt (nepieejams Windows un atkarīgs no heshēšanas algoritmu pieejamības no sistēmas bibliotēkām), cgi (neoptimāla arhitektūra, nepieciešams uzsākt jaunu procesu katram pieprasījumam), imp (ieteicams izmantot importlib), pipes (ieteicams izmantot subprocess moduli), nis (ieteicams izmantot NSS, LDAP vai Kerberos/GSSAPI), spwd (neiesaka tieši strādāt ar kontu datubāzi). Arī bez izņemšanas ir atzīmēti binhex, uu, xdrlib,
aifc,
audioop,
chunk,
imghdr,
ossaudiodev,
sndhdr,
sunau,
asynchat,
asyncore,
cgitb,
smtpd,
nntplib, macpath,
formatter, msilib un parser.
Saskaņā ar piedāvāto plānu Python 3.8 minētie moduļi tiks atzīmēti kā novecojuši, Python 3.8 sāks izsniegt brīdinājumus, bet Python 3.10 tiks izņemti no CPython krātuves.
Parser modulis tiks izņemts versijā 3.9, jo tas jau ir atzīmēts kā novecojis kopš Python 2.5 izdošanas, bet macpath modulis 3.8 versijā. Pēc izņemšanas no galvenā sastāva kods tiks pārvietots uz atsevišķu legacylib glabātuvi, un tā liktenis būs atkarīgs no kopienas intereša. Tiek gaidīts, ka Python 3.9 zarus atbalstīs līdz 2026. gadam, kas nodrošinās pietiekamu laiku projektu pārnešanai uz ārējām alternatīvām.
Sākotnēji izņemšanai tika piedāvāti arī moduļi ftplib, optparse, getopt, colorsys, fileinput, lib2to3 un wave, bet tika nolemts tos pagaidām atstāt standarta bibliotēkā, jo tie ir plaši izplatīti un joprojām ir aktuāli, neskatoties uz jaudīgāku alternatīvu vai saistību ar specifiskām operētājsistēmu iespējām.
Jāatgādina, ka sākotnēji Python projektā tiek izmantota pieeja "baterijas iekļautas komplektā", kurā standarta bibliotēkā tiek piedāvāts plašs funkcionalitātes klāsts dažādām jomām. Šādas pieejas priekšrocības ir projektu atbalsta vienkāršošana Python valodā un drošības uzraudzība, izmantojot projektos iekļautās moduli. Moduļu ievainojamības bieži kļūst par ievainojamību avotiem, kas atrodas to izmantojošās lietojumprogrammās. Ja funkcijas ir iekļautas standarta bibliotēkā, pietiek kontrolēt pamata projekta stāvokli. Kad standarta bibliotēka tiek sadalīta, izstrādātājiem ir jāizmanto trešo pušu moduļi, kuru ievainojamību ir jāuzrauga atsevišķi. Augstas sadalīšanās un lielo atkarību klātbūtnē rodas risks uzbrukumiem caur izstrādātāju moduļu infrastruktūras kompromitāciju.
No otras puses, katrs papildu modulis standarta bibliotēkā prasa resursus no Python izstrādātāju komandas, lai nodrošinātu atbalstu. Bibliotēkā ir uzkrājies liels skaits dublējošu un lieku funkciju, kuru izslēgšana varētu samazināt atbalsta izmaksas. Attīstoties katalogam un vienkāršojot papildu pakotņu instalācijas un lejupielādes procesu, ārējo moduļu izmantošana tagad ir tikpat ierasta kā iebūvētām funkcijām.
Aizvien vairāk izstrādātāju izvēlas funkcionālākas ārējās alternatīvas standarta moduļiem; piemēram, lxml modulis tiek izmantots vietā xml. Atmest pamestu moduļu no standarta bibliotēkas palīdzēs palielināt aktīvi attīstīto alternatīvu popularitāti. Turklāt standarta bibliotēkas samazināšana samazinās bāzes piegādes izmēru, kas ir aktuāli, izmantojot Python ierīcēs ar ierobežotu atmiņas izmēru.
Avots: opennet.lv
