Pengembang Memperdebatkan Persyaratan Runtime Async dalam Framework REPL Rust Baru Shelgon

BigGo Editorial Team
Pengembang Memperdebatkan Persyaratan Runtime Async dalam Framework REPL Rust Baru Shelgon

Ekosistem Rust telah menyambut framework baru bernama Shelgon, yang dirancang untuk membangun aplikasi REPL (Read-Eval-Print Loop) interaktif dan shell kustom. Meskipun framework ini menawarkan fitur menjanjikan seperti eksekusi perintah yang type-safe dan kemampuan UI terminal yang kaya, diskusi komunitas dengan cepat berpusat pada pilihan arsitektur—khususnya seputar implementasi runtime async dan pendekatan penanganan errornya.

Fitur Utama Framework Shelgon

  • Eksekusi Perintah dengan Keamanan Tipe
  • Integrasi Runtime Asinkron (saat ini berbasis Tokio)
  • Kemampuan TUI yang didukung oleh ratatui
  • Penanganan Input yang Kaya termasuk:
    • Riwayat perintah
    • Pergerakan kursor
    • Pelengkapan tab
    • Penanganan Ctrl+C/Ctrl+D
  • Dukungan Konteks Kustom
  • Dukungan STDIN untuk input multi-baris

Ketergantungan Runtime Async Memicu Perdebatan

Keputusan framework ini untuk menggunakan Tokio sebagai runtime async-nya telah menghasilkan diskusi signifikan di antara calon pengguna. Beberapa pengembang mempertanyakan mengapa fungsionalitas async menjadi persyaratan inti daripada fitur opsional. Salah satu komentar yang sangat berwawasan menyoroti kekhawatiran tentang memaksa pengguna untuk mengadopsi runtime tertentu:

Mengapa saya harus menambahkan Tokio sebagai dependensi jika saya tidak menggunakannya?

Sentimen ini mencerminkan preferensi yang lebih luas dalam komunitas Rust untuk pustaka yang tetap agnostik terhadap runtime atau menyediakan alternatif sinkron. Pencipta framework, yang diidentifikasi dalam komentar sebagai cat-whisperer, mengakui kekhawatiran ini, menjelaskan bahwa implementasi saat ini memungkinkan pengguna untuk memblokir atau menjadwalkan operasi dengan memasukkan runtime, memberikan pengembang kontrol atas konkurensi. Mereka juga menyebutkan kemungkinan menjadikan dukungan async sebagai fitur opt-in di versi mendatang.

Pendekatan Penanganan Error Dipertanyakan

Poin perdebatan lainnya adalah penggunaan crate anyhow oleh Shelgon untuk penanganan error dalam API publiknya. Beberapa pengembang menyarankan bahwa pustaka sebaiknya mendefinisikan tipe error mereka sendiri atau menggunakan thiserror daripada mengandalkan anyhow, yang umumnya dianggap lebih tepat untuk kode aplikasi daripada pustaka. Pencipta merespons bahwa meskipun mereka berencana untuk mengimplementasikan thiserror dan error-stack dalam pembaruan mendatang, mereka memilih anyhow pada awalnya karena menyediakan antarmuka yang lebih sederhana yang memungkinkan pengguna untuk fokus pada logika domain daripada penanganan error.

Demonstrasi Visual Diminta

Meskipun Shelgon mengiklankan kemampuan TUI yang indah yang didukung oleh crate ratatui, beberapa komentator mencatat tidak adanya tangkapan layar atau video yang mendemonstrasikan fitur-fitur ini. Beberapa pengguna meminta contoh visual, dengan saran untuk menggunakan alat seperti asciinema untuk memamerkan kemampuan antarmuka framework. Umpan balik ini menyoroti pentingnya demonstrasi visual saat mempromosikan pustaka yang berfokus pada UI.

Kekhawatiran Komunitas

  • Runtime Asinkron: Ketergantungan wajib pada Tokio dipertanyakan
  • Penanganan Kesalahan: Penggunaan anyhow alih-alih tipe kesalahan khusus perpustakaan
  • Dokumentasi: Kurangnya contoh visual meskipun berfokus pada UI
  • Penamaan: Beberapa kekhawatiran tentang penggunaan nama Pokémon (Shelgon)

Perbandingan dengan Solusi yang Ada

Diskusi juga menyinggung bagaimana Shelgon dibandingkan dengan alternatif yang sudah mapan dalam ekosistem Rust, seperti rustyline dan reedline. Pencipta mengakui dukungan rustyline yang luas untuk interaksi pengguna tetapi menjelaskan bahwa Shelgon bertujuan untuk menyediakan abstraksi yang lebih ketat namun kuat melalui pendekatan berbasis trait-nya, menawarkan kontrol yang tepat atas aspek shell sambil mempertahankan kemampuan berbagi status.

Saat Shelgon terus berkembang, penciptanya tampak menerima umpan balik komunitas, menunjukkan keterbukaan terhadap kontribusi dan menunjukkan bahwa framework ini masih dalam pengembangan aktif. Bagi pengembang yang tertarik untuk membangun lingkungan REPL kustom di Rust, Shelgon mewakili opsi baru yang menarik, meskipun pilihan arsitekturnya dapat memengaruhi adopsi tergantung pada bagaimana mereka selaras dengan persyaratan proyek yang berbeda.

Referensi: Shelgon: A Rust Framework for Building Interactive REPL Applications