29 年間の開発を経て、5.4 月 XNUMX 日、Lua プログラミング言語の新バージョン XNUMX が、ひっそりと、いつの間にかリリースされました。

Lua は、アプリケーションに簡単に組み込むことができる、シンプルな解釈型プログラミング言語です。 これらの特性により、Lua はプログラム (特にコンピューター ゲーム) の構成を拡張または記述するための言語として広く使用されています。 Lua は MIT ライセンスに基づいて配布されます。

以前のバージョン (5.3.5) は 10 年 2018 月 XNUMX 日にリリースされました。

新バージョンの主な変更点

  • 世代 (世代) に基づいた新しいガベージ コレクター。 collectgarbage 関数では、setpause パラメータと setstepmul パラメータが非推奨になり、代わりに incremental パラメータが推奨されます。

  • 表示を無効にする機能を備えた警告を発行するための新機能。

  • math.random の新しい実装は、libc によって提供されるアルゴリズムの代わりに xohiro256** アルゴリズムを使用し、乱数でジェネレーターを初期化します。

  • 定数変数。

  • 「クローズされる」変数は、スコープを終了するときに __close メソッドが実行されるローカル定数です。

  • 新しい関数 lua_resetthread - スタックをクリアし、すべての「閉じられた」変数を閉じます。

  • 新しい関数 coroutine.close - 指定されたコルーチンとそのすべての「閉じることができる」変数を閉じます。

  • ユーザーデータ (userdata) には、インデックスによってアクセスされる一連の値を含めることができます。 これらを操作するための新しい関数、lua_newuserdatauv、lua_setiuservalue、および lua_getiuservalue が導入されました。

  • 関数のパラメータと戻り値に関するデバッグ情報が利用可能です。

  • for ループで整数インデックスが使用され、オーバーフローが発生した場合、ループは終了します。

  • 一致を検索する文字列の先頭からのオフセットを指定するオプションの引数を string.gmatch 関数に追加しました。

  • 文字列を数値に暗黙的に変換する関数は文字列ライブラリに移動され、その動作が変更されました。 たとえば、演算「1」+「2」の結果は浮動小数点数ではなく整数になります。

  • メモリ割り当て機能では、メモリブロックが削減されるとエラーが発生する可能性があります。

  • string.format 関数の新しいフォーマット文字 - %p (ポインター用);

  • utf8 ライブラリは、最大 2¹ の文字コードを受け入れます (特別なフラグが指定されている場合、それが指定されていない場合は、最大 0x10FFFF のコードのみが許可され、サロゲートは許可されません)。

  • 値の範囲外にある整数定数は浮動小数点数に変換されます (以前はビット クリッピングが発生していました)。

  • __lt メタメソッドは __le メタメソッドのエミュレートに使用されなくなりました。必要に応じて、__le メタメソッドを明示的に設定する必要があります。

  • 同じ名前のラベルが現在のスコープにすでに存在する場合は (外側のスコープで定義されていたとしても)、goto ステートメントのラベルは作成できません。

  • __gc メタメソッドは単なる関数以上のものになる可能性があります。 メソッドの呼び出しが失敗すると、警告が表示されます。

  • print 関数は引数ごとに tostring を呼び出しませんが、独自の内部変換を使用します。

  • io.lines 関数は、古い動作をエミュレートするために、XNUMX つの値ではなく XNUMX つの値のセットを返します。別の関数を呼び出すときにパラメーターとして置き換える場合は、呼び出しを括弧で囲みます。

出所: linux.org.ru

コメントを追加します