Polars 2.0 dirilis pada 6 Oktober 2026 dan menjadikan streaming engine sebagai mesin default untuk lazy query, sekaligus menambahkan kemampuan spill ke disk untuk query yang tidak muat di memori. Rilis ini juga mengangkat SQL menjadi antarmuka kelas satu, dengan streaming engine sebagai default untuk eksekusi SQL. Bagi pengguna yang memproses data lebih besar dari RAM, ini salah satu perubahan terbesar sejak Polars muncul sebagai alternatif pandas.
TL;DR
- Polars 2.0 dirilis 6 Oktober 2026 oleh Ritchie Vink, setelah rilis kandidat pada 2 September 2026.
LazyFrame.collecttetap memakaiengine="auto", tetapi auto kini mengarah ke streaming engine untuk lazy query.- Out-of-core spilling aktif untuk sorting, window function, dan banyak ekspresi; join dan group-by masih in-memory.
- SQL jadi antarmuka kelas satu dengan streaming engine sebagai default eksekusi.
- Ada perubahan yang bersifat breaking, terutama pada perilaku collect dan penanganan selector.
Apa yang berubah di Polars 2.0?
Perubahan terbesar ada di mesin eksekusi. Sebelumnya, LazyFrame.collect dan collect_async memakai nilai default engine="auto" yang mengarah ke in-memory engine. Di Polars 2.0, nilai auto yang sama kini mengarah ke streaming engine untuk lazy query. Artinya, kode yang tidak menyebut mesin secara eksplisit akan otomatis memakai streaming, tanpa perubahan API. Penjelasan resminya ada di post rilis Polars 2.0.
Perubahan kedua adalah kemampuan spill ke disk alias out-of-core. Cakupan awalnya meliputi sorting, window function, dan banyak ekspresi, sehingga operasi yang datanya tidak muat di memori bisa menulis ke disk alih-alih gagal. Menurut catatan rilis, join dan group-by masih berjalan di memori pada versi ini, jadi bukan berarti semua operasi sudah bisa melebihi RAM. Perilaku eager DataFrame sendiri tidak berubah default-nya, sehingga kode yang memakai eager API tetap merasakan efek yang lebih kecil.
Perubahan ketiga menyangkut SQL. Polars 2.0 mengangkat SQL menjadi antarmuka kelas satu, dengan streaming engine sebagai mesin default untuk eksekusi SQL. Sebelumnya, kandidat rilis 2.0 sudah menetapkan mesin default SQL ke streaming engine. Bagi tim yang memakai Polars lewat SQL, artinya query yang sama kini dieksekusi dengan jalur streaming yang lebih hemat memori, tanpa perlu menulis ulang query ke API DataFrame.
Apa itu out-of-core spilling dan kapan berguna?
Out-of-core spilling adalah kemampuan memindahkan sebagian data sementara ke disk ketika operasi tidak muat di memori. Di Polars 2.0, fitur ini aktif untuk sorting, window function, dan sejumlah ekspresi. Gunanya paling terasa ketika kamu mengerjakan dataset yang lebih besar dari RAM mesin, misalnya file Parquet berukuran puluhan gigabyte yang tetap ingin diolah di laptop atau server kecil.
Ada batasnya: join dan group-by masih in-memory, jadi dua operasi yang justru paling sering dipakai untuk data besar belum sepenuhnya out-of-core. Kalau alur kerjamu didominasi join, kamu tetap perlu memastikan hasil gabungannya muat di memori. Namun untuk pipeline yang banyak melakukan sorting dan transformasi kolom, spilling ke disk bisa menyelamatkan pekerjaan yang sebelumnya berakhir dengan kehabisan memori, sehingga tidak perlu langsung pindah ke mesin terdistribusi.
Pendekatan ini melengkapi streaming engine. Streaming engine memproses data secara bertahap agar tidak semua muat sekaligus, sedangkan spilling menangani tahap yang tetap butuh buffer besar. Kombinasi keduanya adalah alasan Polars menyebut 2.0 sebagai rilis untuk era baru DataFrame, karena keduanya menyasar keterbatasan memori dari dua sisi yang berbeda.
Apakah Polars 2.0 membawa perubahan yang breaking?
Ya. Karena default mesin berubah, ada perilaku yang bergeser bagi kode yang mengandalkan mesin lama. Selain itu, panduan upgrade menyebut sejumlah perubahan breaking lain, termasuk penanganan selector dan API hash. Tabel berikut merangkum pergeseran utama dari 1.x ke 2.0 berdasarkan panduan upgrade resmi.
| Aspek | Polars 1.x | Polars 2.0 |
|---|---|---|
| Default lazy query | In-memory engine | Streaming engine |
| Out-of-core spilling | Tidak ada | Sorting, window, banyak ekspresi |
| Join dan group-by | In-memory | Masih in-memory |
| Default mesin SQL | In-memory | Streaming engine |
| API hash | Multi-seed | API seed tunggal |
Karena perubahan ini menyentuh perilaku default, proyek menyarankan membaca panduan upgrade versi 2.0 sebelum menaikkan versi di produksi. Untuk kode yang sudah menyebut mesin secara eksplisit, dampaknya lebih kecil karena perilakunya tidak lagi bergantung pada nilai default yang berubah.
Apa bedanya streaming engine dan in-memory engine?
In-memory engine memuat seluruh data yang dibutuhkan sebuah query ke memori, lalu mengeksekusinya. Pendekatan ini cepat untuk data yang muat, tetapi gagal begitu ukurannya melebihi RAM. Streaming engine memproses data dalam potongan, sehingga hanya sebagian kecil yang berada di memori pada satu waktu. Konsekuensinya, query bisa berjalan pada dataset yang lebih besar dengan jejak memori lebih kecil, meski kadang ada biaya tambahan dari pengelolaan potongan data.
Sebelum Polars 2.0, streaming engine sudah ada tetapi bukan default untuk lazy query. Nilai engine="auto" memilih in-memory engine, jadi pengguna harus mengaktifkan streaming secara manual. Kini auto mengarah ke streaming, yang berarti perilaku default berubah untuk semua kode yang tidak menyebut mesin secara eksplisit. Bagi yang ingin perilaku lama, mesin bisa disebut secara eksplisit di pemanggilan collect.
Karena streaming engine kini jadi jalur utama, proyek juga menyesuaikan beberapa bagian lain agar konsisten dengannya, termasuk default untuk SQL. Ini menjelaskan kenapa panduan upgrade menekankan pengujian ulang, sebab jalur eksekusi yang dipakai kode kamu bisa berbeda dari sebelumnya tanpa satu baris pun diubah.
Bagaimana cara upgrade ke Polars 2.0?
Untuk Python, langkah paling sederhana adalah memperbarui paket ke versi 2.0.0. Sebelum menaikkan versi, jalankan test suite kamu dengan streaming engine aktif, karena kode yang bergantung pada urutan eksekusi in-memory bisa berubah hasilnya. Kandidat rilisnya sendiri sudah tersedia sejak 2 September 2026 lewat rilis Python Polars 2.0.0-rc.1 di GitHub, sehingga kamu bisa menguji lebih awal sebelum versi final.
Kalau kamu memakai Rust, perbarui dependensi polars ke versi 2.0 dan perhatikan perubahan API hash serta selector. Untuk proyek yang memakai SQL, uji ulang query karena default mesinnya kini streaming. Saran praktisnya: kunci dulu versi di lingkungan staging, bandingkan output antara 1.x dan 2.0 pada dataset nyata, baru naikkan di produksi setelah hasilnya cocok.
Proyek juga menyediakan panduan upgrade yang memetakan perubahan satu per satu, termasuk daftar perubahan breaking. Membaca panduan itu lebih hemat waktu daripada menemukan sendiri setiap pergeseran perilaku lewat kegagalan di produksi, terutama untuk basis kode besar yang bergantung pada default lama.
Apakah Polars 2.0 tetap cepat dibanding versi sebelumnya?
Rilis ini tidak menjanjikan lompatan kecepatan mentah; fokusnya pada skala dan konsumsi memori. Dengan streaming engine menjadi default, banyak query lazy bisa berjalan dengan jejak memori lebih kecil karena data diproses bertahap. Untuk dataset yang sebelumnya memaksa in-memory engine bekerja keras, efeknya bisa berupa kemampuan menyelesaikan query yang tadinya gagal, bukan sekadar waktu eksekusi yang lebih singkat.
Ada juga perubahan di sisi API hash: proyek mengganti API multi-seed dengan API seed tunggal. Perubahan seperti ini biasanya menyentuh konsistensi hasil di berbagai jalur, bukan throughput. Karena itu, saat mengukur dampak upgrade, bandingkan waktu dan puncak pemakaian memori pada beban kerja nyata, bukan pada mikrobenchmark yang tidak mewakili alur kerjamu.
Untuk siapa Polars 2.0 paling relevan?
Rilis ini paling relevan untuk tim data yang mengerjakan dataset lebih besar dari memori. Kalau kamu memakai Polars untuk menggantikan pandas pada file yang mulai berat, kombinasi streaming default dan out-of-core spilling memberi ruang lebih besar sebelum harus pindah ke kluster terdistribusi. Untuk pengguna SQL, dukungan SQL kelas satu membuat Polars lebih mudah dipakai bersama tim analis yang lebih nyaman menulis query ketimbang API DataFrame.
Bagi pengguna yang hanya mengolah data kecil dan cepat, perubahan default ini tetap perlu diperhatikan karena perilakunya bergeser, tetapi manfaat praktisnya lebih sedikit terasa. Yang penting, uji dulu di lingkungan sendiri karena 2.0 adalah rilis mayor dengan sejumlah perubahan breaking yang menyentuh perilaku default.
Apa risiko mengaktifkan spilling ke disk?
Menulis ke disk jauh lebih lambat daripada mengakses memori, jadi out-of-core spilling bukan jalan pintas gratis. Manfaatnya adalah menyelesaikan pekerjaan yang tadinya gagal, bukan mempercepat pekerjaan yang sudah muat di memori. Kalau data kamu pas-pasan, streaming engine biasanya sudah cukup, dan spilling baru terasa berguna ketika ukurannya benar-benar melewati kapasitas RAM. Karena itu, ukur dulu apakah query kamu memang butuh melebihi memori sebelum mengandalkan fitur ini.
Praktik yang aman: gunakan penyimpanan cepat untuk area spill bila tersedia, pantau pemakaian disk selama query berat, dan bandingkan hasil sebelum serta sesudah upgrade. Kombinasi streaming default dan spilling membuat Polars 2.0 lebih tahan pada dataset besar, tetapi perencanaan kapasitas tetap diperlukan agar query tidak berhenti karena ruang disk penuh di tengah proses.
Bagaimana garis waktu rilis Polars 2.0?
Proyek mengumumkan pre-release pada 2 September 2026, lalu merilis versi final pada 6 Oktober 2026. Jeda sebulan itu dipakai untuk mengumpulkan masukan dari pengguna awal. Bagi tim yang ingin menguji lebih awal, versi kandidat sudah tersedia lewat GitHub, sehingga kamu bisa mulai menyesuaikan kode sebelum versi final keluar dan menghindari kejutan saat upgrade di produksi.
FAQ
Apakah kode Polars saya perlu diubah setelah upgrade ke 2.0?
Belum tentu. Kalau kamu tidak menyebut mesin secara eksplisit, default akan bergeser ke streaming engine sehingga hasil bisa berbeda pada kasus tertentu. Baca panduan upgrade resmi dan jalankan test suite pada dataset nyata sebelum naik versi di produksi.
Apakah semua operasi Polars 2.0 sudah bisa melebihi RAM?
Belum. Out-of-core spilling pada rilis ini mencakup sorting, window function, dan banyak ekspresi, sedangkan join dan group-by masih berjalan di memori. Untuk alur kerja yang didominasi join, pastikan hasil gabungannya tetap muat di memori.
Apa arti streaming engine jadi default bagi performa?
Umumnya jejak memori lebih kecil karena data diproses bertahap, dan sebagian query yang tadinya gagal bisa selesai. Namun ini bukan jaminan waktu eksekusi selalu lebih cepat, jadi ukur pada beban kerja nyata alih-alih mengandalkan asumsi.
Apakah SQL di Polars sudah stabil di versi 2.0?
SQL diangkat menjadi antarmuka kelas satu dan mesin defaultnya kini streaming engine. Karena itu, query SQL perlu diuji ulang setelah upgrade, terutama yang sebelumnya bergantung pada perilaku mesin in-memory.
Di mana saya bisa membaca perubahan lengkapnya?
Post rilis resmi di situs Polars dan panduan upgrade versi 2.0 memuat daftar fitur serta perubahan breaking. Untuk detail teknis per commit, halaman rilis di GitHub menyediakan catatan tiap versi kandidat dan versi final.
💬 Komentar (0)
Belum ada komentar. Jadilah yang pertama! 💬