Rust 0.9リリースノート覚え書き
Rust 0.9が出たので、リリースノートを元に個人的に気になった箇所をメモする。メモ書きなんで、あんまりコンテンツ力考えてないですし、網羅的でもないです。真面目にリリースノート読んだ方がいい。
ちなみにC85で頒布したRust Dojoですが、内容は執筆当時のstableである0.8準拠ですが(ライブ感)、基本的なセマンティクスへの変更は発生していないので、ブルース・リーが『燃えよドラゴン』で語ったように、「考えるな感じろ」の精神で読んでいただければ問題はないはずです。
(Rustのベンキョーカイの幹事やってるけど、平時はどちらかというとServoの人なので、rust-dev MLも一応購読してるけど流し読みだし、Rustの全コミットログを追ってるわけでもないので、リリースノートを用いたウォッチになっているというわけ)
feature gate
- 謎directive増えました。
- crate単位で言語機能を有効にする為のフラグ機能です。
構文からManaged Pointerへの依存が外れつつある
#[feature(managed_boxes)]が追加されたり、@mutが消えたり、@fnが消えたり、std::gcまたはstd::rcを使えと言われたりしてる。- 現在、
@はGc型のwrapperであるとも書かれている。
- 現在、
- 標準ライブラリに格下げされたとしても、極端に使い難くなるとは思わないけれども。
- 割とownedとborrowedとARCで何とかなる
- ちなみにServoではパフォーマンス上の理由もあって、Managed ptrの使用の減少傾向にあります。
クロージャ(ラムダ)とプロシージャの扱いが明確に
~fnは死んだ。procキーワードを用いてproc(args) -> retval { }のように書くように。
@fnは死んだ(上にも書いた)。&fnは死んだ。|args| -> retのように書く。
do syntaxは絶滅危惧種だ
doonly works with procs in order to make it obvious what the cost ofdois.- Servoでもdo構文使うと「やめろ!そいつは死んだ!」みたいなこと言われて修正を求められます
#[fixed_stack_segment], #[rust_stack]が消えた
消えた
非ascii文字の変数識別子は、feature gatedに
- そんなに使う人いなかったんだろうな……
#[feature(non_ascii_idents)]
コンパイル時検出の強化
- なりました
- リテラルのオーバーフローの検出
- unsafeブロックの検出
- 未知のattributeの検出
- 未知のfeature gatesの検出
- デッドコードの検出
- Using Rust for an Undergraduate OS Courseの成果ページを見ると、この講義クラスからdead code検出のPull Requestが出たっぽい。すごい実践授業だ。
- 関係ないけど上の記事にRust langステッカーが載ってて、すごく欲しいんでMozilla JapanでもMozilla Coorporationでもどっちでもいいので作ってください。
- それともコミケ頒布前提で、コミュニティ(サークル)として「勝手に」作るべきか
リンクの機能強化
静的リンクが可能になった
なりました
#[link_args]はfeature gateに隠れた
隠れた
Support native OS X frameworks
- あ、はい
- 試してないので詳細知らん
Pod kindの導入
Podkindの導入でmemcpyを介した型コピーが可能になるとの事です
#[thread_local]
- feature gated!
- スレッドローカルな変数の作成が可能に(タスクローカルではない!)
1:1 Schedulingが導入された
- 概略はそのうち書く(たぶん)
- 色々変わった
- OSスレッドを用いたものが"native"と呼ばれる
- 従来のlibuvに依存したスケジューリングを"green"と呼ぶ(残ってる)
- M:Nと1:1を混ぜて使う事はできる(たしか)
標準ライブラリは相変わらずよく変わる
- 変わってる
- いつものことです
extra::sortは消えた
消えてた
std::commが速くなった
- 速くなった
- スライドあったはず
rustコマンドとrustiコマンドは死んだ
メンテナンスされてなかったので死んだ