Sebuah penampil pohon direktori berbasis Rust yang disebut Istr telah memicu diskusi sengit di komunitas developer, bukan hanya karena fitur-fiturnya yang mengesankan, tetapi karena kekhawatiran yang sudah familiar yang menghantui banyak aplikasi Rust modern: pembengkakan ukuran binary.
Istr memposisikan dirinya sebagai alternatif yang sangat cepat untuk perintah Unix klasik tree
, menawarkan output command-line tradisional dan antarmuka pengguna terminal interaktif. Tool ini memanfaatkan pemindaian direktori paralel dan mencakup fitur-fitur modern seperti integrasi Git, ikon file, dan kemampuan pencarian fuzzy. Namun, perhatian komunitas dengan cepat beralih dari memuji fungsionalitasnya ke mempertanyakan jejak sumber dayanya.
Fitur Utama Istr
- Pemindaian direktori paralel menggunakan thread pool Rayon
- Mode TUI interaktif dengan navigasi keyboard
- Integrasi status Git (flag -G)
- Dukungan ikon file (memerlukan Nerd Font)
- Menghormati file Gitignore (flag -g)
- Opsi tampilan izin file dan ukuran
- Integrasi pencarian fuzzy dengan fzf
Ukuran Binary Menjadi Topik Pembicaraan Utama
Isu paling kontroversial muncul ketika pengguna menemukan bahwa binary Istr yang dikompilasi memiliki bobot 4,3MB dalam mode release, dibandingkan dengan jejak ramping perintah tree
tradisional yang hanya 80KB. Ini merepresentasikan perbedaan ukuran sekitar 50x untuk apa yang dianggap banyak orang sebagai fungsionalitas inti yang serupa. Disparitas ini menjadi lebih mencolok ketika dibandingkan dengan seluruh program shell seperti dash (144KB) atau mksh (292KB).
Anggota komunitas tidak menahan kritik mereka. Seorang developer dengan blak-blakan menyatakan bahwa 4,3MB itu sangat besar untuk apa yang dilakukannya dan mempertanyakan dari mana semua pembengkakan itu berasal. Kekhawatiran tentang ukuran ini beresonansi dengan frustrasi yang lebih luas tentang software modern yang menjadi semakin berat sumber daya, dengan beberapa pengguna melaporkan bahwa pembengkakan aplikasi memaksa mereka untuk meng-upgrade storage perangkat mereka lebih sering.
Perbandingan Ukuran Binary
- Istr (debug build): 53MB
- Istr (release build): 4.3MB
- Istr (optimized): 2.2MB
- Perintah tree tradisional: 80KB
- Rasio ukuran: ~50x lebih besar dari tree (mode release)
Upaya Optimisasi Menunjukkan Harapan
Meskipun ada kritik, diskusi tersebut mengungkapkan bahwa pengurangan ukuran yang signifikan dimungkinkan melalui berbagai optimisasi kompilasi. Developer Rust berpengalaman mendemonstrasikan bahwa binary dapat dikompres menjadi sekitar 2,2MB menggunakan pengaturan compiler yang agresif, termasuk optimisasi link-time, stripping simbol, dan flag kompilasi yang berfokus pada ukuran.
Perdebatan ini menyoroti trade-off yang menarik dalam pengembangan software modern. Sementara ukuran Istr yang lebih besar berasal dari set fitur yang kaya termasuk pemrosesan paralel berthread, komponen GUI interaktif, dan integrasi repositori Git, para kritikus berargumen bahwa penambahan ini tidak membenarkan peningkatan ukuran yang dramatis dibanding alternatif tradisional.
Pengaturan Optimasi Kompilasi Rust
[profile.release]
codegen-units = 1
opt-level = "s"
lto = true
panic = "abort"
strip = "symbols"
Pengaturan ini dapat mengurangi ukuran biner dari 4,3MB menjadi sekitar 2,3MB.
Merit Teknis Versus Efisiensi Sumber Daya
Di luar perdebatan ukuran, pengguna mengakui pencapaian teknis Istr. Kemampuan parallel directory walking tool ini dan antarmuka interaktif yang dipoles mendapat pujian dari developer yang menghargai pendekatan modernnya terhadap navigasi sistem file. Integrasi dengan fuzzy finder seperti fzf
dan kemampuan untuk menggunakannya sebagai pengubah direktori visual sangat mengesankan para power user.
Binary ini juga berukuran 53M sebagai hasilnya sedangkan /usr/sbin/tree adalah 80K di mesin saya -- bukan masalah besar pada storage hari ini, tetapi perbedaan ukuran sekitar 500-1000x bukanlah hal yang sepele.
Penulis, yang sedang mengerjakan paket Rust pertamanya, menyatakan apresiasi atas feedback komunitas dan mengakui kekhawatiran tentang ukuran binary. Respons ini mencerminkan kurva pembelajaran umum bagi developer yang beralih ke Rust, di mana dependensi ekosistem yang kaya dan static linking dapat menyebabkan binary yang tidak terduga besar tanpa optimisasi yang hati-hati.
Ukuran Binary Shell untuk Referensi
- bash: 1,236KB
- dash: 144KB
- mksh: 292KB
- zsh: 848KB
- busybox-static: 1,936KB (termasuk berbagai tools)
Kesimpulan
Kontroversi Istr merangkum ketegangan yang lebih luas dalam pengembangan software modern antara kekayaan fitur dan efisiensi sumber daya. Sementara tool ini mendemonstrasikan kemampuan teknis yang mengesankan dan merepresentasikan pekerjaan engineering yang solid, fokus komunitas pada ukuran binary mencerminkan kekhawatiran yang berkembang tentang pembengkakan software di era hardware yang semakin powerful. Diskusi ini berfungsi sebagai pengingat berharga bahwa bahkan di tahun 2025, developer harus menyeimbangkan fungsionalitas dengan kesadaran sumber daya, terutama ketika membuat alternatif untuk tool yang sudah mapan dan ringan.
Referensi: Istr