Planirano je veliko čišćenje Python standardne biblioteke

Programeri Python projekta objavljeno prijedlog (PEP 594) da se izvrši veliko čišćenje standardne biblioteke. I jasno zastarjele i visoko specijalizirane mogućnosti i komponente koje imaju arhitektonske probleme i koje se ne mogu objediniti za sve platforme nude se za uklanjanje iz Python standardne biblioteke.

Na primjer, predlaže se da se iz standardne biblioteke izuzmu moduli kao što su crypt (nedostupnost za Windows i ovisnost dostupnosti algoritama za heširanje od sistemskih biblioteka), cgi (nije optimalna arhitektura, zahtijeva pokretanje novog procesa za svaki zahtjev), imp (preporučljivo koristiti importlib), pipes (preporučljivo je koristiti modul podprocesa), nis (preporučljivo je koristiti NSS, LDAP ili Kerberos/GSSAPI), spwd (ne preporučuje se direktan rad sa bazom podataka naloga). Moduli binhex, uu, xdrlib su takođe označeni za uklanjanje.
aifc,
audioop,
komad
imghdr,
ossaudiodev,
sndhdr,
sunau
asinhat,
asyncore,
cgitb,
smtpd
nntplib, macpath,
formater, msilib i parser.

Predloženi plan je da se zastare gore navedeni moduli u Pythonu 3.8, izda upozorenje u Pythonu 3.8 i da se uklone iz CPython spremišta u Pythonu 3.10.
Planirano je da se modul parsera ukloni u verziji 3.9, jer 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 spremište i njegova sudbina će ovisiti o interesu članova zajednice. Očekuje se da će grana Python 3.9 biti podržana do 2026. godine, što će pružiti dovoljno vremena projektima da pređu na eksterne alternative.

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

Podsjetimo da je Python projekat 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 praćenje 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 kontrolirati stanje glavnog projekta. Kada razdvajaju standardnu ​​biblioteku, programeri su obavezni da koriste module treće strane, od kojih se ranjivosti u svakom od njih moraju posebno nadgledati. Sa visokim stepenom fragmentacije i velikim brojem zavisnosti, postoji opasnost od napada kroz kompromitovanje infrastrukture programera modula.

S druge strane, svaki dodatni modul u standardnoj biblioteci zahtijeva resurse od Python razvojnog tima za održavanje. Biblioteka je akumulirala veliki broj dupliciranih i redundantnih funkcija, eliminiranje kojih može smanjiti troškove održavanja. Kako se katalog razvija PyPI i pojednostavljivanjem procesa instaliranja i preuzimanja dodatnih paketa, upotreba eksternih modula je sada postala uobičajena kao i ugrađene funkcije.

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

izvor: opennet.ru

Dodajte komentar