È prevista una grande pulizia della libreria standard di Python

Sviluppatori del progetto Python hanno pubblicato proposta (PEP 594) per un'importante pulizia della libreria standard. Si propongono per l'eliminazione dalla libreria standard di Python sia funzionalità chiaramente obsolete e specializzate, sia componenti che presentano problemi architetturali e che non possono essere unificati per tutte le piattaforme.

Ad esempio, dai moduli della libreria standard si propone di escludere moduli come crypt (non disponibile per Windows e dipendenza dalla disponibilità di algoritmi di hashing dalle librerie di sistema), cgi (architettura non ottimale, richiede l'avvio di un nuovo processo per ogni richiesta), imp (si consiglia di utilizzare importlib), pipes (si consiglia di utilizzare il modulo subprocess), nis (si consiglia di utilizzare NSS, LDAP o Kerberos/GSSAPI), spwd (non è raccomandato lavorare direttamente con il database degli account). Sono stati contrassegnati per la rimozione anche i moduli binhex, uu, xdrlib,
aifc,
audioop,
chunk,
imghdr,
ossaudiodev,
sndhdr,
sunau,
asynchat,
asyncore,
cgitb,
smtpd,
nntplib, macpath,
formatter, msilib e parser.

Secondo il piano proposto, in Python 3.8 i suddetti moduli saranno contrassegnati come obsoleti, in Python 3.8 cominceranno ad essere visualizzati avvisi, e in Python 3.10 saranno rimossi dai repository CPython.
Il modulo parser è previsto per la rimozione nella versione 3.9, poiché è stato contrassegnato come obsoleto già nella versione Python 2.5, e il modulo macpath nella versione 3.8. Dopo la rimozione dal pacchetto principale, il codice sarà spostato in un repository separato legacylib e il suo destino dipenderà dall'interesse dei membri della comunità. Si prevede che il ramo Python 3.9 sarà supportato fino al 2026, il che fornirà abbastanza tempo per migrare i progetti verso alternative esterne.

Inizialmente, per la rimozione erano stati proposti anche i moduli ftplib, optparse, getopt, colorsys, fileinput, lib2to3 e wave, ma si è deciso di mantenerli nel pacchetto della libreria standard, poiché sono ampiamente utilizzati e rimangono pertinenti, nonostante la disponibilità di alternative più avanzate o legate a funzionalità specifiche dei sistemi operativi.

Ricordiamo che inizialmente il progetto Python adotta un approccio "le batterie sono incluse", nel quale la libreria standard offre un ampio insieme di funzioni per vari ambiti di applicazione. Tra i vantaggi di questo approccio c'è la semplificazione della manutenzione dei progetti in Python e il monitoraggio della sicurezza dei moduli utilizzati nei progetti. Le vulnerabilità nei moduli spesso diventano fonti di vulnerabilità nelle applicazioni che li utilizzano. Nel caso in cui le funzioni siano incluse nella libreria standard, è sufficiente controllare lo stato del progetto principale. Con la frammentazione della libreria standard, gli sviluppatori devono utilizzare moduli di terze parti, le vulnerabilità di ciascuno dei quali devono essere controllate separatamente. Con un alto grado di frammentazione e un gran numero di dipendenze, sorge il rischio di attacchi attraverso la compromissione delle infrastrutture dei programmatori di moduli.

D'altro canto, ogni modulo aggiuntivo nella libreria standard richiede risorse dal team di sviluppo di Python per la manutenzione. La libreria ha accumulato un gran numero di funzioni duplicate e ridondanti, l'esclusione delle quali può ridurre i costi di manutenzione. Con lo sviluppo del catalogo PyPI e semplificando il processo di installazione e download di pacchetti aggiuntivi, l'uso di moduli esterni è diventato tanto abituale quanto l'uso delle funzioni incorporate.

Sempre più sviluppatori utilizzano sostituzioni esterne più funzionali ai moduli standard, ad esempio, usano il modulo lxml invece di xml. L'eliminazione dei moduli abbandonati dalla libreria standard aumenterà la popolarità delle alternative attivamente sviluppate dalla comunità. Inoltre, la riduzione della libreria standard porterà a una diminuzione delle dimensioni della fornitura base, che è rilevante nell'uso di Python su piattaforme embedded con spazio di archiviazione limitato.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster