Ruff 0.17.4 dirilis 5 November 2026, sembilan hari setelah 0.17.3 yang keluar 27 Oktober 2026, dan berisi dua aturan preview baru, empat perbaikan bug, serta sembilan butir optimasi performa menurut catatan rilis resmi. Tidak ada perubahan besar pada antarmuka: sebagian besar pekerjaan ada di mesin lint dan formatter, termasuk perbaikan panic saat membaca berkas berawalan BOM dan penggunaan Bloom filter untuk pencarian komentar formatter.
TL;DR
- Ruff 0.17.4 keluar 5 November 2026, menggantikan 0.17.3 yang terbit 27 Oktober 2026.
- Dua aturan preview baru: perbaikan
G004yang lebih aman, dan aturan keamanantarfile-ignore-zeros-true. - Perbaikan penting: panic pada berkas berawalan BOM di renderer diagnostik sudah hilang.
- Sembilan butir performa, termasuk Bloom filter untuk pencarian komentar dan buffer konkret untuk penulisan biasa.
- Perubahan CLI kecil:
NO_COLORkini diprioritaskan danCLICOLOR=0dihormati.
Kenapa rilis kecil seperti 0.17.4 tetap layak dipasang?
Karena nilai utama rilis ini ada di stabilitas, bukan fitur. Dua dari empat perbaikan bug menyentuh hal yang bisa menghentikan proses: panic pada berkas berawalan BOM dan kesalahan parsing pada raise polos sebelum titik koma. Kalau pipeline lint Anda berjalan di banyak repositori, satu berkas yang memicu panic bisa membuat job gagal total, bukan sekadar melaporkan satu temuan.
Perbaikan BOM itu masuk lewat pull request 30017 dan terjadi di renderer diagnostik. Artinya masalahnya bukan pada parsing, melainkan pada tahap menampilkan hasil, dan itulah jenis bug yang paling menjengkelkan karena muncul setelah lint selesai bekerja. Untuk repositori yang menyimpan berkas hasil ekspor dari alat lain, kemungkinan bertemu BOM cukup besar, jadi perbaikan ini praktis.
Perbaikan berikutnya menyangkut sintaks. raise polos sebelum titik koma kini diterima, dan pengenal match boleh muncul setelah titik koma. Keduanya terlihat sepele, tetapi berkas hasil generate yang memadatkan beberapa pernyataan dalam satu baris adalah tempat bug semacam ini biasanya bersembunyi. Kalau repositori Anda punya kode hasil generator, jalankan versi ini pada seluruh isinya, bukan hanya pada kode yang ditulis tangan.
Apa yang masuk jalur preview di versi ini?
Ada dua butir di bagian preview features. Yang pertama menyentuh aturan G004 dari kelompok flake8-logging-format: perbaikannya diubah agar tidak mengubah perilaku dan tidak menghasilkan kesalahan sintaks. Ini penting karena autofix yang salah bisa merusak kode yang sebenarnya benar, dan kerusakan seperti itu sering lolos karena orang percaya pada hasil fix otomatis.
Butir kedua menambahkan aturan keamanan tarfile-ignore-zeros-true. Namanya cukup jelas: aturan ini menyasar pemakaian ekstraksi arsip tar dengan opsi yang mengabaikan penanda akhir. Kelompok aturan keamanan memang tempat Ruff menaruh pemeriksaan untuk pola berisiko, dan penambahan ini masuk jalur preview lebih dulu sebelum dianggap stabil.
| Kategori | Isi di 0.17.4 | Dampak ke pipeline |
|---|---|---|
| Preview | Perbaikan G004, aturan tarfile-ignore-zeros-true | Hanya aktif kalau Anda memakai jalur preview |
| Bug fix | Panic BOM, raise sebelum titik koma, match setelah titik koma, SIM102 | Job lint lebih jarang gagal karena crash atau false positive |
| Performa | Sembilan butir, termasuk Bloom filter dan buffer konkret | Waktu lint turun pada repositori besar |
| CLI | NO_COLOR diprioritaskan, CLICOLOR=0 dihormati | Keluaran log CI lebih bersih dan mudah dibaca mesin |
Perlu diingat bahwa aturan di jalur preview bisa berubah lagi di rilis berikutnya. Kalau tim Anda memakai preview, jadwalkan pemeriksaan setiap kali versi baru keluar, karena hasil lint bisa berubah tanpa Anda mengubah konfigurasi apa pun. Sebaliknya, kalau hanya memakai aturan stabil, rilis ini bisa dipasang tanpa mengubah daftar rule sama sekali.
Perbaikan mana yang paling terasa di repositori besar?
Yang paling terasa bukan satu perbaikan tunggal, melainkan kumpulan optimasi di jalur formatter. Ada dua butir yang menyentuh hal yang sama dari dua sisi: pemakaian Bloom filter untuk pencarian komentar formatter, dan pengurangan overhead pemotongan sumber. Keduanya mengurangi pekerjaan yang dilakukan berulang pada setiap berkas, dan itulah pola optimasi yang biasanya berdampak paling besar pada waktu eksekusi keseluruhan.
Butir lain menyentuh analisis: pengumpulan pernyataan return memakai visitor yang lebih sempit, nama terqualifikasi milik fungsi yang dipanggil dipakai ulang lintas aturan, dan perbandingan nilai untuk kunci kamus berulang ditunda pada F601 serta F602. Semua ini adalah penghematan alokasi dan pemindaian, yang efeknya kecil per berkas tetapi menumpuk saat ribuan berkas diproses.
Ada juga satu optimasi yang sangat spesifik: pemeriksaan karakter string tidak valid dilewati kalau sumbernya memang tidak mengandung karakter semacam itu. Pola ini menunjukkan pendekatan yang sehat, yaitu membayar biaya pemeriksaan hanya ketika ada indikasi bahwa pemeriksaan itu perlu. Bagi pengguna, hasilnya sederhana: lint selesai lebih cepat tanpa perubahan konfigurasi.
Bagaimana cara mengukur dampaknya di proyek sendiri?
Ukur waktu lint pada versi lama dan baru di repositori yang sama, dengan cache dibersihkan dan jumlah pekerjaan yang setara. Jangan membandingkan waktu pada repositori berbeda, dan jangan membandingkan run pertama dengan run kedua, karena cache bisa membuat angka kedua terlihat jauh lebih baik tanpa ada perubahan nyata pada perkakasnya.
Langkah minimal yang bisa dijalankan: catat waktu ruff check pada seluruh repositori dengan versi lama, ulangi dengan versi baru, lalu lakukan tiga kali dan pakai nilai tengahnya. Kalau selisihnya kecil, itu wajar, karena optimasi di rilis ini bersifat kumulatif. Yang lebih penting adalah memastikan jumlah temuan tidak berubah, kecuali Anda memang mengaktifkan aturan preview baru.
Untuk formatter, ukur juga pada berkas yang punya banyak komentar, karena di situlah perubahan Bloom filter paling terasa. Kalau hasil format berbeda dari versi lama pada berkas yang sama, jangan langsung menyalahkan versi baru. Cek dulu apakah ada aturan preview yang aktif, karena perbaikan G004 sengaja dibuat agar tidak mengubah perilaku, dan perubahan hasil yang tidak diharapkan biasanya berasal dari konfigurasi.
💬 Komentar (0)
Belum ada komentar. Jadilah yang pertama! 💬