Pembersihan utama perpustakaan standard Python telah dirancang

Pembangun Projek Python diterbitkan cadangan (PEP 594) untuk melakukan pembersihan utama perpustakaan standard. Keupayaan dan komponen yang jelas ketinggalan zaman dan sangat khusus yang mempunyai masalah seni bina dan tidak boleh disatukan untuk semua platform ditawarkan untuk dialih keluar daripada perpustakaan standard Python.

Sebagai contoh, adalah dicadangkan untuk mengecualikan daripada perpustakaan standard modul seperti crypt (ketiadaan untuk Windows dan pergantungan ketersediaan algoritma pencincangan pada perpustakaan sistem), cgi (bukan seni bina yang optimum, memerlukan pelancaran proses baharu untuk setiap permintaan), imp (disyorkan untuk menggunakan importlib), paip (disarankan untuk menggunakan modul subproses), nis (disyorkan untuk menggunakan NSS, LDAP atau Kerberos/GSSAPI), spwd (tidak disyorkan untuk bekerja secara langsung dengan pangkalan data akaun). Modul binhex, uu, xdrlib, juga ditandakan untuk dialih keluar.
aifc,
audioop,
ketulan
imghdr,
ossaudiodev,
sdhdr,
sunau
asynchat,
asyncore,
cgitb,
smtpd
nntplib, macpath,
pemformat, msilib dan penghurai.

Pelan yang dicadangkan adalah untuk menghentikan modul di atas dalam Python 3.8, mengeluarkan amaran dalam Python 3.8, dan mengeluarkannya daripada repositori CPython dalam Python 3.10.
Modul parser dirancang untuk dialih keluar dalam versi 3.9, kerana ia telah ditamatkan dalam keluaran Python 2.5, dan modul macpath dalam cawangan 3.8. Selepas dialih keluar daripada kod utama, kod itu akan dialihkan ke repositori legacylib yang berasingan dan nasibnya bergantung pada minat ahli komuniti. Cawangan Python 3.9 dijangka akan disokong sehingga 2026, yang akan menyediakan masa yang mencukupi untuk projek berhijrah kepada alternatif luaran.

Pada mulanya, modul ftplib, optparse, getopt, colorys, fileinput, lib2to3 dan wave turut dicadangkan untuk dialih keluar, tetapi diputuskan untuk meninggalkannya sebagai sebahagian daripada perpustakaan standard buat masa ini, kerana ia meluas dan kekal relevan, walaupun terdapat alternatif atau pengikatan yang lebih maju kepada keupayaan khusus sistem pengendalian.

Ingat bahawa projek Python pada mulanya mengambil pendekatan "termasuk bateri", menawarkan set fungsi yang kaya dalam perpustakaan standard untuk pelbagai aplikasi. Antara kelebihan pendekatan ini ialah memudahkan penyelenggaraan projek Python dan memantau keselamatan modul yang digunakan dalam projek. Kerentanan dalam modul sering menjadi sumber kelemahan dalam aplikasi yang menggunakannya. Jika fungsi dimasukkan ke dalam perpustakaan standard, ia sudah cukup untuk mengawal keadaan projek utama. Apabila membahagikan pustaka standard, pembangun dikehendaki menggunakan modul pihak ketiga, yang kelemahan dalam setiap satunya mesti dipantau secara berasingan. Dengan tahap pemecahan yang tinggi dan sejumlah besar kebergantungan, terdapat ancaman serangan melalui menjejaskan infrastruktur pembangun modul.

Sebaliknya, setiap modul tambahan dalam perpustakaan standard memerlukan sumber daripada pasukan pembangunan Python untuk dikekalkan. Perpustakaan telah mengumpul sejumlah besar fungsi pendua dan berlebihan, menghapuskan yang boleh mengurangkan kos penyelenggaraan. Apabila katalog berkembang PyPI dan memudahkan proses memasang dan memuat turun pakej tambahan, penggunaan modul luaran kini menjadi biasa seperti fungsi terbina dalam.

Semakin ramai pembangun menggunakan penggantian luaran yang lebih berfungsi untuk modul standard, contohnya, menggunakan modul lxml dan bukannya xml. Mengalih keluar modul terbengkalai daripada perpustakaan standard akan meningkatkan populariti alternatif yang dibangunkan secara aktif oleh komuniti. Di samping itu, mengurangkan perpustakaan standard akan membawa kepada pengurangan saiz pengedaran asas, yang penting apabila menggunakan Python pada platform terbenam dengan saiz storan terhad.

Sumber: opennet.ru

Tambah komen