Planirano je veliko čišćenje Python standardne biblioteke

Programeri Python projekata objavljen prijedlog (PEP 594) da se izvrši veliko čišćenje standardne knjižnice. I jasno zastarjele i visoko specijalizirane mogućnosti i komponente koje imaju arhitektonske probleme i ne mogu se unificirati za sve platforme nude se za uklanjanje iz Python standardne knjižnice.

Na primjer, predlaže se iz standardne knjižnice isključiti takve module kao što su crypt (nedostupnost za Windows i ovisnost o dostupnosti algoritama raspršivanja o knjižnicama sustava), cgi (nije optimalna arhitektura, zahtijeva pokretanje novog procesa za svaki zahtjev), imp (preporučuje se korištenje importliba), cijevi (preporučuje se korištenje modula podprocesa), nis (preporučuje se korištenje NSS, LDAP ili Kerberos/GSSAPI), spwd (ne preporučuje se izravan rad s bazom podataka računa). Moduli binhex, uu, xdrlib, također su označeni za uklanjanje.
aifc,
audioop,
komad
imghdr,
ossaudiodev,
sndhdr,
sunau
asynchat,
asincore,
cgitb,
smtpd
nntplib, macpath,
formatter, msilib i parser.

Predloženi plan je obustaviti gore navedene module u Python 3.8, izdati upozorenje u Python 3.8 i ukloniti ih iz CPython repozitorija u Python 3.10.
Modul parsera planira se ukloniti u verziji 3.9, budući da je zastario u izdanju Python 2.5, a modul macpath u grani 3.8. Nakon uklanjanja iz glavnog koda, kod će biti premješten u zasebno legacylib repozitorij, a njegova sudbina ovisit će o interesu članova zajednice. Očekuje se da će grana Python 3.9 biti podržana do 2026. godine, što će omogućiti dovoljno vremena za migriranje projekata na vanjske alternative.

U početku su moduli ftplib, optparse, getopt, colorys, fileinput, lib2to3 i wave također predloženi za uklanjanje, ali je odlučeno da se za sada ostave kao dio standardne biblioteke, jer su široko rasprostranjeni i ostaju relevantni, unatoč prisutnosti naprednijih alternativa ili vezanja na specifične mogućnosti operativnih sustava.

Podsjetimo se da je Python projekt u početku imao pristup "baterije uključene", nudeći bogat skup funkcija u standardnoj biblioteci za razne aplikacije. Među prednostima ovog pristupa je pojednostavljenje održavanja Python projekata i nadzora sigurnosti modula koji se koriste u projektima. Ranjivosti u modulima često postaju izvor ranjivosti u aplikacijama koje ih koriste. Ako su funkcije uključene u standardnu ​​biblioteku, dovoljno je pratiti stanje glavnog projekta. Prilikom dijeljenja standardne biblioteke, programeri moraju koristiti module trećih strana, od kojih se ranjivosti u svakom od njih moraju zasebno pratiti. Uz visok stupanj fragmentacije i veliki broj ovisnosti, postoji prijetnja od napada kroz kompromitiranje infrastrukture programera modula.

S druge strane, svaki dodatni modul u standardnoj biblioteci zahtijeva resurse razvojnog tima Pythona za održavanje. Knjižnica je nakupila veliki broj dupliciranih i suvišnih funkcija, čije uklanjanje može smanjiti troškove održavanja. Kako se katalog razvija PyPI i pojednostavljivanje procesa instaliranja i preuzimanja dodatnih paketa, korištenje vanjskih modula sada je postalo jednako uobičajeno kao i ugrađene funkcije.

Sve više i više programera koristi funkcionalnije vanjske zamjene za standardne module, na primjer, koristeći lxml modul umjesto xml. Uklanjanje napuštenih modula iz standardne biblioteke povećat će popularnost alternativa koje aktivno razvija zajednica. Osim toga, smanjenje standardne knjižnice dovest će do smanjenja veličine osnovne distribucije, što je važno kada se koristi Python na ugrađenim platformama s ograničenom veličinom pohrane.

Izvor: opennet.ru

Dodajte komentar