v1.3.2
v1.3.2 - Lua スクリプト for YMM4
ピクセル操作スクリプトの実行に使う高速ランタイム(LuaJIT)のプロセスが残留する
不具合を解消したリリースです。YMM4 本体が異常終了・強制終了した場合でも、
ネイティブ実行用の luajit.exe が取り残されることはなくなりました。
あわせて、同梱ライブラリのライセンス表記を整備しました。
修正・改善
1. ネイティブ実行プロセスの残留を解消
これまで、ピクセル操作スクリプトを一度でも実行した後に YMM4 本体がクラッシュや
強制終了で落ちると、ネイティブ実行用の luajit.exe がプロセスとして残り続ける
ことがありました。本リリースでは、子プロセスを Windows のジョブオブジェクトへ
割り当て、本体プロセスの終了と同時に luajit.exe も終了するようにしました。
本体が正常終了したかクラッシュしたかにかかわらず、OS がジョブを閉じた時点で
ネイティブワーカーは確実に終了します。タスクマネージャーに luajit.exe が
取り残されることはありません。スクリプトの実行結果や速度に変化はありません。
2. 同梱ライブラリのライセンスを整備
プラグインが同梱する LuaJIT と MoonSharp のライセンス全文を収録しました。
配布パッケージのルートに LICENSE フォルダーを設け、各ライセンスファイルを
配置しています。LuaJIT のライセンスには、LuaJIT 本体が内包する Lua 5.1/5.2 と
dlmalloc の権利表記も含まれます。
内部実装
- 子プロセス起動時に、
JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSEを設定したプロセス
単位のジョブオブジェクトへluajit.exeを割り当てます。本体プロセスの終了で
ジョブハンドルが閉じられると、ジョブ内の全プロセスがカーネルによって終了します。 - 従来の正常終了時のシャットダウン処理はそのまま残しており、ジョブオブジェクトは
異常終了時の安全網として機能します。 - 収録した各ライセンスファイルは、配布元の原本から逐語的に取得しています。
同梱物
LICENSEフォルダーにLuaJIT.txt/Lua.txt/MoonSharp.txtを同梱し、
リリースワークフローで配布パッケージへ自動的に含めます。- 高速ランタイム(
luajit.exe/lua51.dll)と実行スクリプトは従来どおり、
プラグイン本体と同じnativeフォルダーに配置されます。