BT

InfoQ ホームページ ニュース Rust 1.25はLLVM 6に対応

Rust 1.25はLLVM 6に対応

ブックマーク

原文(投稿日:2018/04/02)へのリンク

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

Rust 1.25はLLVM 6に向けてアップグレードが行われた。 加えて、use文の中でグループのインポートをネストできるようになり、structのアラインメントを個別に設定できるようになり、ライブラリの安定化が行われた。 ただし、今回のRustのリリースでは、impl Trait、安定したSIMDのサポート、128ビット整数などの待望の機能は追加されなかった。

LLVM 6へのアップデートには、様々なメリットがある。例えば、SIMD関連のコンパイルエラーを含む数々のバグ修正がある。 しかし何より、LLVMの上流のWebAssembly(Wasm)バックエンドに追随しやすくなることにより、新しいWasmの機能を迅速にサポートできるのは大きなメリットである。 これには重要な例外がある。Emscripted-powered JavaScriptバックエンドはLLVM 4限定である。 Rustの開発者であるSteve Klabnik氏によれば、LLVM 6は、一般的には性能向上をもたらさない。コンパイルの速さは、個々のコードに依存する。

新しいuse文の文法では、グループのインポートのネスト化が可能になった。これにより、コードが簡潔になり、読みやすくなる。 例として、以下のインポート文を考える。

use std::fs::File;
use std::io::Read;
use std::path::{Path, PathBuf};

これは、以下のように記述できる。

use std::{fs::File, io::Read, path::{Path, PathBuf}};

加えて、Rust 1.25のstructsは、#[repr(align(x))]アノテーションを使用することで、アラインメントを設定できる。

struct Number(i32);

assert_eq!(std::mem::align_of::<Number>(), 4);
assert_eq!(std::mem::size_of::<Number>(), 4);

#[repr(align(16))]
struct Align16(i32);

assert_eq!(std::mem::align_of::<Align16>(), 16);
assert_eq!(std::mem::size_of::<Align16>(), 16);

この機能は、特定のアラインメントを要求するハードウェアを使用する際に有用であり、C言語コードとの相互運用性を向上させる。 例えば、特定のアラインメントが期待されているC言語コードに構造体を渡すことを簡単にする。 また、発展的な例としては、カーネル内で静的に配置されているページテーブルを扱うことなどがある。

ライブラリ面での大きな変更には、std::ptr::NonNullの導入がある。 これは、*mut Tに似ているが、非ゼロであることが保証されており、かつ共変性(covariant)を持つ。 安全でないコードにおいてデータ構造を構築する時に有用だろう。

Rust 1.25は、多くの開発者が待ち望んだような大きなリリースではない。 このリリースには、Rustチームが長年取り組んできた主要な機能が含まれていない。 例えば、impl Trait(パフォーマンスの向上や、ジェネリクスの単純化、診断を可能にする)、128ビット整数、安定したSIMDライブラリのサポート、などが含まれていない。 Klabnik氏によれば、1.26および1.27といった今後のリリースにおいて、これらが使えるようになる可能性が高いとのことで、これは良いニュースである。

 
 

Rate this Article

Adoption Stage
Style
 
 

この記事に星をつける

おすすめ度
スタイル

特集コンテンツ一覧

RESTlessnessに打ち勝つ

Matt McLarty 2019年3月13日 午前7時39分

.NET CLIクイックツアー

Jeremy Miller 2019年2月18日 午前1時55分

.NET CoreとDevOps

Dave Swersky 2019年2月6日 午後11時46分

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

BT

あなたのプロファイルは最新ですか?プロフィールを確認してアップデートしてください。

Eメールを変更すると確認のメールが配信されます。

会社名:
役職:
組織規模:
国:
都道府県:
新しいメールアドレスに確認用のメールを送信します。このポップアップ画面は自動的に閉じられます。