Rust

Rust はメモリ安全と並行性を所有権・借用・ライフタイムの静的検証で実現するシステムプログラミング言語。GC を持たず RAII でリソースを管理する(ただし Arena パターンに頼る場面や GC が欲しい場面も実際にはある)。

型システムと言語機能

  • trait によるアドホック多相、From/Into 変換、trait objectBox<dyn Fn(...)> 等の動的ディスパッチ)。型推論はリージョン推論(ブロック=リージョン→ライフタイム)を取り入れる。
  • 変性 (variance) を扱い、Box<T> でサイズを固定して再帰データを表す。
  • 例外は持たず Result/Optioneffect 的な扱い)。debug_assert! はリリース時に無効。
  • メモリコンテナ: Box/Rc/RefCell 等のスマートポインタ、Typed Arena

コンパイラ周辺

  • trait 解決の chalk、IDE 基盤の rust-analyzer、lint の clippy、手続きマクロ proc macro、形式検証 creusot。コード生成は #[cold] や PGO(LLVM 機能)。

エコシステム

  • パーサ: nom / combine / lalrpop / rowan、LSP は tower-lsp
  • データ/CLI: polarstabled。GUI は Tauri(Electron 風)。組込みスクリプトは rhai。LLVM バインドは inkwell
  • 自作言語インタプリタを Rust で書く例も多い(Writing Interpreters in Rust)。

関連