Pembersihan besar-besaran pada perpustakaan standar Python direncanakan

Pengembang Proyek Python diterbitkan proposal (PEP 594) untuk melakukan pembersihan besar-besaran terhadap perpustakaan standar. Kemampuan dan komponen yang jelas ketinggalan jaman dan sangat terspesialisasi yang memiliki masalah arsitektural dan tidak dapat disatukan untuk semua platform ditawarkan untuk dihapus dari pustaka standar Python.

Misalnya, diusulkan untuk mengecualikan dari perpustakaan standar modul seperti crypt (tidak tersedianya untuk Windows dan ketergantungan ketersediaan algoritma hashing pada perpustakaan sistem), cgi (bukan arsitektur optimal, memerlukan peluncuran proses baru untuk setiap permintaan), imp (disarankan menggunakan importlib), pipa (disarankan menggunakan modul subproses), nis (disarankan menggunakan NSS, LDAP atau Kerberos/GSSAPI), spwd (tidak disarankan bekerja langsung dengan database akun). Modul binhex, uu, xdrlib, juga ditandai untuk dihapus.
aifc,
audioop,
bingkah
imghdr,
ossaudiodev,
sndhdr,
sunau
asinkron,
asinkron,
cgitb,
smtpd
nntplib, macpath,
pemformat, msilib dan parser.

Rencana yang diusulkan adalah menghentikan penggunaan modul di atas di Python 3.8, mengeluarkan peringatan di Python 3.8, dan menghapusnya dari repositori CPython di Python 3.10.
Modul parser rencananya akan dihapus di versi 3.9, karena tidak digunakan lagi di rilis Python 2.5, dan modul macpath di cabang 3.8. Setelah dihapus dari kode utama, kode tersebut akan dipindahkan ke repositori legacylib terpisah dan nasibnya akan bergantung pada minat anggota komunitas. Cabang Python 3.9 diharapkan akan didukung hingga tahun 2026, yang akan memberikan cukup waktu bagi proyek untuk bermigrasi ke alternatif eksternal.

Awalnya, modul ftplib, optparse, getopt, coloursys, fileinput, lib2to3 dan wave juga diusulkan untuk dihapus, tetapi diputuskan untuk meninggalkannya sebagai bagian dari perpustakaan standar untuk saat ini, karena mereka tersebar luas dan tetap relevan, meskipun ada kehadiran alternatif yang lebih maju atau pengikatan pada kemampuan spesifik sistem operasi.

Ingatlah bahwa proyek Python pada awalnya menggunakan pendekatan “termasuk baterai”, menawarkan serangkaian fungsi yang kaya di perpustakaan standar untuk berbagai aplikasi. Di antara kelebihan pendekatan ini adalah penyederhanaan pemeliharaan proyek Python dan pemantauan keamanan modul yang digunakan dalam proyek. Kerentanan pada modul seringkali menjadi sumber kerentanan pada aplikasi yang menggunakannya. Jika fungsi-fungsi tersebut disertakan dalam perpustakaan standar, itu cukup untuk memantau keadaan proyek utama. Saat membagi perpustakaan standar, pengembang diharuskan menggunakan modul pihak ketiga, yang kerentanannya masing-masing harus dipantau secara terpisah. Dengan tingkat fragmentasi yang tinggi dan sejumlah besar ketergantungan, terdapat ancaman serangan melalui kompromi infrastruktur pengembang modul.

Di sisi lain, setiap modul tambahan di perpustakaan standar memerlukan sumber daya dari tim pengembangan Python untuk memeliharanya. Perpustakaan telah mengumpulkan sejumlah besar fungsi duplikat dan mubazir, sehingga menghilangkannya dapat mengurangi biaya pemeliharaan. Seiring berkembangnya katalog PyPI dan menyederhanakan proses instalasi dan pengunduhan paket tambahan, penggunaan modul eksternal kini menjadi hal biasa seperti fungsi bawaan.

Semakin banyak pengembang yang menggunakan pengganti eksternal yang lebih fungsional untuk modul standar, misalnya, menggunakan modul lxml daripada xml. Menghapus modul yang ditinggalkan dari perpustakaan standar akan meningkatkan popularitas alternatif yang dikembangkan secara aktif oleh komunitas. Selain itu, pengurangan perpustakaan standar akan mengurangi ukuran distribusi dasar, yang penting ketika menggunakan Python pada platform tertanam dengan ukuran penyimpanan terbatas.

Sumber: opennet.ru

Tambah komentar