Python 3.11 hadir dengan peningkatan kinerja, desain ulang caching, dan banyak lagi

Ular sanca

Python adalah bahasa pemrograman yang ditafsirkan tingkat tinggi yang filosofinya menekankan keterbacaan kodenya.

Setelah setahun pengembangan, versi baru bahasa pemrograman Python, 3.11 , telah dirilis. Cabang baru ini akan didukung selama satu setengah tahun, setelah itu tambalan akan dirilis selama tiga setengah tahun lagi untuk mengatasi kerentanan.

Pada saat yang sama, pengujian alpha untuk cabang Python 3.12 dimulai (menurut jadwal pengembangan baru, pengerjaan cabang baru dimulai lima bulan sebelum rilis cabang sebelumnya dan mencapai tahap pengujian alpha pada saat versi berikutnya dirilis).

Cabang Python 3.12 akan berada dalam rilis alfa selama tujuh bulan, di mana fitur baru akan ditambahkan dan bug diperbaiki. Setelah itu, pengujian beta akan berlangsung selama tiga bulan, di mana penambahan fitur baru akan dilarang dan perhatian penuh akan diberikan pada perbaikan bug. Dua bulan terakhir sebelum peluncuran, cabang akan berada pada tahap kandidat peluncuran, di mana stabilisasi akhir akan dilakukan.

Fitur baru utama dari Python 3.11

Versi baru ini mencakup pekerjaan signifikan untuk mengoptimalkan kinerja . Cabang baru ini menggabungkan perubahan terkait akselerasi dan penerapan panggilan fungsi secara langsung , penggunaan interpreter cepat untuk operasi umum, dan optimasi yang dikembangkan oleh proyek Cinder dan HotPy. Tergantung pada beban kerja, kecepatan eksekusi kode meningkat antara 10% dan 60%. Rata-rata, kinerja pada rangkaian pengujian pyperformance meningkat sebesar 25%.

Mekanisme caching bytecode telah didesain ulang , mengurangi waktu startup interpreter sebesar 10-15%. Objek yang berisi bytecode sekarang dialokasikan secara statis oleh interpreter, menghilangkan langkah-langkah decoding bytecode yang diambil dari cache dan konversi objek yang berisi bytecode untuk penempatan dinamis di memori.

Dukungan untuk grup pengecualian telah ditambahkan , memberikan program kemampuan untuk menghasilkan dan memproses beberapa pengecualian berbeda secara bersamaan. Tipe pengecualian baru, ExceptionGroup dan BaseExceptionGroup, diusulkan untuk mengelompokkan dan menggabungkan beberapa pengecualian, dan ekspresi "except*" telah ditambahkan untuk memisahkan pengecualian dalam satu grup.

Tipe LiteralString khusus telah ditambahkan yang hanya dapat menyertakan string literal yang kompatibel dengan tipe LiteralString (yaitu, string polos dan string bertipe LiteralString, tetapi bukan string sembarang atau gabungan bertipe str). Tipe LiteralString dapat digunakan untuk membatasi penerusan argumen string ke fungsi, mencegah substitusi sembarangan bagian-bagian string di mana kerentanan dapat muncul, misalnya, saat menghasilkan string untuk kueri SQL atau perintah shell.

Selain itu, kemampuan untuk menandai elemen individual dari kamus bertipe (TypedDict) dengan tanda Wajib dan Tidak Wajib juga disediakan untuk menentukan bidang yang wajib dan opsional (secara default, semua bidang yang dideklarasikan wajib jika parameter total tidak diatur ke False).

Dekorator kelas, metode, dan fungsi @dataclass_transform telah ditambahkan ; jika ditentukan, pemeriksa tipe statis memperlakukan objek seolah-olah menggunakan dekorator @dataclasses.dataclass.

Dari perubahan lain yang menonjol di versi baru ini:

  • Menambahkan kemampuan untuk menggunakan pengelompokan atom ((?>…)) dan quantifier cemburu (posesif) (*+, ++, ?+, {m,n}+) dalam ekspresi reguler.
  • Tipe TypeVarTuple telah ditambahkan, yang memungkinkan penggunaan generik variabel, tidak seperti TypeVar, yang tidak mencakup satu jenis, tetapi sejumlah jenis yang berubah-ubah.
  • Pustaka standar menyertakan modul tomllib dengan fungsi untuk mengurai format TOML.
  • Metode add_note() telah ditambahkan ke kelas BaseException, yang memungkinkan catatan teks dilampirkan ke pengecualian, misalnya untuk menambahkan informasi kontekstual yang tidak tersedia pada saat pengecualian dilemparkan.
  • Tipe khusus Self telah ditambahkan untuk mewakili kelas privat saat ini. Self dapat digunakan untuk membubuhi keterangan metode yang mengembalikan instance kelas Anda dengan cara yang lebih sederhana daripada menggunakan TypeVar.
  • Menambahkan opsi baris perintah "-P" dan variabel lingkungan PYTHONSAFEPATH untuk menonaktifkan koneksi otomatis jalur file yang berpotensi tidak aman ke sys.path.
  • Utilitas py.exe untuk platform Windows telah ditingkatkan secara signifikan untuk mendukung sintaks "-V:". / " sebagai tambahannya "- . ».
  • Banyak makro C API telah dikonversi ke fungsi inline reguler atau statis
  • Modul uu, cgi, pipa, crypt, aifc, chunk, msilib, telnetlib, audioop, nis, sndhdr, imghdr, nntplib, spwd, xdrlib, cgitb, mailcap, ossaudiodev, dan sunau telah ditinggalkan dan akan dihapus dari Python. 3.13 rilis.
  • Menghapus fungsi PyUnicode_Encode*.
  • Kelas TaskGroup ditambahkan ke modul asyncio dengan implementasi manajer konteks asinkron yang menunggu grup tugas selesai.
  • Menambahkan tugas ke grup dilakukan dengan menggunakan metode create_task().

Terakhir, jika Anda tertarik untuk mempelajari lebih lanjut tentang hal ini , Anda dapat menemukan detailnya di tautan berikut.


Tambahkan sebagai sumber pilihan di Google