Halo semua, pembahasan kali ini adalah tentang pemrograman Python yang dibedakan versi 2 dan 3. Pada artikel ini, Python memiliki perbedaan dalam penggunaan versi 2 dan 3. Perbedaan yang dapat dicakup oleh Python berupa penggunaan keterbatasan dari pemakaian pustaka yang dimiliki versi terbaru maupun sebelumnya.
Perbedaan yang mendasar yang dapat kita ketahui dari versi yang disediakan Python merupakan bagian teknis. Python 2 memiliki pustaka yang dapat digunakan jangka panjang. Tidak hanya itu, siklus hidup yang dimiliki Python 2 lebih banyak disukai karena dapat digunakan secara efektif dan otomatisasi yang kuat.
Beberapa hal yang perlu diketahui dari masa depan Python 2 dalam pemakaian waktu jangka panjang adalah:
- Python 2 memiliki periode jangka waktu yang lama dalam tahap pemeliharaan, namun pengembang inti tetap menerima pembaruan keamanan dan bug lainnya. Setidaknya hingga tahun 2020 (10 tahun rilis lebih awal, dibandingkan periode sebelumnya).
- Pustaka Python 2, penggunaannya lebih efektif (baik secara langsung maupun melalui redistributor). Selain hal itu, pihak ketiga yang tersedia termasuk backport modul baru dan fitur dari pustaka Python 3 yang kompatibel dengan Python 2, dapat membuatnya lebih mudah untuk bermigrasi ke Python 3. Panduan tentang cara menggunakannya ada di dalam situs Python.
- Python 2 sekarang memiliki peningkatan paket baru pada Indeks Paket Python, peningkatan ini tidak selalu bekerja dalam semua kasus, terutama yang terkait dalam keamanan jaringan. Pada kasus yang luar biasa, tidak dapat ditangani atau diperbarui pada PyPi. Setiap penambahan dan rilis pemeliharaan dimana mereka ditambahkan, akan dicatat pada bagian dokumentasi pemeliharaan Python 2.
Dalam migrasi dari Python 2 ke Python 3 untuk hal pustaka dan pengembangan kerangka yang ingin mendukung pengguna di Python 2 dan Python 3, ada berbagai alat dan panduan yang tersedia untuk membantu memutuskan pendekatan yang sesuai dan mengelola beberapa rincian teknis yang terlibat.
Kemudian hal yang perlu diketahui dari Python 3 dalam penggunaan. Pustaka yang dimiliki Python 3 memiliki banyak hal yang berbeda dari Python 3, pemeliharaan yang dimiliki Python 3 untuk waktu jangka panjang memiliki tingkat kemajuan yang cepat. Kemudian, dari tahap pengembangan Python 3 yang sudah dikeluarkan yaitu Python 3.7.7 untuk pemakaian pustaka dan fitur terbaru. Beberapa fitur yang telah dikeluarkan adalah:
Pada bagian Secuity
- bpo-38576: Melarang karakter kontrol pada nama host di http.client, dengan alamat CVE-2019-18348. URL injeksi yang berpotensi berbahaya lalu menyebabkan InvalidURL ditingkatkan.
- bpo-39503: CVE-2020-8492: Kelas AbstractBasicAuthHandler dari modul urllib.request menggunakan ekspresi reguler yang tidak efisien yang dapat dieksploitasi oleh penyerang untuk menyebabkan penolakan layanan. Perbaiki regex untuk mencegah kemunduran bencana. Kerentanan dilaporkan oleh Ben Caller dan Matt Schwager.
Pada bagian Core and Built in
- bpo-20526: Perbaiki PyThreadState_Clear (). PyThreadState.frame adalah referensi yang dipinjam, bukan referensi yang kuat: PyThreadState_Clear () tidak boleh memanggil Py_CLEAR (tstate-> frame).
- bpo-38894: Perbaiki bug yang menyebabkan hasil yang tidak lengkap saat memanggil pathlib.Path.glob di hadapan symlink yang mengarah ke file di mana pengguna tidak memiliki akses baca. Patch oleh Pablo Galindo dan Matt Wozniski.
- bpo-39871: Perbaiki SystemError yang mungkin dalam matematika. {atan2, copysign, sisanya} () ketika argumen pertama tidak dapat dikonversi ke float. Patch oleh Zachary Spytz.
Pada bagian Pustaka
- bpo-40196: Perbaiki bug di modul symtable yang menyebabkan salah melaporkan variabel global sebagai lokal. Tambalan oleh Pablo Galindo.
- bpo-39503: AbstractBasicAuthHandler dari urllib.request sekarang mem-parsing semua header HTTP WWW-Authenticate dan menerima beberapa tantangan per header: gunakan bidang tantangan Dasar pertama.
- bpo-40014: Perbaiki fungsi os.getgrouplist (): jika getgrouplist () gagal karena daftar grup terlalu kecil, coba lagi dengan daftar grup yang lebih besar. Pada kegagalan, implementasi glibc dari getgrouplist () menetapkan ngroup ke jumlah total grup. Untuk implementasi lainnya, gandakan ukuran daftar grup.