Entwickler des Python-Projekts Vorschlag (PEP 594) zur Durchführung einer umfassenden Bereinigung der Standardbibliothek. Aus der Standardbibliothek von Python sollen sowohl ausdrücklich veraltete und spezialisierte Funktionen als auch Komponenten entfernt werden, die architektonische Probleme aufweisen und sich nicht für alle Plattformen vereinheitlichen lassen.
Beispielsweise wird vorgeschlagen, aus der Standardbibliothek Module wie crypt (Nichtverfügbarkeit für Windows und Abhängigkeit der Verfügbarkeit von Hash-Algorithmen von Systembibliotheken), cgi (nicht optimale Architektur, erfordert das Starten eines neuen Prozesses für jede Anfrage), imp (es wird empfohlen, importlib zu verwenden), pipes (es wird empfohlen, das Modul subprocess zu verwenden), nis (es wird empfohlen, NSS, LDAP oder Kerberos/GSSAPI zu verwenden), spwd (es wird nicht empfohlen, direkt mit Datenbanken von Benutzerkonten zu arbeiten) auszuschließen. Zum Entfernen sind auch die Module binhex, uu, xdrlib,
aifc,
audioop,
chunk,
imghdr,
ossaudiodev,
sndhdr,
sunau,
asynchat,
asyncore,
cgitb,
smtpd,
nntplib, macpath,
formatter, msilib und parser.
Gemäß dem vorgeschlagenen Plan sollen in Python 3.8 die oben genannten Module als veraltet markiert, in Python 3.8 eine Warnung ausgegeben und in Python 3.10 aus den CPython-Repositories entfernt werden.
Das Modul parser soll in Version 3.9 entfernt werden, da es bereits in der Veröffentlichung von Python 2.5 als veraltet markiert wurde, und das Modul macpath in der Version 3.8. Nach der Entfernung aus dem Hauptbestand wird der Code in ein separates Repository legacylib verschoben, und sein Schicksal wird vom Interesse der Community-Mitglieder abhängen. Es wird erwartet, dass die Version Python 3.9 bis 2026 unterstützt wird, was ausreichend Zeit für die Migration von Projekten auf externe Alternativen bietet.
Ursprünglich sollten auch die Module ftplib, optparse, getopt, colorsys, fileinput, lib2to3 und wave entfernt werden, aber es wurde entschieden, sie vorerst in der Standardbibliothek zu belassen, da sie weit verbreitet sind und weiterhin relevant bleiben, trotz vorhandener fortschrittlicher Alternativen oder ihrer spezifischen Bindung an Betriebssystemfunktionen.
Wir erinnern daran, dass im ursprünglichen Python-Projekt der Ansatz „Batterien sind im Lieferumfang enthalten“ verfolgt wird, bei dem die Standardbibliothek eine umfangreiche Sammlung von Funktionen für verschiedene Anwendungsbereiche bietet. Zu den Vorteilen dieses Ansatzes gehört die Vereinfachung der Wartung von Python-Projekten und die Überwachung der Sicherheit der in den Projekten verwendeten Module. Schwachstellen in Modulen sind häufig eine Quelle für Verwundbarkeiten in den sie nutzenden Anwendungen. Wenn die Funktionen in die Standardbibliothek aufgenommen werden, genügt es, den Zustand des Hauptprojekts zu kontrollieren. Bei der Aufspaltung der Standardbibliothek müssen Entwickler externe Module verwenden, deren Schwachstellen einzeln überwacht werden müssen. Bei hoher Fragmentierung und einer großen Anzahl von Abhängigkeiten besteht die Gefahr von Angriffen durch die Kompromittierung der Infrastruktur der Modulentwickler.
Andererseits erfordert jedes zusätzliche Modul in der Standardbibliothek Ressourcen vom Python-Entwicklungsteam für die Wartung. In der Bibliothek haben sich viele doppelte und überflüssige Funktionen angesammelt, deren Eliminierung die Wartungskosten senken könnte. Mit der Entwicklung des Katalogs und der Vereinfachung des Prozesses der Installation und des Herunterladens zusätzlicher Pakete ist die Anwendung externer Module heute ebenso alltäglich wie die von integrierten Funktionen.
Immer mehr Entwickler verwenden funktionellere externe Alternativen zu den Standardmodulen, zum Beispiel das Modul lxml anstelle von xml. Das Entfernen veralteter Module aus der Standardbibliothek wird die Beliebtheit aktiv entwickelter Alternativen in der Community erhöhen. Darüber hinaus führt die Reduzierung der Standardbibliothek zu einer Verringerung der Größe der Basisdistribution, was besonders wichtig ist, wenn Python auf eingebetteten Plattformen mit begrenztem Speicherplatz verwendet wird.
Quelle: opennet.ru
