5年の開発期間を経て 解放する は、組み込み言語 (構成の定義や拡張機能の記述など) として広く使用されている、高速でコンパクトなスクリプト プログラミング言語です。 Lua インタープリターのコードは C で書かれており、 MITライセンスの下で。
Lua は、言語の連想配列と拡張可能なセマンティクスを使用して、単純な手続き型構文と強力なデータ記述機能を組み合わせています。 Lua は動的型付けを使用し、言語構造をバイトコードに変換し、自動ガベージ コレクションを備えたレジスタベースの仮想マシン上で実行されます。インタプリタ自体は、C および C++ 言語のプロジェクトに簡単に統合できるライブラリとして設計されています。
:
- ガベージ コレクターの新しい動作モードが実装されました。これは、以前に利用可能だった増分ガベージ コレクション モードを補完したものです。新しいモードでは、短縮されたクロールをより頻繁に実行し、最近作成されたオブジェクトのみをカバーします。すべてのオブジェクトの完全な走査は、短い走査の後、必要なメモリ消費量を達成できなかった場合にのみ実行されます。このアプローチにより、短期間存続する多数のオブジェクトを保存する場合に、より高いパフォーマンスを実現し、メモリ消費を削減できます。
- 「const」属性で定義された定数変数を定義する機能が追加されました。このような変数は一度だけ割り当てることができ、一度初期化されると変更することはできません。
- 変数のサポートを追加しました。」これは、「close」属性を使用して割り当てられ、定数ローカル変数 (const 属性付き) に似ていますが、値がスコープを出るたびにクローズされる (「__close」メソッドが呼び出される) という点で異なります。たとえば、ブロックが正常に完了した後、break/goto/return を使用して遷移するか、エラーが発生した場合は終了します。
- タイプ "「Lua 変数に任意の C データを格納する機能 (メモリ内のデータのブロックを表す、または C ポインターを含む) を提供し、複数の値を含めることができるようになりました (複数のメタテーブルを持つ)。
- 擬似乱数を生成する関数の新しい実装である math.random が紹介されています。
- 次の式を使用して決定される警告システムを追加しました。 また、エラーとは異なり、プログラムのその後の実行には影響しません。
- 関数の引数と戻り値に関するデバッグ情報を追加しました。
- ループ内の整数を列挙するための新しいセマンティクスが提案されました。」。反復回数はループの開始前に計算されるため、変数のオーバーフローやループが回避されます。初期値が制限値より大きい場合はエラーが表示されます。
- 関数内 '' 新しいオプションの引数 'init' が追加されました。これは、検索を開始する位置を決定します (デフォルトでは 1 文字から)。
- 新機能が追加されました '' (スレッドをリセットし、呼び出しスタック全体をクリアし、「閉じる予定の」変数をすべて閉じます) および '' (コルーチンと関連するすべての「閉じる予定の」変数を閉じます)。
- 文字列を数値に変換する関数は「文字列」ライブラリに移動されました。
- メモリ ブロック サイズが減少すると、メモリ割り当て関数の呼び出しが失敗する可能性があります。
- 関数内 '' 新しい形式指定子 '%p' (lua_topointer によって返されるポインター) のサポートが追加されました。
- utf8 ライブラリはサポートを提供します 2^31 までの数値。
出所: オープンネット.ru
