Este planificată o curățare majoră a bibliotecii standard Python

Dezvoltatori de proiecte Python publicat propunere (PEP 594) de a face o curățare majoră a bibliotecii standard. Atât capabilitățile și componentele clar depășite, cât și cele foarte specializate care au probleme arhitecturale și nu pot fi unificate pentru toate platformele sunt oferite pentru eliminare din biblioteca standard Python.

De exemplu, se propune excluderea din biblioteca standard a unor module precum crypt (indisponibilitatea pentru Windows și dependența disponibilității algoritmilor de hashing de bibliotecile de sistem), cgi (arhitectura nu este optimă, necesită lansarea unui nou proces pentru fiecare cerere), imp (se recomandă utilizarea importlib), pipe (se recomandă utilizarea modulului subproces), nis (se recomandă utilizarea NSS, LDAP sau Kerberos/GSSAPI), spwd (nu este recomandat să lucrați direct cu baza de date a contului). Modulele binhex, uu, xdrlib sunt de asemenea marcate pentru eliminare.
aifc,
audioop,
bucată mare
imghdr,
ossaudiodev,
sndhdr,
sunau
asincron,
asincron,
cgitb,
smtpd
nntplib, macpath,
formatator, msilib și parser.

Planul propus este de a deprecia modulele de mai sus în Python 3.8, de a emite un avertisment în Python 3.8 și de a le elimina din depozitele CPython din Python 3.10.
Modulul parser este planificat să fie eliminat în versiunea 3.9, deoarece a fost depreciat în versiunea Python 2.5, iar modulul macpath în ramura 3.8. După ce a fost eliminat din codul principal, codul va fi mutat într-un depozit separat legacylib, iar soarta acestuia va depinde de interesul membrilor 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 ca proiectele să migreze către alternative externe.

Inițial, modulele ftplib, optparse, getopt, colorsys, fileinput, lib2to3 și wave au fost, de asemenea, propuse spre eliminare, dar s-a decis să le lăsăm ca parte a bibliotecii standard deocamdată, deoarece sunt larg răspândite și rămân relevante, în ciuda prezenței. de alternative mai avansate sau de legături la capacitățile specifice ale sistemelor de operare.

Amintiți-vă că proiectul Python a adoptat inițial o abordare „baterie incluse”, oferind un set bogat de funcții în biblioteca standard pentru o varietate de aplicații. Printre avantajele acestei abordări se numără simplificarea menținerii proiectelor Python și monitorizarea securității modulelor utilizate în proiecte. Vulnerabilitățile din module devin adesea o sursă de vulnerabilități în aplicațiile care le folosesc. Dacă funcțiile sunt incluse în biblioteca standard, este suficient să monitorizați starea proiectului principal. La împărțirea bibliotecii standard, dezvoltatorilor li se cere să utilizeze module terțe, vulnerabilitățile din fiecare dintre acestea trebuie monitorizate separat. Cu un grad ridicat de fragmentare și un număr mare de dependențe, există o amenințare de atacuri prin compromiterea infrastructurii dezvoltatorilor de module.

Pe de altă parte, fiecare modul suplimentar din biblioteca standard necesită resurse de la echipa de dezvoltare Python pentru a fi întreținut. Biblioteca a acumulat un număr mare de funcții duplicate și redundante, eliminând care pot reduce costurile de întreținere. Pe măsură ce catalogul se dezvoltă PyPI și simplificând procesul de instalare și descărcare a pachetelor suplimentare, utilizarea modulelor externe a devenit acum la fel de comună ca și funcțiile încorporate.

Din ce în ce mai mulți dezvoltatori folosesc înlocuitori externi mai funcționali pentru modulele standard, de exemplu, folosind modulul lxml în loc de xml. Eliminarea modulelor abandonate din biblioteca standard va crește popularitatea alternativelor dezvoltate activ de comunitate. În plus, reducerea bibliotecii standard va duce la o reducere a dimensiunii distribuției de bază, ceea ce este important atunci când utilizați Python pe platforme încorporate cu dimensiune limitată de stocare.

Sursa: opennet.ru

Adauga un comentariu