Rustを取り巻く世の中(組み込み用途)の取り組み (連載10)
今まで、Rust言語で書かれた・書いたプログラムを実際に動かしてみて、Rustの世界を体験してきました。
そのおかげか、組み込み用途向けのRust言語に関する情報、記事を最近よく目にするようになったのは気のせいでしょうか。
今回は、最近目にした記事等について、書いていこうと思います。
1. Linux6.1カーネルでRust導入
2022年9月20の記事です。
https://japan.zdnet.com/article/35193491/
Linuxは、カーネルからドライバまで、すべてC言語(一部アセンブラ)で記述されています。
アプリケーションはPythonやJava、結構なんでも対応されていますが、カーネル回りはC言語です。
この記事を読むと、2020年にはれから書く新しいコードについてRustの使用を検討始めていたそうです。
こちらは12月13日の記事です。
https://japan.zdnet.com/article/35197296/
Linux 6.1で、Rustが一部採用されているとの事です。
2.GoogleがAndroidにRust採用
2022年12月6日の記事です。
https://japan.zdnet.com/article/35196972/
先程のLinux6.1カーネルにRustを導入する記事でも触れられていましたが、GoogleもAndroidにRustを導入し始めています。
この記事の驚くべき点は、Androidのメモリー安全性関連の脆弱性が半分以下になった、という成果が報告されている点です。
Android 13は、新しいコードの半分以上がメモリー安全性を備えた言語で書かれている、と記事内で記載されています。その言語とは、Rustだけではなく、Java, Kotlinも含まれているとの事です。
ただし、C/C++を排除するつもりはなく、C/C++の安全性を向上させるツールへの投資は続けているようです。
3.GCC13にRustサポートが入った
2022年12月13日の記事です。
https://www.phoronix.com/news/GCC-13-Rust-Merged
さらにクロスコンパイルできるターゲットが増えるかもしれません。期待です。
余談ですが、gccって、GNU Compiler Collectionの略だったのですね。
GNU C Compiler かと思っていました。
4.Tock(Rustで書かれたリアルタイムOS)
Rustの波は組み込みLinuxのような大規模OSだけにとどまりません
小規模のリアルタイムOSでも採用され始めています。
DTSインサイト社の2022年11月24日の記事です。Tockの特徴が非常にわかりやすかったのでリンクを貼っておきます。RISC-Vをターゲットとした記事ですが、その他ボードへの対応についても記載されています。
https://www.dts-insight.co.jp/product/systemlsi/tech-topics/sifive-risc-v/blog_no23.html
Tockのサイトは以下です。
スタートアップコードも、Rustで書かれています。
https://github.com/tock/tock/blob/master/doc/Startup.md
5.日本でもOSをRustで移植している人がいる
「MikanOS」という教育用オペレーティングシステムがあります。
https://github.com/uchan-nos/mikanos
こちらを、Rustで実装する試みを行っている方がいました。
https://zenn.dev/egu/articles/2435e740b8284c
その他、Google検索すると試みている強者の方々がおられます。
6.その他
その他、有識者の方にヒアリングしたところ、まだまだありました。
Apple GPUのLinux向けオープンソースドライバのうち、カーネルモジュール部分をRustで書いている人がいる
https://asahilinux.org/2022/12/gpu-drivers-now-in-asahi-linux/
https://github.com/AsahiLinux/linux/tree/asahi/drivers/gpu/drm/asahi
組込み向けのKataOSがほとんどRustで実装されている (カーネルはseL4なのでC)
https://opensource.googleblog.com/2022/10/announcing-kataos-and-sparrow.html
https://www.theregister.com/2022/10/17/google_kata_os/
Windows App SDKのライブラリ (DWriteCore) でRustが使われている
https://twitter.com/dwizzzleMSFT/status/1578532292662005760
NSAはメモリ安全な言語への移行を推奨している
https://www.theregister.com/2022/11/11/nsa_urges_orgs_to_use/
だんだん組み込み分野から離れてきました。
WEBアプリの分野等に視野を広げると、まだまだあって把握しきれないので、この辺で。。。
7.見てきて危機感を感じた
やばい。
Rustを知らなければ組み込みOSカーネル・ドライバのソースコードが読めなくなる日が来る。。。
特にLinux。
オープンソースなので、なんだったらソースコードがあるし読めばわかる、というところに妙な安心感というか親近感というか、なんとなく身近に感じていたのは私だけではないはず。
C言語で書かれていることが「当然」だったので、まぁ読んだらわかる、と。
例えばLinuxのドライバをちょろっと改造しよう♪と思ったとしても、C言語ではなじみのない記号の羅列が出てくると考えると、、、いやいや!ハードル高いって!
GitHubで公開されているいくつものサンプルコードがちょろっと使えるのも、それらがC言語で書かれているから、という暗黙の了解があったから、という事に今更ながらに気づいてしまった。。。
全国の組み込みエンジニアの皆さん。よく聞いてください。
やばいです。Rustわからないと、組み込みファームウェアを作れない時代がやってきそうです。
「ごめん、おっちゃんC言語しかわからへんねん。」 ⇒ 古っ!
て、なる日が来る。
筆者が若かりし頃、「アセンブラしかわからへんねん。Cはちょっと。」と言っていた上司がいました。懐かしいです。
しかし次世代のシフトがやってきそうです。
まだ世代交代される側になりたくない!
という事で、本連載、まだ続きます。