いつものように、公式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人が参加しました。 どうもありがとう!
1.7の参加者のリスト
- アーロン・ツロン
- アダム・ペリー
- エイドリアン・ハイネ
- エイダン・ホブソン・セイヤーズ
- アレクセイ・クラドフ
- アレクサンダー・ロパチン
- アレックスブルカ
- アレックス・クリトン
- アリクラーク
- アマニユー・ダントラス
- アンドレア・ベディーニ
- アンドレア・カンチャーニ
- アンドレ・ボーガス
- アンドリュー・バルチャック
- アンドリュー・パセルティナー
- 天使
- アントン・ブランチャード
- arcnmx
- アリエル・ベン・イェフダ
- アーサー
- アシュレイソマー
- バロスル・リー
- ベンジャミン・ハー
- ビョルン・シュタインブリンク
- ボール
- ブランドン・マイスター
- ブライアン・アンダーソン
- ブライアン・キャンベル
- カルロス・E・ガルシア
- チャドシャファー
- コリー・ファーウェル
- ダーン・スプレンケル
- ダニエル・キャンベル
- ダニエル・ロバートソン
- デイブ・ホダー
- デイブ・ハズビー
- dileepb
- ダーク・ガズデン
- エデュアルド・ブルテスク
- エリック・トリゼル
- est31
- エヴァン
- ファブリス・デスレ
- fbergr
- フェリックス・グルーバー
- フェリックス・S・クロックII
- フロリアン・ハーン
- ジェフ・カトリン
- ジェフリー・トーマス
- ゲオルグ・ブランドル
- ゴメス
- グレブ・コジレフ
- ゴーカン・カラブルト
- グレッグ・チャップル
- ギヨームボンネット
- ギョーム・ゴメス
- イワン・コジク
- ジャック・オコナー
- ジェフリー・セイフリード
- ヨハン・ロレンソ
- ヨハネス・エルテル
- ジョン・ホッジ
- ジョン・コール・アルザケル
- ジョナス・シエヴィンク
- ジョナサン・リーム
- ジョナサン
- ホルヘ・アパリシオ
- ジョシュ・ストーン
- カマル・マルヒビ
- カッツェ
- キース・ヨン
- ケネス・コスキ
- ケビンストック
- ルーク・ジョーンズ
- マニッシュゴレガオカル
- マーク・ボウズ
- マーヴィン・レーベル
- マスード・マレカッセミ
- マット・ブルーベック
- マティアス・ムストハ
- マイケル・フイン
- マイケル・ノイマン
- マイケル・ウーリスター
- みた
- モップ
- ネイサン・クライン
- ニコラス・マッズーカ
- ニック・キャメロン
- ニキータ・バクサリヤール
- ニコ・マタキス
- 野田カイ
- nxnfufunezn
- オラフ・ブッデンハーゲン
- オリバー「カー」シュナイダー
- オリバー・ミドルトン
- オリバー・シュナイダー
- パスカルHertleif
- ポール・ディッカー
- ポール・スミス
- ピーター・アタシアン
- ピーター・コロック
- ピートバイン
- ピエール・クリーガー
- Piotr czarnecki
- プラヤグ・ヴァーマ
- qpid
- ラビ・シャンカール
- Reeze Xia
- リチャード・ブラッドフィールド
- ロビン・クルッペ
- rphmeier
- ルード・ファン・アッセルドンク
- ライアン・トーマス
- ひだまり
- スコット・オルソン
- スコット・ウィテカー
- ショーン・レフラー
- ショーン・マクター
- セバスチャン・ハーン
- セバスチャン・ウィッキ
- セバスチャン・マリー
- ソ・サンヒョン
- セルゲイ・ヴェセルコフ
- シモナス・カズラウスカス
- サイモン・サパン
- ステパン・コルツォフ
- ステファン・ヒューゲル
- スティーブ・クラブニック
- スティーブンアレン
- スティーブン・ファクラー
- タミール・デュベルスタイン
- tgor
- トーマス・ウィッカム
- トーマス・ウィンウッド
- トビアス・ブッチャー
- トビー・スクレース
- トマス・ミエスコ
- トルモル
- シェパンレコンホーベ
- ウルリック・スヴェルドラップ
- ヴァディム・ペトロチェンコフ
- ヴィンセントエスケープ
- ウラド・ウレチェ
- 王山呂
- ウェズリー・ワイザー