見出し画像

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のサイトは以下です。

https://www.tockos.org/

スタートアップコードも、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はちょっと。」と言っていた上司がいました。懐かしいです。

しかし次世代のシフトがやってきそうです。

まだ世代交代される側になりたくない!

という事で、本連載、まだ続きます。


この記事が気に入ったらサポートをしてみませんか?