Rustでデッドロック防止ミューテックス「Surelock」が開発される
原題: Surelock: Deadlock-Free Mutexes for Rust
開発者がRust向けにコンパイル時にデッドロックを防止するライブラリ「Surelock」を発表。1971年にCoffman氏らが特定したデッドロック4条件のうち循環待機を2つのメカニズムで破ることで実現。同レベルロックは決定論的順序で原子的に取得、クロスレベルロックはコンパイル時順序付け強制で段階的取得する。
開発者のBrooklyn Zelenko氏が、Rustプログラミング言語でデッドロックを完全に防止するライブラリ「Surelock」を開発したと発表した。同氏は以前の勤務先Fissionでミューテックスが提案されるたびに「ミューテックス!デッドロック!」と唱和していたと振り返り、デッドロックの問題を根本的に解決したいと動機を説明している。
Surelockは1971年にCoffman氏らが特定したデッドロック発生の4つの必要条件のうち「循環待機」を破ることで機能する。具体的には2つの補完的メカニズムを採用:同レベルのロックは決定論的順序で原子的に取得する「LockSet」機能、異なるレベル間のロックはコンパイル時に順序付けを強制して段階的に取得する「Level<N>」機能。
ライブラリの特徴として、コンパイルが通れば実行時デッドロックが発生しない、Result型やOption型を返さない、ロック取得時のランタイムパニックなし、安全でないコードは内部に限定、no_std環境対応、ゼロランタイム依存などがある。現在はプレリリース版で、コア設計は堅固だが改良の余地があるとしている。開発者は「注意深くプログラミングするだけでは規模拡大に対応できない」とし、Rustがデータ競合をコンパイル時に捕捉するように、デッドロックも同様に防止すべきだと主張している。
なぜ重要か
Rustの安全性保証をデッドロック防止まで拡張する技術革新で、システムプログラミングの信頼性向上に寄与
出典
※ 本記事は海外メディアの公開情報を元に編集部が日本語で要約したものです。投資判断の推奨ではありません。