Plānota Python standarta bibliotēkas liela tīrīšana

Python projektu izstrādātāji publicēta priekšlikums (PEP 594) veikt standarta bibliotēkas lielo sakopšanu. No Python standarta bibliotēkas tiek piedāvātas gan skaidri novecojušas, gan ļoti specializētas iespējas un komponenti, kuriem ir arhitektūras problēmas un kurus nevar unificēt visām platformām.

Piemēram, no standarta bibliotēkas tiek piedāvāts izslēgt tādus moduļus kā crypt (nepieejamība operētājsistēmai Windows un jaukšanas algoritmu pieejamības atkarība no sistēmas bibliotēkām), cgi (nav optimāla arhitektūra, katram pieprasījumam nepieciešams palaist jaunu procesu), imp (ieteicams izmantot importlib), pipes (ieteicams izmantot apakšprocesa moduli), nis (ieteicams izmantot NSS, LDAP vai Kerberos/GSSAPI), spwd (nav ieteicams strādāt tieši ar kontu datu bāzi). Moduļi binhex, uu, xdrlib arī ir atzīmēti noņemšanai.
aifc,
audioop,
gabals
imghdr,
ossaudiodevs,
sndhdr,
sunau
asinhrona,
asinhronais,
cgitb,
smtpd
nntplib, macpath,
formatētājs, msilib un parsētājs.

Ierosinātais plāns ir pārtraukt iepriekš minēto moduļu darbību Python 3.8 versijā, brīdināt Python 3.8 un noņemt tos no CPython krātuvēm Python 3.10.
Versijā 3.9 plānots noņemt parsētāja moduli, jo tas tika novecojis Python 2.5 laidienā, un macpath moduli 3.8 filiālē. Pēc noņemšanas no galvenā koda kods tiks pārvietots uz atsevišķu legacylib repozitoriju, un tā liktenis būs atkarīgs no kopienas dalībnieku interesēm. Paredzams, ka Python 3.9 filiāle tiks atbalstīta līdz 2026. gadam, kas nodrošinās pietiekami daudz laika, lai projekti varētu migrēt uz ārējām alternatīvām.

Sākotnēji tika ierosināti noņemt arī moduļus ftplib, optparse, getopt, colorys, fileinput, lib2to3 un wave, taču tika nolemts tos pagaidām atstāt kā daļu no standarta bibliotēkas, jo tie ir plaši izplatīti un joprojām ir aktuāli, neskatoties uz to klātbūtni. uzlabotas alternatīvas vai piesaistes konkrētām operētājsistēmu iespējām.

Atgādiniet, ka Python projekts sākotnēji izmantoja pieeju “iekļauts akumulators”, piedāvājot bagātīgu funkciju kopumu standarta bibliotēkā dažādām lietojumprogrammām. Starp šīs pieejas priekšrocībām ir Python projektu uzturēšanas vienkāršošana un projektos izmantoto moduļu drošības uzraudzība. Moduļu ievainojamības bieži kļūst par ievainojamību avotu lietojumprogrammās, kas tos izmanto. Ja funkcijas ir iekļautas standarta bibliotēkā, pietiek ar galvenā projekta stāvokļa uzraudzību. Sadalot standarta bibliotēku, izstrādātājiem ir jāizmanto trešo pušu moduļi, kuru katra ievainojamība ir jāuzrauga atsevišķi. Ar augstu sadrumstalotības pakāpi un lielu atkarību skaitu pastāv uzbrukumu draudi, apdraudot moduļu izstrādātāju infrastruktūru.

No otras puses, katra papildu moduļa uzturēšanai standarta bibliotēkā ir nepieciešami resursi no Python izstrādes komandas. Bibliotēkā ir uzkrāts liels skaits dublējošu un lieku funkciju, kuru likvidēšana var samazināt uzturēšanas izmaksas. Katalogam attīstoties PyPI un vienkāršojot papildu pakotņu instalēšanas un lejupielādes procesu, ārējo moduļu izmantošana tagad ir kļuvusi tikpat izplatīta kā iebūvētās funkcijas.

Arvien vairāk izstrādātāju standarta moduļiem izmanto funkcionālākus ārējos aizstājējus, piemēram, izmantojot lxml moduli, nevis xml. Pamesto moduļu noņemšana no standarta bibliotēkas palielinās sabiedrības aktīvi izstrādāto alternatīvu popularitāti. Turklāt, samazinot standarta bibliotēku, tiks samazināts bāzes izplatīšanas apjoms, kas ir svarīgi, izmantojot Python iegultās platformās ar ierobežotu krātuves lielumu.

Avots: opennet.ru

Pievieno komentāru