忍者ブログ

mshencity

Rust 1.93 が到着しました。新機能は次のとおりです。


Rust 1.93.0 は安定版となり、本日リリースされました。パフォーマンスが重要なタスクに重要な新しいツールを提供しながら、コンパイラーの安全性保証を強化することに重点を置いています。これは、言語が最も重要な領域でより成熟していると感じられる確実なリリースです。

Linux (特に x86_64 または aarch64) 用の静的バイナリをビルドすると、ネットワークの信頼性が大幅に向上します。 Rust 1.93 では、バンドルされている musl ライブラリがバージョン 1.2.5 に引き上げられ、古いバージョンでの DNS 解決に関する長年の悩みが解決されました。これは、ネットワークを処理するポータブル Linux バイナリを構築している場合に、その機能の信頼性が大幅に向上するため、朗報です。

これは、大規模な DNS レコードや複雑な再帰ネームサーバーを扱う場合に特に役立ちます。 musl アップデートにより、いくつかの従来の互換性シンボルが削除されました。ザ・ラスト libc クレートはこれらのシンボルを使用しました。ただし、この問題に対する修正は 2 年以上前に提供されているため、ほとんどの最新のプロジェクトではアップグレード プロセス中に問題が発生することはありません。

グローバル アロケータがスレッド ローカル ストレージにアクセスできるようにすることで、標準ライブラリでは次のような機能を安全に使用できるようになりました。 std::thread_local! 再入の問題を引き起こすことなく。高度に最適化された低レベルのコードを作成するユーザーのために、 cfg 直接属性 asm! ラインが素晴らしいです。以前は、ターゲット フィーチャーに基づいていくつかのアセンブリ命令を条件付きで含める場合、全体を複​​製する必要がありました。 asm! 条件コンパイル ステートメント内のブロック。

これで、次のような条件付きコンパイルを適用できます。 #(cfg(target_feature = "sse2"))、ブロック内のアセンブリまたは拘束の個々のラインに直接適用されます。これにより、プラットフォーム固有の最適化の記述がよりクリーンになり、保守が容易になります。

このリリースでは多数の API が安定化し、開発者にメモリとデータ構造を管理するための新しいツールが提供されます。いくつかの新しいメソッド MaybeUninit スライスが安定するようになりました。これらには以下が含まれます assume_init_dropassume_init_ref、および次のようなメソッド write_copy_of_slice。これらにより、初期化されていないバッファを処理する際のメモリの安全性をきめ細かく制御できます。 FFI またはカスタム メモリ管理を使用している場合は、次の点にも感謝するでしょう。 String::into_raw_parts そして Vec::into_raw_parts 現在は正式になっています。

これにより、これらのコレクションを生のポインター、長さ、容量などのコア コンポーネントに分解できます。パフォーマンス中毒者は、次のような未チェックの整数演算の安定化を高く評価するでしょう。 unchecked_negunchecked_shl、 そして unchecked_shr。これらは、開発者がオーバーフローや無効なシフトが発生しないことを保証する、非常に高速で安全でないコードを作成するために重要です。

日常的に使用するには、 VecDeque コレクションには次のようなメソッドがあります pop_front_if そして pop_back_if。これにより、ユーザーはキューのどちらかの端から条件付きで項目を削除できるようになり、キューのロジックが非常に単純になります。

deref_nullptr null ポインターを逆参照しようとする試みを捕捉する lint は、デフォルトで拒否されるようになりました。これは、実行時ではなくコンパイル時に重大な安全性の問題を検出するのに役立つため、非常に歓迎される変更です。次のような新しい警告も追加されました。 function_casts_as_integer そして const_item_interior_mutations。これらは、ベスト プラクティスを強制し、定数項目内の内部可変性に関連する微妙なバグを防ぐのに役立ちます。







環境変数 CARGO_CFG_DEBUG_ASSERTIONS アクティブなプロファイルに基づいてビルド スクリプトで有効になるようになりました。これにより、コードがどのようにコンパイルされるかについて、ビルド スクリプトにさらなるコンテキストが与えられます。さらに、 cargo clean をサポートするようになりました --workspace フラグを使用すると、大規模なマルチパッケージ プロジェクトのクリーンアップが簡素化されます。依存関係グラフを頻繁に分析する場合は、 cargo tree 長い形式をサポートするようになりました。 --format 変数を使用すると、複雑な出力をカスタマイズしやすくなります。

この新しいバージョンには見どころがたくさんあり、アップグレードしてよかったと思うでしょう。すでに Rust がインストールされている場合は、次のコマンドを実行して今すぐアップデートを入手できます。 rustup update stable

出典: Rust (1)、Rust (2)

PR

コメント

プロフィール

HN:
No Name Ninja
性別:
非公開

P R