Ekosistem Rust telah menyambut rangka kerja baharu yang dipanggil Shelgon, direka untuk membina aplikasi REPL (Read-Eval-Print Loop) interaktif dan shell tersuai. Walaupun rangka kerja ini menawarkan ciri-ciri yang menjanjikan seperti pelaksanaan arahan yang selamat dari segi jenis dan keupayaan UI terminal yang kaya, perbincangan komuniti dengan cepat tertumpu pada pilihan seni bina—terutamanya mengenai implementasi runtime async dan pendekatan pengendalian ralat.
Ciri-ciri Utama Rangka Kerja Shelgon
- Pelaksanaan Arahan yang Selamat dari Segi Jenis
- Integrasi Runtime Async (kini berasaskan Tokio)
- Keupayaan TUI dikuasakan oleh ratatui
- Pengendalian Input yang Kaya termasuk:
- Sejarah arahan
- Pergerakan kursor
- Pelengkapan tab
- Pengendalian Ctrl+C/Ctrl+D
- Sokongan Konteks Tersuai
- Sokongan STDIN untuk input berbilang baris
Kebergantungan Runtime Async Mencetuskan Perdebatan
Keputusan rangka kerja ini untuk berganding dengan Tokio sebagai runtime async telah menimbulkan perbincangan yang ketara dalam kalangan pengguna berpotensi. Beberapa pembangun telah mempersoalkan mengapa fungsi async menjadi keperluan teras dan bukannya ciri pilihan. Satu komen yang sangat mendalam menyoroti kebimbangan tentang memaksa pengguna untuk menggunakan runtime tertentu:
Mengapa saya mahu menambah Tokio sebagai kebergantungan jika saya tidak menggunakannya?
Sentimen ini mencerminkan kecenderungan yang lebih luas dalam komuniti Rust untuk perpustakaan yang kekal bebas dari runtime tertentu atau menyediakan alternatif segerak. Pencipta rangka kerja, yang dikenali dalam komen sebagai cat-whisperer, mengakui kebimbangan ini, menjelaskan bahawa implementasi semasa membolehkan pengguna sama ada menyekat atau menjadualkan operasi dengan memasukkan runtime, memberikan pembangun kawalan ke atas keserentakan. Mereka juga menyebut sedang mempertimbangkan untuk menjadikan sokongan async sebagai ciri pilihan dalam versi akan datang.
Pendekatan Pengendalian Ralat Dipersoalkan
Satu lagi perkara yang dipertikaikan adalah penggunaan Shelgon terhadap pakej anyhow
untuk pengendalian ralat dalam API awamnya. Beberapa pembangun mencadangkan bahawa perpustakaan seharusnya menentukan jenis ralat mereka sendiri atau menggunakan thiserror
dan bukannya bergantung pada anyhow
, yang secara umumnya dianggap lebih sesuai untuk kod aplikasi berbanding perpustakaan. Pencipta menjawab bahawa walaupun mereka merancang untuk mengimplementasikan thiserror
dan error-stack
dalam kemas kini akan datang, mereka memilih anyhow
pada awalnya kerana ia menyediakan antara muka yang lebih mudah yang membolehkan pengguna fokus pada logik domain dan bukannya pengendalian ralat.
Demonstrasi Visual Diminta
Walaupun Shelgon mengiklankan keupayaan TUI yang cantik yang dikuasakan oleh pakej ratatui
, beberapa pengomen menyatakan ketiadaan tangkapan skrin atau video yang menunjukkan ciri-ciri ini. Beberapa pengguna meminta contoh visual, dengan cadangan untuk menggunakan alat seperti asciinema untuk mempamerkan keupayaan antara muka rangka kerja. Maklum balas ini menyoroti kepentingan demonstrasi visual ketika mempromosikan perpustakaan yang berfokuskan UI.
Kebimbangan Komuniti
- Runtime Async: Kebergantungan wajib kepada Tokio dipersoalkan
- Pengendalian Ralat: Penggunaan anyhow berbanding jenis ralat khusus untuk perpustakaan
- Dokumentasi: Kekurangan contoh visual walaupun berfokus pada UI
- Penamaan: Beberapa kebimbangan tentang penggunaan nama Pokémon ( Shelgon )
Perbandingan dengan Penyelesaian Sedia Ada
Perbincangan juga menyentuh tentang bagaimana Shelgon berbanding dengan alternatif yang sudah mantap dalam ekosistem Rust, seperti rustyline dan reedline. Pencipta mengakui sokongan rustyline yang luas untuk interaksi pengguna tetapi menjelaskan bahawa Shelgon bertujuan untuk menyediakan abstraksi yang lebih terhad tetapi lebih berkuasa melalui pendekatan berasaskan trait, menawarkan kawalan tepat terhadap aspek shell sambil mengekalkan keupayaan perkongsian keadaan.
Ketika Shelgon terus berkembang, penciptanya kelihatan terbuka kepada maklum balas komuniti, menunjukkan keterbukaan terhadap sumbangan dan mencadangkan bahawa rangka kerja ini masih dalam pembangunan aktif. Bagi pembangun yang berminat untuk membina persekitaran REPL tersuai dalam Rust, Shelgon mewakili pilihan baharu yang menarik, walaupun pilihan seni binanya mungkin mempengaruhi penggunaan bergantung pada bagaimana ia selaras dengan keperluan projek yang berbeza.
Rujukan: Shelgon: Rangka Kerja Rust untuk Membina Aplikasi REPL Interaktif