【S2お茶会】Rustの話(7/2)

s2お茶会
今回は弊社の荒川がプログラミング言語の「Rust」について話したのですが、実際にお茶会で使われた資料をそのまま載せてみました。
形式は人によって違いますが、このようにお茶会では毎回発表者が資料をまとめてきて、それを見せながら話をしています。
ぜひご覧になってみてください。

Rustについて


システムについて記述するプログラミング言語には、安全性と制御の面で、

安全性
  • 多数のバグを静的に排除するために強い型付けの言語がほしい
  • メモリ管理は自動化したい
  • プライベートなオブジェクトが不変であることを保証し、信頼できないコードで壊されないためのカプセル化


制御
  • Webブラウザなどのアプリケーション・OS・ゲームエンジンなどのシステムプログラミングである限り、性能の追求とリソースの制約は一番の優先度ブラウザなどのアプリケーション・OS・ゲームエンジンなどのシステムプログラミングである限り、性能とリソースの制約は一番の優先度
  • データのバイト単位の表現を定め、ハードウェアに近い下位レベルのプログラム技術を使って時間と空間の最適化をしたい
  • 必要なら“生の”ハードウェアにアクセスしたい

などの要求があります。
しかし、残念ながらこれら全ては望めません。

Java のような言語には高い安全性がありますが、制御のコストがかかりすぎます。
よって、多くのシステムプログラムでは唯一の現実的な解として、細粒度のリソース制御ができる CC++ といった言語を使うのですが、これにも法外なコストがかかってしまいます。

Microsoft の最新のレポートによると、修正したセキュリティ脆弱性の 70%がメモリの安全性への侵害だそうです。
つまり、強い型付けの言語がまさしく排除したいバグそのものであるということになります。
また Mozilla は Firefox の致命的なバグの大多数がメモリ周りだと言ってい ます。

両者の良いとこ取りができるシステムプログラミング言語があればいいのですが、、
というところで紹介するのが Rust です。

Rust


Mozilla がスポンサーとなって、多数の多様なコミュニティによって過去10年以上にわたって精力的に開発されてきた安全性と制御の両方に長けたプログラミング言語です。
下位レベルのプログラムのイディオムや、最新の C++ 由来の API もたくさんサポートされていますが、C++とは異なり強い型付けによってAPI の安全な利用を遵守しています。

また、メモリの安全性への侵害からだけでなく、共有メモリへの非同期なアクセスにおける競合状態を防ぎ、コンパイル時にデータ競合の排除まで行なってくれます。

着実に人気が出てきていて、

  • Dropbox
  • Facebook
  • Amazon
  • Cloudflare

など多くの主要なベンダー内で使われており、Stack Overflowでは5年間にわたって愛される言語のトップだそうです。
今回はそんなRustについて、下の資料に特徴や使い方をまとめてみましたのでご覧になってみてください。


Rust_ページ_01
page-2
page-3
page-4
page-5
page-6
page-7
page-8
page-9
page-10
page-11
page-12
page-13
page-14
page-15
page-16
page-17
page-18
page-19
page-20
page-21
page-22
page-23
page-24
page-25
page-26
page-27
page-28
page-29
previous arrow
next arrow

参考文献

Ralf Jung, Jacques-Henri Jourdan, Robbert Krebbers, and Derek Dreyer. 2021.
Safe systems programming in Rust.
Commun. ACM 64, 4 (April 2021), 144- 152.
DOl:https://doi.org/10.1145/3418295