4 điểm bởi xguru 2025-09-19 | 3 bình luận | Chia sẻ qua WhatsApp
  • Ngôn ngữ scripting và engine thực thi có thể dễ dàng nhúng vào ứng dụng Rust
  • Được thiết kế để thêm logic động thông qua script bên ngoài hoặc tạo DSL tùy chỉnh
  • Có mức độ tương thích cao với Rust, đồng thời cung cấp kiến trúc cân nhắc cả hiệu năng, bảo mật và khả năng mở rộng
  • Hoạt động trên mọi nền tảng được Rust hỗ trợ từ Rust 1.66.0+ trở lên (WASM, no-std)
  • Cú pháp là ngôn ngữ kiểu động tương tự JavaScript + Rust
  • Hiệu năng: mất 0,14 giây để chạy 1 triệu vòng lặp trên Linux VM lõi đơn 2.6GHz
  • Tích hợp Rust theo kiểu native: hỗ trợ hàm, kiểu, getter/setter, method, indexer của Rust
  • Có thể truyền giá trị Rust vào script dưới dạng biến/hằng số (dùng Scope)
  • Hỗ trợ các kiểu dữ liệu chính: boolean, số nguyên, số thực dấu phẩy động, Decimal, chuỗi, ký tự Unicode, mảng, mảng byte, object map
  • Có thể gọi các hàm được định nghĩa trong script Rhai từ Rust
  • Giảm thiểu phụ thuộc (chỉ dùng một số ít thư viện như smallvec, thin-vec)
  • Engine có thể re-entrant: có thể đạt Send + Sync thông qua sync
  • Cung cấp tính năng biên dịch và tối ưu hóa AST
  • Hỗ trợ hệ thống plugin và mở rộng API dựa trên macro
  • Hỗ trợ nạp chồng hàm/toán tử, con trỏ hàm, currying, closure và một phần các mẫu OOP
  • Cung cấp hệ thống module, có thể tổ chức codebase một cách động
  • Hỗ trợ tuần tự hóa/giải tuần tự hóa serde (tùy chọn)
  • Cung cấp giao diện debug

Bảo mật và an toàn

  • Đảm bảo Don’t Panic: nếu xảy ra panic sẽ được xem là bug, hệ thống host vẫn an toàn
  • Thực thi sandbox: không thể thay đổi môi trường bên ngoài trừ khi được cho phép rõ ràng
  • Ngăn chặn tấn công ác ý: chặn tràn stack, dữ liệu quá mức, thực thi vô hạn
  • Có thể theo dõi tiến trình thực thi và dừng thủ công
  • Đã vượt qua kiểm tra Miri

Dành cho những ai muốn tạo ngôn ngữ tùy chỉnh

  • Có thể sử dụng Rhai như một DSL
  • Có thể vô hiệu hóa một số tính năng ngôn ngữ như vòng lặp
  • Có thể vô hiệu hóa và giới hạn keyword/toán tử
  • Có thể mở rộng cú pháp và toán tử do người dùng định nghĩa

Tài liệu bổ sung

Giấy phép

  • Có thể chọn Apache 2.0 hoặc MIT
  • Mã nguồn được đóng góp mặc định áp dụng dual license

3 bình luận

 
sftblw 2025-09-19

Nếu bạn đang tìm một ngôn ngữ scripting thì trong are we game yet có một danh sách khá ổn.

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

Không có trong danh sách đó, nhưng gần đây khi hỏi GPT tôi cũng phát hiện ra một ngôn ngữ scripting tên là koto; tôi chỉ xem lướt qua rồi thôi, nhưng trông nó cũng khá ổn.

https://koto.dev/

Trong lúc tìm kiếm tôi cũng thấy một cái tên là roto, nhưng chưa tìm hiểu đến mức biết nó là gì; chỉ là nơi tạo ra nó trông khá quen mắt.

https://github.com/NLnetLabs/roto

 
coremaker 2025-09-19

Có ví dụ đo thời gian trong wasm playground, nhưng có vẻ không nhanh nhỉ?

 
sftblw 2025-09-19

Vì đây là ngôn ngữ phục vụ mục đích scripting nên việc nó không nhanh là điều bình thường.