低レイヤープログラミング
OSなしでのプログラミング
- OSそのもの
- ブートローダー
- 仮想マシンモニタ(VMM)
- 組込みシステム
C言語(or C++)とアセンブラで書くのが定番
Rustでも低レイヤープログラミング
- ガベージコレクションがなく高速
- モダンな各種言語の機能
- アセンブラ・C言語との連携も可能
最近の動向
活発に低レイヤー向けのサポートが追加されている
- Embedded Devices ワーキンググループの発足
- コンパイラターゲットの追加
- Arm、RISC-V、UEFIアプリケーションなど
- stableでもコンパイル可能
- cargoのサポート
注意点
- 基本的にstdライブラリは使えない
- BoxとかArcが使えない!
- Cellなどcoreライブラリは使える
- 所有権の管理を考えた設計が必要
- 生のポインタの参照外し、グローバル変数の変更はunsafe
- 多用するとRustで書く意義が薄れる
- 抽象化を適切にしてunsafeの範囲を限定したい
触ってみての感想
- Rustで低レイヤープログラミングは良さそう
- 設計は工夫しないと厳しい気持ちになる
- 更新が早いので最新情報は常にチェックしたい