Er staat een grote opschoning van de Python-standaardbibliotheek gepland

Python-projectontwikkelaars gepubliceerd voorstel (PEP 594) om een ​​grote schoonmaak van de standaardbibliotheek uit te voeren. Zowel duidelijk verouderde als zeer gespecialiseerde mogelijkheden en componenten die architecturale problemen hebben en niet voor alle platforms kunnen worden verenigd, worden aangeboden voor verwijdering uit de standaardbibliotheek van Python.

Er wordt bijvoorbeeld voorgesteld om modules als crypt (onbeschikbaarheid voor Windows en afhankelijkheid van de beschikbaarheid van hash-algoritmen op systeembibliotheken), cgi (geen optimale architectuur, vereist het starten van een nieuw proces voor elk verzoek), imp. (aanbevolen om importlib te gebruiken), pipelines (het wordt aanbevolen om de subprocesmodule te gebruiken), nis (het wordt aanbevolen om NSS, LDAP of Kerberos/GSSAPI te gebruiken), spwd (het wordt niet aanbevolen om rechtstreeks met de accountdatabase te werken). De modules binhex, uu, xdrlib zijn ook gemarkeerd voor verwijdering.
aifc,
audioop,
brok
imghdr,
ossaudiodev,
sndhdr,
zon
asynchroon,
asynchrone,
cgitb,
smtpd
nntplib, macpath,
formatter, msilib en parser.

Het voorgestelde plan is om de bovenstaande modules in Python 3.8 af te schaffen, een waarschuwing te geven in Python 3.8 en ze te verwijderen uit de CPython-repository's in Python 3.10.
Het is de bedoeling dat de parsermodule in versie 3.9 wordt verwijderd, omdat deze verouderd was in de Python 2.5-release, en de macpath-module in de 3.8-vertakking. Nadat de code uit de hoofdcode is verwijderd, wordt deze naar een aparte legacylib-repository verplaatst en zal het lot ervan afhangen van de interesse van de communityleden. De Python 3.9-tak zal naar verwachting tot 2026 worden ondersteund, wat voldoende tijd zal bieden voor projecten om naar externe alternatieven te migreren.

Aanvankelijk werden ook de ftplib-, optparse-, getopt-, colourys-, fileinput-, lib2to3- en wave-modules voorgesteld voor verwijdering, maar er werd besloten om ze voorlopig als onderdeel van de standaardbibliotheek te laten, aangezien ze wijdverspreid zijn en relevant blijven, ondanks de aanwezigheid van meer geavanceerde alternatieven of bindingen aan specifieke mogelijkheden van besturingssystemen.

Bedenk dat het Python-project aanvankelijk een β€˜inclusief batterijen’-benadering hanteerde, waarbij een rijke reeks functies in de standaardbibliotheek voor een verscheidenheid aan toepassingen werd aangeboden. Een van de voordelen van deze aanpak is de vereenvoudiging van het onderhouden van Python-projecten en het bewaken van de beveiliging van modules die in projecten worden gebruikt. Kwetsbaarheden in modules worden vaak een bron van kwetsbaarheden in applicaties die er gebruik van maken. Als de functies zijn opgenomen in de standaardbibliotheek, volstaat het om de status van het hoofdproject te controleren. Bij het splitsen van de standaardbibliotheek zijn ontwikkelaars verplicht modules van derden te gebruiken, waarvan de kwetsbaarheden in elk afzonderlijk moeten worden gecontroleerd. Met een hoge mate van fragmentatie en een groot aantal afhankelijkheden bestaat er een dreiging van aanvallen doordat de infrastructuur van moduleontwikkelaars in gevaar wordt gebracht.

Aan de andere kant vereist het onderhoud van elke extra module in de standaardbibliotheek bronnen van het Python-ontwikkelteam. De bibliotheek heeft een groot aantal dubbele en redundante functies verzameld, waardoor de onderhoudskosten kunnen worden verlaagd. Naarmate de catalogus zich ontwikkelt PyPI en door het proces van het installeren en downloaden van extra pakketten te vereenvoudigen, is het gebruik van externe modules nu net zo gewoon geworden als ingebouwde functies.

Steeds meer ontwikkelaars gebruiken functionelere externe vervangingen voor standaardmodules, bijvoorbeeld door de lxml-module te gebruiken in plaats van xml. Het verwijderen van verlaten modules uit de standaardbibliotheek zal de populariteit vergroten van alternatieven die actief door de gemeenschap zijn ontwikkeld. Bovendien zal het verkleinen van de standaardbibliotheek leiden tot een verkleining van de basisdistributie, wat belangrijk is bij het gebruik van Python op embedded platforms met een beperkte opslaggrootte.

Bron: opennet.ru

Voeg een reactie