Rust 1.7の新しいバージョンを発表できることを嬉しく思います。 Rustは、メモリ、速度、およびコードの並列実行による安全な作業を目的としたシステムプログラミング言語です。
いつものように、公式Webサイトの対応するページから
Rust 1.7を
インストールできます。また、Github
でバージョン1.7の変更の詳細なリストを確認できます。 このリリースには1300のパッチが含まれています。
安定バージョン1.7に含まれるもの
このリリースは、主にライブラリを対象としています。 将来のリリースに備えていくつかの言語機能を準備していますが、バージョン1.7が開発された期間には休日が含まれていたため、人々はGitHubのコメントに費やす時間を減らし、代わりに愛する人に注意を払いました。
ライブラリの安定化
1.7では、約40個のライブラリ関数とメソッドが安定化されています。 最大の安定したAPIの1つは、標準の
HashMap<K, V>
でのカスタムハッシュアルゴリズムのサポートです。 以前は、すべてのハッシュディクショナリは
SipHashをハッシュアルゴリズムとして使用し、デフォルトでDoS攻撃に対する保護を提供していました。 ただし、SipHashは小さなキーをハッシュすること
はあまり速くあり
ません 。
FNVアルゴリズムは 、このような引数に対してはるかに高速です。 つまり、
HashMap<usize, V>
などのタイプのハッシュアルゴリズムを変更すると、パフォーマンスが大幅に向上する可能性があります。
DoSから保護する必要はありません。
これを例で見るには、
crates.ioのfnvコンテナーを
使用して、次のような
HashMap
を作成します。
extern crate fnv; use std::collections::HashMap; use std::hash::BuildHasherDefault; use fnv::FnvHasher; type MyHasher = BuildHasherDefault<FnvHasher>; fn main() { let mut map: HashMap<_, _, MyHasher> = HashMap::default(); map.insert(1, "Hello"); map.insert(2, ", world!"); println!("{:?}", map); }
ほとんどの場合、ハッシュアルゴリズムのタイプを指定する必要さえないことに注意してください。 型推論が機能します。
HashMap::default()
は、2倍速く動作するハッシュを取得するために必要なすべてです。 また、
Hash
特定のハッシュアルゴリズムと
Hash
無関係であるため、
HashMap
格納されている型を変更する必要がないことにも注意してください。
その他の注目すべき改善点は次のとおりです。
<[T]>::clone_from_slice()
、あるスライスから別のスライスにデータをコピーする効率的な方法。- RFC 6890で説明されているように、アドレスがループバックアドレスかどうかに応じて
true
またはfalse
を返すis_loopback()
など、 Ipv4Addr
およびIpv6Addr
さまざまなメソッドが便利です。 - FFIで使用される
CString
型に対するさまざまな改善。 - チェック、飽和、またはオーバーフローのある算術演算。 これらは、上記で引用した40の安定化された方法では考慮されません。 それらの多くがありますが、それらはすべて同じことをします。
詳細について
は、リリースノートを参照してください。
貨物の特徴
Cargoにいくつかの小さな変更を加えました。
- ビルドスクリプトが[改善] [ビルドスクリプトの改善]され、依存関係をCargoに正確に通知できるようになりました。 このため、これらのファイルが変更された場合にのみ、新たに実行されます。
- [
cargo rustc
サブコマンドの変更] [ cargo rustc
サブコマンドの変更]を使用すると、テスト中などにdev-dependencyを使用するプロファイルを指定できます。
バージョン1.7の参加者
1.7の開発には144人が参加しました。 どうもありがとう!