Eine umfangreiche Bereinigung der Standardbibliothek von Python wurde geplant.

Entwickler des Python-Projekts haben Vorschlag (PEP 594) zur Durchführung einer umfassenden Bereinigung der Standardbibliothek. Dabei werden sowohl ausdrücklich veraltete als auch spezialisierte Funktionen aus der Python-Standardbibliothek ausgeschlossen, als auch Komponenten, in denen architektonische Probleme bestehen und die sich nicht für alle Plattformen vereinheitlichen lassen.

So wird beispielsweise vorgeschlagen, aus der Standardbibliothek Module wie crypt (nicht verfügbar für Windows und Abhängigkeit der Verfügbarkeit der Hashing-Algorithmen von den Systembibliotheken), cgi (nicht optimale Architektur, da für jede Anfrage ein neuer Prozess gestartet werden muss), 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), und spwd (es wird nicht empfohlen, direkt mit der Kontodatenbank zu arbeiten) zu entfernen. 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 für Python 3.8 sollen die genannten Module als veraltet markiert werden. In Python 3.8 wird eine Warnung ausgegeben und in Python 3.10 werden sie aus den CPython-Repositories entfernt.
Das Modul parser ist für die Version 3.9 zur Löschung vorgesehen, da es bereits in Python 2.5 als veraltet markiert wurde. Das Modul macpath wird in der Version 3.8 entfernt. Nach der Löschung aus dem Hauptbestand wird der Code in ein separates Repository legacylib transferiert, und seine Zukunft wird vom Interesse der Community abhängen. Es wird erwartet, dass die Python 3.9-Version bis 2026 unterstützt wird, was ausreichend Zeit für die Migration der Projekte zu externen Alternativen bietet.

Ursprünglich sollten auch die Module ftplib, optparse, getopt, colorsys, fileinput, lib2to3 und wave entfernt werden, aber beschlossen wurde, sie vorerst in der Standardbibliothek zu belassen, da sie weit verbreitet sind und trotz vorhandener besserer Alternativen oder spezifischer Betriebssystemfunktionen weiterhin relevant bleiben.

Zur Erinnerung: Das ursprüngliche Konzept von Python verfolgt den Ansatz „Batterien inklusive“, bei dem die Standardbibliothek eine umfangreiche Sammlung von Funktionen für verschiedene Anwendungsbereiche bereitstellt. Ein Vorteil dieses Ansatzes ist die Vereinfachung der Wartung von Python-Projekten und die Überwachung der Sicherheit der in diesen Projekten verwendeten Module. Schwachstellen in Modulen sind häufig eine Quelle für Sicherheitsanfälligkeiten in den Anwendungen, die sie nutzen. Wenn die Funktionen Teil der Standardbibliothek sind, reicht es aus, den Zustand des Hauptprojekts zu überwachen. Bei der Aufspaltung der Standardbibliothek müssen Entwickler jedoch auf Drittanbieter-Module zurückgreifen, wobei die Schwachstellen in jedem von ihnen separat überwacht werden müssen. Bei einer hohen Fragmentierung und einer Vielzahl von Abhängigkeiten entsteht die Gefahr von Angriffen durch Kompromittierung der Infrastruktur der Modul-Entwickler.

Auf der anderen Seite erfordert jedes zusätzliche Modul in der Standardbibliothek Ressourcen von den Python-Entwicklern für die Wartung. In der Bibliothek hat sich eine große Anzahl an doppelten und überflüssigen Funktionen angesammelt, deren Ausschluss die Wartungskosten senken kann. Mit der Weiterentwicklung des Katalogs PyPI und der Vereinfachung des Installations- und Ladeprozesses zusätzlicher Pakete ist die Verwendung externer Module ebenso gewöhnlich geworden wie die integrierten Funktionen.

Immer mehr Entwickler nutzen funktionalere externe Alternativen zu den Standardmodulen, zum Beispiel das Modul lxml anstelle von xml. Die Entfernung veralteter Module aus der Standardbibliothek wird die Beliebtheit aktiv weiterentwickelter Alternativen steigern. Darüber hinaus wird die Verkürzung der Standardbibliothek zu einer Reduzierung der Größe des Basis-Pakets führen, was insbesondere bei der Verwendung von Python auf Embedded-Plattformen mit begrenztem Speicherplatz relevant ist.

Quelle: opennet.ru

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster