4 ポイント 投稿者 xguru 2025-09-19 | 3件のコメント | WhatsAppで共有
  • Rustアプリケーションに簡単に組み込めるスクリプト言語および実行エンジン
  • 外部スクリプトを通じて動的ロジックを追加したり、カスタムDSLを作成できるよう設計されている
  • Rustとの高い互換性を持ち、性能・セキュリティ・拡張性をすべて考慮したアーキテクチャを提供
  • Rust 1.66.0+ 以上のすべてのRust対応プラットフォーム(WASM、no-std)で動作
  • 文法は JavaScript + Rust に近い動的型付け言語
  • 性能: 単一コア 2.6GHz Linux VMで100万回の反復実行に0.14秒
  • ネイティブなRust統合: Rustの関数、型、getter/setter、メソッド、インデクサをサポート
  • Rustの値は変数/定数としてスクリプトに渡せる(Scope を使用)
  • 主なデータ型をサポート: 真偽値、整数、浮動小数点、Decimal、文字列、Unicode文字、配列、バイト配列、オブジェクトマップ
  • Rhaiスクリプトで定義された関数をRustから呼び出し可能
  • 依存関係を最小化(smallvec、thin-vec など少数のライブラリのみ使用)
  • Re-entrant(再入可能)なエンジン: sync により Send + Sync に対応
  • ASTのコンパイルおよび最適化機能を提供
  • プラグインシステムとマクロベースのAPI拡張をサポート
  • 関数/演算子オーバーロード、関数ポインタ、カリー化、クロージャ、一部のOOPパターンをサポート
  • モジュールシステムを提供し、コードベースを動的に構成可能
  • serde によるシリアライズ/デシリアライズをサポート(オプション)
  • デバッグインターフェースを提供

セキュリティと安全性

  • Don’t Panic保証: パニックが発生した場合はバグと見なされ、ホストシステムは安全
  • サンドボックス実行: 明示的に許可されない限り外部環境を変更できない
  • 悪意ある攻撃を防止: スタックオーバーフロー、過大なデータ、無限実行を遮断
  • 実行の進行状況を追跡し、手動で終了可能
  • Miri検査に合格済み

カスタム言語を作りたい人のために

  • RhaiをDSLとして活用可能
  • ループなど特定の言語機能を無効化可能
  • キーワード/演算子の無効化および制限が可能
  • ユーザー定義演算子および構文拡張が可能

追加資料

ライセンス

  • Apache 2.0 または MIT を選択可能
  • コントリビュートされたコードにはデフォルトでデュアルライセンスを適用

3件のコメント

 
sftblw 2025-09-19

スクリプト言語を探しているなら、are we game yet にリストが少しあります。

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

そのリストにはありませんが、最近 GPT に聞いていて koto というスクリプト言語も見つけました。少しだけ見てやめてしまったのですが、これも良さそうでした。

https://koto.dev/

検索しているうちに roto というものも見つけましたが、これはどんなものかまでは見ていません。ただ、作っているところには何となく見覚えがありました。

https://github.com/NLnetLabs/roto

 
coremaker 2025-09-19

wasm playground の時間計測のサンプルがありますが、速くないですね?

 
sftblw 2025-09-19

スクリプト用途の言語なので、速くないのが普通でしょう。