Rust

Rustに対しての印象

Rustは2015年に1.0版がリリースされた新しめのプログラミング言語である。Rustと検索するとサバイバル系FPSゲームの方も出てくるが、ここで扱うのはプログラミング言語の方。

Rustの最も大きな特徴はガーベジコレクションを持たず、独自のメモリ安全性を保証するシステム(所有権、借用、ボローチェッカー)を持っていること。これによって、GCによるランタイムの肥大化を防ぎつつ処理速度も維持している。コンパイル時にメモリ安全に関するエラーは全て出てくれるので、コンパイルを突破さえすれば安全なコードである保証ができる点が嬉しい。あとはアルゴリズム面で上手く動作しているかに集中できる。

Rust自体の目指しているところはC/C++から置き換わることであり、それらが多く用いられるシステムプログラミングや組み込みシステムの分野に使用されることに焦点が当てられている。これによって、Rustではランタイムが軽量になるように設計される。

メモリ安全を保証するシステムによって、実装が複雑化すると思われるが、実際は制約に従うことでよりシンプルな設計を意識することができる。(最近は、書き慣れすぎてコンパイルエラーさえ出なくなってきた)

より高級なレイヤー(Web開発、機械学習、並列処理)においては、新しい言語ということもあり環境が整っていない印象。Web開発では、バックエンドフレームワークとしてactix-web、rocket、tideなどがある。最近では、tokioチームがaxumを発表し、クセが少ないということで注目している。Rustの使い所としては、処理時間と消費メモリのコストが重要かつ部分的な場面。例えば、AWS Lambdaで使用する例が増えている。 個人的には、新しいものに無闇に手を出さずに他言語の重厚なフレームワークを使いこなすことに注力したい。ただ、素朴なフレームワークを介してWeb開発の理解も深めたいといったところで、簡単なWebAPIの実装とかに使ってみたい。

TODO

  • TRPL読み直す
  • 非同期処理の勉強(tokioクレート)
  • ...