BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース メモリ使用量などが改善されたRust 1.23

メモリ使用量などが改善されたRust 1.23

原文(投稿日:2018/01/07)へのリンク

読者の皆様へ: あなたのリクエストに応じて、大切な情報を見逃すことなく、ノイズを減らす機能を開発しました。お気に入りのトピックを選択して、メールとウェブで通知をもらいましょう

Rustの最新バージョンの最も重要な改善点は、不要なコピーの回避によって実現したメモリ使用量の削減だ。さらにrustdocも、CommonMark準拠のエンジンを一貫的に使用してドキュメントをレンダリングするようになった。

Rustチームによると、特定のオブジェクトのコピーを避けることで、rustcのメモリ使用量が5-10パーセント削減された。ただしこの数値は、コンパイルされるプログラムによって異なる可能性がある。具体的に言うと、現在のrustcは、これまではローカル変数と引数の間であった等価性の判断を関数まで拡げている。これによって、引数をローカルにバインドする場合に、その引数のコピーを作る必要がなくなった。このコピーの振る舞いは、かつてはMIRレベルにあったが、その後廃止された、ローカル変数と引数との区別の名残だった。ローカル変数と取得引数の区別を廃止したことによって、メモリ使用量が改善されただけでなく、デバッグ情報に関する誤解も少なくなっている。変更可能なローカルバインディングでは状況がさらに悪く、引数が実際に変更されていないにも関わらず、デバッガではローカル変数が変化する場合もあった。

もうひとつの興味深い点は、rustcにおいて、到達不能な命令をハードウェアトラップに変更するLLVMのTrapUnreachableが有効になったことだ。これまでは、制御フローが到達不能な命令を踏み越えると、メモリ上でその後にあるコードが実行される可能性があった。この変更によって、到達不能なコードにおける未定義動作による影響の軽減が期待できる。

ドキュメントに関しては、rustdocは、CommonMarkに完全準拠するための作業を続けてきた。Rust 1.23のドキュメントは、従来のRustのレンダラであるHoedownと、CommonMark準拠のレンダリングエンジンの両方でレンダリングされる。この処理は今後しばらく継続される予定で、レンダリングに何らかの差異があった場合はrustdocが警告することによって、ドキュメントの保守担当者がそれを修正することができる。将来的には、CommonMark準拠のエンジンがデフォルトになる予定だ。

Rust 1.23では、プリミティブ型にAsciiExtトレイトが追加されるなど、ライブラリの安定化も図られている。これによってu8charstrは、AsciiExtトレイトをインポートせずにそのメソッドを使用できる。

RustのパッケージマネージャであるCargoにも、複数のパッケージの同時アンインストールのサポート、“cargo install --version”を使った特定のパッケージバージョンのインストールなど、いくつかの改良が加えられている。

その他にも多数の変更と改良が加えられたRust 1.23は、“rustp update stable”の実行でインストールすることができる。

 
 

この記事を評価

採用ステージ
スタイル
 
 

この記事に星をつける

おすすめ度
スタイル

特集コンテンツ一覧

BT