Eine umfassende Bereinigung der Python-Standardbibliothek ist geplant

Python-Projektentwickler veröffentlicht haben Vorschlag (PEP 594), eine umfassende Bereinigung der Standardbibliothek durchzuführen. Sowohl eindeutig veraltete als auch hochspezialisierte Funktionen und Komponenten, die architektonische Probleme aufweisen und nicht für alle Plattformen vereinheitlicht werden können, werden zum Entfernen aus der Python-Standardbibliothek angeboten.

Beispielsweise wird vorgeschlagen, Module wie Crypt (Nichtverfügbarkeit für Windows und Abhängigkeit der Verfügbarkeit von Hashing-Algorithmen von Systembibliotheken), CGI (keine optimale Architektur, erfordert das Starten eines neuen Prozesses für jede Anforderung) und Imp aus der Standardbibliothek auszuschließen (empfohlen die Verwendung von importlib), Pipes (empfohlen die Verwendung des Subprocess-Moduls), nis (empfohlen die Verwendung von NSS, LDAP oder Kerberos/GSSAPI), spwd (es wird nicht empfohlen, direkt mit der Kontodatenbank zu arbeiten). Die Module binhex, uu, xdrlib sind ebenfalls zum Entfernen markiert.
aifc,
Audioop,
Brocken
imghdr,
Ossaudiodev,
sndhdr,
sunau
asynchat,
Asyncore,
cgitb,
smtpd
nntplib, macpath,
Formatierer, msilib und Parser.

Der vorgeschlagene Plan besteht darin, die oben genannten Module in Python 3.8 zu verwerfen, in Python 3.8 eine Warnung auszugeben und sie in Python 3.10 aus den CPython-Repositorys zu entfernen.
Es ist geplant, das Parser-Modul in Version 3.9 zu entfernen, da es in der Python-Version 2.5 veraltet war, und das Macpath-Modul im 3.8-Zweig. Nach dem Entfernen aus dem Hauptcode wird der Code in ein separates Legacylib-Repository verschoben und sein Schicksal hängt vom Interesse der Community-Mitglieder ab. Der Python 3.9-Zweig wird voraussichtlich bis 2026 unterstützt, was ausreichend Zeit für Projekte bietet, auf externe Alternativen zu migrieren.

Ursprünglich wurden auch die Module ftplib, optparse, getopt, colorsys, fileinput, lib2to3 und wave zur Entfernung vorgeschlagen, es wurde jedoch beschlossen, sie vorerst als Teil der Standardbibliothek zu belassen, da sie weit verbreitet sind und trotz ihrer Präsenz weiterhin relevant sind von fortgeschritteneren Alternativen oder Bindungen an spezifische Fähigkeiten von Betriebssystemen.

Denken Sie daran, dass das Python-Projekt ursprünglich einen „Batterien inklusive“-Ansatz verfolgte und in der Standardbibliothek eine Vielzahl von Funktionen für eine Vielzahl von Anwendungen bereitstellte. Zu den Vorteilen dieses Ansatzes gehört die Vereinfachung der Wartung von Python-Projekten und die Überwachung der Sicherheit der in Projekten verwendeten Module. Schwachstellen in Modulen führen häufig zu Schwachstellen in Anwendungen, die sie nutzen. Wenn die Funktionen in der Standardbibliothek enthalten sind, reicht es aus, den Status des Hauptprojekts zu kontrollieren. Bei der Aufteilung der Standardbibliothek müssen Entwickler Module von Drittanbietern verwenden, deren Schwachstellen jeweils separat überwacht werden müssen. Bei einem hohen Fragmentierungsgrad und einer Vielzahl von Abhängigkeiten drohen Angriffe durch Kompromittierung der Infrastruktur von Modulentwicklern.

Andererseits erfordert die Wartung jedes zusätzlichen Moduls in der Standardbibliothek Ressourcen vom Python-Entwicklungsteam. Die Bibliothek verfügt über eine große Anzahl duplizierender und redundanter Funktionen, deren Eliminierung die Wartungskosten senken kann. Während sich der Katalog entwickelt PyPI Durch die Vereinfachung der Installation und des Herunterladens zusätzlicher Pakete ist die Verwendung externer Module mittlerweile ebenso üblich wie integrierte Funktionen.

Immer mehr Entwickler verwenden funktionalere externe Ersetzungen für Standardmodule, indem sie beispielsweise das lxml-Modul anstelle von xml verwenden. Das Entfernen verlassener Module aus der Standardbibliothek wird die Popularität von Alternativen erhöhen, die aktiv von der Community entwickelt werden. Darüber hinaus führt die Reduzierung der Standardbibliothek zu einer Verringerung der Größe der Basisverteilung, was wichtig ist, wenn Python auf eingebetteten Plattformen mit begrenzter Speichergröße verwendet wird.

Source: opennet.ru

Kommentar hinzufügen