Rust
概要
低レイヤーから高レイヤーまで使われる比較的新しい言語
C++ で書かれたプロダクトを置き換える目的で開発と利用が進んだが、いうて何にでも使える
所有権型システムという珍しい型システムを備えており、安全な (セキュリティリスクの低い) プログラムを書きやすい
逆に、型システムが納得しないコードは書きにくいように制限しているとも言える
cargo などの周辺エコシステムが優秀で、クレート (ライブラリ) を雑に導入しやすい
コンパイラは LLVM を利用している
Rustを始めるための資料集
Rust入門ガイド
・Rustの特徴
・何に使えるのか?
・Rustの勘どころ
C++の置き換えが可能なシステムプログラミング言語
ハイパフォーマンス
メモリ由来のセキュリティ脆弱性の回避
システムプログラミング言語とは、システムの低レイアのソフトウェアやミドルウェアの開発に適している
リソース(CPU、メモリ、デバイスなど)の詳細な制御が可能
メモリが確保される領域、メモリ割り当て解放のタイミングなど完全に制御できる
処理にかかる時間やプログラムが消費するメモリ量を予測できる
CとHaskellの特徴を併せ持った言語
Cの効率性
・型情報に基づく徹底的なコンパイル時最適化
・きめ細やかなリソース管理
・ガベージコレクションのないシンプルなランタイム
・SIMDなどCPUの持つ機能をフル活用できる
・OSなしで動作するプログラムもかける
Haskell由来の抽象化機構
・型クラス
・代数的データ型とパターンまっち
・型推論
Rustで書かれたプログラムの特徴
・C++で書かれたプログラムに匹敵する性能
・メモリ由来のセキュリティ脆弱性を持たない
・並列性に優れる
Rustは関数型言語?
・関数型言語のアイデアを多く取り入れているが、関数型言語ではない
・命令型プログラミング
・異なるアプローチ
何に使えるのか?
Web系について
バックエンド側の重い処理の高速化
フロントエンド側で重い処理の高速化
サーバーレス、AWS Lambdaで使用できる
信頼されていないユーザプログラムの実行
その他
ちょっとしたコマンドラインツールの開発
OSやエミュレータの開発
競技プログラミング
他の言語との違いに注目して学習
・所有権とライフタイム
・トレイと
・詳細なメモリ管理
・例外がない
プログラミング言語Rustの勧め
Rustとは
・C++の代替えを目指している
・C++同等の処理速度
・静的に型がつくコンパイラ言語
・静的に変数の寿命もわかり、自動でメモリを解放
・関数内部限定での賢い型推論
・C++と比べて安全
・オブジェクト指向ではないし関数型言語でもない
・デフォルトでスレッドセーフが保証された変数
・C++と違い、制約付きのテンプレート
・標準でテスト機能
・標準でパッケージマネージャ
「競プロのPythonとRustの対応関係」
Rustが最強のプログラミング言語である証明
ICFPで実質優勝
「Rustで作るインタプリタ」
Rustを学ぶ
https://www.youtube.com/watch?v=NOZXb7LU1r0&list=PL6Swtgxac-8x6-3q2fvjP7T2O7miz0Ufq
Rustプログラミング入門 フォルシア株式会社の白くて分厚い本!
Rustの5つの魅力
・早い
・モダンな言語機能が一通り入っている
・OSからWebアプリまで幅広く実装できる
・ツール群が充実している
・安全性が強力に担保されている
特徴的な概念を理解
・ゼロコスト抽象化
・ムーブセマンティくす
・クレート
・スレッド安全性
・パニック
・unsafe
・エディション
・所有権
・借用
・ライフタイム
・トレイ
1章 プログラミング言語Rust
Rustは仮想マシンもガベージコレクションも持たないので、Goよりも早い
Rustは所有権、借用、ライフタイムという新しい仕組みでガベージコレクションを実現した
安全で処理速度を低下させない道を選択した言語である
ゼロコスト抽象化も追求している
ゼロコスト抽象化とはプログラミング言語が持つ抽象化の機能を追加のコストを支払うことなく使用できること
多くのプログラミング言語を参考にしているので、多くの言語機能が入っている
不変、可変を明示的に制御できる
filter, mapなどでコレクションを操作できる、これは関数型プログラミングスタイル
2章 環境構築
3章 Rustの基本
4章 プログラムを作成する
5章 Webアプリケーション開発
6章 WebAssembly
7章 GUIアプリケーション
8章 組み込みシステム
9章 開発ツール
10章 プロダクトをリリースする
11章 いろいろなRust発展Tips
「Rustの手続きマクロで黒魔術入門」の発表資料
Typescriptの次はRustかもしれない
便利なライブラリ
便利な資料
なにに使えるか、なにを目指しているかについて
Rust言語の開発フォーラム
Rust言語開発に使われてるチャットリスト
Rustの基本情報がつらつら書かれてる
システムプログラムをRustで作りながらRustの勉強をする資料
Rust cookbookなど
Arc/Rcの解説
Rustでグラフの作り方
リンクリストと違って所有者がループすることがあり結構難しい
ffiについて
チートシート
macro
読むといいソースコード
Rustでbaremetal os
debugger
Cとだいたい同じデバッガが使える、詳細は参照。
Visual Studio Debuggerとwindbgは安定してないが一応使えるらしい。
共有スペース
rustで ebpf
プロパティベースのテスト/ファジングツール(開発中)
webassembly