まだRustで消耗してないの
Rustに関しての個人的なメモです。
Rust?
-
- 速度、並行性、安全性を言語仕様として保証するC言語、C++に代わるシステムプログラミングを目指して開発されている。2006年に開発がスタート、2015年に1.0版がリリース。現在、1.37.0版。
-
- 手続き型プログラミング、オブジェクト指向プログラミング、関数型プログラミングなどの実装手法をサポートしているマルチパラダイムプログラミング言語。
- 2016年、2017年、2018年のStackOverflowDeveloperSurveyで「最も愛されているプログラミング言語」で一位。
特徴
パフォーマンス
C/C++と張り合える速度
信頼性
強い静的型付けと所有権システムによるメモリとスレッド安全性の確保。
生産性
豊富なドキュメントと、便利なエラーメッセージーを備えたフレンドリー??なコンパイラー
標準で搭載されてるパッケージ管理ツール、ビルドツール、フォーマッティングツールなど。
参照:Rust公式
Use Case(こんなとこで使われてるよ)
CLIツール
コンパイラーで各OSに適したフォーマットに出力できる。
マシンリソースの少ないデバイスへの組み込み
低レイヤーのコントロールで少ないリソースでも効率よく動くプログラムを書ける
WebAssembly
WebAssemblyがコンパイルターゲットに組み込まれたLLVM基盤のコンパイラーを使用しているので、WebAssemblyにコンパイルが可能。ガベージコレクションを搭載している言語よりサイズの小さい.wasmファイルを出力できる。
ネットワークサービス
安全と並行性に優れているので、ネットワーク通信を制御するサービスを作るのに優れている。
Examples
-
- DropBox
-
- FireFox
-
- npm
-
- CloudFlare
-
- Polkadot
-
- TenX
-
- Libra
-
- VoyageGroup
- cookpad
Rust production
rustの本番での採用事例リンク集
最近どうなの?
ついこの間、1年に一回のカンファレンスがあった。
Rustのロードマップ
2018年は”生産性”がテーマ。今年は”成熟”らしい。
Overview
Rust’s 2019 roadmap | Rust Blog
多言語と比べた時にRustを選ぶ理由
C/C++並の実行速度を実現しつつ、同じように低レイヤーのプログラミングが出来るが、安全も確保出来る。
大いなる力には大いなる責任が伴うわけですが、コンパイラが一緒に戦ってくれる
GolangはGoogleの言語
Golangなんかは同じ時期に開発されたことでよく比較に出されるわけですが、言語そのものの開発スタイルから違うぞ
Go is Google’s language, not ours | Hacker News
Chris’s Wiki :: blog/programming/GoIsGooglesLanguage
C/C++を置き換えるぞっていうところだとNimっていう奴もいるらしいけど開発コミュニティが貧弱。
最近1.0.0がリリースされた。
Nim Programming Language
Rustは次のJavaScript??
Moving from NodeJS to Rust in 2019
Web Applicationとか作れるフレームワークあるの?
バックエンドをRustで書くだけでなく、Wasm使えばフロントエンドもRustで書けちゃう?
Web API
Rocket
たぶん一番popular
Gotham
マルチスレッド、並行処理にフォーカス
iron
昔からあるやつ
ORM
diesel-rs/diesel
railsのコミッターが作ってるらしい
Frontend
yew
Elm(GUI構築のための純粋関数型言語)とReactにインスパイアされたマルチスレッドのフロントエンドアプリケーションを構築するためのフレームワーク。WebAssemblyで書く。JSX likeな記法を使用可能。
seed
yewよりもうちょっと軽量?
まとめ
-
- rustupとかcargoとか基礎の基礎のエコシステムの使い方はわかりました。(借用システムとか型がどれだけ強いのかとかはまだ全然理解出来てないですw)
-
- WebAssembly周りはもっと良くわからない。
現状Domとかは触れないので、そういう事するためにはJavascriptをラップしたライブラリを使う必要がある。
JSとやり取りする回数が多ければ多いほどオーバーヘッドが発生する?
Web用のフレームワークは色々出てきてるけど、まだまだ未成熟。
Rust開発チームの方針的にも、組み込みライブラリとしてフルのHTTPライブラリがなかったり。(intro-to-web-programming-in-rust-for-nodejs-developers)
コアチーム的にはフルスタックのライブラリを用意するよりまずは、それらの基盤となる低レイヤーで汎用性のあるライブラリを整えていくという方針っぽい。
普通のWebアプリケーションだと、本当にrustでやる必要ある?というのはある
C/C++の代替でRust以外でまともなのがない(と言っている人達がいる)
RustがJS並に何でも使えるよねってなったら、使う人増えて、Web周りのエコシステムも発展するのかな
Rust自体は思ってたよりProductionで使われてる