Async Rust、6年経ってもMVPから抜け出せない理由
ゼロコスト抽象化のはずが組込みでバイナリ肥大化。MIR段階の最適化と€30kの資金募集で改善を狙う。
#なぜ今日これを選んだか
Rust学習を始めた自分にとって、一番強い武器に見えるasync/awaitが「実は未完成」という現実は今のうちに知っておきたい。表面のキレイさに惑わされず、ハードウェア寄りに降りた時に何が起きるかを先に押さえておけば、つまずく前に正しい教材と道具を選べる。
#要点
- 組込み環境ではasyncのステートマシンが膨らみ、ゼロコスト抽象化の約束が崩れている
- LLVMの最適化だけでは取り切れず、MIR段階でのインライン化や状態統合がいる
- €30kほどあれば主要な改善が実装可能で、Rustプロジェクト公式目標として企業の資金協力を募集中
#自分にとっての示唆
Rust + ハードウェアという目標に対して、async Rustが組込みで実用性を欠くという話は今のうちに知っておくべき情報。30分のRust学習で「全機能を網羅」より、「自分が踏む地雷」を先に把握する方がコスパが良い。明日からはtokioのHello Worldだけでなく、#[no_std] + embassy(組込み向けasyncランタイム)に教材を絞り、ビルド後にバイナリサイズを測る習慣をつける。「動いた」で満足せず、cargo asm でステートマシンに何が入ったかを覗く癖を初期から育てる。これが将来「動くけど遅い・でかい」を避ける一番の近道だと思う。