Rust 1.24リリース

Rustチームは、Rustの新しいバージョン1.24.0を発表します。 Rustは、セキュリティ、速度、および並列コード実行を目的としたシステムプログラミング言語です。







Rustの以前のバージョンがインストールされている場合は、アップグレードするだけです:







$ rustup update stable
      
      





rustupをまだインストールしていない場合は、当社のWebサイトの対応するページからインストールできます。 Rust 1.24.0の詳細なリリースノートは GitHubで入手できます。







安定バージョン1.24.0に含まれるもの



このリリースには、 rustfmt



とインクリメンタルコンパイルの2つの非常に興味深い新機能が含まれています。









rustfmt



何年もの間、 Rust



コードをある種の「標準」スタイルに自動的にフォーマットできるツールが必要でした。 このリリースでは、安定バージョン1.24で使用できるrustfmt



のプレビューを発表します。 試すには、次のコマンドを実行します。







 $ rustup component add rustfmt-preview
      
      





ここには2つの重要なポイントがあります:最初に、 cargo install



代わりにrustup component add



を使用します。 以前にcargo install



rustfmt



を使用した場合は、最初にアンインストールする必要があります。 第二に、タイトルが示すように、これはプレビューです。 rustfmt



はまだバージョン1.0に達していないため、バグ修正と同様にいくつかの設定がまだ行われています。 rustfmt



がバージョン1.0に達するとすぐに、 rustfmt



コンポーネントをリリースし、 rustfmt-preview



は廃止されたと見なされます。







近い将来、このリリース戦略に関する投稿を書く予定です。多くの情報があり、このリリースの投稿の範囲を超えています。







詳細については、github rustfmt









インクリメンタルコンパイル



2016年9月に、 インクリメンタルコンパイルについて説明しました。 この投稿では、それがどのように機能するかについて詳しく説明しましたが、重要なアイデアは次のとおりです。プロジェクトで作業する場合、多くの場合、プロジェクトをコンパイルし、コードの小さなセクションを変更して再度コンパイルする必要があります。 歴史的に、すべてのコードは、変更がどれほど小さくてもコンパイルされていました。 インクリメンタルコンパイルの概念は、実際に変更されたコードのみをコンパイルすることです。つまり、後続のコンパイルが高速になります。







バージョン1.24以降、これはデフォルト有効になります 。 これは、ビルドが高速になることを意味します。 また、 cargo check



コマンドも忘れないでください。最小ビルド時間を取得できます(注:このコマンドはbinarをビルドせず、コードの正確性のみをチェックしますが、インクリメンタルコンパイルキャッシュを理解しているため、デバッグモードでのビルドの高速化につながります) これは、コンパイラのパフォーマンスとインクリメンタルコンパイルに関する作業の終わりではありません。 将来的には、さらに多くの作業を計画しています。 たとえば、このリリースで安定化された別のcodegen-units



変更: codegen-units



デフォルトで16に設定されるようになりました
。 この変更に関する簡単なメモ:ビルドは高速になりますが、最終的なコードは少し遅くなります。 結果のコードのパフォーマンスを最大にするにCargo.toml



、プロジェクトのCargo.toml



codegen-units



1



Cargo.toml



ます。







リリースに含まれるその他の変更



ここで言及したいもう1つの変更があります。UBです。 Rust



は、安全なコードには単一のコードを、安全でないコードにはできる限り少なくして、UBを最小限に抑えることを目指しています。 UBに出会えるエリアの1つはpanic!



FFIから呼び出されます。 たとえば、次のように:







 extern "C" fn panic_in_ffi() { panic!("Test"); }
      
      





パニックの正確なメカニズムは、この例でのC



ABIの動作、または他の例での他のABIの動作と一致する必要があるため、これは機能しない場合があります。







Rust 1.24では、未定義の動作を作成するのではなく、このコードが中断されるようになりました。







ライブラリの安定化



str::find



関数( &str



必要なchar



を見つけるために使用される)のファンなら&str



この要求プールを見るとうれしいはずです。 今では10倍高速です! これはmemchr



[u8]::contains



それを使用しますが 、そのような極端な加速はしません。







また、このリリースでは、いくつかの新しいAPIが安定化されました。









現在、次の関数を定数式で使用して、たとえばstatic



を初期化できstatic











開発者1.24



多くの人々がRust 1.24の開発に参加しました。 皆さん一人一人なしでは、これを達成できませんでした。 よろしくお願いします!








All Articles