Rust コンパイラと言語標準の次の安定リリースが公開されました。
組み込み musl ライブラリをバージョン 1.2.5 に更新する
様々な*-linux-muslターゲットプラットフォームにmusl 1.2.5が同梱されるようになりました。これは主に、これまでバージョン1.2.3を使用していたx86_64、aarch64、powerpc64le向けの静的muslビルドに影響します。このアップデートには、以下の内容が含まれます。 いくつかの修正と改善さらに、Rust エコシステムに影響を与える「破壊的な」変更が 1 つあります。
今回のアップデートの主な動機は、バージョン1.2.4で導入され、1.2.5でさらに改良されたmusl DNSリゾルバの大幅な改善です。muslを静的リンクに使用する場合、これによりポータブルバイナリにおけるネットワーク機能の信頼性が向上するはずです。 Linux特に、大規模なDNSレコードや再帰ネームサーバーを扱う場合。
しかし、バージョン1.2.4には 重大な変化: GitHubのlibcクレートで使用されているいくつかの非推奨の互換性シンボルを削除しました。この修正 libc 0.2.146 は 2023 年 6 月 (2,5 年前) にリリースされました。そして、Rust の対象プラットフォームに変更を加えることができるほど広く普及したと考えています。
グローバルアロケータがTLSを使用できるようにする
Rust 1.93では標準ライブラリの内部構造が調整され、Rustで記述されたグローバルアロケータがシステムアロケータを使用することで、再入性のリスクなしにstd::thread_local!とstd::thread::currentを使用できるようになりました。詳細はRust標準ライブラリのドキュメントをご覧ください。
asm 行の cfg 属性!
以前は、インラインアセンブリセクションの個々の部分で条件付きcfgコンパイルが必要な場合、asm!ブロック全体を複製する必要がありました。バージョン1.93では、cfg属性をブロック内の個々の命令に適用できるようになりました。
asm!( // または global_asm! または naked_asm! "nop", #[cfg(target_feature = "sse2")] "nop", // ... #[cfg(target_feature = "sse2")] a = const 123, // sse2 でのみ使用されます );
次の API は安定カテゴリに移動されました。
<[たぶんUninit ]>::assume_init_drop <[MaybeUninit ]>::assume_init_ref` <[MaybeUninit ]>::assume_init_mut` <[MaybeUninit ]>::write_copy_of_slice` <[MaybeUninit ]>::write_clone_of_slice` 文字列::into_raw_parts` Vec::into_raw_parts` ::unchecked_neg` ::未チェック_shl` ::未チェック_shr` ::未チェック_shl` ::unchecked_shr` <[T]>::as_array` <[T]>::as_array_mut` <*const [T]>::as_array` <*mut [T]>::as_array_mut` VecDeque::pop_front_if` VecDeque::pop_back_if` Duration::from_nanos_u128` char::MAX_LEN_UTF8` char::MAX_LEN_UTF16` std::fmt::from_fn` std::fmt::FromFn`
出所: linux.org.ru
