RustOwlの新解析アルゴリズムについて
2025-08-05 09:30Z
こんにちは。
先日、RustOwlに新しい解析アルゴリズムを導入し、解析速度が以前のおよそ1 / 5に、最新のリリースと比べておよそ1 / 40程度まで短縮できました。(RustOwl自身の解析時間で測定)
Xにこの内容をつぶやいたところ、それなりの数の反応をいただき、多くの方が興味ある内容なのかもしれないな、と思ったので、こちらにて簡単に報告させていただくことにしました。
まずは簡単にRustにおけるライフタイムの検査手法について概略を説明し、今回のアルゴリズムの内容に迫っていきます。
MIRと借用検査
借用検査(borrow check)はRustの中間言語(中間表現)であるMid-level Intermediate Representation(MIR)に対して行われます。 借用検査がMIRに対して行われるのは、Non-Lexical Lifetime(NLL)の導入からで、この検査手法は RustのRFCで提案されたもの になります。
上述のドキュメントやRustの実装を参考にしつつ、MIRと借用検査について軽く説明します。