Razvijači projekta Python predloženi su (PEP 594) za značajno čišćenje standardne biblioteke. Za uklanjanje iz standardne biblioteke Python predložene su kako očigledno zastarele i usko specijalizovane funkcionalnosti, tako i komponente koje imaju arhitektonske probleme i koje se ne mogu unificirati za sve platforme.
Na primjer, iz standardne biblioteke je predloženo isključiti module kao što su crypt (nedostupnost za Windows i zavisnost dostupnosti algoritama hashiranja od sistemskih biblioteka), cgi (neoptimalna arhitektura, potrebna je pokretanje novog procesa za svakog zahtjeva), imp (preporučuje se korištenje importlib), pipes (preporučuje se korištenje modula subprocess), nis (preporučuje se korištenje NSS, LDAP ili Kerberos/GSSAPI), spwd (nije preporučljivo direktno raditi s bazom podataka korisničkih računa). Također su označeni za uklanjanje moduli binhex, uu, xdrlib,
aifc,
audioop,
chunk,
imghdr,
ossaudiodev,
sndhdr,
sunau,
asynchat,
asyncore,
cgitb,
smtpd,
nntplib, macpath,
formatter, msilib i parser.
Prema predloženom planu u Python 3.8, navedeni moduli će biti označeni kao zastarjeli, a u Python 3.8 početi će se ispisivati upozorenje, dok će u Python 3.10 biti uklonjeni iz repozitorija CPython.
Modul parser planira se ukloniti u verziji 3.9, jer je označen kao zastareo još u izdanju Python 2.5, dok će se modul macpath ukloniti u ogranku 3.8. Nakon uklanjanja iz glavnog sastava, kod će biti prebačen u poseban repozitorij legacylib i njegova sudbina će zavisiti od interesa predstavnika zajednice. Očekuje se da će ogranak Python 3.9 biti podržan do 2026. godine, što će omogućiti dovoljno vremena za prebacivanje projekata na vanjske alternative.
Prvobitno su za uklanjanje također bili predloženi moduli ftplib, optparse, getopt, colorsys, fileinput, lib2to3 i wave, ali je odlučeno da ih se za sada zadrži u sastavu standardne biblioteke, jer su široko rasprostranjeni i ostaju relevantni, uprkos postojanju savršenijih alternativa ili vezanosti za specifične mogućnosti operativnih sistema.
Podsjećamo da se prvotno u Python projektu koristi pristup 'baterije uključene', pri čemu se u standardnoj biblioteci nudi opsežan skup funkcija za različita područja primjene. Među prednostima ovog pristupa je pojednostavljenje održavanja projekata na Pythonu i praćenje sigurnosti korištenih modula u projektima. Ranljivosti u modulima često postaju izvor ranjivosti u aplikacijama koje ih koriste. Ako funkcije ulaze u standardnu biblioteku, dovoljno je kontrolirati stanje glavnog projekta. Kod razdvajanja standardne biblioteke, programerima je potrebno koristiti vanjske module, čije ranljivosti treba kontrolirati odvojeno. U slučaju visoke fragmentacije i velikog broja ovisnosti, postoji prijetnja napada kroz kompromitaciju infrastrukture programera modula.
S druge strane, svaki dodatni modul u standardnoj biblioteci zahtijeva resurse od tima programera Pythona za održavanje. U biblioteci se nakupilo veliki broj duplicirajućih i suvišnih funkcija, čijim isključivanjem se može smanjiti trošak održavanja. Kako se katalog razvija i pojednostavljuje proces instalacije i učitavanja dodatnih paketa, korištenje vanjskih modula postalo je jednako uobičajeno kao i korištenje ugrađenih funkcija.
Sve više razvojnih programera koristi funkcionalnije vanjske zamjene za standardne module, na primjer, koriste modul lxml umjesto xml. Uklanjanje zaboravljenih modula iz standardne biblioteke omogućit će povećanje popularnosti aktivno razvijanih alternativa unutar zajednice. Osim toga, smanjenje standardne biblioteke dovest će do smanjenja veličine osnovnog paketa, što je važno kada se koristi Python na ugrađenim platformama s ograničenjem prostora za pohranu.
Izvor: opennet.ru
