Python 3.15 Dijadwalkan Rilis 1 Oktober, Bawa Lazy Imports dan UTF-8 sebagai Encoding Default
Original:AdminCompileDaily
Selama bertahun-tahun, programmer Python memindahkan import ke dalam fungsi hanya supaya aplikasinya menyala sedetik lebih cepat. Mulai versi 3.15, trik canggung itu cukup diganti dengan satu kata.
Tim rilis CPython menjadwalkan Python 3.15.0 versi final pada Kamis (1/10/2026), sesuai jadwal di PEP 790. Hingga Kamis pagi WIB, halaman unduhan versi final belum muncul di python.org. Rilis terakhir sebelumnya adalah 3.15.0rc2 pada 1 September 2026, yang memuat sekitar 144 perbaikan bug, perbaikan build, dan pembaruan dokumentasi dari 76 kontributor.
Kata Kunci lazy untuk Memangkas Waktu Startup
Perubahan yang paling banyak dibicarakan datang dari PEP 810. Python kini punya soft keyword lazy. Kalau ditulis lazy import json, modul tersebut baru benar-benar dimuat saat pertama kali dipakai. Sebelum itu Python hanya menyimpan objek proksi ringan.
Dampaknya paling terasa untuk aplikasi dan CLI yang mengimpor puluhan modul di awal, padahal dalam satu kali jalan hanya sebagian kecil yang terpakai. Kalau modul gagal dimuat, error muncul di titik pemakaian pertama. Traceback-nya menunjuk ke lokasi akses sekaligus ke baris import aslinya.
Ada batasannya. lazy hanya boleh dipakai di level modul, tidak di dalam fungsi, class, atau blok try/except. Bagi yang ingin mencoba tanpa mengubah kode, tersedia opsi -X lazy_imports dan variabel lingkungan PYTHON_LAZY_IMPORTS. Fitur ini dikerjakan Pablo Galindo Salgado dan Dino Viehland.
UTF-8 Kini Jadi Encoding Default
Lewat PEP 686, perintah seperti open('data.txt') tanpa argumen encoding kini otomatis membaca dan menulis dalam UTF-8, apa pun pengaturan locale sistemnya. Perubahan ini paling berpengaruh pada mesin yang locale bawaannya bukan UTF-8, termasuk banyak instalasi Windows.
Kode lama yang diam-diam bergantung pada encoding locale bisa berperilaku berbeda. Perilaku lama tetap bisa dikembalikan dengan PYTHONUTF8=0 atau -X utf8=0. Dokumentasi resmi tetap menyarankan agar argumen encoding selalu ditulis eksplisit.
frozendict Akhirnya Masuk Builtin
Python sudah lama punya frozenset, dan baru di versi ini dictionary mendapat pasangan imutabelnya. PEP 814 menambahkan frozendict sebagai tipe bawaan. Isinya tidak bisa diubah setelah dibuat, dan objeknya bisa di-hash selama semua key dan value-nya juga bisa di-hash. frozendict bukan subclass dict, jadi pengecekan isinstance(x, dict) perlu disesuaikan bila ingin menerima keduanya.
Comprehension juga mendapat sintaks baru lewat PEP 798. Untuk meratakan list bersarang, kini cukup ditulis [*L for L in lists], tanpa comprehension dua lapis atau itertools.chain().
Tachyon, Profiler yang Bisa Menempel ke Proses Berjalan
PEP 799 merapikan alat profiling ke dalam satu paket baru bernama profiling. Di dalamnya ada Tachyon (profiling.sampling), profiler statistik yang mengambil sampel stack hingga 1.000.000 kali per detik.
Keunggulannya ada pada cara kerja. Tachyon bisa langsung dipasang ke proses Python yang sedang berjalan cukup dengan PID-nya, tanpa mengubah kode atau me-restart aplikasi. Hasilnya bisa diekspor sebagai flame graph HTML, heatmap per baris, atau format yang dibaca Firefox Profiler. Modul profile lama resmi berstatus usang dan dijadwalkan dihapus di Python 3.17. cProfile tetap ada sebagai alias.
Pesan Error yang Paham Kebiasaan Bahasa Lain
Programmer yang berpindah dari JavaScript atau Java akan menemukan pesan error yang lebih membantu. Memanggil [1, 2, 3].push(4) kini menghasilkan saran untuk memakai .append. Menulis 'hello'.toUpperCase() akan diarahkan ke .upper. Python mengambil saran ini dari tabel nama method umum di JavaScript, Java, Ruby, dan C#.
Free-Threading Masih Opsional, GC Inkremental Ditarik
Build tanpa GIL belum menjadi bawaan di 3.15. Fondasinya bertambah lewat PEP 803, yang memperkenalkan Stable ABI khusus build free-threaded (abi3t) untuk pengembang ekstensi C.
Ada juga langkah mundur yang patut dicatat. Garbage collector inkremental yang dibawa Python 3.14.0 hingga 3.14.4 dibatalkan setelah muncul laporan tekanan memori yang signifikan di lingkungan produksi. Python 3.14.5 ke atas dan 3.15 kembali memakai GC generasional dari 3.13.
Yang ditunggu sekarang adalah apakah rilis final benar-benar mendarat hari ini sesuai jadwal, dan seberapa cepat library besar seperti NumPy dan Django merilis wheel resmi untuk 3.15. Kecepatan itu biasanya yang menentukan kapan versi baru benar-benar dipakai di proyek sehari-hari.
Komentar (0)
Masuk untuk menulis komentar.
Belum ada komentar.