https://air.mozilla.org/bay-area-rust-meetup-august-2014/
1 comment | 0 points | by WazanovaNews 約4時間前 edited
Bjorn Tiplingが各プログラミング言語を武器に例えた、"If programming languages were weapons" というエントリーが秀逸ですね。公平に、どの言語も褒めていないところがよいです。どれも面白いので全部眺めていただければと思いますが、その中でRustは、
"Rust is a 3D printed gun. It may work some day."
と紹介されています。
とはいえ最近、 Rustに関する発信をよく見かけるようになったと思ったら、バージョン 1.0が近いのですね。"work some day" という日が来るということでしょう。
Bay Area Rust Meetupで、Niko MatsakisがRust 1.0に向けた方向性をシェアしています。
- Rust 1.0 はやっと後方互換性が担保されるという意味以上に、Rustのデザインが「これでよい。」と固めることができるマイルストーンになる。
- 「ローレベル言語のもつパワーと柔軟性、および、ハイレベル言語の安全性と利便性を兼ね備えたプログラミング言語」という目標を達成するために随分試行錯誤してきた。言語そのものは、コンパイラが誰が何を保持しているかを把握し、メッセージ送信/メモリのシェアなど問題なくできるよう、小さなコアにおさめ、その他はライブラリに移した。
- シンプルにしたが、プラスαでできることも増やした。実現するのは、「クラッシュのないゼロコストの抽象化」
- 内部リファレンスがハッシュマップ、ベクターに向けられるようになり。
- "required" する必要のある外部依存をゼロに。
- データ競合ない共有メモリ
- パッケージマネジャ Cargo
- 標準ライブラリの充実
- バージョン1.0以降は、6週間ごとのnighty/beta/releaseチャンネルで更新していく。更にライブラリを強化し、box / キーワード / ガベッジコレクタメモリなどの完成、HKT (Higher-kinded type) などの追加を目指す。
また、最近Jared Forsythが "Rust vs Go" というエントリーで、Rustの優れているポイントとして挙げているのは、
- 型システム
- mutabilityは、データ変数だけでなくポインタについても、明示的に宣言しなくてはいけない。
- ポインタは3種類: Managed pointerは、thread-localガベッジコレクタの参照カウント用。Owned pointerはコンパイラが自動的に割当/解放する。Borrowed pointerを使うと、コンパイラが借りてきた相手のライフサイクルを超えないように管理してくれるので、他のポインタが参照する機能を自由に書ける。
- メモリ管理
- 必要であればガベッジコレクタもあるが、型システムの提供する自動手動?メモリ管理が便利なので、参照カウントするポインタが必要になるケースは少ない。
- 関数型言語の考え方を一部で採用
- 自由度の高い表現力
- 例えば、if/elseブロックの結果を変数に代入できる。
- 変数のデストラクチャリング
- matchが超便利。
9月には東京でのミートアップも開催されるようです。
#rust #mozilla #golang