4 poin oleh xguru 2025-09-19 | 3 komentar | Bagikan ke WhatsApp
  • Bahasa scripting dan mesin eksekusi yang dapat dengan mudah ditanamkan ke aplikasi Rust
  • Dirancang agar dapat menambahkan logika dinamis melalui skrip eksternal, atau membuat DSL kustom
  • Memiliki kompatibilitas tinggi dengan Rust, serta menawarkan arsitektur yang mempertimbangkan performa, keamanan, dan skalabilitas
  • Berjalan di semua platform yang didukung Rust dengan Rust 1.66.0+ (WASM, no-std)
  • Sintaks berupa bahasa dynamic typing yang mirip JavaScript + Rust
  • Performa: memerlukan 0,14 detik untuk menjalankan 1 juta iterasi pada Linux VM single-core 2.6GHz
  • Integrasi Rust yang native: mendukung fungsi, tipe, getter/setter, metode, dan indexer milik Rust
  • Nilai Rust dapat diteruskan ke skrip sebagai variabel/konstanta (menggunakan Scope)
  • Mendukung tipe data utama: boolean, integer, floating-point, Decimal, string, karakter Unicode, array, array byte, object map
  • Fungsi yang didefinisikan dalam skrip Rhai dapat dipanggil dari Rust
  • Dependensi minimal (hanya menggunakan sedikit library seperti smallvec, thin-vec, dll.)
  • Mesin yang re-entrant: dapat mendukung Send + Sync melalui sync
  • Menyediakan fitur kompilasi dan optimisasi AST
  • Mendukung sistem plugin dan perluasan API berbasis makro
  • Mendukung overloading fungsi/operator, function pointer, currying, closure, dan sebagian pola OOP
  • Menyediakan sistem modul, sehingga basis kode dapat disusun secara dinamis
  • Mendukung serialisasi/deserialisasi serde (opsional)
  • Menyediakan antarmuka debugging

Keamanan dan keselamatan

  • Jaminan Don’t Panic: jika terjadi panic, itu dianggap bug, dan sistem host tetap aman
  • Eksekusi sandbox: tidak dapat mengubah lingkungan eksternal kecuali diizinkan secara eksplisit
  • Perlindungan terhadap serangan berbahaya: mencegah stack overflow, data berlebihan, dan eksekusi tak berujung
  • Dapat melacak progres eksekusi dan menghentikannya secara manual
  • Telah lulus pemeriksaan Miri

Untuk mereka yang ingin membuat bahasa kustom

  • Rhai dapat digunakan sebagai DSL
  • Fitur bahasa tertentu seperti loop dapat dinonaktifkan
  • Keyword/operator dapat dinonaktifkan dan dibatasi
  • Operator kustom dan perluasan sintaks yang ditentukan pengguna dapat ditambahkan

Materi tambahan

Lisensi

  • Bisa memilih Apache 2.0 atau MIT
  • Kode yang dikontribusikan pada dasarnya menerapkan dual license

3 komentar

 
sftblw 2025-09-19

Kalau Anda sedang mencari bahasa skrip, ada cukup banyak daftar di are we game yet.

https://arewegameyet.rs/ecosystem/scripting/

Tidak ada di daftar itu, tetapi baru-baru ini saat saya bertanya ke GPT, saya juga menemukan bahasa skrip bernama koto. Saya sempat melihat sekilas lalu berhenti, tetapi ini juga terlihat bagus.

https://koto.dev/

Saat mencari-cari, saya juga menemukan yang namanya roto. Saya belum sampai menelusuri ini seperti apa, tetapi tempat yang membuatnya entah kenapa terasa familiar.

https://github.com/NLnetLabs/roto

 
coremaker 2025-09-19

Ada contoh pengukuran waktu di wasm playground, tapi tidak cepat ya?

 
sftblw 2025-09-19

Karena ini adalah bahasa untuk tujuan scripting, wajar jika tidak cepat.