Lua 言語の型チェックのバリアントである Luau のオープンソース

Lua プログラミング言語の最初のスタンドアロン リリースのオープン ソースと公開を発表し、Lua 言語の開発を継続し、Lua 5.1 との下位互換性を持たせました。 Luau は主にスクリプト エンジンをアプリケーションに組み込むために設計されており、高いパフォーマンスと低いリソース消費を実現することを目指しています。 プロジェクト コードは C++ で書かれており、MIT ライセンスの下で公開されています。

Luau は、型チェック機能と文字列リテラルなどのいくつかの新しい構文構造で Lua を拡張します。 この言語は Lua 5.1 と下位互換性があり、部分的には新しいバージョンと互換性があります。 Lua ランタイム API がサポートされているため、既存のコードおよびバインディングで Luau を使用できます。 言語ランタイムは大幅に作り直された Lua ランタイム 5.1 コードに基づいていますが、インタプリタは完全に書き直されました。 開発中に、Lua と比較してより高いパフォーマンスを達成するために、いくつかの新しい最適化手法が使用されました。

このプロジェクトは Roblox によって開発され、Roblox Studio エディターを含む、この会社のゲーム プラットフォーム、ゲーム、ユーザー アプリケーションのコードで使用されています。 当初、Luau は非公開で開発されましたが、最終的にはコミュニティの参加を得てさらなる共同開発を行うためにオープン プロジェクトのカテゴリーに移すことが決定されました。

主な特長:

  • 段階的な型付け。動的型付けと静的型付けの中間の位置を占めます。 Luau では、特別なアノテーションを通じて型情報を指定することで、必要に応じて静的型付けを使用できます。 組み込み型として「any」、「nil」、「boolean」、「number」、「string」、および「thread」が提供されます。 同時に、変数や関数の型を明示的に定義せずに動的型付けを使用できる可能性も維持されます。 function foo(x: 数値, y: 文字列): ブール値ローカル k: 文字列 = y:rep(x) return k == “a” end
  • 「\5.3x**」(0 進数)、「\u{**}」(Unicode 文字)、「\z」(行末)などの文字列リテラル(Lua 1 と同様)のサポート。数値の書式設定 (000 の代わりに 000_1000000_0 と書くことができます)、0 進数 (XNUMXx...) および XNUMX 進数 (XNUMXb....) のリテラルを視覚化する機能。
  • 新しいループ反復にジャンプするための、既存の "break" キーワードを補完する "Continue" 式のサポート。
  • 複合代入演算子 (+=、-=、*=、/=、%=、^=、..=) のサポート。
  • ブロックの実行中に計算された値を返す式の形式での条件付き「if-then-else」ブロックの使用のサポート。 ブロック内に任意の数の elseif 式を指定できます。 local maxValue = if a > b then a else b local signed = if x < 0 then -1 elseif x > 0 then 1 else 0
  • 信頼できないコードを実行できる分離モード (サンドボックス) の存在。 この機能を使用すると、独自のコードと、安全性が保証できないサードパーティ ライブラリなど、別の開発者によって作成されたコードを並べて起動することができます。
  • セキュリティ上の問題を引き起こす可能性のある関数が削除された標準ライブラリの制限。 たとえば、ライブラリ「io」(ファイルにアクセスしてプロセスを起動する)、「package」(ファイルにアクセスしてモジュールをロードする)、「os」(ファイルにアクセスして環境変数を変更するための関数)、「debug」(メモリを使用した安全でない操作)などです。 、「dofile」および「loadfile」(FS アクセス)。
  • 静的コード分析、エラー (リンター) の特定、型の正しい使用のチェックのためのツールを提供します。
  • 独自の高性能パーサー、バイトコードインタープリター、コンパイラー。 Luau はまだ JIT コンパイルをサポートしていませんが、状況によっては Luau インタープリタのパフォーマンスが LuaJIT にかなり匹敵すると主張されています。

出所: オープンネット.ru

コメントを追加します