5 poin oleh GN⁺ 2023-12-01 | 1 komentar | Bagikan ke WhatsApp

Ringkasan: pengenalan alat pencarian baris perintah baru, ripgrep

  • ripgrep adalah alat pencarian baris perintah baru yang menggabungkan kemudahan penggunaan The Silver Searcher dengan performa GNU grep.
  • Menyediakan biner untuk Linux, Mac, dan Windows serta ditulis dengan Rust.
  • Unggul dalam performa dan akurasi saat mencari pada satu berkas maupun direktori besar.
  • Dukungan Unicode sangat baik, dan umumnya lebih cepat daripada alat yang menggunakan memory map.

Pengenalan ripgrep

Kelebihan

  • Lebih cepat daripada alat pencarian lain, dan tidak mencari dalam berkas yang diabaikan oleh .gitignore.
  • Menyediakan fitur untuk mencari hanya jenis berkas tertentu atau mengecualikannya.
  • Mendukung banyak fitur grep dan selalu mendukung Unicode.
  • Dapat secara opsional menggunakan mesin regular expression PCRE2.
  • Mendukung berbagai encoding teks dan pencarian pada berkas terkompresi.
  • Mendukung filter pra-pemrosesan input yang arbitrer.

Pendapat yang menentang

  • Tidak mematuhi standar POSIX dan tidak seumum grep.
  • Fitur atau bug tertentu yang ada di alat lain mungkin tidak ada di ripgrep.
  • Dalam edge case performa tertentu, ripgrep bisa lebih lambat daripada alat lain.

Instalasi

  • Nama biner ripgrep adalah rg, dan dapat dipasang di berbagai platform.
  • Menyediakan metode instalasi untuk Homebrew, Archlinux, dan programmer Rust.
  • Juga bisa dibangun langsung dari source.

Tur singkat

  • Penggunaan baris perintah ripgrep tidak jauh berbeda dari alat serupa lainnya.
  • Secara otomatis mendukung output terminal, warna, tampilan nomor baris, dan lain-lain.
  • Pencarian dapat dilakukan dengan berbagai opsi dan pola pencarian.

Struktur ripgrep

Latar belakang

  • Menjelaskan perbedaan dan persamaan antara grep dan turunan alat seperti ack.
  • ripgrep menggabungkan kemampuan grep untuk mencari pada berkas besar dengan pengaturan default pencarian "cerdas" dari ack.

Persiapan pencarian berkas

  • Penggunaan iterator direktori yang cepat dan penyaringan path berkas sangat penting.
  • Penerapan cepat aturan dalam berkas .gitignore memengaruhi performa.

Pencarian

  • Mesin regular expression yang cepat dan optimisasi literal sangat penting.
  • Mencari dalam buffer besar sekaligus, bukan per baris atau seluruh berkas sekaligus.

Output

  • Hasil pencarian ditulis ke buffer memori lalu diserialisasi ke stdout untuk ditampilkan.

Metodologi

Gambaran umum

  • Berfokus pada masalah yang ingin diselesaikan pengguna dan berupaya membuat benchmark yang adil.
  • Membandingkan berbagai alat sambil mempertimbangkan perbedaan perilaku default masing-masing alat.

Pendapat GN⁺

Hal terpenting dari tulisan ini adalah bahwa ripgrep menjelaskan secara rinci keunggulannya dibanding alat pencarian yang sudah ada. Khususnya, performa cepat, dukungan Unicode, serta dukungan untuk berbagai format berkas dan encoding dapat menjadi alasan yang menarik bagi pengguna. Tulisan ini menarik karena membantu memahami bagaimana alat baru berbeda dari alat yang sudah ada, dan bagaimana perbedaan itu dapat memengaruhi pengguna secara nyata.

1 komentar

 
GN⁺ 2023-12-01
Komentar Hacker News
  • Kombinasi ripgrep dan fzf sangat cepat, dan disertakan contoh fungsi Powershell yang memanfaatkannya. Fungsi ini mencari dengan ripgrep, lalu melakukan pencarian fuzzy menggunakan fzf, dan menampilkan konteks hasil melalui bat. Metode ini berguna untuk cepat menemukan lokasi konten tertentu di berbagai proyek repositori.
  • Diperkenalkan cara memanfaatkan ripgrep menggunakan paket project.el dan dumb-jump di Emacs. dumb-jump secara otomatis membatasi pencarian ke jenis file saat ini dalam direktori proyek tertentu, dan juga mendukung alat cepat lain bernama ag.
  • Menarik bahwa ripgrep menyediakan fitur pencarian VS Code melalui wrapper Node.js.
  • Pengguna ripgrep menyebut kemudahan penggunaan dan peningkatan kecepatan dibanding grep sebagai alasan utama, terutama karena fitur yang otomatis menerapkan aturan gitignore sangat berguna.
  • Disebutkan bahwa pengganti grep yang diparalelkan seperti ripgrep dan ag jauh lebih cepat daripada grep, sehingga perbedaan kecepatan yang besar bukan lagi tolok ukur utama dan perlu dievaluasi dengan cara lain.
  • Ditunjukkan bahwa pengumuman awal ripgrep terjadi pada 2016, dan disarankan agar tahun dicantumkan di judul.
  • Disebutkan bahwa qgrep menawarkan kecepatan tinggi dengan menggunakan indeks, tetapi ripgrep bisa melambat ketika diperlukan pencocokan multiline UTF8.
  • Dibagikan alur kerja praktis untuk melakukan pengeditan seluruh proyek melalui paket Consult yang menggunakan ripgrep di dalam Emacs.
  • Diberikan informasi bahwa versi ripgrep-all juga bekerja pada tipe dokumen lain seperti file PDF dan doc.
  • Diajukan pertanyaan mengapa grep tidak digantikan atau diperbaiki, sambil menilai bahwa topik ini sudah agak lama.