デジタル人材の育成
首藤 一幸(東京工業大学 大学院情報理工学研究科 数理・計算科学専攻 准教授)
チーフクリエータ
小室 直(電気通信大学大学院 電気通信学研究科 情報工学専攻)
コクリエータ
なし
私はスクリプト言語Luaのメモリ管理機構を改良し、高速性と省メモリ性を向上させアプリケーション組み込み言語の利用用途を広げることを提案する。
Luaはアプリケーション組み込みスクリプト言語としての利用を想定している比較的シンプルで小さなプログラミング言語である。高速性、移植性において優れていることから商用・非商用のビデオゲームなどでの利用も多い。しかしそれでもCやC++といった言語により丁寧に記述されたプログラムにその性能が及ぶものではない。そのため速度や省メモリ性能が厳しく問われLuaのようなスクリプト言語を利用できない場面も多い。 よって本提案ではLuaをより広い場面で有効に活用するため、Lua処理系の高速化と省メモリ化に取り組む。
GCによる自動メモリ管理を前提としたプログラミング環境ではほとんどのオブジェクトはヒープに格納されるため、手動でスタックに割り当てたオブジェクトと比較すると実行コストは大きくなりやすい。ヒープ割り当てオブジェクトの中から安全にスタック割り当て可能なオブジェクトを探すエスケープ解析は動的な言語においては実装が非常に困難である。
よって本提案ではまずは全てのオブジェクトをスタックに格納し、自分よりも底に近いオブジェクトかヒープから参照されたときにヒープにオブジェクトを移動するスタックベースのメモリ管理機構を実装する。
Luaのアプリケーション組み込み言語としての利用が広まっているのはクローズドソフトウェアでも問題無く組み込むことのできる緩いライセンス形態が大きな理由の一つだと考えられる。よって提案ソフトウェアそのものも元のLua処理系本体と同様MITライセンスのOSSとして公開・整備していく予定である。
組み込み用途でよく使われているプログラミング言語Luaの処理系を改良して、高速化と省メモリ化を図ろうという提案である。
具体的には、もともとはヒープに割り当てるオブジェクトを楽観的にスタックに割り当てることで、ガーベジコレクションの処理軽減とヒープ消費量の削減を図ろうという、論文[Eric06]の手法を実装する。
ビデオゲーム等の中で実際によく使われるようになったLua処理系を効率化できれば、恩恵を受ける人も多いことだろう。オープンソースソフトウェアであるLua処理系の本流にその成果を貢献していく過程で提案者が得るものもとても大きいだろう。
一方で、見方によっては、この提案は既存・既知の手法の1つをLua処理系に実装するというものに過ぎない。ヒープ割り当てを減らすという一点でどの程度の高速化が可能か、という疑問も残る。
なので、提案書にあるスタックへの割り当て手法[Eric06]の実装と効果検証などはさっさと済ませてしまい、その先、つまり、手法の改良、別の手法の調査・実装・検証、自分なりの手法の提案など、+αを打ち出すことに力を注いで欲しい。どこまで行けるか、楽しみにしている。