Dezvoltatorii proiectului Python propunerea (PEP 594) pentru realizarea unei curățiri semnificative a bibliotecii standard. Se propune eliminarea din biblioteca standard Python a unor funcționalități considerabil învechite și specializate, dar și a componentelor cu probleme arhitecturale care nu pot fi unificate pentru toate platformele.
De exemplu, din biblioteca standard se sugerează excluderea unor module precum crypt (indisponibilitate pentru Windows și dependența de disponibilitatea algoritmilor de hashing de bibliotecile de sistem), cgi (arhitectură neoptimizată, necesită lansarea unui nou proces pentru fiecare cerere), imp (recomandat a fi utilizat importlib), pipes (recomandat a fi utilizat modulul subprocess), nis (recomandat a fi utilizat NSS, LDAP sau Kerberos/GSSAPI), spwd (nu este recomandat să se lucreze direct cu baza de date a conturilor). De asemenea, modulele binhex, uu, xdrlib,
aifc,
audioop,
chunk,
imghdr,
ossaudiodev,
sndhdr,
sunau,
asynchat,
asyncore,
cgitb,
smtpd,
nntplib, macpath,
formatter, msilib și parser.
Conform planului propus, în Python 3.8, modulele menționate mai sus vor fi marcate ca fiind învechite, în Python 3.8 se vor începe generarea de avertismente, iar în Python 3.10 vor fi eliminate din repositoarele CPython.
Modulul parser este planificat să fie eliminat în versiunea 3.9, deoarece este marcat ca învechit încă din versiunea Python 2.5, iar modulul macpath în ramura 3.8. După eliminarea din compunerea principală, codul va fi mutat într-un depozit separat legacylib, iar soarta sa va depinde de interesul comunității. Se așteaptă ca ramura Python 3.9 să fie susținută până în 2026, ceea ce va oferi timp suficient pentru a migra proiectele pe alternative externe.
Inițial, pentru eliminare au fost propuse module precum ftplib, optparse, getopt, colorsys, fileinput, lib2to3 și wave, dar s-a decis să rămână în cadrul bibliotecii standard, deoarece sunt foarte răspândite și rămân relevante, în ciuda existenței unor alternative mai avansate sau a legăturii cu funcționalități specifice sistemului de operare.
Reamintim că proiectul Python utilizează inițial abordarea „bateriile sunt incluse”, în cadrul căreia biblioteca standard oferă un set extins de funcții pentru diverse domenii de aplicare. Printre avantajele acestei abordări se numără simplificarea întreținerii proiectelor dezvoltat pe Python și monitorizarea securității modulelor folosite în proiecte. Vulnerabilitățile modulelor devin adesea surse de slăbiciuni în aplicațiile care le utilizează. Dacă funcțiile sunt incluse în biblioteca standard, este suficient să se controleze starea proiectului principal. Odată ce biblioteca standard este fragmentată, dezvoltatorii trebuie să utilizeze module externe, vulnerabilitățile fiecăruia dintre acestea necesită monitorizare separat. Atunci când există un grad ridicat de fragmentare și un număr mare de dependențe, apare amenințarea atacurilor prin compromiterea infrastructurii dezvoltatorilor de module.
Pe de altă parte, fiecare modul suplimentar din biblioteca standard necesită resurse din partea echipei dezvoltatorilor Python pentru întreținere. Biblioteca a acumulat un număr mare de funcții redundante și excesive, eliminarea cărora poate reduce costurile de întreținere. Pe măsură ce catalogul se dezvoltă și simplificarea procesului de instalare și descărcare a modulelor suplimentare, utilizarea modulelor externe a devenit la fel de obișnuită ca și funcțiile încorporate.
Tot mai mulți dezvoltatori folosesc înlocuitori externi mai funcționali pentru modulele standard, de exemplu, folosesc modulul lxml în loc de xml. Eliminarea modulelor abandonate din biblioteca standard va crește popularitatea alternativelor activ dezvoltate de comunitatea. În plus, reducerea bibliotecii standard va conduce la diminuarea dimensiunii livrării de bază, ceea ce este relevant atunci când se utilizează Python pe platforme încorporate cu dimensiuni de stocare limitate.
Sursa: opennet.ro
