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-units1Cargo.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の開発に参加しました。 皆さん一人一人なしでは、これを達成できませんでした。 よろしくお願いします!



Source: https://habr.com/ru/post/J349252/


All Articles