From 43ba3ae70a38a8e2bc5143e6a9787ccadd496529 Mon Sep 17 00:00:00 2001 From: Pietro Albini Date: Fri, 9 May 2025 18:20:01 +0200 Subject: [PATCH 01/21] update version placeholders --- compiler/rustc_feature/src/accepted.rs | 4 ++-- compiler/rustc_feature/src/removed.rs | 2 +- compiler/rustc_feature/src/unstable.rs | 20 ++++++++-------- library/alloc/src/ffi/mod.rs | 2 +- library/core/src/arch.rs | 2 +- library/core/src/cell.rs | 12 +++++----- library/core/src/ffi/mod.rs | 2 +- library/core/src/hint.rs | 2 +- library/core/src/ptr/const_ptr.rs | 2 +- library/core/src/ptr/mod.rs | 2 +- library/core/src/ptr/mut_ptr.rs | 4 ++-- library/core/src/ptr/non_null.rs | 2 +- library/core/src/slice/mod.rs | 24 +++++++++---------- library/proc_macro/src/lib.rs | 12 +++++----- library/std/src/collections/hash/map.rs | 10 ++++---- library/std/src/collections/hash/set.rs | 10 ++++---- library/std/src/ffi/mod.rs | 2 +- .../documentation-tests.md | 2 +- 18 files changed, 58 insertions(+), 58 deletions(-) diff --git a/compiler/rustc_feature/src/accepted.rs b/compiler/rustc_feature/src/accepted.rs index e3e4eefe5e10a..809d1630ddec1 100644 --- a/compiler/rustc_feature/src/accepted.rs +++ b/compiler/rustc_feature/src/accepted.rs @@ -96,7 +96,7 @@ declare_features! ( /// Allows `#[cfg_attr(predicate, multiple, attributes, here)]`. (accepted, cfg_attr_multi, "1.33.0", Some(54881)), /// Allows the use of `#[cfg()]`. - (accepted, cfg_boolean_literals, "CURRENT_RUSTC_VERSION", Some(131204)), + (accepted, cfg_boolean_literals, "1.88.0", Some(131204)), /// Allows the use of `#[cfg(doctest)]`, set when rustdoc is collecting doctests. (accepted, cfg_doctest, "1.40.0", Some(62210)), /// Enables `#[cfg(panic = "...")]` config key. @@ -301,7 +301,7 @@ declare_features! ( /// For example, you can write `Foo(a, ref b)` where `a` is by-move and `b` is by-ref. (accepted, move_ref_pattern, "1.49.0", Some(68354)), /// Allows using `#[naked]` on functions. - (accepted, naked_functions, "CURRENT_RUSTC_VERSION", Some(90957)), + (accepted, naked_functions, "1.88.0", Some(90957)), /// Allows specifying modifiers in the link attribute: `#[link(modifiers = "...")]` (accepted, native_link_modifiers, "1.61.0", Some(81490)), /// Allows specifying the bundle link modifier diff --git a/compiler/rustc_feature/src/removed.rs b/compiler/rustc_feature/src/removed.rs index 402e18c5d1482..687d859df5359 100644 --- a/compiler/rustc_feature/src/removed.rs +++ b/compiler/rustc_feature/src/removed.rs @@ -143,7 +143,7 @@ declare_features! ( (removed, infer_static_outlives_requirements, "1.63.0", Some(54185), Some("removed as it caused some confusion and discussion was inactive for years")), /// Allow anonymous constants from an inline `const` block in pattern position - (removed, inline_const_pat, "CURRENT_RUSTC_VERSION", Some(76001), + (removed, inline_const_pat, "1.88.0", Some(76001), Some("removed due to implementation concerns as it requires significant refactorings")), /// Lazily evaluate constants. This allows constants to depend on type parameters. (removed, lazy_normalization_consts, "1.46.0", Some(72219), Some("superseded by `generic_const_exprs`")), diff --git a/compiler/rustc_feature/src/unstable.rs b/compiler/rustc_feature/src/unstable.rs index a5f89b7a076ae..8fb10736539a3 100644 --- a/compiler/rustc_feature/src/unstable.rs +++ b/compiler/rustc_feature/src/unstable.rs @@ -206,7 +206,7 @@ declare_features! ( /// Allows access to the emscripten_wasm_eh config, used by panic_unwind and unwind (internal, cfg_emscripten_wasm_eh, "1.86.0", None), /// Allows checking whether or not the backend correctly supports unstable float types. - (internal, cfg_target_has_reliable_f16_f128, "CURRENT_RUSTC_VERSION", None), + (internal, cfg_target_has_reliable_f16_f128, "1.88.0", None), /// Allows identifying the `compiler_builtins` crate. (internal, compiler_builtins, "1.13.0", None), /// Allows writing custom MIR @@ -316,7 +316,7 @@ declare_features! ( // Unstable `#[target_feature]` directives. (unstable, aarch64_unstable_target_feature, "1.82.0", Some(44839)), (unstable, aarch64_ver_target_feature, "1.27.0", Some(44839)), - (unstable, apx_target_feature, "CURRENT_RUSTC_VERSION", Some(139284)), + (unstable, apx_target_feature, "1.88.0", Some(139284)), (unstable, arm_target_feature, "1.27.0", Some(44839)), (unstable, avx512_target_feature, "1.27.0", Some(44839)), (unstable, bpf_target_feature, "1.54.0", Some(44839)), @@ -327,7 +327,7 @@ declare_features! ( (unstable, loongarch_target_feature, "1.73.0", Some(44839)), (unstable, m68k_target_feature, "1.85.0", Some(134328)), (unstable, mips_target_feature, "1.27.0", Some(44839)), - (unstable, movrs_target_feature, "CURRENT_RUSTC_VERSION", Some(137976)), + (unstable, movrs_target_feature, "1.88.0", Some(137976)), (unstable, powerpc_target_feature, "1.27.0", Some(44839)), (unstable, prfchw_target_feature, "1.78.0", Some(44839)), (unstable, riscv_target_feature, "1.45.0", Some(44839)), @@ -385,7 +385,7 @@ declare_features! ( /// Allows associated type defaults. (unstable, associated_type_defaults, "1.2.0", Some(29661)), /// Allows implementing `AsyncDrop`. - (incomplete, async_drop, "CURRENT_RUSTC_VERSION", Some(126482)), + (incomplete, async_drop, "1.88.0", Some(126482)), /// Allows async functions to be called from `dyn Trait`. (incomplete, async_fn_in_dyn_trait, "1.85.0", Some(133119)), /// Allows `#[track_caller]` on async functions. @@ -395,7 +395,7 @@ declare_features! ( /// Allows `async` trait bound modifier. (unstable, async_trait_bounds, "1.85.0", Some(62290)), /// Allows using Intel AVX10 target features and intrinsics - (unstable, avx10_target_feature, "CURRENT_RUSTC_VERSION", Some(138843)), + (unstable, avx10_target_feature, "1.88.0", Some(138843)), /// Allows using C-variadics. (unstable, c_variadic, "1.34.0", Some(44930)), /// Allows the use of `#[cfg(contract_checks)` to check if contract checks are enabled. @@ -483,11 +483,11 @@ declare_features! ( /// Allows exhaustive pattern matching on types that contain uninhabited types. (unstable, exhaustive_patterns, "1.13.0", Some(51085)), /// Disallows `extern` without an explicit ABI. - (unstable, explicit_extern_abis, "CURRENT_RUSTC_VERSION", Some(134986)), + (unstable, explicit_extern_abis, "1.88.0", Some(134986)), /// Allows explicit tail calls via `become` expression. (incomplete, explicit_tail_calls, "1.72.0", Some(112788)), /// Allows using `#[export_stable]` which indicates that an item is exportable. - (incomplete, export_stable, "CURRENT_RUSTC_VERSION", Some(139939)), + (incomplete, export_stable, "1.88.0", Some(139939)), /// Allows using `aapcs`, `efiapi`, `sysv64` and `win64` as calling conventions /// for functions with varargs. (unstable, extended_varargs_abi_support, "1.65.0", Some(100189)), @@ -512,7 +512,7 @@ declare_features! ( /// Allows impls for the Freeze trait. (internal, freeze_impls, "1.78.0", Some(121675)), /// Frontmatter `---` blocks for use by external tools. - (unstable, frontmatter, "CURRENT_RUSTC_VERSION", Some(136889)), + (unstable, frontmatter, "1.88.0", Some(136889)), /// Allows defining gen blocks and `gen fn`. (unstable, gen_blocks, "1.75.0", Some(117078)), /// Infer generic args for both consts and types. @@ -575,7 +575,7 @@ declare_features! ( /// Allows `mut ref` and `mut ref mut` identifier patterns. (incomplete, mut_ref, "1.79.0", Some(123076)), /// Allows using `#[naked]` on `extern "Rust"` functions. - (unstable, naked_functions_rustic_abi, "CURRENT_RUSTC_VERSION", Some(138997)), + (unstable, naked_functions_rustic_abi, "1.88.0", Some(138997)), /// Allows using `#[target_feature(enable = "...")]` on `#[naked]` on functions. (unstable, naked_functions_target_feature, "1.86.0", Some(138568)), /// Allows specifying the as-needed link modifier @@ -641,7 +641,7 @@ declare_features! ( /// Allows string patterns to dereference values to match them. (unstable, string_deref_patterns, "1.67.0", Some(87121)), /// Allows `super let` statements. - (unstable, super_let, "CURRENT_RUSTC_VERSION", Some(139076)), + (unstable, super_let, "1.88.0", Some(139076)), /// Allows subtrait items to shadow supertrait items. (unstable, supertrait_item_shadowing, "1.86.0", Some(89151)), /// Allows using `#[thread_local]` on `static` items. diff --git a/library/alloc/src/ffi/mod.rs b/library/alloc/src/ffi/mod.rs index 05a2763a22596..1c408ace33613 100644 --- a/library/alloc/src/ffi/mod.rs +++ b/library/alloc/src/ffi/mod.rs @@ -87,5 +87,5 @@ pub use self::c_str::CString; #[stable(feature = "alloc_c_string", since = "1.64.0")] pub use self::c_str::{FromVecWithNulError, IntoStringError, NulError}; -#[stable(feature = "c_str_module", since = "CURRENT_RUSTC_VERSION")] +#[stable(feature = "c_str_module", since = "1.88.0")] pub mod c_str; diff --git a/library/core/src/arch.rs b/library/core/src/arch.rs index f19fde2b4c733..e5078a45c6d9c 100644 --- a/library/core/src/arch.rs +++ b/library/core/src/arch.rs @@ -32,7 +32,7 @@ pub macro asm("assembly template", $(operands,)* $(options($(option),*))?) { /// /// [Rust By Example]: https://doc.rust-lang.org/nightly/rust-by-example/unsafe/asm.html /// [reference]: https://doc.rust-lang.org/nightly/reference/inline-assembly.html -#[stable(feature = "naked_functions", since = "CURRENT_RUSTC_VERSION")] +#[stable(feature = "naked_functions", since = "1.88.0")] #[rustc_builtin_macro] pub macro naked_asm("assembly template", $(operands,)* $(options($(option),*))?) { /* compiler built-in */ diff --git a/library/core/src/cell.rs b/library/core/src/cell.rs index c7657350a0d9a..ed523920e42b5 100644 --- a/library/core/src/cell.rs +++ b/library/core/src/cell.rs @@ -495,7 +495,7 @@ impl Cell { /// ``` #[inline] #[stable(feature = "move_cell", since = "1.17.0")] - #[rustc_const_stable(feature = "const_cell", since = "CURRENT_RUSTC_VERSION")] + #[rustc_const_stable(feature = "const_cell", since = "1.88.0")] #[rustc_confusables("swap")] pub const fn replace(&self, val: T) -> T { // SAFETY: This can cause data races if called from a separate thread, @@ -537,7 +537,7 @@ impl Cell { /// ``` #[inline] #[stable(feature = "rust1", since = "1.0.0")] - #[rustc_const_stable(feature = "const_cell", since = "CURRENT_RUSTC_VERSION")] + #[rustc_const_stable(feature = "const_cell", since = "1.88.0")] pub const fn get(&self) -> T { // SAFETY: This can cause data races if called from a separate thread, // but `Cell` is `!Sync` so this won't happen. @@ -556,7 +556,7 @@ impl Cell { /// assert_eq!(c.get(), 6); /// ``` #[inline] - #[stable(feature = "cell_update", since = "CURRENT_RUSTC_VERSION")] + #[stable(feature = "cell_update", since = "1.88.0")] pub fn update(&self, f: impl FnOnce(T) -> T) { let old = self.get(); self.set(f(old)); @@ -608,7 +608,7 @@ impl Cell { /// ``` #[inline] #[stable(feature = "cell_get_mut", since = "1.11.0")] - #[rustc_const_stable(feature = "const_cell", since = "CURRENT_RUSTC_VERSION")] + #[rustc_const_stable(feature = "const_cell", since = "1.88.0")] pub const fn get_mut(&mut self) -> &mut T { self.value.get_mut() } @@ -628,7 +628,7 @@ impl Cell { /// ``` #[inline] #[stable(feature = "as_cell", since = "1.37.0")] - #[rustc_const_stable(feature = "const_cell", since = "CURRENT_RUSTC_VERSION")] + #[rustc_const_stable(feature = "const_cell", since = "1.88.0")] pub const fn from_mut(t: &mut T) -> &Cell { // SAFETY: `&mut` ensures unique access. unsafe { &*(t as *mut T as *const Cell) } @@ -686,7 +686,7 @@ impl Cell<[T]> { /// assert_eq!(slice_cell.len(), 3); /// ``` #[stable(feature = "as_cell", since = "1.37.0")] - #[rustc_const_stable(feature = "const_cell", since = "CURRENT_RUSTC_VERSION")] + #[rustc_const_stable(feature = "const_cell", since = "1.88.0")] pub const fn as_slice_of_cells(&self) -> &[Cell] { // SAFETY: `Cell` has the same memory layout as `T`. unsafe { &*(self as *const Cell<[T]> as *const [Cell]) } diff --git a/library/core/src/ffi/mod.rs b/library/core/src/ffi/mod.rs index c9c73a25d899e..288d0df0d05bb 100644 --- a/library/core/src/ffi/mod.rs +++ b/library/core/src/ffi/mod.rs @@ -20,7 +20,7 @@ pub use self::c_str::FromBytesUntilNulError; pub use self::c_str::FromBytesWithNulError; use crate::fmt; -#[stable(feature = "c_str_module", since = "CURRENT_RUSTC_VERSION")] +#[stable(feature = "c_str_module", since = "1.88.0")] pub mod c_str; #[unstable( diff --git a/library/core/src/hint.rs b/library/core/src/hint.rs index cb83540c4eaf7..6eefb30468931 100644 --- a/library/core/src/hint.rs +++ b/library/core/src/hint.rs @@ -782,7 +782,7 @@ pub const fn cold_path() { /// # assert_eq!(bucket_one.len() + bucket_two.len(), 1); /// ``` #[inline(always)] -#[stable(feature = "select_unpredictable", since = "CURRENT_RUSTC_VERSION")] +#[stable(feature = "select_unpredictable", since = "1.88.0")] pub fn select_unpredictable(condition: bool, true_val: T, false_val: T) -> T { // FIXME(https://github.com/rust-lang/unsafe-code-guidelines/issues/245): // Change this to use ManuallyDrop instead. diff --git a/library/core/src/ptr/const_ptr.rs b/library/core/src/ptr/const_ptr.rs index 5234fb83eb67c..35089b4853d7f 100644 --- a/library/core/src/ptr/const_ptr.rs +++ b/library/core/src/ptr/const_ptr.rs @@ -1741,7 +1741,7 @@ impl PartialOrd for *const T { } } -#[stable(feature = "raw_ptr_default", since = "CURRENT_RUSTC_VERSION")] +#[stable(feature = "raw_ptr_default", since = "1.88.0")] impl Default for *const T { /// Returns the default value of [`null()`][crate::ptr::null]. fn default() -> Self { diff --git a/library/core/src/ptr/mod.rs b/library/core/src/ptr/mod.rs index aa103af93ffcb..bd6c4daa509d9 100644 --- a/library/core/src/ptr/mod.rs +++ b/library/core/src/ptr/mod.rs @@ -1101,7 +1101,7 @@ pub const unsafe fn swap(x: *mut T, y: *mut T) { /// ``` #[inline] #[stable(feature = "swap_nonoverlapping", since = "1.27.0")] -#[rustc_const_stable(feature = "const_swap_nonoverlapping", since = "CURRENT_RUSTC_VERSION")] +#[rustc_const_stable(feature = "const_swap_nonoverlapping", since = "1.88.0")] #[rustc_diagnostic_item = "ptr_swap_nonoverlapping"] #[rustc_allow_const_fn_unstable(const_eval_select)] // both implementations behave the same pub const unsafe fn swap_nonoverlapping(x: *mut T, y: *mut T, count: usize) { diff --git a/library/core/src/ptr/mut_ptr.rs b/library/core/src/ptr/mut_ptr.rs index 31b8d3b572c0b..9cf251742d427 100644 --- a/library/core/src/ptr/mut_ptr.rs +++ b/library/core/src/ptr/mut_ptr.rs @@ -1576,7 +1576,7 @@ impl *mut T { /// /// [`ptr::replace`]: crate::ptr::replace() #[stable(feature = "pointer_methods", since = "1.26.0")] - #[rustc_const_stable(feature = "const_inherent_ptr_replace", since = "CURRENT_RUSTC_VERSION")] + #[rustc_const_stable(feature = "const_inherent_ptr_replace", since = "1.88.0")] #[inline(always)] pub const unsafe fn replace(self, src: T) -> T where @@ -2159,7 +2159,7 @@ impl PartialOrd for *mut T { } } -#[stable(feature = "raw_ptr_default", since = "CURRENT_RUSTC_VERSION")] +#[stable(feature = "raw_ptr_default", since = "1.88.0")] impl Default for *mut T { /// Returns the default value of [`null_mut()`][crate::ptr::null_mut]. fn default() -> Self { diff --git a/library/core/src/ptr/non_null.rs b/library/core/src/ptr/non_null.rs index 0864cc457b658..d05fb6a6d3199 100644 --- a/library/core/src/ptr/non_null.rs +++ b/library/core/src/ptr/non_null.rs @@ -1166,7 +1166,7 @@ impl NonNull { /// [`ptr::replace`]: crate::ptr::replace() #[inline(always)] #[stable(feature = "non_null_convenience", since = "1.80.0")] - #[rustc_const_stable(feature = "const_inherent_ptr_replace", since = "CURRENT_RUSTC_VERSION")] + #[rustc_const_stable(feature = "const_inherent_ptr_replace", since = "1.88.0")] pub const unsafe fn replace(self, src: T) -> T where T: Sized, diff --git a/library/core/src/slice/mod.rs b/library/core/src/slice/mod.rs index 81fe0166fd77b..88b6674d4cccc 100644 --- a/library/core/src/slice/mod.rs +++ b/library/core/src/slice/mod.rs @@ -1303,8 +1303,8 @@ impl [T] { /// // let chunks: &[[_; 5]] = slice.as_chunks_unchecked() // The slice length is not a multiple of 5 /// // let chunks: &[[_; 0]] = slice.as_chunks_unchecked() // Zero-length chunks are never allowed /// ``` - #[stable(feature = "slice_as_chunks", since = "CURRENT_RUSTC_VERSION")] - #[rustc_const_stable(feature = "slice_as_chunks", since = "CURRENT_RUSTC_VERSION")] + #[stable(feature = "slice_as_chunks", since = "1.88.0")] + #[rustc_const_stable(feature = "slice_as_chunks", since = "1.88.0")] #[inline] #[must_use] pub const unsafe fn as_chunks_unchecked(&self) -> &[[T; N]] { @@ -1360,8 +1360,8 @@ impl [T] { /// }; /// assert_eq!(chunks, &[['R', 'u'], ['s', 't']]); /// ``` - #[stable(feature = "slice_as_chunks", since = "CURRENT_RUSTC_VERSION")] - #[rustc_const_stable(feature = "slice_as_chunks", since = "CURRENT_RUSTC_VERSION")] + #[stable(feature = "slice_as_chunks", since = "1.88.0")] + #[rustc_const_stable(feature = "slice_as_chunks", since = "1.88.0")] #[inline] #[track_caller] #[must_use] @@ -1407,8 +1407,8 @@ impl [T] { /// assert_eq!(remainder, &['l']); /// assert_eq!(chunks, &[['o', 'r'], ['e', 'm']]); /// ``` - #[stable(feature = "slice_as_chunks", since = "CURRENT_RUSTC_VERSION")] - #[rustc_const_stable(feature = "slice_as_chunks", since = "CURRENT_RUSTC_VERSION")] + #[stable(feature = "slice_as_chunks", since = "1.88.0")] + #[rustc_const_stable(feature = "slice_as_chunks", since = "1.88.0")] #[inline] #[track_caller] #[must_use] @@ -1498,8 +1498,8 @@ impl [T] { /// // let chunks: &[[_; 5]] = slice.as_chunks_unchecked_mut() // The slice length is not a multiple of 5 /// // let chunks: &[[_; 0]] = slice.as_chunks_unchecked_mut() // Zero-length chunks are never allowed /// ``` - #[stable(feature = "slice_as_chunks", since = "CURRENT_RUSTC_VERSION")] - #[rustc_const_stable(feature = "slice_as_chunks", since = "CURRENT_RUSTC_VERSION")] + #[stable(feature = "slice_as_chunks", since = "1.88.0")] + #[rustc_const_stable(feature = "slice_as_chunks", since = "1.88.0")] #[inline] #[must_use] pub const unsafe fn as_chunks_unchecked_mut(&mut self) -> &mut [[T; N]] { @@ -1551,8 +1551,8 @@ impl [T] { /// } /// assert_eq!(v, &[1, 1, 2, 2, 9]); /// ``` - #[stable(feature = "slice_as_chunks", since = "CURRENT_RUSTC_VERSION")] - #[rustc_const_stable(feature = "slice_as_chunks", since = "CURRENT_RUSTC_VERSION")] + #[stable(feature = "slice_as_chunks", since = "1.88.0")] + #[rustc_const_stable(feature = "slice_as_chunks", since = "1.88.0")] #[inline] #[track_caller] #[must_use] @@ -1604,8 +1604,8 @@ impl [T] { /// } /// assert_eq!(v, &[9, 1, 1, 2, 2]); /// ``` - #[stable(feature = "slice_as_chunks", since = "CURRENT_RUSTC_VERSION")] - #[rustc_const_stable(feature = "slice_as_chunks", since = "CURRENT_RUSTC_VERSION")] + #[stable(feature = "slice_as_chunks", since = "1.88.0")] + #[rustc_const_stable(feature = "slice_as_chunks", since = "1.88.0")] #[inline] #[track_caller] #[must_use] diff --git a/library/proc_macro/src/lib.rs b/library/proc_macro/src/lib.rs index 79e9b8430b8d5..b4fd20c0c176a 100644 --- a/library/proc_macro/src/lib.rs +++ b/library/proc_macro/src/lib.rs @@ -513,13 +513,13 @@ impl Span { } /// Creates an empty span pointing to directly before this span. - #[stable(feature = "proc_macro_span_location", since = "CURRENT_RUSTC_VERSION")] + #[stable(feature = "proc_macro_span_location", since = "1.88.0")] pub fn start(&self) -> Span { Span(self.0.start()) } /// Creates an empty span pointing to directly after this span. - #[stable(feature = "proc_macro_span_location", since = "CURRENT_RUSTC_VERSION")] + #[stable(feature = "proc_macro_span_location", since = "1.88.0")] pub fn end(&self) -> Span { Span(self.0.end()) } @@ -527,7 +527,7 @@ impl Span { /// The one-indexed line of the source file where the span starts. /// /// To obtain the line of the span's end, use `span.end().line()`. - #[stable(feature = "proc_macro_span_location", since = "CURRENT_RUSTC_VERSION")] + #[stable(feature = "proc_macro_span_location", since = "1.88.0")] pub fn line(&self) -> usize { self.0.line() } @@ -535,7 +535,7 @@ impl Span { /// The one-indexed column of the source file where the span starts. /// /// To obtain the column of the span's end, use `span.end().column()`. - #[stable(feature = "proc_macro_span_location", since = "CURRENT_RUSTC_VERSION")] + #[stable(feature = "proc_macro_span_location", since = "1.88.0")] pub fn column(&self) -> usize { self.0.column() } @@ -544,7 +544,7 @@ impl Span { /// /// This might not correspond to a valid file system path. /// It might be remapped (e.g. `"/src/lib.rs"`) or an artificial path (e.g. `""`). - #[stable(feature = "proc_macro_span_file", since = "CURRENT_RUSTC_VERSION")] + #[stable(feature = "proc_macro_span_file", since = "1.88.0")] pub fn file(&self) -> String { self.0.file() } @@ -554,7 +554,7 @@ impl Span { /// This is the actual path on disk. It is unaffected by path remapping. /// /// This path should not be embedded in the output of the macro; prefer `file()` instead. - #[stable(feature = "proc_macro_span_file", since = "CURRENT_RUSTC_VERSION")] + #[stable(feature = "proc_macro_span_file", since = "1.88.0")] pub fn local_file(&self) -> Option { self.0.local_file().map(|s| PathBuf::from(s)) } diff --git a/library/std/src/collections/hash/map.rs b/library/std/src/collections/hash/map.rs index 961d6ee0665c1..3530f890f5294 100644 --- a/library/std/src/collections/hash/map.rs +++ b/library/std/src/collections/hash/map.rs @@ -683,7 +683,7 @@ impl HashMap { /// ``` #[inline] #[rustc_lint_query_instability] - #[stable(feature = "hash_extract_if", since = "CURRENT_RUSTC_VERSION")] + #[stable(feature = "hash_extract_if", since = "1.88.0")] pub fn extract_if(&mut self, pred: F) -> ExtractIf<'_, K, V, F> where F: FnMut(&K, &mut V) -> bool, @@ -1680,7 +1680,7 @@ impl<'a, K, V> Drain<'a, K, V> { /// ]); /// let iter = map.extract_if(|_k, v| *v % 2 == 0); /// ``` -#[stable(feature = "hash_extract_if", since = "CURRENT_RUSTC_VERSION")] +#[stable(feature = "hash_extract_if", since = "1.88.0")] #[must_use = "iterators are lazy and do nothing unless consumed"] pub struct ExtractIf<'a, K, V, F> { base: base::ExtractIf<'a, K, V, F>, @@ -2294,7 +2294,7 @@ where } } -#[stable(feature = "hash_extract_if", since = "CURRENT_RUSTC_VERSION")] +#[stable(feature = "hash_extract_if", since = "1.88.0")] impl Iterator for ExtractIf<'_, K, V, F> where F: FnMut(&K, &mut V) -> bool, @@ -2311,10 +2311,10 @@ where } } -#[stable(feature = "hash_extract_if", since = "CURRENT_RUSTC_VERSION")] +#[stable(feature = "hash_extract_if", since = "1.88.0")] impl FusedIterator for ExtractIf<'_, K, V, F> where F: FnMut(&K, &mut V) -> bool {} -#[stable(feature = "hash_extract_if", since = "CURRENT_RUSTC_VERSION")] +#[stable(feature = "hash_extract_if", since = "1.88.0")] impl fmt::Debug for ExtractIf<'_, K, V, F> where K: fmt::Debug, diff --git a/library/std/src/collections/hash/set.rs b/library/std/src/collections/hash/set.rs index fa2f4f0a58fec..8514dfd9a984d 100644 --- a/library/std/src/collections/hash/set.rs +++ b/library/std/src/collections/hash/set.rs @@ -308,7 +308,7 @@ impl HashSet { /// ``` #[inline] #[rustc_lint_query_instability] - #[stable(feature = "hash_extract_if", since = "CURRENT_RUSTC_VERSION")] + #[stable(feature = "hash_extract_if", since = "1.88.0")] pub fn extract_if(&mut self, pred: F) -> ExtractIf<'_, T, F> where F: FnMut(&T) -> bool, @@ -1390,7 +1390,7 @@ pub struct Drain<'a, K: 'a> { /// /// let mut extract_ifed = a.extract_if(|v| v % 2 == 0); /// ``` -#[stable(feature = "hash_extract_if", since = "CURRENT_RUSTC_VERSION")] +#[stable(feature = "hash_extract_if", since = "1.88.0")] pub struct ExtractIf<'a, K, F> { base: base::ExtractIf<'a, K, F>, } @@ -1670,7 +1670,7 @@ impl fmt::Debug for Drain<'_, K> { } } -#[stable(feature = "hash_extract_if", since = "CURRENT_RUSTC_VERSION")] +#[stable(feature = "hash_extract_if", since = "1.88.0")] impl Iterator for ExtractIf<'_, K, F> where F: FnMut(&K) -> bool, @@ -1687,10 +1687,10 @@ where } } -#[stable(feature = "hash_extract_if", since = "CURRENT_RUSTC_VERSION")] +#[stable(feature = "hash_extract_if", since = "1.88.0")] impl FusedIterator for ExtractIf<'_, K, F> where F: FnMut(&K) -> bool {} -#[stable(feature = "hash_extract_if", since = "CURRENT_RUSTC_VERSION")] +#[stable(feature = "hash_extract_if", since = "1.88.0")] impl fmt::Debug for ExtractIf<'_, K, F> where K: fmt::Debug, diff --git a/library/std/src/ffi/mod.rs b/library/std/src/ffi/mod.rs index bd9446f5aba51..567916099101b 100644 --- a/library/std/src/ffi/mod.rs +++ b/library/std/src/ffi/mod.rs @@ -161,7 +161,7 @@ #![stable(feature = "rust1", since = "1.0.0")] -#[stable(feature = "c_str_module", since = "CURRENT_RUSTC_VERSION")] +#[stable(feature = "c_str_module", since = "1.88.0")] pub mod c_str; #[stable(feature = "core_c_void", since = "1.30.0")] diff --git a/src/doc/rustdoc/src/write-documentation/documentation-tests.md b/src/doc/rustdoc/src/write-documentation/documentation-tests.md index 077b02d603d0f..e6b15e0dbd325 100644 --- a/src/doc/rustdoc/src/write-documentation/documentation-tests.md +++ b/src/doc/rustdoc/src/write-documentation/documentation-tests.md @@ -462,7 +462,7 @@ struct Foo; ``` In older versions, this will be ignored on all targets, but starting with -version CURRENT_RUSTC_VERSION, `ignore-x86_64` will override `ignore`. +version 1.88.0, `ignore-x86_64` will override `ignore`. ### Custom CSS classes for code blocks From d63d8e5b771fe747c24cc45dec72aa969cea0172 Mon Sep 17 00:00:00 2001 From: Pietro Albini Date: Fri, 9 May 2025 18:20:18 +0200 Subject: [PATCH 02/21] bump channel to beta --- src/ci/channel | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ci/channel b/src/ci/channel index bf867e0ae5b6c..65b2df87f7df3 100644 --- a/src/ci/channel +++ b/src/ci/channel @@ -1 +1 @@ -nightly +beta From add3d33678e631f716aaa7e6ffe6a69b1663bd2f Mon Sep 17 00:00:00 2001 From: Weihang Lo Date: Sat, 10 May 2025 11:21:25 -0400 Subject: [PATCH 03/21] [beta-1.88] Update cargo --- src/tools/cargo | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/cargo b/src/tools/cargo index 7918c7eb59614..873a0649350c4 160000 --- a/src/tools/cargo +++ b/src/tools/cargo @@ -1 +1 @@ -Subproject commit 7918c7eb59614c39f1c4e27e99d557720976bdd7 +Subproject commit 873a0649350c486caf67be772828a4f36bb4734c From b166e65184147564cfd444caefb019d3251ed03c Mon Sep 17 00:00:00 2001 From: Andrew Zhogin Date: Sun, 11 May 2025 02:21:56 +0700 Subject: [PATCH 04/21] Async drop fix for async_drop_in_place layout calculated for unspecified T --- compiler/rustc_middle/src/ty/mod.rs | 3 +++ .../async-await/async-drop/open-drop-error.rs | 21 +++++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 tests/ui/async-await/async-drop/open-drop-error.rs diff --git a/compiler/rustc_middle/src/ty/mod.rs b/compiler/rustc_middle/src/ty/mod.rs index 2d69a1c2b553e..dda0faa3afedd 100644 --- a/compiler/rustc_middle/src/ty/mod.rs +++ b/compiler/rustc_middle/src/ty/mod.rs @@ -1924,6 +1924,9 @@ impl<'tcx> TyCtxt<'tcx> { def_id: DefId, args: GenericArgsRef<'tcx>, ) -> Option<&'tcx CoroutineLayout<'tcx>> { + if args[0].has_placeholders() || args[0].has_non_region_param() { + return None; + } let instance = InstanceKind::AsyncDropGlue(def_id, Ty::new_coroutine(self, def_id, args)); self.mir_shims(instance).coroutine_layout_raw() } diff --git a/tests/ui/async-await/async-drop/open-drop-error.rs b/tests/ui/async-await/async-drop/open-drop-error.rs new file mode 100644 index 0000000000000..1d97eee521094 --- /dev/null +++ b/tests/ui/async-await/async-drop/open-drop-error.rs @@ -0,0 +1,21 @@ +//@ compile-flags: -Zmir-enable-passes=+DataflowConstProp +//@ edition: 2021 +//@ build-pass +#![feature(async_drop)] +#![allow(incomplete_features)] + +use std::mem::ManuallyDrop; +use std::{ + future::async_drop_in_place, + pin::{pin, Pin}, +}; +fn main() { + a(b) +} +fn b() {} +fn a(d: C) { + let e = pin!(ManuallyDrop::new(d)); + let f = unsafe { Pin::map_unchecked_mut(e, |g| &mut **g) }; + let h = unsafe { async_drop_in_place(f.get_unchecked_mut()) }; + h; +} From e5f05b964ce7636ededc5cc71a6d9bd104a075b1 Mon Sep 17 00:00:00 2001 From: Josh Stone Date: Thu, 22 May 2025 15:38:46 -0700 Subject: [PATCH 05/21] bump stage0 --- src/stage0 | 818 +++++++++++++++++++++++------------------------------ 1 file changed, 356 insertions(+), 462 deletions(-) diff --git a/src/stage0 b/src/stage0 index 06080e3a8c161..59c6021c8203b 100644 --- a/src/stage0 +++ b/src/stage0 @@ -13,466 +13,360 @@ nightly_branch=master # All changes below this comment will be overridden the next time the # tool is executed. -compiler_date=2025-04-02 -compiler_version=beta -rustfmt_date=2025-04-02 -rustfmt_version=nightly +compiler_date=2025-05-15 +compiler_version=1.87.0 -dist/2025-04-02/rustc-beta-aarch64-apple-darwin.tar.gz=42fbc48c6f9034c1d47029491e0adc7aaa1adecf429e22ea9eb6d36225ed13e7 -dist/2025-04-02/rustc-beta-aarch64-apple-darwin.tar.xz=08f88363fd42d66d537c0a296502f94c3a3fecf59a004613c9acff33eb0b0207 -dist/2025-04-02/rustc-beta-aarch64-pc-windows-msvc.tar.gz=ea47adaa63abd18bf0c11cdb381eefb2874994527005cbccc0dcace33191f9c6 -dist/2025-04-02/rustc-beta-aarch64-pc-windows-msvc.tar.xz=cefea68c789907a45f0bd4233da2e3406287ac55d1c33f8612ec1aa006b853f0 -dist/2025-04-02/rustc-beta-aarch64-unknown-linux-gnu.tar.gz=38fa4ce395641a988247ee58c334389eda62fc1d3c0fb45157f24578319925d8 -dist/2025-04-02/rustc-beta-aarch64-unknown-linux-gnu.tar.xz=d8d0b459acdff2a32f8c40707bf5a17b71ce86fb5ee9ad61690cba8f8227bbfc -dist/2025-04-02/rustc-beta-aarch64-unknown-linux-musl.tar.gz=41f01647a80a7f21b85fe660af9e7964ad34f0e909d1e58c9e28e102a796791f -dist/2025-04-02/rustc-beta-aarch64-unknown-linux-musl.tar.xz=8436eddf40ad5bf61153f24c887fb0f0e878bcc403095719b35f3147328d6406 -dist/2025-04-02/rustc-beta-arm-unknown-linux-gnueabi.tar.gz=07ee5588005a18477a7de89321e6527ee5f10af00e9c4eeb2a8c666f79d3d606 -dist/2025-04-02/rustc-beta-arm-unknown-linux-gnueabi.tar.xz=8a95664cef49c1e45b2ae61ec464a5be976e4cecd2b502a050f95b9eb25dd4c7 -dist/2025-04-02/rustc-beta-arm-unknown-linux-gnueabihf.tar.gz=b9b186ea9bee58a646ce8c4c384fc4cb528c73c1fee3ea3f5028fd4b3fddab3a -dist/2025-04-02/rustc-beta-arm-unknown-linux-gnueabihf.tar.xz=9f62c2ea5b67c14ab804267d449ded07c8b551536886099b02b942ce2d641790 -dist/2025-04-02/rustc-beta-armv7-unknown-linux-gnueabihf.tar.gz=f07363ad0dff8b965dc10543f27cfd923266dea6284ebbb1d1b59b77f5ae2b61 -dist/2025-04-02/rustc-beta-armv7-unknown-linux-gnueabihf.tar.xz=a31afc234645a7dc5dc47f05bb5321fea12931278433df834def303cdea9f52d -dist/2025-04-02/rustc-beta-i686-pc-windows-gnu.tar.gz=f396061e8faaf66edea34b0855e2d3760fc0fd5c75e99696b50b2d4f310e11e0 -dist/2025-04-02/rustc-beta-i686-pc-windows-gnu.tar.xz=0f95f9170c5b211db29c3baac9341ef61de83511fe0000b8aae65aaf90041ae6 -dist/2025-04-02/rustc-beta-i686-pc-windows-msvc.tar.gz=82b7d1136d1b6f3d229fc77eac19d2cbfb3a46de472345b0ec3ebc152872164f -dist/2025-04-02/rustc-beta-i686-pc-windows-msvc.tar.xz=565bde72132e77617059da66edf9262f728336a2cc2c3c7cf4d61e0a4b5e681a -dist/2025-04-02/rustc-beta-i686-unknown-linux-gnu.tar.gz=8a3abc2a8aee8fa30699f51a216b29b41b2242143646d0f560f89bf72a0e285c -dist/2025-04-02/rustc-beta-i686-unknown-linux-gnu.tar.xz=7d47cf99aa5fd3b5bc2caa918b4eaba793b6d38252a72fa7be631c8db27c8525 -dist/2025-04-02/rustc-beta-loongarch64-unknown-linux-gnu.tar.gz=0654cf14bd3302d001fa00fe73cb7c597206c6897978b3aeefd00e9325a8bdad -dist/2025-04-02/rustc-beta-loongarch64-unknown-linux-gnu.tar.xz=6cd5c3ccb643a912d738239c0ad7464ee755cd81f45a26a9d3aa5ceeff569ba3 -dist/2025-04-02/rustc-beta-loongarch64-unknown-linux-musl.tar.gz=e3c0c5c52b04dd060f3a70b0c936dfb5c70ac29256361a491df9c898259dd551 -dist/2025-04-02/rustc-beta-loongarch64-unknown-linux-musl.tar.xz=83a9bc8f9a61b2a7fedddbdfb253aa078bc9896f179ec9b1d1bd918e7de34663 -dist/2025-04-02/rustc-beta-powerpc-unknown-linux-gnu.tar.gz=21efa7a67647df8aa99e40317c798895321d09c48b8453e51eef1635c20e9c47 -dist/2025-04-02/rustc-beta-powerpc-unknown-linux-gnu.tar.xz=56203ed9d3bbbab33e2825db7c72cfbe4f857f68dc98072cc98280cc4f1110d6 -dist/2025-04-02/rustc-beta-powerpc64-unknown-linux-gnu.tar.gz=76c343aa3f5c74e1419e3f2f79dd3a2091fad8f6db644cf14f7aef036c8369d0 -dist/2025-04-02/rustc-beta-powerpc64-unknown-linux-gnu.tar.xz=e9c7b97a407127e51fa49ca94c5f22c59f2f325848d55e6160d6dcf7ff690f91 -dist/2025-04-02/rustc-beta-powerpc64le-unknown-linux-gnu.tar.gz=27935ff4136141519b4e7b37b55253960b7fa16f5cd751d731ed85019432247b -dist/2025-04-02/rustc-beta-powerpc64le-unknown-linux-gnu.tar.xz=fd37c12a55055bc4a2f0e002b3126e6396df8d49254b2a8a7a45354aac46bb2c -dist/2025-04-02/rustc-beta-powerpc64le-unknown-linux-musl.tar.gz=cbeba9993d03c6c0c2c508414bee04665abb9c084c736b39c5b8d38c8f63402d -dist/2025-04-02/rustc-beta-powerpc64le-unknown-linux-musl.tar.xz=e92f69d85929c81e3c91b2ab45eec418afc65edf6f8bf9383148a98b052353df -dist/2025-04-02/rustc-beta-riscv64gc-unknown-linux-gnu.tar.gz=31a8ae1e64fb86a499518d7711595d653db56527aaedea06bc2bbcb912568844 -dist/2025-04-02/rustc-beta-riscv64gc-unknown-linux-gnu.tar.xz=7d001ad6c4825d5323813ed19747cc3e3d2dcbbe76317329a52127b3de37ee88 -dist/2025-04-02/rustc-beta-s390x-unknown-linux-gnu.tar.gz=c69d15e75d51caa0cf77fbe149d43b62c327896bdeb0c6c73fa7240404289862 -dist/2025-04-02/rustc-beta-s390x-unknown-linux-gnu.tar.xz=cf80772ba9eed4885a28aab38323f0ed24ab220339a3b8a148b7c27860c48c19 -dist/2025-04-02/rustc-beta-x86_64-apple-darwin.tar.gz=be22d207f8fd4722d69f6fdc56c57618ec01c54c5b6f3a8506c62583259d433a -dist/2025-04-02/rustc-beta-x86_64-apple-darwin.tar.xz=04feea9824748ae01b4f4f85d15adc5baee23c996c22de86041888466ae69512 -dist/2025-04-02/rustc-beta-x86_64-pc-windows-gnu.tar.gz=8c75005f0309d30e7c272adce173adb253874ce881b347946b6ffe5a07067439 -dist/2025-04-02/rustc-beta-x86_64-pc-windows-gnu.tar.xz=7b87c4ab5291d9ad3670f4e9ee98fe9f6f877ab8d4952109d7e5e9d20181a700 -dist/2025-04-02/rustc-beta-x86_64-pc-windows-msvc.tar.gz=a96d89ba655db5317dd51ffa2ebb81b7bdb76b19cf12de36e9d0aba2c5877ae2 -dist/2025-04-02/rustc-beta-x86_64-pc-windows-msvc.tar.xz=84bcfd763eba610c78223697393ea97f1f70e567a44b8cfe22db79f1cade4201 -dist/2025-04-02/rustc-beta-x86_64-unknown-freebsd.tar.gz=95ff7349cf12e49028256c06c8517719cada2720d4db80bfe7531289bbcdbde9 -dist/2025-04-02/rustc-beta-x86_64-unknown-freebsd.tar.xz=c8d0147c625faa5ce0e75c2509827bc4b190ad286e41411bce92023e00eb7a1d -dist/2025-04-02/rustc-beta-x86_64-unknown-illumos.tar.gz=4be80235a110028d64404e532eb20af37e46db72a7ac3a0cf7c94ddf463c461f -dist/2025-04-02/rustc-beta-x86_64-unknown-illumos.tar.xz=b18ea9a5c262c2f7505305110473cc15bd2c4ed9d583f07c15635406c050be08 -dist/2025-04-02/rustc-beta-x86_64-unknown-linux-gnu.tar.gz=234027a0075224ea157efaf39173ece43f9ca7d69d86e4790a2a038f7e6d98a6 -dist/2025-04-02/rustc-beta-x86_64-unknown-linux-gnu.tar.xz=308a8ee2855a6471db3b3b64cb06e355e31d0d617ebc9f30757bb7db5f6fc7c0 -dist/2025-04-02/rustc-beta-x86_64-unknown-linux-musl.tar.gz=10f39cc94f39bcf17d0fa3b8efeb4db72408fba694e5eb0f175e7465f6d2de49 -dist/2025-04-02/rustc-beta-x86_64-unknown-linux-musl.tar.xz=6b0d16b46347fdbcddfafad8209df19515059eddce1e048ecf1585341fa1e586 -dist/2025-04-02/rustc-beta-x86_64-unknown-netbsd.tar.gz=09f482425c92396f7e4ae3baf625dbcad1d886d82ecfb605b50393abdc23ce15 -dist/2025-04-02/rustc-beta-x86_64-unknown-netbsd.tar.xz=bac2f1a493bc2c5fa6cab1f58ff536cbeba55f77141b34636bfded9e3ff167b5 -dist/2025-04-02/rust-std-beta-aarch64-apple-darwin.tar.gz=8875ade1dd8ba0bca0c12860a076df1f089195a52adc546679025c405bef4dd1 -dist/2025-04-02/rust-std-beta-aarch64-apple-darwin.tar.xz=0a0593ab4c95802b0ed810c0442e13ad9304712c2f7c30a30c734523a7448d8a -dist/2025-04-02/rust-std-beta-aarch64-apple-ios.tar.gz=839086e20098c305adcdf9103cdf3f29a14c4140b4c1b728723e7aedad966883 -dist/2025-04-02/rust-std-beta-aarch64-apple-ios.tar.xz=70f1832193e77a2018088943b531bdbacbe5404d5d7a34393e03f40329e742ce -dist/2025-04-02/rust-std-beta-aarch64-apple-ios-macabi.tar.gz=94adeb2e63a91c09001facbc554678227a3717748104424e4fea71db3d5a16be -dist/2025-04-02/rust-std-beta-aarch64-apple-ios-macabi.tar.xz=73c9bb75eb6fa4cf613c7a2b0e237472e144a1469cb043194ad7802052149fee -dist/2025-04-02/rust-std-beta-aarch64-apple-ios-sim.tar.gz=0e01ed2620887b893687758d62422f661429e3c4566ff52d967463eca89f54c5 -dist/2025-04-02/rust-std-beta-aarch64-apple-ios-sim.tar.xz=c26beb8ea9f11845ce79d4f0ec2616ce82dfbc4fefadfc7f94a1df17f4d5bec2 -dist/2025-04-02/rust-std-beta-aarch64-linux-android.tar.gz=64047673efa9d9bad660e2a44f82e6f929c881fe205523bff10a549505d12b72 -dist/2025-04-02/rust-std-beta-aarch64-linux-android.tar.xz=0e4c6b76e8d92023533aef6fe377c9bd45ef9c1da517eda7bfefec85b966780b -dist/2025-04-02/rust-std-beta-aarch64-pc-windows-gnullvm.tar.gz=a25c50a86e5d674600cec5bd9e7939bf36b0afa766445b0d71673431388d285c -dist/2025-04-02/rust-std-beta-aarch64-pc-windows-gnullvm.tar.xz=8060a4c5337fa6c34b3f08ddb8886beeb5bafd2b02544b08a7cfcb466a27a972 -dist/2025-04-02/rust-std-beta-aarch64-pc-windows-msvc.tar.gz=efd76703934ae0187308eec9b3439abea0dd4437ac353d5dc07d92f9440ab9ee -dist/2025-04-02/rust-std-beta-aarch64-pc-windows-msvc.tar.xz=007462f554b0c6d2b165d727bf72b1ad4347a53869d672fcbf48db2c1dcf128d -dist/2025-04-02/rust-std-beta-aarch64-unknown-fuchsia.tar.gz=e0dc54be7890edef123d2dc31f0dcddd1c807cc060a34f475093cab79100d9fd -dist/2025-04-02/rust-std-beta-aarch64-unknown-fuchsia.tar.xz=01c06c1d61c512a034a109f50f957e4496639549837b63464acb4fb24ff65e09 -dist/2025-04-02/rust-std-beta-aarch64-unknown-linux-gnu.tar.gz=2042d37b09618379dd91125d20803e2d97d5f3f3794e01ed27597a0f3b27c102 -dist/2025-04-02/rust-std-beta-aarch64-unknown-linux-gnu.tar.xz=568f0b8da190daf78cd8573b0408db2ecc2c07b1cb1fa463239581963738e9de -dist/2025-04-02/rust-std-beta-aarch64-unknown-linux-musl.tar.gz=386b1e4786dbfe342626cde4c3708abd04d9862d69717c7acd5dfe82427e38f9 -dist/2025-04-02/rust-std-beta-aarch64-unknown-linux-musl.tar.xz=781d0f9417e1b3d33d95e3c5b82ba7e481a610dc468345119e09a52b1d170045 -dist/2025-04-02/rust-std-beta-aarch64-unknown-linux-ohos.tar.gz=8673d059524ac141a8907decfda36c8afac81fd36dd75f78df750a6d52ada221 -dist/2025-04-02/rust-std-beta-aarch64-unknown-linux-ohos.tar.xz=8e8afe45e9bb84ebc3e02f0b4b71dbcec7c844128329d31067303b86113c3439 -dist/2025-04-02/rust-std-beta-aarch64-unknown-none.tar.gz=72e1dce3c1f821b6018ec155bff250b941afcfcf1697b440a69822b10e929b94 -dist/2025-04-02/rust-std-beta-aarch64-unknown-none.tar.xz=7030883ad3ca170a061972707c488fc25d4dc8ab0f60a1b9b54240e42ca713ba -dist/2025-04-02/rust-std-beta-aarch64-unknown-none-softfloat.tar.gz=28f87a505ca4e2c33015338d73cfdf5c2fdb1f5775f82ec432d033a36880351d -dist/2025-04-02/rust-std-beta-aarch64-unknown-none-softfloat.tar.xz=45669a09671c183d702a31b6ecf095e8f422797c4e242063c7864180c6f657a4 -dist/2025-04-02/rust-std-beta-aarch64-unknown-uefi.tar.gz=1ad54cabda8bfabfd93e16c564c0950c26e1502662d5f4ce3b33b4ee265b9a2d -dist/2025-04-02/rust-std-beta-aarch64-unknown-uefi.tar.xz=a79f9d7eb4297994b2e87d48106a959c82bc4387433e5e86dc8caddde29a8a4e -dist/2025-04-02/rust-std-beta-arm-linux-androideabi.tar.gz=75192092fa7a40051a70a843cf75513de2c50d66927f16b122f7417c1d4f25e7 -dist/2025-04-02/rust-std-beta-arm-linux-androideabi.tar.xz=843dde45dfa49b5cc97266c61d8e58dfb22dbf2288e6e8baaef769eaf59675cc -dist/2025-04-02/rust-std-beta-arm-unknown-linux-gnueabi.tar.gz=03ccaa5e246502fc61fea1e0b33f5c60b5895cd0b5b932bf640d62e97164b457 -dist/2025-04-02/rust-std-beta-arm-unknown-linux-gnueabi.tar.xz=a73525dcab3a0f3bc7064c8a6cdeb9b0e5b359501cb7e8fe20075a0e97b2a5ba -dist/2025-04-02/rust-std-beta-arm-unknown-linux-gnueabihf.tar.gz=8c851fc122d14beee962e15fdb95c2873769805180be30723f418d84cbc0a8b8 -dist/2025-04-02/rust-std-beta-arm-unknown-linux-gnueabihf.tar.xz=8524ad1b7723a4a5898837d5b526fb11ffcd039b2c4835a2e139071f6cfd4e9f -dist/2025-04-02/rust-std-beta-arm-unknown-linux-musleabi.tar.gz=b108ec4460d4f6ca79813e6d2d4cb7061fa522a990333fb9f4f927b0fc659624 -dist/2025-04-02/rust-std-beta-arm-unknown-linux-musleabi.tar.xz=0bdb617dfa833c62c03f5bfd2f06ed3ca1479908d860f888d661794188bd57d6 -dist/2025-04-02/rust-std-beta-arm-unknown-linux-musleabihf.tar.gz=19f9fff71344f7a42f958c3efec720e4b2e0d67ba36a5fd66946e74811259f2b -dist/2025-04-02/rust-std-beta-arm-unknown-linux-musleabihf.tar.xz=0cdfe9b4a8bc4b63637cfd9766c3e0e1d3dcd6d2e82fe35f57973a0081e630ec -dist/2025-04-02/rust-std-beta-arm64ec-pc-windows-msvc.tar.gz=a8490374598bbfa42931bbfba51ecc0186c476217eb79408ae6b80a4ba6de9f2 -dist/2025-04-02/rust-std-beta-arm64ec-pc-windows-msvc.tar.xz=2bc2838320667f060c140345d1c26aedf90bf5efb1f72e6722b74d32f876901c -dist/2025-04-02/rust-std-beta-armebv7r-none-eabi.tar.gz=9a237e1dbd2e3b555aa3932351d1c20a0f9f2f06e810abd254b5ca152aace687 -dist/2025-04-02/rust-std-beta-armebv7r-none-eabi.tar.xz=f4978bf9af719f0b6e8300ea862fe617e983e5443a46c769d60d5e8c4d556ba8 -dist/2025-04-02/rust-std-beta-armebv7r-none-eabihf.tar.gz=c1476718625d5d5d42b60faa9ade845272b0b71e91d77a9cdd271c4682c900d2 -dist/2025-04-02/rust-std-beta-armebv7r-none-eabihf.tar.xz=f8ab07e99983fc7395841cc9ed7ce7cfaedd87bfb91214bd83508ad96aef0c0b -dist/2025-04-02/rust-std-beta-armv5te-unknown-linux-gnueabi.tar.gz=649071a7de4792ff75da59ca421ea1cb364c011db97e73c480982a5f9f06b8aa -dist/2025-04-02/rust-std-beta-armv5te-unknown-linux-gnueabi.tar.xz=529aac0b0a385fa5ddb76a88eb6923bcc981679caab2d1c374d443383c99f52a -dist/2025-04-02/rust-std-beta-armv5te-unknown-linux-musleabi.tar.gz=8bdf3412b0b557485099db86afcdf58293bfd4c09c4b360c2d9733788b612122 -dist/2025-04-02/rust-std-beta-armv5te-unknown-linux-musleabi.tar.xz=5d5a4ebed984a0930b214ec0b11e20fd9a7b8d5dc2d00985b75a77c8febcf441 -dist/2025-04-02/rust-std-beta-armv7-linux-androideabi.tar.gz=2c03cbb393641876bebad9b76465ac7f96adb82c14dcc9b5bc01a82e5110b892 -dist/2025-04-02/rust-std-beta-armv7-linux-androideabi.tar.xz=67d86fa728178c30cd7a33e0c488c32f58ae0caeb9a982370e080ea38853830b -dist/2025-04-02/rust-std-beta-armv7-unknown-linux-gnueabi.tar.gz=3737dd5f80f35f3fecf5cd8324c9226f45bb0bfd040998d91509a2c6fd8967f1 -dist/2025-04-02/rust-std-beta-armv7-unknown-linux-gnueabi.tar.xz=8f9f710c92af058d5a07c93b4cfd45b7d30e63ab79bea7f79530537aae2dd836 -dist/2025-04-02/rust-std-beta-armv7-unknown-linux-gnueabihf.tar.gz=6ecb3e238e125e88851dba9711b2b32f4de1da55de36a62373bfcc42d001fa0b -dist/2025-04-02/rust-std-beta-armv7-unknown-linux-gnueabihf.tar.xz=7d6807d24afe4825b77c1cb74c1412b814cf2508f5b40debb55b3f264e02eb6a -dist/2025-04-02/rust-std-beta-armv7-unknown-linux-musleabi.tar.gz=a15fccced78065f748a5c4f66763b8940ae3e52b5048b5ee1fab6b0b7b40c701 -dist/2025-04-02/rust-std-beta-armv7-unknown-linux-musleabi.tar.xz=20bc43c1b5742a9c7a97ade055441ca1ca153dab9602db3ffaf1ac518713568e -dist/2025-04-02/rust-std-beta-armv7-unknown-linux-musleabihf.tar.gz=b01929a0f18b1a41b65307a04d1273d2197df83b3c124f80659ef8fa4f8c4577 -dist/2025-04-02/rust-std-beta-armv7-unknown-linux-musleabihf.tar.xz=2a13350da7c632d3878ca8da8a7d0bda60c850df8e5d824956082b524eb136fe -dist/2025-04-02/rust-std-beta-armv7-unknown-linux-ohos.tar.gz=11bc9fd437be07cb454182b0d7b287ec030f7d8904f096b73beda6480ba33285 -dist/2025-04-02/rust-std-beta-armv7-unknown-linux-ohos.tar.xz=31e06feb45173fec8e58cf92216e44d556587fe2ed866102206e23514c73d3f0 -dist/2025-04-02/rust-std-beta-armv7a-none-eabi.tar.gz=aebbae792c070adea3f10135c02b2cf5d623b84e765ec3a72c89275f53a85384 -dist/2025-04-02/rust-std-beta-armv7a-none-eabi.tar.xz=e80dcb152e7a8337fbbff6a5c8dfcd9c6da4b753da6b14e63fe7c15cc0836359 -dist/2025-04-02/rust-std-beta-armv7r-none-eabi.tar.gz=e79846c1203d5d375c7c1cff1c843cb6fcd4e33bbc71b2363e12fc900bbd72bd -dist/2025-04-02/rust-std-beta-armv7r-none-eabi.tar.xz=0e24e48461cc46edef0237e38480ac806d0521c73ea366668e731f29b638d7c9 -dist/2025-04-02/rust-std-beta-armv7r-none-eabihf.tar.gz=fd2a9b48ea203b44567cfdcfcfb21d5d803896fdfdc5f3aa191e3fa7472b98db -dist/2025-04-02/rust-std-beta-armv7r-none-eabihf.tar.xz=2b85d461bed34a97cf832a7c0e1d4179d7800ef47523a8e31d635b8de5dd44a7 -dist/2025-04-02/rust-std-beta-i586-unknown-linux-gnu.tar.gz=cab412c30b27060cdcb29adb947dc070875813726707dff121c4a1aa8615646d -dist/2025-04-02/rust-std-beta-i586-unknown-linux-gnu.tar.xz=1b8d469fbb8903a5f4f5eb6ccee7bdf28cc56137b6b212fdfa1aed647f4c347b -dist/2025-04-02/rust-std-beta-i586-unknown-linux-musl.tar.gz=93fa0383e32f18567c3c156f3cddde1fa4296003f98cdd22b0b5628d69d5208a -dist/2025-04-02/rust-std-beta-i586-unknown-linux-musl.tar.xz=71ae00b01ffbfdc6654d0fd14df204adb7d499ac71e59c93affff91d58833d88 -dist/2025-04-02/rust-std-beta-i686-linux-android.tar.gz=4c6f4764e284ff29958417295ddc5d3316072fc9eac87dfed8b694c237aa4f88 -dist/2025-04-02/rust-std-beta-i686-linux-android.tar.xz=f471a7abb2d447f668f01973be4712e20c6dd29b210a96517b277e62c6d7de07 -dist/2025-04-02/rust-std-beta-i686-pc-windows-gnu.tar.gz=0c5efb9792502fc08174b2556f5c91f3edbad6e02de5e230f39c5fa011fc935c -dist/2025-04-02/rust-std-beta-i686-pc-windows-gnu.tar.xz=b6a87360e7be832288e59239d41e809db01710ccae5ef37bcbe7b0eb1d311e66 -dist/2025-04-02/rust-std-beta-i686-pc-windows-gnullvm.tar.gz=0429745cd95a198a7a42a1ce0c7ab2d502f3ff3eee81104fe6d5d4d5dab9447e -dist/2025-04-02/rust-std-beta-i686-pc-windows-gnullvm.tar.xz=bcb43c9e2d4a49c18d39e041d28021f2302707ae9ac20ef37f4d467fd2cd3975 -dist/2025-04-02/rust-std-beta-i686-pc-windows-msvc.tar.gz=e1d8c40e61701c6bfd519125169cc1ab1d60e9a58238351bbeda0ccc5522cc49 -dist/2025-04-02/rust-std-beta-i686-pc-windows-msvc.tar.xz=1f87f343a90f6e88cb3173d52f4f88d8abdb0c1a613681c92675c1acc340aa54 -dist/2025-04-02/rust-std-beta-i686-unknown-freebsd.tar.gz=5862f33548bef1aa21b3d63caefa12ee34775cb378f89c4dc161e081a773d11e -dist/2025-04-02/rust-std-beta-i686-unknown-freebsd.tar.xz=ed3460948031d0c4e97f7b1b77062f388d133db2b2212518eabd3198e72c031c -dist/2025-04-02/rust-std-beta-i686-unknown-linux-gnu.tar.gz=3a6edd9f412a274e372c9555b6758d540d06ac08efd21ce95df1ed4d30418afd -dist/2025-04-02/rust-std-beta-i686-unknown-linux-gnu.tar.xz=8338baaa50b9cb08a28f7bb21a22deef849f8809282c661e48c486a168b6249e -dist/2025-04-02/rust-std-beta-i686-unknown-linux-musl.tar.gz=56ab80fc6cb75a0d66c477e76f87918645bc3b616cf704306820832681022768 -dist/2025-04-02/rust-std-beta-i686-unknown-linux-musl.tar.xz=94efb810dbee977ecb3ff5a42a5a620d720c237da58d974ba1f376c99947baf5 -dist/2025-04-02/rust-std-beta-i686-unknown-uefi.tar.gz=64cb107065bde9b30c78b9b342211c4e6cd2c3ed726155dacfcf5958ba869a82 -dist/2025-04-02/rust-std-beta-i686-unknown-uefi.tar.xz=ff1bc215b4aba25f59eeee8285967e24b78f6965473ea8bb30186ab55804f88a -dist/2025-04-02/rust-std-beta-loongarch64-unknown-linux-gnu.tar.gz=da1d33b266e1dd277f97f63228843765706f26c9f75c4b5171f49c2762fed870 -dist/2025-04-02/rust-std-beta-loongarch64-unknown-linux-gnu.tar.xz=8309c9c4a03df90eb53116b5c5c4870d103911227848919580a48e5e85954709 -dist/2025-04-02/rust-std-beta-loongarch64-unknown-linux-musl.tar.gz=26a3115d5354f878f80bef1c83a44af185e2780882e17143ca57aff078d123a0 -dist/2025-04-02/rust-std-beta-loongarch64-unknown-linux-musl.tar.xz=12431c3b50276f352a3ea71c74db279cd03c2edfb3edf743f81774d4274f7ef9 -dist/2025-04-02/rust-std-beta-loongarch64-unknown-none.tar.gz=ac67b23f84d09ab17d26f30deb38a128ccf812a561738327effe48ecd0caa319 -dist/2025-04-02/rust-std-beta-loongarch64-unknown-none.tar.xz=5508b02465d3dbb40512a142eabb27817807d2af153089f7d05a0af355fdb245 -dist/2025-04-02/rust-std-beta-loongarch64-unknown-none-softfloat.tar.gz=a79a59139e13166cb1121d703cee113bf92821f937d433cb9a2c00567280a4e2 -dist/2025-04-02/rust-std-beta-loongarch64-unknown-none-softfloat.tar.xz=8c3b5501050f57125cc89e6525b780ca0e18d2d5318f779894ab97efef761fb3 -dist/2025-04-02/rust-std-beta-nvptx64-nvidia-cuda.tar.gz=84a48148eb313f236f85a4907af615b7af4c3ce3d9065ffe0db54458852690ab -dist/2025-04-02/rust-std-beta-nvptx64-nvidia-cuda.tar.xz=26281622332b438bc43b8f46921153a45c6236a4c0939c76fdb4d9fb3d29cbbb -dist/2025-04-02/rust-std-beta-powerpc-unknown-linux-gnu.tar.gz=0eef233c871404b913c6458d8005d362e3c24fcb0670ac49a7e67b1a503b4b29 -dist/2025-04-02/rust-std-beta-powerpc-unknown-linux-gnu.tar.xz=b96422b0f33446abee203160a22e9bac8861e1c7988b2cef463276743001fc7c -dist/2025-04-02/rust-std-beta-powerpc64-unknown-linux-gnu.tar.gz=18db97406a6e644734c7890991cb3006fabe1e1a185f89d108d28a992ed7c17c -dist/2025-04-02/rust-std-beta-powerpc64-unknown-linux-gnu.tar.xz=eea42655b5335643905acaa3d8ff1774e2c1a39ffde363c2073a8636c153087a -dist/2025-04-02/rust-std-beta-powerpc64le-unknown-linux-gnu.tar.gz=5feaf6f3859204979fb4dab03fc93428abd103d61822d6e4e9a2f5d6d155213a -dist/2025-04-02/rust-std-beta-powerpc64le-unknown-linux-gnu.tar.xz=98f8e695253c9dad3d82638bd69c084a3e7a96d17eb1dba0f90a42df993de864 -dist/2025-04-02/rust-std-beta-powerpc64le-unknown-linux-musl.tar.gz=e028f2ec967ecee5d9e7b48058209428ed220c5da2c00f2753f8d4e98951e168 -dist/2025-04-02/rust-std-beta-powerpc64le-unknown-linux-musl.tar.xz=69f508ffcb55347dbb773cfa22a1f7a6362f3aff6a48296b50945422ea82c7b5 -dist/2025-04-02/rust-std-beta-riscv32i-unknown-none-elf.tar.gz=ea30bf48fcb3873db4019ae3d248e1db868e1f7fc49e4549737aae58b3b49b22 -dist/2025-04-02/rust-std-beta-riscv32i-unknown-none-elf.tar.xz=c3724aaa58f812dc8283622f27e215546d8522b6ecdf1d191010dde3a1ba3344 -dist/2025-04-02/rust-std-beta-riscv32im-unknown-none-elf.tar.gz=9d24eb785b66796309c2f03944719fb6b6980ae8fb7ca97084fcfdea0094bcce -dist/2025-04-02/rust-std-beta-riscv32im-unknown-none-elf.tar.xz=f6b2233474eb64d041e6bd8f1b6dee3eaf775b6b5a7ddec703689352cf88f6a2 -dist/2025-04-02/rust-std-beta-riscv32imac-unknown-none-elf.tar.gz=8a5c94055180b9a1226a23c5992a622062ac52cddf91651a91a5d236be46d0c8 -dist/2025-04-02/rust-std-beta-riscv32imac-unknown-none-elf.tar.xz=7ea826d6c58fe1ef1c9374aef0cbfec5495daddcda581b231d18397330d9e248 -dist/2025-04-02/rust-std-beta-riscv32imafc-unknown-none-elf.tar.gz=811881bd5b514c89c316453ea1214fbeccf5388f18468cc83676a879d58f53ab -dist/2025-04-02/rust-std-beta-riscv32imafc-unknown-none-elf.tar.xz=9448b7bad586237faa4f090ce8c3de83b62d19fbe37104ae32032d9df709d2e6 -dist/2025-04-02/rust-std-beta-riscv32imc-unknown-none-elf.tar.gz=dd9252a03b0a888ee7598a84c20aac721739c2caf9c5b585274d2a30d7fcbcb6 -dist/2025-04-02/rust-std-beta-riscv32imc-unknown-none-elf.tar.xz=d1f134647fe0c3efcce80351cf9e4786ca8e3e336c0316b7c28ff07b78907c73 -dist/2025-04-02/rust-std-beta-riscv64gc-unknown-linux-gnu.tar.gz=4f688c40457ba71542438fbc100b62b5f081435567f965512481ccf3d002826d -dist/2025-04-02/rust-std-beta-riscv64gc-unknown-linux-gnu.tar.xz=a474fddf29c6979e0870c397c19f64de00650893a781eb51d9e136802bfabbfd -dist/2025-04-02/rust-std-beta-riscv64gc-unknown-linux-musl.tar.gz=7071209fdf0d2605b623ef96c934ed039d1dd95a68c438a8c563530ed48fb4e2 -dist/2025-04-02/rust-std-beta-riscv64gc-unknown-linux-musl.tar.xz=1328504e895dc9bbc36ac697bd5031e0034b2468fc66a91e42b39a4d35d4ea8b -dist/2025-04-02/rust-std-beta-riscv64gc-unknown-none-elf.tar.gz=e7878c1137279790205e62f9c363a6f45e2a8cd9c30702a53478a8104dc87a6b -dist/2025-04-02/rust-std-beta-riscv64gc-unknown-none-elf.tar.xz=f373b1d79547c385a01c2b36951eb3750a4cf3bcaaa213587af9a6b4274dc924 -dist/2025-04-02/rust-std-beta-riscv64imac-unknown-none-elf.tar.gz=4832338ebc25d088e30952605b3f6491d96003790df5b10c5c56e29ec69ac646 -dist/2025-04-02/rust-std-beta-riscv64imac-unknown-none-elf.tar.xz=d782dac690b3da2b96206809512f1ae82fb4a73ee387d91128ae0d98bf51ef3a -dist/2025-04-02/rust-std-beta-s390x-unknown-linux-gnu.tar.gz=faccf22845e31101a420796d9065b350092cbee29d755c2369ee36cc7172866f -dist/2025-04-02/rust-std-beta-s390x-unknown-linux-gnu.tar.xz=f296c5726380b1f2b8603a079e8dfdfa7e4a97a499b1e86874753c312768ab15 -dist/2025-04-02/rust-std-beta-sparc64-unknown-linux-gnu.tar.gz=b8a8fd8fda8b99d96d6f890bcd0c9073393441e85a4cda169b6fc7dbb7296984 -dist/2025-04-02/rust-std-beta-sparc64-unknown-linux-gnu.tar.xz=923a0530224f0631162f7b86bef79be85f45071f62ca4f5de0588fb5ca6affa8 -dist/2025-04-02/rust-std-beta-sparcv9-sun-solaris.tar.gz=944a83365d3c46313e28b1d3a5b0e52e57ce88b3eaaf0f7f53234d4423ce9ca7 -dist/2025-04-02/rust-std-beta-sparcv9-sun-solaris.tar.xz=be0c983c443f05feb4614d97336755894b3ffc5083d852bd84ee7cd9e5edfa03 -dist/2025-04-02/rust-std-beta-thumbv6m-none-eabi.tar.gz=08905a766352dd259be919aeb366e965dbbd4066c398dc4d26efa333b0ac46b8 -dist/2025-04-02/rust-std-beta-thumbv6m-none-eabi.tar.xz=4fa005107c3d1addb242179c03a804a27d34ca68bd76c092a41a197da56abce1 -dist/2025-04-02/rust-std-beta-thumbv7em-none-eabi.tar.gz=e6ccc1004004ed759b1814daae0b50a3a0adca9786688ef9cc601a0a19edc72a -dist/2025-04-02/rust-std-beta-thumbv7em-none-eabi.tar.xz=fc23abf9c086a34264bfcfe7c4876ec65ce54f8ca73a98020bb8eab6d2c51d57 -dist/2025-04-02/rust-std-beta-thumbv7em-none-eabihf.tar.gz=e8121551c0529f73796bc157bf916e3608685454a02a81d170a258a7465b5b7c -dist/2025-04-02/rust-std-beta-thumbv7em-none-eabihf.tar.xz=2695f76447ff5d70aa3cc6b6690267b31b9aa4ddc7c45205e529f92d234483a0 -dist/2025-04-02/rust-std-beta-thumbv7m-none-eabi.tar.gz=36d7fb4edd572c7d73501aab7c89737ee0036d606700c728f430142e91649eb0 -dist/2025-04-02/rust-std-beta-thumbv7m-none-eabi.tar.xz=a6e59eaed0ab3e310852d9a75fc43600c7c2eee0c808224b87bcb8c18df4ada6 -dist/2025-04-02/rust-std-beta-thumbv7neon-linux-androideabi.tar.gz=6bc70be43929b77f3508b1872e5b09227aebce1c7c9c943995b5df92cf6d9181 -dist/2025-04-02/rust-std-beta-thumbv7neon-linux-androideabi.tar.xz=37b956924534aed1ae7ef9908d38bf724c6903591269136d23e293e17a0d333f -dist/2025-04-02/rust-std-beta-thumbv7neon-unknown-linux-gnueabihf.tar.gz=041562edada0caeea67fe7f3ffb5b9f8c1b506c0d5ee7b657c5ee2afbefba7fa -dist/2025-04-02/rust-std-beta-thumbv7neon-unknown-linux-gnueabihf.tar.xz=8980372a7e9a072b1e0b954569e59df260583a3371daf005c5a83576688562d1 -dist/2025-04-02/rust-std-beta-thumbv8m.base-none-eabi.tar.gz=83f461ac0ebcc05d5cbf67a6585b49dc7b245c8788dc3a75e08a93be41e2615f -dist/2025-04-02/rust-std-beta-thumbv8m.base-none-eabi.tar.xz=6ac8847ce601c8dfeffff07915de06a605b3c685f81b90f87b092897c2afb973 -dist/2025-04-02/rust-std-beta-thumbv8m.main-none-eabi.tar.gz=bfcd9ff7dc9bb5e95bd563d750240efcbc3bfa1a21a9f9a2786ef37f665b7e43 -dist/2025-04-02/rust-std-beta-thumbv8m.main-none-eabi.tar.xz=4507383395a26d41abd71041b162dfc5e9471a4c624d9fd6ad310e184ef15d01 -dist/2025-04-02/rust-std-beta-thumbv8m.main-none-eabihf.tar.gz=b4d1940ea5e24cd6a0ba3906c98d2b03e4a18927619152b43e91832733316258 -dist/2025-04-02/rust-std-beta-thumbv8m.main-none-eabihf.tar.xz=45eec7770344beb84cf418cf7818216d123136465785f4742127f6f5a8c5ce27 -dist/2025-04-02/rust-std-beta-wasm32-unknown-emscripten.tar.gz=19bf2f4bf64f874ccfd84b820b7200e83e896c96a396edd7bd10301d2bc89d98 -dist/2025-04-02/rust-std-beta-wasm32-unknown-emscripten.tar.xz=4c616b7bd972c09461f0bccf5009bc574dcfa8bdce2dd97d17fcffd64542e496 -dist/2025-04-02/rust-std-beta-wasm32-unknown-unknown.tar.gz=69bcb61fd0f8bd7d2da225a4525a877cce003afd7fc3d789c385f164959cd41a -dist/2025-04-02/rust-std-beta-wasm32-unknown-unknown.tar.xz=0372a64eda0c7249ce5fbcbbbf29e145e969b383a73b7c470f0b583720fcdbe2 -dist/2025-04-02/rust-std-beta-wasm32-wasip1.tar.gz=f76a2a3f4702eb781a680ebd4346afb4c26ca2235e62bad144b057860c09b8a8 -dist/2025-04-02/rust-std-beta-wasm32-wasip1.tar.xz=173bc3317b59a01036a9c8e0bccc570fd6f5174d15f94634f53d81dec3d2cd68 -dist/2025-04-02/rust-std-beta-wasm32-wasip1-threads.tar.gz=18e05380478ed0b3f76d9062fade2be2e66c039dcc470ffb01be3c8dffc79995 -dist/2025-04-02/rust-std-beta-wasm32-wasip1-threads.tar.xz=3d477eb85308f73d1081d6dd3e54577be4bd84f291a50af0e3be15fa8aa36db6 -dist/2025-04-02/rust-std-beta-wasm32-wasip2.tar.gz=3444883960a9f8b831d1f26ee17ef082a2029cdc2e9b45ce5af4d6565d3a526e -dist/2025-04-02/rust-std-beta-wasm32-wasip2.tar.xz=867361c7ba912b404c426807a60625a1f830707a172f7da139c1a892aa85bf35 -dist/2025-04-02/rust-std-beta-wasm32v1-none.tar.gz=d15017a323c662a1e8c65f51e66151138c2255cd8842a67e990000606dac839f -dist/2025-04-02/rust-std-beta-wasm32v1-none.tar.xz=f3b32484ef287317187ca0bd5245b1793ae40d50290a2882419da8503b8243f3 -dist/2025-04-02/rust-std-beta-x86_64-apple-darwin.tar.gz=179be6a29fcf16b4c18775208569a051f2f5a38558e751d2dda0a42027868843 -dist/2025-04-02/rust-std-beta-x86_64-apple-darwin.tar.xz=912f7f8d7117a5cac85dffee5ffd9f2c1cf237477bb0f9e1127afff1f0cd4757 -dist/2025-04-02/rust-std-beta-x86_64-apple-ios.tar.gz=9d2f3230bd82ba9d45e572b45ec63c63cfb592dba6311b6a16de075f18c86999 -dist/2025-04-02/rust-std-beta-x86_64-apple-ios.tar.xz=c8ff77db2d081444ab5167764465beb33046cc81cf2e8dbbd8e9a7328306762c -dist/2025-04-02/rust-std-beta-x86_64-apple-ios-macabi.tar.gz=76c9b2ae710fed611a2294a5e4bb6597b07d78f0bbd3a5a0d15c3320f38a0017 -dist/2025-04-02/rust-std-beta-x86_64-apple-ios-macabi.tar.xz=b9c485a3824c971a42c10af26cf06c539c34fa429e92601a1978280867029e62 -dist/2025-04-02/rust-std-beta-x86_64-fortanix-unknown-sgx.tar.gz=a223c08b88c768d97bf9f071c74d9548acf00bbb097b8c8427c2ec87ca205597 -dist/2025-04-02/rust-std-beta-x86_64-fortanix-unknown-sgx.tar.xz=34ddb3db8a71edabb4d0fd8d52a164dbca5a5cd96d6ba131e7d439c333726f78 -dist/2025-04-02/rust-std-beta-x86_64-linux-android.tar.gz=9ba28bf95c75ca0d69461d1c044902443053b64678b540967a97c7cd2eb7cc4c -dist/2025-04-02/rust-std-beta-x86_64-linux-android.tar.xz=09e35188a801371a55abeb9e2ee455ebd26d41b8eb561b8016ecacfc7ba20c90 -dist/2025-04-02/rust-std-beta-x86_64-pc-solaris.tar.gz=c1f2fb4b90cf258dfa1a52167ba925b583dc889ec1c3c48958560ff3b7b79b13 -dist/2025-04-02/rust-std-beta-x86_64-pc-solaris.tar.xz=d71f2bade21f751d9592e865ce3722b5d3b9abc49e55ca9d04c02d658360b6ad -dist/2025-04-02/rust-std-beta-x86_64-pc-windows-gnu.tar.gz=691c23504582e6db1cf883f52b5378aad3c42da7e2d2237e54601be9c8d16cac -dist/2025-04-02/rust-std-beta-x86_64-pc-windows-gnu.tar.xz=22e7327c5ba22863cb62cc5331862b8c2b4b10a732637729b5e1504034aa2cf1 -dist/2025-04-02/rust-std-beta-x86_64-pc-windows-gnullvm.tar.gz=81b7dda817a7dbc8b33542c356e0c5e5605b7c60a2fee13f4a266c8d970a3f54 -dist/2025-04-02/rust-std-beta-x86_64-pc-windows-gnullvm.tar.xz=09e4c9804f7489b337ccf66426e18e7522dcba24234b289a39eb63c8242353d0 -dist/2025-04-02/rust-std-beta-x86_64-pc-windows-msvc.tar.gz=a8188567321462309fb63af38f652c6a7448ebaae1425b9ec20d2fe2a12e8896 -dist/2025-04-02/rust-std-beta-x86_64-pc-windows-msvc.tar.xz=5284f85dce61b2b021888b6b82995aa7b4a14a979b42b83499a810c261fc183e -dist/2025-04-02/rust-std-beta-x86_64-unknown-freebsd.tar.gz=eb57c8ca7f515386d60a88e56443e377aae70e185ac52a62869e115c636a2bcc -dist/2025-04-02/rust-std-beta-x86_64-unknown-freebsd.tar.xz=8bef59b74196fa9f7839bb491f6b32d0761a45c8d7178980ee3afd80231b836e -dist/2025-04-02/rust-std-beta-x86_64-unknown-fuchsia.tar.gz=f43f402881f4558e3df4a7ace68ba80caa9354cfa5a8b1efac89f95e38386253 -dist/2025-04-02/rust-std-beta-x86_64-unknown-fuchsia.tar.xz=ea7d09c015c057591ff51b808cca9c8c1d973de3a9033fe42c1bf34d748d03a6 -dist/2025-04-02/rust-std-beta-x86_64-unknown-illumos.tar.gz=a4835455348bc5b154b1bba63aa03d2294713589214b50d3babae3e0f9918a3c -dist/2025-04-02/rust-std-beta-x86_64-unknown-illumos.tar.xz=711920e7491332251fb672abdc7685fa940f863d8e182e2ae9d9347d7fa6a725 -dist/2025-04-02/rust-std-beta-x86_64-unknown-linux-gnu.tar.gz=1b8324839c0e10e410f29bd471f6c49eb4710adbe172d6bef3e619ae95d47d02 -dist/2025-04-02/rust-std-beta-x86_64-unknown-linux-gnu.tar.xz=223b41f16a80b9c404f5af9a194b7414ef354681f911839353f24b44eed91494 -dist/2025-04-02/rust-std-beta-x86_64-unknown-linux-gnux32.tar.gz=6d8d8d9fd6336de0ebcb58fa85aa0d11e62a60d6c6ca01d71da0bdf668d216c1 -dist/2025-04-02/rust-std-beta-x86_64-unknown-linux-gnux32.tar.xz=033df93011b4461cde64c4230c495bad1523b9b38f5b0de56dd928c1da85b577 -dist/2025-04-02/rust-std-beta-x86_64-unknown-linux-musl.tar.gz=70a441c0cf8ca25abc1f722c1db5dde8b5fd3b90c767895b7518fc58c2678390 -dist/2025-04-02/rust-std-beta-x86_64-unknown-linux-musl.tar.xz=b5584d6d0031f8230a40f5ed76570ab1396c8997c3e957ca159d72a5dc201a2d -dist/2025-04-02/rust-std-beta-x86_64-unknown-linux-ohos.tar.gz=2596cdc3708d82aa93a8a1f595238fe9fd7b5b05a4886e7e390ca3b86d352e7e -dist/2025-04-02/rust-std-beta-x86_64-unknown-linux-ohos.tar.xz=c03901c0c8434b5db244c22145870e7d933b9060af3b23f24a765c755098a3a1 -dist/2025-04-02/rust-std-beta-x86_64-unknown-netbsd.tar.gz=82bc22594dc602b27edf8233bd9c4fbf0323999ce99ff2a7ddd0ce9268647eb1 -dist/2025-04-02/rust-std-beta-x86_64-unknown-netbsd.tar.xz=86f674f5e19a1b1780f06a6d5add06fd4240430233b7c3f5203a4daa5f444673 -dist/2025-04-02/rust-std-beta-x86_64-unknown-none.tar.gz=ca7882354f4274dc405034aa6edbda685b9d76bc6e5905074d2aaf8c35b35a95 -dist/2025-04-02/rust-std-beta-x86_64-unknown-none.tar.xz=ed6c828fdafcf87a68f522379f11c44eff1a4be1bf027d9888d1f17f22e9ca61 -dist/2025-04-02/rust-std-beta-x86_64-unknown-redox.tar.gz=6f8ab182274e2f5b0fa82fdc5c6e3776ba969e6ee6f6098ce6d170f6685f55c2 -dist/2025-04-02/rust-std-beta-x86_64-unknown-redox.tar.xz=ee061d725f657a2e52114f282be0cab1a6e542a0270b11782c36e8737ed84f32 -dist/2025-04-02/rust-std-beta-x86_64-unknown-uefi.tar.gz=0324f537f463738bbdbf40b92423df6c6068f76c583872d6070d6a41c5169dac -dist/2025-04-02/rust-std-beta-x86_64-unknown-uefi.tar.xz=2cd2727f71b14c06eb0a14fa532e5b3bc66f8b983c021f3201c327606b04511e -dist/2025-04-02/cargo-beta-aarch64-apple-darwin.tar.gz=76010b5a9f8dff0102a18de75e818c51b915a3bcff428fc48973728577c2ecd3 -dist/2025-04-02/cargo-beta-aarch64-apple-darwin.tar.xz=f0f03ece675cfaa9dd0f00204d7ddd4086a45357f09cac9d800d37bef8d0db33 -dist/2025-04-02/cargo-beta-aarch64-pc-windows-msvc.tar.gz=bf4ab12afcea7911ab973177de83b7bbdfd0000e3090331f31a595d57819ed6d -dist/2025-04-02/cargo-beta-aarch64-pc-windows-msvc.tar.xz=156fc94166e5f2af91fd9a36c67b545c0eff63dad51fcd81571cce01447c1c1b -dist/2025-04-02/cargo-beta-aarch64-unknown-linux-gnu.tar.gz=c86bbf8091188ab9f7d41e566ef628a657d66683884333c3851e99edaea6e279 -dist/2025-04-02/cargo-beta-aarch64-unknown-linux-gnu.tar.xz=610383a4efb93ab53cc747ba038888742346499407c982b7bc8c0c41689cf453 -dist/2025-04-02/cargo-beta-aarch64-unknown-linux-musl.tar.gz=7d427779360c9cba5903c2a0183be1c1759cb2c2f2b77bd2f64b409821fabb64 -dist/2025-04-02/cargo-beta-aarch64-unknown-linux-musl.tar.xz=29bda8bd7dcee65315b8c14a527f4e4b4dd678b35dd430591f7c71712ecbd2f9 -dist/2025-04-02/cargo-beta-arm-unknown-linux-gnueabi.tar.gz=ef6d6a810eecb3a38940634b653257070dcfcff52c2d8321fa3a933d41c7ed73 -dist/2025-04-02/cargo-beta-arm-unknown-linux-gnueabi.tar.xz=79796d83949811776aaedc7e6db6d32374c07b8f8d256d9b871de335bf5e7074 -dist/2025-04-02/cargo-beta-arm-unknown-linux-gnueabihf.tar.gz=fa93a1285a97453e2aaaf9cf392abb4ff9a419451e925959470166522e54b1dc -dist/2025-04-02/cargo-beta-arm-unknown-linux-gnueabihf.tar.xz=acb69df00475904faccf18729030a70e8ce21543189d48c7102330a98a12edf1 -dist/2025-04-02/cargo-beta-armv7-unknown-linux-gnueabihf.tar.gz=7141bf32c173d26f34571b2dfb890187d866f113e28b63908841377e48dbc6ab -dist/2025-04-02/cargo-beta-armv7-unknown-linux-gnueabihf.tar.xz=249f3c535805fb2510d13338401e9ae96f16e6996e58551025b35676a1147ab5 -dist/2025-04-02/cargo-beta-i686-pc-windows-gnu.tar.gz=fe4f5f35ecac25bc3726ffecbe3e650d51adb9ea13dc5153a0699ea8d8776d13 -dist/2025-04-02/cargo-beta-i686-pc-windows-gnu.tar.xz=b7b8432464eb793e9a651c4c38ee8abe76421a9be7f75e96237a4ef938f927f9 -dist/2025-04-02/cargo-beta-i686-pc-windows-msvc.tar.gz=a283da65d3a75435ff3d05441fd0337472fd16325531086e90b01cc5d5bd221a -dist/2025-04-02/cargo-beta-i686-pc-windows-msvc.tar.xz=ae19f98c901228ae5c7573cebde4816517bdb8d03dbdc7b92d95518d27d93531 -dist/2025-04-02/cargo-beta-i686-unknown-linux-gnu.tar.gz=e3c5b2560f64c8056ef82ed0cd659d35fda5181f19fa670b962228142398efbc -dist/2025-04-02/cargo-beta-i686-unknown-linux-gnu.tar.xz=3fc435b8a186f6ec1b7ebc38c92c2e23e1bd786415fc33e7743ef95c37c69b45 -dist/2025-04-02/cargo-beta-loongarch64-unknown-linux-gnu.tar.gz=bcab46663be61e979b7a89792d164e182d5482ad9b444a969dbb304c5dad8c8c -dist/2025-04-02/cargo-beta-loongarch64-unknown-linux-gnu.tar.xz=9e2ecb90d85a4aca95211892a6a41fde09ce1e4f44a60caab9aeb61833191d36 -dist/2025-04-02/cargo-beta-loongarch64-unknown-linux-musl.tar.gz=3c5c40f61e85663d03fe51f63d505d8dca73f94bfb3eed29f6e1396b31e0a554 -dist/2025-04-02/cargo-beta-loongarch64-unknown-linux-musl.tar.xz=775c56ce638e0923758ab5f82a87c15b7a1500d10e0be2433af40364a0455d58 -dist/2025-04-02/cargo-beta-powerpc-unknown-linux-gnu.tar.gz=c1a144dc83b673e0375e8f718cde6672ca276dbab9161d7f3e002c6273352c1b -dist/2025-04-02/cargo-beta-powerpc-unknown-linux-gnu.tar.xz=1b41b3396340c97c122661c95fe54265036e721f1750bad3a8fe4920f6f52b34 -dist/2025-04-02/cargo-beta-powerpc64-unknown-linux-gnu.tar.gz=2a43a7682ea3da8b911b09a7bb4a3a75fc3facb64fc952e51ff35c63e6630b75 -dist/2025-04-02/cargo-beta-powerpc64-unknown-linux-gnu.tar.xz=73a3383196527e63716de1b1cab233226519873556a755a7e47279f799936116 -dist/2025-04-02/cargo-beta-powerpc64le-unknown-linux-gnu.tar.gz=d5f521839bd4b258454097cf97b056508e6f9103f7312c93b632ae44ac9f7dc0 -dist/2025-04-02/cargo-beta-powerpc64le-unknown-linux-gnu.tar.xz=c4fc5ff91bc1054e8497efa53ee6a9a9eb7f06927cd314a681e16b6d46b08440 -dist/2025-04-02/cargo-beta-powerpc64le-unknown-linux-musl.tar.gz=5b0d569fe4ec84d6e7526af9d9794b440e8f1b5fc1b09e951678b09fd3ff97fb -dist/2025-04-02/cargo-beta-powerpc64le-unknown-linux-musl.tar.xz=e9c68eee5763c624cbe312bc1b50b6c3172eb7997e209371692e7f897d13b03b -dist/2025-04-02/cargo-beta-riscv64gc-unknown-linux-gnu.tar.gz=96962461e7f6744a46f18a557a4701d35d6fa3b6d960d854f4c3effe6f2636f8 -dist/2025-04-02/cargo-beta-riscv64gc-unknown-linux-gnu.tar.xz=4d6029204f930543afeeaf44d9e635692c86c9daaaac6301cccbe076c7facbe5 -dist/2025-04-02/cargo-beta-s390x-unknown-linux-gnu.tar.gz=f40421ea02804c3089420e5ca13838f94fb89c114de9a9e596e9a1207d2166d7 -dist/2025-04-02/cargo-beta-s390x-unknown-linux-gnu.tar.xz=77521eb215cded6886267644661b3357590f20368383f314da8f310197e9679e -dist/2025-04-02/cargo-beta-x86_64-apple-darwin.tar.gz=0357ed5c9c8ccbe71f89695bffe1604dbd2f451472fc6ea8d8d2dfc93a703b30 -dist/2025-04-02/cargo-beta-x86_64-apple-darwin.tar.xz=6ce4f66b60609f58046138831ae3828ad1d58f8d0b2f515f153c96b690a0134f -dist/2025-04-02/cargo-beta-x86_64-pc-windows-gnu.tar.gz=8fbf8506fc0c47bb30043c026107c51d6b548fa91320b5bbd2c608e191bdc007 -dist/2025-04-02/cargo-beta-x86_64-pc-windows-gnu.tar.xz=bb57df35e6d73b0b0bba58801d66febfed03f0b3f74085eb50ef8b5ea3fdbb40 -dist/2025-04-02/cargo-beta-x86_64-pc-windows-msvc.tar.gz=0bec5e9059c4b3035f636017c1586653d372f03969bcd4d80c0eaee52f01a2ac -dist/2025-04-02/cargo-beta-x86_64-pc-windows-msvc.tar.xz=3f836d3027d7ed25655f43262b126311bf014629dadc4a860f00302bc468e752 -dist/2025-04-02/cargo-beta-x86_64-unknown-freebsd.tar.gz=0f60566416471c38350c12f066bb512eca65a66319f5ee7fdbb60464d70661fa -dist/2025-04-02/cargo-beta-x86_64-unknown-freebsd.tar.xz=eae168df54ddfe95db669c205ae97baa902056722856fa174758ebd058168a95 -dist/2025-04-02/cargo-beta-x86_64-unknown-illumos.tar.gz=816eb91ac3858043f58075fc48fc2e90d0427c58b6283be589d337a7f0ddc9df -dist/2025-04-02/cargo-beta-x86_64-unknown-illumos.tar.xz=faba548d376309b71bcdae49f7089705be951f72a84ef68362aa6d865d40ebf9 -dist/2025-04-02/cargo-beta-x86_64-unknown-linux-gnu.tar.gz=1fe7e9d2c5a733acdaed418011c1fc31c3036e5299e8f9288ddeac43780fa35e -dist/2025-04-02/cargo-beta-x86_64-unknown-linux-gnu.tar.xz=7a39bd08e46d3e19da81c02ea3bb46bd1750a3ac1d1db8fb5db852cde14cdd72 -dist/2025-04-02/cargo-beta-x86_64-unknown-linux-musl.tar.gz=00df62b75e1811fd4fcc827b531e7ad94a73fcc37318d0aed28796d902b33568 -dist/2025-04-02/cargo-beta-x86_64-unknown-linux-musl.tar.xz=874084ab37814ddf50ef423e22f0721e5c24acd953ed02cf83432d2372606a5f -dist/2025-04-02/cargo-beta-x86_64-unknown-netbsd.tar.gz=7b4467e398bd34f94912c56863ae83b45415bbf612b3be15624a6a410c27ff2a -dist/2025-04-02/cargo-beta-x86_64-unknown-netbsd.tar.xz=75e7ac498a8e617bb907c26f2a3bba9a1e9a22af1c0946f88c7bd53c28790ffb -dist/2025-04-02/clippy-beta-aarch64-apple-darwin.tar.gz=0f5a8a6a96b8785beae1fc9476374d060632dcc4c17a4335031425ee8e2dec48 -dist/2025-04-02/clippy-beta-aarch64-apple-darwin.tar.xz=aed266be1799ae3e95099d491c3b20b731b2094bc8388c6ac3e782667b58ca6f -dist/2025-04-02/clippy-beta-aarch64-pc-windows-msvc.tar.gz=0ca97501432918d43aa9bed9b58cd4f1d0d738970e09d6c037ce967519b2b13f -dist/2025-04-02/clippy-beta-aarch64-pc-windows-msvc.tar.xz=c64edd87358c1ecb9e01b204977edaf0307cc939a3dd3ae62f151c153ac2019b -dist/2025-04-02/clippy-beta-aarch64-unknown-linux-gnu.tar.gz=7bfdd371ed44a32e50ecd6baf107796d5a77ca3cce0bd58bc5882afd98ca0edf -dist/2025-04-02/clippy-beta-aarch64-unknown-linux-gnu.tar.xz=cf49acab8153fb65867a9c44eabb7f156f85e9818b6f49453067ce0764036919 -dist/2025-04-02/clippy-beta-aarch64-unknown-linux-musl.tar.gz=bfb20f832ba30a4840f0d4898d27cf69b5717a78bd71b20270f8ddd66c48bc69 -dist/2025-04-02/clippy-beta-aarch64-unknown-linux-musl.tar.xz=54081690d35c39267a49d991e5e0c16043261b6969c49f23c2be44e46c3bfcdf -dist/2025-04-02/clippy-beta-arm-unknown-linux-gnueabi.tar.gz=3d88b69d6c67c58b09be9d679cfbe8ee449b9de419e950edcffd4637ded46cac -dist/2025-04-02/clippy-beta-arm-unknown-linux-gnueabi.tar.xz=67843ea0aeaab167029818669074e8bdc46a7e1c269a15580cdfe44a7d2ba96b -dist/2025-04-02/clippy-beta-arm-unknown-linux-gnueabihf.tar.gz=46e9efe50418a035ddabf9a6467b6b0ef20453816c4b6dfd46fa1342bdc42167 -dist/2025-04-02/clippy-beta-arm-unknown-linux-gnueabihf.tar.xz=3b27dc434e88280bbc89f5c5ba6eb68ec5332b549b73f7f8d79feda9cbb49628 -dist/2025-04-02/clippy-beta-armv7-unknown-linux-gnueabihf.tar.gz=670a6ce01ee6e5225b152a1357eba9a41cb47f04d08cdc8a0828eded4132aba1 -dist/2025-04-02/clippy-beta-armv7-unknown-linux-gnueabihf.tar.xz=cf92bed8c784e9579c09305fd227df3992950c227bc844a9b09995828d62e2cc -dist/2025-04-02/clippy-beta-i686-pc-windows-gnu.tar.gz=58238b6f4f8ad957a39c0eb63b45007d1c3f8c79e98307c7e5a531b7309a30f4 -dist/2025-04-02/clippy-beta-i686-pc-windows-gnu.tar.xz=e77c5215b3e96c59fa150330cb5144db66dac377fdad3be9c28f9fa07d9fb7cc -dist/2025-04-02/clippy-beta-i686-pc-windows-msvc.tar.gz=7c65df8af1f6f4102ffbd7fdaec50c24f89f2631edd06642732f1b5c74558ab4 -dist/2025-04-02/clippy-beta-i686-pc-windows-msvc.tar.xz=eeb119d26e1e2ddd3ef72741158d75d0db254f6420fd729d34abe5d172c7d765 -dist/2025-04-02/clippy-beta-i686-unknown-linux-gnu.tar.gz=c43518b27adce17f06f89c70ab52ae4c94f1f7129a182c16f9bb28fbc8a5f40b -dist/2025-04-02/clippy-beta-i686-unknown-linux-gnu.tar.xz=1d972c55d89cc01b7e408b4e24e8975bca29ff28578f224024a00f00d17c28b8 -dist/2025-04-02/clippy-beta-loongarch64-unknown-linux-gnu.tar.gz=0d779bd9fcc5ed8e1db81a3a385bc0158c3903e5b0f0e4c99d172eee106a4f3e -dist/2025-04-02/clippy-beta-loongarch64-unknown-linux-gnu.tar.xz=5515e0678c081ddae45f3f0c3c7ae58cc2f7b1141e1557a39826bf1aa58a2480 -dist/2025-04-02/clippy-beta-loongarch64-unknown-linux-musl.tar.gz=e99599c1fd0cab2eb0e89dd8e37e90ee2106d602a3edb3473fd65768bb8f7b27 -dist/2025-04-02/clippy-beta-loongarch64-unknown-linux-musl.tar.xz=f346a801dee3734461eab4303469d31faaf3e8f0d733b854470722ed48c66276 -dist/2025-04-02/clippy-beta-powerpc-unknown-linux-gnu.tar.gz=cd7b58e507d6695ada446ef9fa113a9588501832f4627b3e7cc0000a77c9265f -dist/2025-04-02/clippy-beta-powerpc-unknown-linux-gnu.tar.xz=0a7073874663b4ce8eb47a0257ac0cf8049acb34703241466f1208489c4dbee0 -dist/2025-04-02/clippy-beta-powerpc64-unknown-linux-gnu.tar.gz=78d0b9581a7d79549bbb6a7e8984bf923a7b80bf6bb3979a90e90ceed8e66d33 -dist/2025-04-02/clippy-beta-powerpc64-unknown-linux-gnu.tar.xz=79069a26ed617a2a07eef7cf098d028cb0c172fc4a6dc99115a51862b1b8bea8 -dist/2025-04-02/clippy-beta-powerpc64le-unknown-linux-gnu.tar.gz=23c58421839105c88937ad90a92603b7fcd6d9e21f291ab8c419fce1663a20a5 -dist/2025-04-02/clippy-beta-powerpc64le-unknown-linux-gnu.tar.xz=b546706d28c46f5bd3799d6b42201962ec2e9d6baf8df2b66cfcf1bc42789036 -dist/2025-04-02/clippy-beta-powerpc64le-unknown-linux-musl.tar.gz=31cf0d973eb3f0ca341a8d64c26b8b3b045b44b3c00d2497893dac6e44ebdeb4 -dist/2025-04-02/clippy-beta-powerpc64le-unknown-linux-musl.tar.xz=8afd89866c41631d4f4ac4d8a06d943473af7a96b043f6112216a04863817820 -dist/2025-04-02/clippy-beta-riscv64gc-unknown-linux-gnu.tar.gz=f08bf4ed1519e7c47f354a0d0b750933342314bacd4be761746666cf455cf74b -dist/2025-04-02/clippy-beta-riscv64gc-unknown-linux-gnu.tar.xz=e502f83f811c35e43df0a5e158d9eb61f60c9e1aacc75b588b2ba85022ca4b3e -dist/2025-04-02/clippy-beta-s390x-unknown-linux-gnu.tar.gz=21bede57083544028238ef6c9d24cbf9194a35c88500f2d0c5d50e6f0ae79616 -dist/2025-04-02/clippy-beta-s390x-unknown-linux-gnu.tar.xz=670c0a293e1b01f331c2645b648c1df087da4c1b5d689f608279b1ba524cbaef -dist/2025-04-02/clippy-beta-x86_64-apple-darwin.tar.gz=a6552e032c047203d5a9f5b767945c7a556be35468c42631c0c84cd049e24a8a -dist/2025-04-02/clippy-beta-x86_64-apple-darwin.tar.xz=17a9e9ea8e0d6140080b7fa4e3c77ad1a7fde3c3179f26b0aabe34c3af73b58a -dist/2025-04-02/clippy-beta-x86_64-pc-windows-gnu.tar.gz=2ffa8663502f4c6bba049318c70e79c174fd717d45ab4427103fc11563be678f -dist/2025-04-02/clippy-beta-x86_64-pc-windows-gnu.tar.xz=8c0a71f226b229f30a9acfbc1ab7c6bbedf692ef7b26737721a0518d3f1972ab -dist/2025-04-02/clippy-beta-x86_64-pc-windows-msvc.tar.gz=463c7a5d2a11beaeb1e63bc769db89fb9996a0558da15b4e091befe982893711 -dist/2025-04-02/clippy-beta-x86_64-pc-windows-msvc.tar.xz=40241fa6e463df734096e0e910b414c83d8a4dc8706b7c712cc170844e59e3c6 -dist/2025-04-02/clippy-beta-x86_64-unknown-freebsd.tar.gz=6464044b05b326d8ea594a963e38a52a1e27e0f028704427c41ec5e93e3772d9 -dist/2025-04-02/clippy-beta-x86_64-unknown-freebsd.tar.xz=77cdeb1e838c3da1d01252481f7c06149b0b8e7df48c2a2ee5961f4550d7b662 -dist/2025-04-02/clippy-beta-x86_64-unknown-illumos.tar.gz=d51238e1ad2329b9309e94b40f3374788e2fda9bf47466841a841392835e8a5e -dist/2025-04-02/clippy-beta-x86_64-unknown-illumos.tar.xz=6ad33945045790946fae843f63a805e60c09157e106ff342d3b99a201cd221e1 -dist/2025-04-02/clippy-beta-x86_64-unknown-linux-gnu.tar.gz=64b4f85d9eb75172928b46540090128ce9eec00e275d9027f74d0d5d4106bd76 -dist/2025-04-02/clippy-beta-x86_64-unknown-linux-gnu.tar.xz=b090383b4ebeae96fb340f0a363ee0276eb1f17a4f2a0f2ed81aff039f21bf78 -dist/2025-04-02/clippy-beta-x86_64-unknown-linux-musl.tar.gz=8d8025922c563bb1c872111722a4de298a8f85cd5be3e4cf753d44d6b8304de6 -dist/2025-04-02/clippy-beta-x86_64-unknown-linux-musl.tar.xz=ecf15ae9eb7dafe97afd69133f13364dac09d5e6edc35ddab91fb4ac32e17d42 -dist/2025-04-02/clippy-beta-x86_64-unknown-netbsd.tar.gz=c802af6a6f454b771046bd4a5207bdbe538cb6827becc9174dc229de5f874426 -dist/2025-04-02/clippy-beta-x86_64-unknown-netbsd.tar.xz=03d1e16eaf6f83f80e4cef8c7beebee97498135dd3138b97f97186b545edfb86 -dist/2025-04-02/rustfmt-nightly-aarch64-apple-darwin.tar.gz=c02047132bc7b48bbe930dfddb3afd31349eb042cb101a19d6e4360ea6e586ad -dist/2025-04-02/rustfmt-nightly-aarch64-apple-darwin.tar.xz=cf825dfaeb4d97eb2819ff8e46360192f480960f6b516e328ef8a9493d413a9f -dist/2025-04-02/rustfmt-nightly-aarch64-pc-windows-msvc.tar.gz=588551cbfb62eb4ed4e5755fe6eb3e1499a79e24a8a75f448b10d9a2237c63db -dist/2025-04-02/rustfmt-nightly-aarch64-pc-windows-msvc.tar.xz=df666f179fcfccb316aeb1a5eb4c17710b23198176edb34ba8b98c88cb369098 -dist/2025-04-02/rustfmt-nightly-aarch64-unknown-linux-gnu.tar.gz=b06f4aefa01300ef1827a29c9fcd2e4da0c13f3aad92b4c929f6e8811d53ab71 -dist/2025-04-02/rustfmt-nightly-aarch64-unknown-linux-gnu.tar.xz=059a888b8db76f5a3054a9a78a131d79c49060deaf70b2e2f03a4fcab44ab536 -dist/2025-04-02/rustfmt-nightly-aarch64-unknown-linux-musl.tar.gz=f0117a7be9eefe70fbd2f0d3fc05c51f3a97d069dc99500520a5d0973178fc6a -dist/2025-04-02/rustfmt-nightly-aarch64-unknown-linux-musl.tar.xz=f2fa87f1e814d0fb163146cf6a47d9375fec2c3778f76c33988acaa1665dacf7 -dist/2025-04-02/rustfmt-nightly-arm-unknown-linux-gnueabi.tar.gz=fa53d4a6fb2ee3e1607d825afcc05063c0fa0dda1a3ede9a57e1ccc72cece8c4 -dist/2025-04-02/rustfmt-nightly-arm-unknown-linux-gnueabi.tar.xz=3d785d982878f9bda4778cca0f9365947665849d5f7d2ee4794d8c28df3ab8c8 -dist/2025-04-02/rustfmt-nightly-arm-unknown-linux-gnueabihf.tar.gz=affb343357cd4c677cdeaf3b24698f20cfa15062cb63257aaa9bca3bd7baeeae -dist/2025-04-02/rustfmt-nightly-arm-unknown-linux-gnueabihf.tar.xz=6eb95c2021571a0c1ad3e3edf58fa4daa7711a9085e2ab61bc75799252183358 -dist/2025-04-02/rustfmt-nightly-armv7-unknown-linux-gnueabihf.tar.gz=1dffc39afb9210c77e6d45b68cb801247f00afdf33107963c82a83bd94d2225e -dist/2025-04-02/rustfmt-nightly-armv7-unknown-linux-gnueabihf.tar.xz=2da28dd8ec76744a7629619f527196689eb35e9bc60f3a5965ed69486e44235d -dist/2025-04-02/rustfmt-nightly-i686-pc-windows-gnu.tar.gz=5b1b39125106cdcbf12be9d5786900852f54eaa1429cabf28eeb68f96a008f90 -dist/2025-04-02/rustfmt-nightly-i686-pc-windows-gnu.tar.xz=3f2ecb3787c82a8dae89929aca4f2f3af790f1ab3c698adf21dde21c919a4052 -dist/2025-04-02/rustfmt-nightly-i686-pc-windows-msvc.tar.gz=eeb8b3f10f1cd75fac4e9e13dd1aee5941f38f1ff7fcfcaa69fcc3a42ea7c49a -dist/2025-04-02/rustfmt-nightly-i686-pc-windows-msvc.tar.xz=afd81cfd8d5fb37427c7eb2a1429c3b06d8daa1f42002c7230718fc56e132c47 -dist/2025-04-02/rustfmt-nightly-i686-unknown-linux-gnu.tar.gz=5eb0f065a5403645ebb6c01d7f27a763f9446b8a48db5b6ff962b6f7c0f3ea3b -dist/2025-04-02/rustfmt-nightly-i686-unknown-linux-gnu.tar.xz=3576e2e8ecc563cfbc4b3f464d80f8e27f412b5eb267656dc5f0316a11a2d299 -dist/2025-04-02/rustfmt-nightly-loongarch64-unknown-linux-gnu.tar.gz=5e69db53a1161ad7616f9e50d1a7fef785840bdf0ba81757d0b6811078692921 -dist/2025-04-02/rustfmt-nightly-loongarch64-unknown-linux-gnu.tar.xz=ba9d18dd2d63bad1e2863c9e14bbc4bd282d03cb806d03011d2d61ce701d934f -dist/2025-04-02/rustfmt-nightly-loongarch64-unknown-linux-musl.tar.gz=b112f8c2e6ec011382c02a40ca07f30e1885a1396a7f2c30f099e56d756f2f54 -dist/2025-04-02/rustfmt-nightly-loongarch64-unknown-linux-musl.tar.xz=42af68aa0b77306187d13ef881ee4327856f505a8a518f46244ffb17037f7e4e -dist/2025-04-02/rustfmt-nightly-powerpc-unknown-linux-gnu.tar.gz=ed4277c9c8a27fdb97911bb9fbb46385b5fd807ac9338d31eecc3240bb0bc5c2 -dist/2025-04-02/rustfmt-nightly-powerpc-unknown-linux-gnu.tar.xz=4cf3a7a64edd09b5d8ad72af545c15013842072e70789d1741f845f27c60566d -dist/2025-04-02/rustfmt-nightly-powerpc64-unknown-linux-gnu.tar.gz=65d49556ac1abd1da9cb7c41e518f85213ee2b1f05559c917614937d4c0cada9 -dist/2025-04-02/rustfmt-nightly-powerpc64-unknown-linux-gnu.tar.xz=535ea938d888ea12c139740e5d25ac4b82135b3274b8d86c3c59e36928922ec6 -dist/2025-04-02/rustfmt-nightly-powerpc64le-unknown-linux-gnu.tar.gz=9776e0c641ae8a229453fe1fbdaaae05ea0caf37bb4893a00fe86e5d63d1241a -dist/2025-04-02/rustfmt-nightly-powerpc64le-unknown-linux-gnu.tar.xz=bf73cfd35802b2706d0db96c854e8a4c45398297a59aef92226ac28d8bb69417 -dist/2025-04-02/rustfmt-nightly-powerpc64le-unknown-linux-musl.tar.gz=307012d0741898b3a2840ba3535832943ab6127f27323e587e1918b2023b37a2 -dist/2025-04-02/rustfmt-nightly-powerpc64le-unknown-linux-musl.tar.xz=79912529a393cb77c604f5a16d5b22611e938971656efd57fc5ef1980ffad35a -dist/2025-04-02/rustfmt-nightly-riscv64gc-unknown-linux-gnu.tar.gz=854280cb3eeac146196ba30c8f3a010d568bf5bf9613d1870bd052a2aa3a03c0 -dist/2025-04-02/rustfmt-nightly-riscv64gc-unknown-linux-gnu.tar.xz=36e6cfc2b333cf077e3e1bf651acab4e6845330fa151848926d7b33fafa016f3 -dist/2025-04-02/rustfmt-nightly-s390x-unknown-linux-gnu.tar.gz=19409bf4daa2e4d76c99659d7348f9a7dd4eb640c8bc81d93dc9170a1e51b7ba -dist/2025-04-02/rustfmt-nightly-s390x-unknown-linux-gnu.tar.xz=999346ff469e15507ec43c0b265a94b98ee99a0096d68ea0307a2280d138838f -dist/2025-04-02/rustfmt-nightly-x86_64-apple-darwin.tar.gz=6a52a943d59edb9e6ed97643b01a2ca2f51abb6fba1b4c9b73f59646372aac01 -dist/2025-04-02/rustfmt-nightly-x86_64-apple-darwin.tar.xz=3701a72b39a31e31c9fe65afa660a507088dfe6039867a2019bfb69970872bad -dist/2025-04-02/rustfmt-nightly-x86_64-pc-windows-gnu.tar.gz=c0dbe39a6dc72d96446312584055cfd75a4304c4859016ec7590d52813f0736c -dist/2025-04-02/rustfmt-nightly-x86_64-pc-windows-gnu.tar.xz=f9e8814cf2e0241bbe40bfafc62bb961d87060dd94c84fba8ea00b2992eafe2a -dist/2025-04-02/rustfmt-nightly-x86_64-pc-windows-msvc.tar.gz=b9a2c923b6794b3462882a9f5b1579e2463024a72ff34cdf4bdfd8b0f51ee528 -dist/2025-04-02/rustfmt-nightly-x86_64-pc-windows-msvc.tar.xz=c5e8272c451a3d685842e07a996e8bdc305ccb02a02d39f7f4cc764be4b2adce -dist/2025-04-02/rustfmt-nightly-x86_64-unknown-freebsd.tar.gz=d47cb1e290f09795a04652f33afba39f80f3b6dcc4b570c14c75b1d945c78f0a -dist/2025-04-02/rustfmt-nightly-x86_64-unknown-freebsd.tar.xz=389ea9f755623dd3d887bbff71189f86d7397c82e2f8fe660c27784cf7c68a94 -dist/2025-04-02/rustfmt-nightly-x86_64-unknown-illumos.tar.gz=b49f6c211c51a50309ddd2bcb4c886ebeef47e5413e6399778157bc90a37ed0e -dist/2025-04-02/rustfmt-nightly-x86_64-unknown-illumos.tar.xz=d53f55b6dba14bb2e2f90510c3e432781a8aad1f871d8f38795edf866ed4a4f3 -dist/2025-04-02/rustfmt-nightly-x86_64-unknown-linux-gnu.tar.gz=2b8d77937298b23522ab9bd2f64a829f6faf1dccb87033f6006aa8c324474b47 -dist/2025-04-02/rustfmt-nightly-x86_64-unknown-linux-gnu.tar.xz=0579d2a7c17cd585c49a42efe062466db777c1e7890f21b319234ee81c86ea39 -dist/2025-04-02/rustfmt-nightly-x86_64-unknown-linux-musl.tar.gz=65bc50db8fbe283e876b9ae7d6c15ff0461c1db8b3327f2992a99d21bcc3266c -dist/2025-04-02/rustfmt-nightly-x86_64-unknown-linux-musl.tar.xz=120505da1a8cddfb3f549438a52b2c73c76a9f1c2f25709db13d61efd214d732 -dist/2025-04-02/rustfmt-nightly-x86_64-unknown-netbsd.tar.gz=d19004b3f6b9fa446e23f540b21a8f314d3bbcca11f753c9a6fdaf4c7ae7a2de -dist/2025-04-02/rustfmt-nightly-x86_64-unknown-netbsd.tar.xz=e7facb66daed07789015c2d5b092afde5dbb1349d06cd0f80ae8319437587723 -dist/2025-04-02/rustc-nightly-aarch64-apple-darwin.tar.gz=3783e0aa4450a6bb913fc9a9799950892e65c7af9a2c895419090072999a2305 -dist/2025-04-02/rustc-nightly-aarch64-apple-darwin.tar.xz=4d3a72db4cfcd7663803f1a0b193326e37c7faecc0c97c3903a17fbc0f7c8848 -dist/2025-04-02/rustc-nightly-aarch64-pc-windows-msvc.tar.gz=c253308683fd394b1287a4eb9ca00cb8557bd7f7f91af8b087adccf9153a94eb -dist/2025-04-02/rustc-nightly-aarch64-pc-windows-msvc.tar.xz=63c30a1e523266dd6f8d6bb1525484f51fc6462bd7946900e0590b219f2a8b47 -dist/2025-04-02/rustc-nightly-aarch64-unknown-linux-gnu.tar.gz=74d2313a732fc8401d62b9a8610bd9a25502f0372921c0e99d9d20f0cf8e3b19 -dist/2025-04-02/rustc-nightly-aarch64-unknown-linux-gnu.tar.xz=a96db92f8c7cebe6e0d140a1853ecaa038e04975d62f17950e141d8ac2452536 -dist/2025-04-02/rustc-nightly-aarch64-unknown-linux-musl.tar.gz=250e2c21af9d4b284c7455668ebcc3d1e408c20cda1abf0ee69acac4c873e5ed -dist/2025-04-02/rustc-nightly-aarch64-unknown-linux-musl.tar.xz=931714cf51d93fee5cc9465e9a0e9d34c771fe2aaae46994f3b00da4c95a8f54 -dist/2025-04-02/rustc-nightly-arm-unknown-linux-gnueabi.tar.gz=28f993889175ba3feb78b458be5282b2564a7c9b96117fed071835ff7b47f43f -dist/2025-04-02/rustc-nightly-arm-unknown-linux-gnueabi.tar.xz=8645d1a7510cc13e2cd9abeffa71cbfb5f3a99990d27da2b05c336801a51c7f0 -dist/2025-04-02/rustc-nightly-arm-unknown-linux-gnueabihf.tar.gz=a86525223d8c5d67b0a92382b6ebce65761cdb83629e11bf29d625d688908d38 -dist/2025-04-02/rustc-nightly-arm-unknown-linux-gnueabihf.tar.xz=06a57a2c6298bb6e477d1e04922c626142bf96b2072684aecbbbf876bb4296f1 -dist/2025-04-02/rustc-nightly-armv7-unknown-linux-gnueabihf.tar.gz=a7fb3babdc244ea1f025f3033d13088c50696db8d6db29efcc6a78474a06769e -dist/2025-04-02/rustc-nightly-armv7-unknown-linux-gnueabihf.tar.xz=b130a7efa1c2bdfa5ef51237d5233ab6bd8feade7dc596d120b6501b4766a569 -dist/2025-04-02/rustc-nightly-i686-pc-windows-gnu.tar.gz=ebb4dda0d1ced3ec5aa14b1ef38227628db92a87f45b817d4ce41ff026a687ec -dist/2025-04-02/rustc-nightly-i686-pc-windows-gnu.tar.xz=43a69c9382b20249495824c149ffb5b5dae2ff7407c0c431859bc3e1f1ca4a7c -dist/2025-04-02/rustc-nightly-i686-pc-windows-msvc.tar.gz=bf3eb550e148e89e7ff17be5e72ad0462d57f3c452bfdc46b80a1812ec2fe457 -dist/2025-04-02/rustc-nightly-i686-pc-windows-msvc.tar.xz=b2dde774c1ef573c6a889c2d78bbb98f535f22be4b20896797be2f10781f0eb4 -dist/2025-04-02/rustc-nightly-i686-unknown-linux-gnu.tar.gz=96d130960b0dc1d8fa54f53d22a8fa8cf5aa35d0b213071404122e4e714feab0 -dist/2025-04-02/rustc-nightly-i686-unknown-linux-gnu.tar.xz=d743c6126151dd18624382a4228bf90af1239fc7fd97e763009b31666fb860fb -dist/2025-04-02/rustc-nightly-loongarch64-unknown-linux-gnu.tar.gz=090ec673f24758b8a4d0ce7b8c58fc6015585bd8392e37760283ffbe6045298c -dist/2025-04-02/rustc-nightly-loongarch64-unknown-linux-gnu.tar.xz=c71ad975a15c440890a7358b5459b7ca6b9d5e1842dd353071467c2a3f841605 -dist/2025-04-02/rustc-nightly-loongarch64-unknown-linux-musl.tar.gz=8806875cee039409632e8baf5433227af04bd07d015329d9512cc4f4879f687c -dist/2025-04-02/rustc-nightly-loongarch64-unknown-linux-musl.tar.xz=cebc3a4f1eb71e86e4e63f78e1c2f86fc98f7d23db1a3cb7e4c4d385e5591d51 -dist/2025-04-02/rustc-nightly-powerpc-unknown-linux-gnu.tar.gz=643dc0fe347a78a82321b5f47b41b09025856b6383ef67274ba3324879aae75e -dist/2025-04-02/rustc-nightly-powerpc-unknown-linux-gnu.tar.xz=955018b90daf3797497dfc423aec731e8d0320b96dcf42db1705b761e1e0dd58 -dist/2025-04-02/rustc-nightly-powerpc64-unknown-linux-gnu.tar.gz=aed278e57ffe0eb54328a9536607bc179806e0c2de9fccb9779a4517752899e5 -dist/2025-04-02/rustc-nightly-powerpc64-unknown-linux-gnu.tar.xz=0b6e0305b13d867c677243b16613f62b07352038f5e7ad7e1865cc2d00168283 -dist/2025-04-02/rustc-nightly-powerpc64le-unknown-linux-gnu.tar.gz=e10d8eee30be690aa2e6ff58ca554d47173086d5df8f0ea8581b3fd10d4cee0a -dist/2025-04-02/rustc-nightly-powerpc64le-unknown-linux-gnu.tar.xz=3ca3c258404dd8718321ed8a50aa6512fea9d810120db225a3fcfe56d7b83064 -dist/2025-04-02/rustc-nightly-powerpc64le-unknown-linux-musl.tar.gz=ddfc329b8932ad796c0eb7618632f9ae0c5ffb7a6093ea7d5cc4185fc0537f22 -dist/2025-04-02/rustc-nightly-powerpc64le-unknown-linux-musl.tar.xz=b4e82b64f2e934e17fc9b270295554a8bf0bd3d38ffffc66b367aad5bee3ad6f -dist/2025-04-02/rustc-nightly-riscv64gc-unknown-linux-gnu.tar.gz=116d290065bd9e8ff2ca57440e94f773f68adf79aedba767159dfb92fe1a42b0 -dist/2025-04-02/rustc-nightly-riscv64gc-unknown-linux-gnu.tar.xz=6e1deb0c47bba4b56bbf1d04344e45f0490938455aee421629f2fcfd309eff64 -dist/2025-04-02/rustc-nightly-s390x-unknown-linux-gnu.tar.gz=445f8a0ca579153b449fa0d36460227af68399c4227be76e4cbb3d65cef9055c -dist/2025-04-02/rustc-nightly-s390x-unknown-linux-gnu.tar.xz=d87bcac173e9800dc1c1b28e668a1b4c3616029d0ca53adfa4ac382733610193 -dist/2025-04-02/rustc-nightly-x86_64-apple-darwin.tar.gz=4342b89aed19f409df56bfac3d6ac071a02cb6839a52d19fdff9d10cc1d9f540 -dist/2025-04-02/rustc-nightly-x86_64-apple-darwin.tar.xz=cb787327895f275e6f9025bb38c6337492c839310931b8c7ba39743813621701 -dist/2025-04-02/rustc-nightly-x86_64-pc-windows-gnu.tar.gz=6cddd0d3cf18780b36776fd0324643a36b3294923531a741cc763516c8238caf -dist/2025-04-02/rustc-nightly-x86_64-pc-windows-gnu.tar.xz=cefc15752bd84b290f50b958b96feb0134d420a10c6f36791424c762cda08abc -dist/2025-04-02/rustc-nightly-x86_64-pc-windows-msvc.tar.gz=731e968787044081453a559a95579435654b47f91a9b7f94579ac007ed3e4cf9 -dist/2025-04-02/rustc-nightly-x86_64-pc-windows-msvc.tar.xz=3d9b173043aed73aa3ab1fa0b14d0ce2149a4943f4bb10aa1e31af619afe0eed -dist/2025-04-02/rustc-nightly-x86_64-unknown-freebsd.tar.gz=c0df2f0a354d2d657d8ec8091bc094060321b343c8e7bb8e4315cfe042dacfc3 -dist/2025-04-02/rustc-nightly-x86_64-unknown-freebsd.tar.xz=8933bc0361484ac7c6b226defaea73eda5c4e10462e7ea54052c7e1d370e48c0 -dist/2025-04-02/rustc-nightly-x86_64-unknown-illumos.tar.gz=5887f913ac80dfe9826619227c66eb234a2b4848e6bc4f41c6fdd8102bf981e9 -dist/2025-04-02/rustc-nightly-x86_64-unknown-illumos.tar.xz=4a54b8b09eba43df0d99fb6e03177cf8ba2214a5810be52ac33ee3d9d33e98bc -dist/2025-04-02/rustc-nightly-x86_64-unknown-linux-gnu.tar.gz=1c0bb76acd7944804d52c3139f4dcf154d3221cdeb300bb6b9bca726cd6ad30f -dist/2025-04-02/rustc-nightly-x86_64-unknown-linux-gnu.tar.xz=e67a33440c3e021ff2dd41add0fb05db6c0e8ae68bd30d33e8b3185b0bb7191b -dist/2025-04-02/rustc-nightly-x86_64-unknown-linux-musl.tar.gz=0ea7e17d7bb67d6a6c4b2f864aaffcd96512f15f17f0acc63751eb1df6c486a7 -dist/2025-04-02/rustc-nightly-x86_64-unknown-linux-musl.tar.xz=b73d37b704ab58921172cc561f5598db6a504dcd4d7980966f7c26caaf6d3594 -dist/2025-04-02/rustc-nightly-x86_64-unknown-netbsd.tar.gz=986f6c594d37bcbd3833e053640ba8775f68d26a65c5618386654ef55d7b3542 -dist/2025-04-02/rustc-nightly-x86_64-unknown-netbsd.tar.xz=c0d9a88c30d2ab38ec3a11fabb5515ed9bc3ac1a8e35a438d68bf7ff82f6b843 +dist/2025-05-15/rustc-1.87.0-aarch64-apple-darwin.tar.gz=5b4a2b9baedcc6ff00635b5daa61d976d4339fbc6b6fe3cabb9ca97d1076cff7 +dist/2025-05-15/rustc-1.87.0-aarch64-apple-darwin.tar.xz=175800bc89cccd8f8ee2f3a4d07bdf98c163030fd5d3dc6d5b23cf4dd0a2a4c3 +dist/2025-05-15/rustc-1.87.0-aarch64-pc-windows-msvc.tar.gz=d75af50f7d1543b97e047ff6e7544a38fe8d74900064e64c954741a57c9e4b3e +dist/2025-05-15/rustc-1.87.0-aarch64-pc-windows-msvc.tar.xz=e6ab7be87ce77399008f88547dcc58c59a16d16907aa44341a3d0c1b7c8c1cd5 +dist/2025-05-15/rustc-1.87.0-aarch64-unknown-linux-gnu.tar.gz=771a702962fc004eb5b8390a56fbe79fb2615684190187e6143851860d27f92b +dist/2025-05-15/rustc-1.87.0-aarch64-unknown-linux-gnu.tar.xz=93c59a880632aa1c69e3ffaa1830b5b19c08341ae2cd364bf4e6d13901facfed +dist/2025-05-15/rustc-1.87.0-aarch64-unknown-linux-musl.tar.gz=e1a26ba23d4b4b3cbe185ca4ad22f2a28bd7dc5cea6cc32c562eba4c27d5da09 +dist/2025-05-15/rustc-1.87.0-aarch64-unknown-linux-musl.tar.xz=fa0bdc4b852358b5de7ab1da74f2968e60f72b667c6c152dda0beef04b75be2e +dist/2025-05-15/rustc-1.87.0-arm-unknown-linux-gnueabi.tar.gz=86e42e1284b059d56bb5a642d78916fb40328ad29137b120fc44f331594a3908 +dist/2025-05-15/rustc-1.87.0-arm-unknown-linux-gnueabi.tar.xz=d37cf1e608d52ae2461ae077414aec19bc2d5e672083becd26c1ab524c8d32db +dist/2025-05-15/rustc-1.87.0-arm-unknown-linux-gnueabihf.tar.gz=fce00ad6e6349a2e266cb894bc845c8456070ab1e74fe2789708a5fd57a2206c +dist/2025-05-15/rustc-1.87.0-arm-unknown-linux-gnueabihf.tar.xz=87d7dabf505b057f13feb291e253ef35d1483b61b5284df43ce0fff9a51e91cf +dist/2025-05-15/rustc-1.87.0-armv7-unknown-linux-gnueabihf.tar.gz=e87a723587e60f510ed0ed4b095328689c40db4c53db360ff71255367369da8f +dist/2025-05-15/rustc-1.87.0-armv7-unknown-linux-gnueabihf.tar.xz=b1d4b0c269aa397e1578cb202b58892afc3200b598bc478148ac591ad15c6cda +dist/2025-05-15/rustc-1.87.0-i686-pc-windows-gnu.tar.gz=bf95eaaaca88111e96fb355951622f35348c5a8fed318616a9fc14225097e977 +dist/2025-05-15/rustc-1.87.0-i686-pc-windows-gnu.tar.xz=c9975811e2739a0090b78de31ab949ccbf7087b369dce38ce7de35bd4c46e740 +dist/2025-05-15/rustc-1.87.0-i686-pc-windows-msvc.tar.gz=874ef113d0fa614b6f3341d6cd54e7a6c94f5c73f36e23c7497c509e52e07f7f +dist/2025-05-15/rustc-1.87.0-i686-pc-windows-msvc.tar.xz=3de7d493500aa9dbaa18fed67e6254e53efa6bfe2927d3cd5ba3713bc7926098 +dist/2025-05-15/rustc-1.87.0-i686-unknown-linux-gnu.tar.gz=2a789a02a9f69b40e73d66aee2a99973f4e7301483dcfe0606a6a1ec6d140ebb +dist/2025-05-15/rustc-1.87.0-i686-unknown-linux-gnu.tar.xz=e59bb135589f8ca062e63ec244f61a4226fa348de5221fa96e9350f3e28a5fd1 +dist/2025-05-15/rustc-1.87.0-loongarch64-unknown-linux-gnu.tar.gz=0123ba64bfad7a12f74f8e7ab990963a578f7fb1e15ed3ce093566aad61970d1 +dist/2025-05-15/rustc-1.87.0-loongarch64-unknown-linux-gnu.tar.xz=21f2e20d2dab04683f24771a4a1ba81500bf2d876b3f8e134b6f39ba88cafc33 +dist/2025-05-15/rustc-1.87.0-loongarch64-unknown-linux-musl.tar.gz=e457283dd4266cc5c4e96375ced691b0be62d30c2106f6006812242c44e62c3c +dist/2025-05-15/rustc-1.87.0-loongarch64-unknown-linux-musl.tar.xz=a778be64dd25e3ed65f35f23cd6464d2c632a5e8e4e9982443aa90b2550a4233 +dist/2025-05-15/rustc-1.87.0-powerpc-unknown-linux-gnu.tar.gz=48544903eaa15d01237b3f039b689d49b6cac3e29839348de683107aa82a4ef3 +dist/2025-05-15/rustc-1.87.0-powerpc-unknown-linux-gnu.tar.xz=a650e3d8701c5916893845f5ceae1eb0bf9714ac608ef304976a9ee2ace16caf +dist/2025-05-15/rustc-1.87.0-powerpc64-unknown-linux-gnu.tar.gz=258e6dcf8a762d65ab2d35e2292267e51b272b1826c5c662b384b3e6cce66b50 +dist/2025-05-15/rustc-1.87.0-powerpc64-unknown-linux-gnu.tar.xz=96c0a3d1a6f1c3d9ac677187af6837e1b0fb782a270762741d02b5c299c62d77 +dist/2025-05-15/rustc-1.87.0-powerpc64le-unknown-linux-gnu.tar.gz=8c716a97d67be69a35b6699be2082af1293e78d7e0f0f4a35451a8ab6eee5691 +dist/2025-05-15/rustc-1.87.0-powerpc64le-unknown-linux-gnu.tar.xz=b861d2ccaa379261d7a05331b25971687a9d90efbab14c58829b78abe3add2e6 +dist/2025-05-15/rustc-1.87.0-powerpc64le-unknown-linux-musl.tar.gz=bd6c0655ca9b67ee11c4dc7e99e4d8d05c7cb7359db2efbad0b5e938b932fa0a +dist/2025-05-15/rustc-1.87.0-powerpc64le-unknown-linux-musl.tar.xz=9bb1f5de40505f7470f536a8a8e5db249c868475a32fe365fb928ccf2bbc38db +dist/2025-05-15/rustc-1.87.0-riscv64gc-unknown-linux-gnu.tar.gz=eeaea6a5cab637c589d85eb3c6f4fb024c67452b62e8fd84a765b87eb4a637ac +dist/2025-05-15/rustc-1.87.0-riscv64gc-unknown-linux-gnu.tar.xz=45708d5767ecd589ec852068dc0e0afb27427e7e9e03b4586f2cb75673f885b6 +dist/2025-05-15/rustc-1.87.0-s390x-unknown-linux-gnu.tar.gz=b517c94cd97b59b0d76e69c2fb0896609da3ec521b9a63ed87f4dee4f7003a41 +dist/2025-05-15/rustc-1.87.0-s390x-unknown-linux-gnu.tar.xz=4b961ed0731f0f4f3c1270c1655198a01269e6e4ca129bf1b975114e3bde511e +dist/2025-05-15/rustc-1.87.0-x86_64-apple-darwin.tar.gz=2623a7b0977a7d032ae58ba527e3431d230afaa3c64ab25ee19f0f7a056fd22b +dist/2025-05-15/rustc-1.87.0-x86_64-apple-darwin.tar.xz=05e2fefe5afed492f2082f58e7e5bf9e0332cea9dddae5ea243e70283b92b6ce +dist/2025-05-15/rustc-1.87.0-x86_64-pc-windows-gnu.tar.gz=a5354d60076c1c5d8aced8bbba822cb0a13bef675ac780cd5f103a0c1d006545 +dist/2025-05-15/rustc-1.87.0-x86_64-pc-windows-gnu.tar.xz=54c2e48637a521a4cab4e02da3c079e7a1e4f465c8eeb95063900235c9cffebc +dist/2025-05-15/rustc-1.87.0-x86_64-pc-windows-msvc.tar.gz=b5542c8f1225e8a09b21d2d93fad6237ccd686cb763d78f9ada53fda03f61368 +dist/2025-05-15/rustc-1.87.0-x86_64-pc-windows-msvc.tar.xz=4aa91aa69899eaf41c2643320ad1fc295a70dac60472cbab6ec4575c63c95f03 +dist/2025-05-15/rustc-1.87.0-x86_64-unknown-freebsd.tar.gz=9a42dec957286c15e2faf1bf5fcb0823314ed5faa6eb9d14f1f146b456ceb51e +dist/2025-05-15/rustc-1.87.0-x86_64-unknown-freebsd.tar.xz=5a3c96eaa25eb39cf89804a72327f325898ec2a1994611a1d72292a1edb28dac +dist/2025-05-15/rustc-1.87.0-x86_64-unknown-illumos.tar.gz=0d50a37c755911d484bbb93c635532c6f95e9b44c1f736bbaf73ce8d3e67f700 +dist/2025-05-15/rustc-1.87.0-x86_64-unknown-illumos.tar.xz=bb42d64d45692f060e4aad9ec3e021015ec4ff44437a45322f13a7ffb3ffc2a6 +dist/2025-05-15/rustc-1.87.0-x86_64-unknown-linux-gnu.tar.gz=1cffeb2f402efb594baf1bc9e752dc9dc5cfdd22230d54b56f5ff05c429795b9 +dist/2025-05-15/rustc-1.87.0-x86_64-unknown-linux-gnu.tar.xz=e8395c5c5756253b76107055e093ffbc4431af7b30aeebe72ce2684b9cb53973 +dist/2025-05-15/rustc-1.87.0-x86_64-unknown-linux-musl.tar.gz=102f2f772db0ade7c19aa0e7d2d75aedfe190d4e2f88f809d039dd0846eed2c3 +dist/2025-05-15/rustc-1.87.0-x86_64-unknown-linux-musl.tar.xz=ab6074ff8753f63d74e7e39f2450a8c3cfd93109fad6bb09e6327caa2d7d8ea6 +dist/2025-05-15/rustc-1.87.0-x86_64-unknown-netbsd.tar.gz=dad5e67367bd0d57a7bb3dd0af0cee95f34269587864be13e2063416f6f526f8 +dist/2025-05-15/rustc-1.87.0-x86_64-unknown-netbsd.tar.xz=c02296e80ae2550607547b8f0b757ba678146f99dbc0e140c33e71f6a754fc81 +dist/2025-05-15/rust-std-1.87.0-aarch64-apple-darwin.tar.gz=293694e0df34210ad76ea69c1e4dcec5e8ca433e46ca8c716b65d5f4967af659 +dist/2025-05-15/rust-std-1.87.0-aarch64-apple-darwin.tar.xz=6547322b317f18b73695724ff60a7860457df1a646b4a79f89a70a13d0747375 +dist/2025-05-15/rust-std-1.87.0-aarch64-apple-ios.tar.gz=ffc7ed77e4ec0d6417e6f42c4fd7aa4e5c1491ad162990fae2f050b9f4472c0e +dist/2025-05-15/rust-std-1.87.0-aarch64-apple-ios.tar.xz=3138851b186578825abd41d55bb0ed64807fb33b9be01b83899af72903d28fcd +dist/2025-05-15/rust-std-1.87.0-aarch64-apple-ios-macabi.tar.gz=fb84339998af90683c990de2c91d6b6e8848601f2cecb475d006bbbab8f89147 +dist/2025-05-15/rust-std-1.87.0-aarch64-apple-ios-macabi.tar.xz=4b7321efeb859fad533cb17d831a70d60c8bbae2b1a1b35eba369bbd0efb6645 +dist/2025-05-15/rust-std-1.87.0-aarch64-apple-ios-sim.tar.gz=02174e0032b032869cf7083a8f5b2958bda5a6a8df219a73c3b34ae0a6f6853a +dist/2025-05-15/rust-std-1.87.0-aarch64-apple-ios-sim.tar.xz=598517d755324bfb720ce474967f820f45b6070801a062598d62bb5c78ef8f9e +dist/2025-05-15/rust-std-1.87.0-aarch64-linux-android.tar.gz=8317daf86caf051e68a7e0d5e4f1a5fb33e3456878f28a367d90ad12240ed4ba +dist/2025-05-15/rust-std-1.87.0-aarch64-linux-android.tar.xz=521f1a6bb30927fd6b0db93d4ab767af0f60352974122fb504de51dfc1590e9e +dist/2025-05-15/rust-std-1.87.0-aarch64-pc-windows-gnullvm.tar.gz=a6c109e7e85a738747c36ca1781ec3d87aa8d4202d8ceae9a05deef598688c82 +dist/2025-05-15/rust-std-1.87.0-aarch64-pc-windows-gnullvm.tar.xz=c438b65338e9993c959129e675c5f9690fa2d7dadf22602ef273ac1d4d9e609d +dist/2025-05-15/rust-std-1.87.0-aarch64-pc-windows-msvc.tar.gz=fed501f1ff85e9d9c9f908075484cabf2964376dc11d3b1c7979235f6b1f6c28 +dist/2025-05-15/rust-std-1.87.0-aarch64-pc-windows-msvc.tar.xz=2e2562df3293686b657e0f8aed77e4d6a565a6cb6eb87553632bc645884f4eab +dist/2025-05-15/rust-std-1.87.0-aarch64-unknown-fuchsia.tar.gz=e79960db4c280f3714fbec5a93a641ae2a19f07417a2832e5fb2fa9980944aef +dist/2025-05-15/rust-std-1.87.0-aarch64-unknown-fuchsia.tar.xz=ee548b36bdb48172665ae291b90712476d05fa6a50cc0cda433c51c238b1543d +dist/2025-05-15/rust-std-1.87.0-aarch64-unknown-linux-gnu.tar.gz=b9b2c50c2fde2a95fbb9769393c9dd02b1a97e43e0ec2edd1ac4fd4475fe82e7 +dist/2025-05-15/rust-std-1.87.0-aarch64-unknown-linux-gnu.tar.xz=80fab79c1f57b7cd89a1e6379b2196a208352403aa7bd7f674341a172ac0697f +dist/2025-05-15/rust-std-1.87.0-aarch64-unknown-linux-musl.tar.gz=3c1280458a806f784b4437bc72cd6fe04b749724cbfc77c52339a7f93d99a78a +dist/2025-05-15/rust-std-1.87.0-aarch64-unknown-linux-musl.tar.xz=15fd0652e2f3a8b678be8a83e396a1103fb1bb941afabe3fdaec706f3bdc85d0 +dist/2025-05-15/rust-std-1.87.0-aarch64-unknown-linux-ohos.tar.gz=b9416943720771b5e325638d19ef5cade2704c61cbaf2c4870cecdcc9af8a0c4 +dist/2025-05-15/rust-std-1.87.0-aarch64-unknown-linux-ohos.tar.xz=98212c76194641ceb3f80f69ce3748beeeede3b9892cb77a7e4b2bc0a06d5f15 +dist/2025-05-15/rust-std-1.87.0-aarch64-unknown-none.tar.gz=9ae3782e2a55991a7d5e6bf6ddddaf51e6a3cf321a175e41b7eaea59d86a38d7 +dist/2025-05-15/rust-std-1.87.0-aarch64-unknown-none.tar.xz=8970fca17dc28da29378e9d398566259a66202aec5049c2b1551bb0d3537eb60 +dist/2025-05-15/rust-std-1.87.0-aarch64-unknown-none-softfloat.tar.gz=6601b79b7ce05fa725c43513feaa00065bbf68e9b07609d730899989be7ac60b +dist/2025-05-15/rust-std-1.87.0-aarch64-unknown-none-softfloat.tar.xz=3af6c4c0f62f1424824df2d557101b7900bb896fdc76af720fa2d6d9904f4513 +dist/2025-05-15/rust-std-1.87.0-aarch64-unknown-uefi.tar.gz=6361be6f2ba495fc48e78edafd1520a090d23432eb825bdaf1d46eb513323303 +dist/2025-05-15/rust-std-1.87.0-aarch64-unknown-uefi.tar.xz=2fa10e5e8d1b19e45fad6fb3709bca007595b5d939870aace4bd1ca4f3a32ce5 +dist/2025-05-15/rust-std-1.87.0-arm-linux-androideabi.tar.gz=0623777451453899f4f5d65e61b86d2ce9841688d4067a1af6df9716890a6bbe +dist/2025-05-15/rust-std-1.87.0-arm-linux-androideabi.tar.xz=39f382c1e9b9d5e29b25475c44f89f56305a1372d3fd8d3ad9a97adcbfad06fc +dist/2025-05-15/rust-std-1.87.0-arm-unknown-linux-gnueabi.tar.gz=679c9f28e1ac9f01999c94c7215ededdaa25ffc77919aef67f0c55c4186987f2 +dist/2025-05-15/rust-std-1.87.0-arm-unknown-linux-gnueabi.tar.xz=eaa13c6dbf7bf4ac54af7175bc131ae19a8f8c175d479360952d8e952888a7ad +dist/2025-05-15/rust-std-1.87.0-arm-unknown-linux-gnueabihf.tar.gz=ec8c55bdb4884e6ef3320cc670cf9f9559be0d916890f91d529d2ca57ddc861a +dist/2025-05-15/rust-std-1.87.0-arm-unknown-linux-gnueabihf.tar.xz=a3f6fd620fb284318e349197a50f9ecf4bccbfb21d8e55a93d7fe1bfdf9d6e92 +dist/2025-05-15/rust-std-1.87.0-arm-unknown-linux-musleabi.tar.gz=bfe697630c1c9c1f511e1387576a2c320ac0fb1cad0ba3c717f45a166c75c810 +dist/2025-05-15/rust-std-1.87.0-arm-unknown-linux-musleabi.tar.xz=b339c28df6b8f70582209df2e3c6fe92015095aa9dbf7bfbe294ccd5d1a5e9a1 +dist/2025-05-15/rust-std-1.87.0-arm-unknown-linux-musleabihf.tar.gz=92ca3cb1a86d642b9327a1b6a32560aef51b29edd8e37c397514053f5d94de26 +dist/2025-05-15/rust-std-1.87.0-arm-unknown-linux-musleabihf.tar.xz=004e30b20c3ab07a67341065b0057a70e9065e677e68814d889a5e1cf5169b32 +dist/2025-05-15/rust-std-1.87.0-arm64ec-pc-windows-msvc.tar.gz=984d17680c16dc366b75669319f50be1b213a80136ff9fbf85d3cc3f1c402783 +dist/2025-05-15/rust-std-1.87.0-arm64ec-pc-windows-msvc.tar.xz=0609d4080bc7466225245e855770badab963b56f03b722b26d68760bc75bf218 +dist/2025-05-15/rust-std-1.87.0-armebv7r-none-eabi.tar.gz=5601ec01e9b53301cffbac378f90b17594b5236302e287369e210d2f91a5d52e +dist/2025-05-15/rust-std-1.87.0-armebv7r-none-eabi.tar.xz=38668e19490990d0c368d98e0435c918d8d285e6339e2a00cf1aa9665428594b +dist/2025-05-15/rust-std-1.87.0-armebv7r-none-eabihf.tar.gz=8fe492b3831434040b77730609e575cf16c2c2fdcf585663e1e678f977b811b4 +dist/2025-05-15/rust-std-1.87.0-armebv7r-none-eabihf.tar.xz=4d63ffe5e9da38c22dce1e23b4385f1485b0a6c9b460cc18bf449d3aa181efed +dist/2025-05-15/rust-std-1.87.0-armv5te-unknown-linux-gnueabi.tar.gz=58a7df09434edb40799c8fa09fbfca3732a3aee560a776044dde9876204cfc9b +dist/2025-05-15/rust-std-1.87.0-armv5te-unknown-linux-gnueabi.tar.xz=c2995be699c14abf4e37af9f03eb438f54a5c388c54e7176c4c65161ab787128 +dist/2025-05-15/rust-std-1.87.0-armv5te-unknown-linux-musleabi.tar.gz=8b232fc09eb5c97ba3042a184b0204a00c767c39bb3c8d87c67421de5419f61a +dist/2025-05-15/rust-std-1.87.0-armv5te-unknown-linux-musleabi.tar.xz=353370370147bb7ff3885007e647e6b7c9f1c9d33233effc392147d2a43655b6 +dist/2025-05-15/rust-std-1.87.0-armv7-linux-androideabi.tar.gz=ba8b3035b8ce1f758a25874e8532eb062bc08f314524e45765a6f06249df6298 +dist/2025-05-15/rust-std-1.87.0-armv7-linux-androideabi.tar.xz=1a23cc105c660f75940bb4433a6666428d62478188971a18703c2a82493f08b5 +dist/2025-05-15/rust-std-1.87.0-armv7-unknown-linux-gnueabi.tar.gz=75399f1978d0b7a57d29c70aa8c4301957d1d8b0c9ff924c4812b3b63a5ace28 +dist/2025-05-15/rust-std-1.87.0-armv7-unknown-linux-gnueabi.tar.xz=4ebceb0b7f56db2e597d3686e4fe9b1be64e3b1f65ab9e4e8658c126f104e9d2 +dist/2025-05-15/rust-std-1.87.0-armv7-unknown-linux-gnueabihf.tar.gz=e438399cea75d0d7b1b679a05aefaac8239e23bc3ee1504416282c6d2f443457 +dist/2025-05-15/rust-std-1.87.0-armv7-unknown-linux-gnueabihf.tar.xz=3f8d84c889fede998d5575a2ccdb6783bdc79d0a9f995d4db1414fc37cea81fe +dist/2025-05-15/rust-std-1.87.0-armv7-unknown-linux-musleabi.tar.gz=ffc92a5a557584db196eed66a1fa870cd96398302c20d862188de49c360b1a26 +dist/2025-05-15/rust-std-1.87.0-armv7-unknown-linux-musleabi.tar.xz=4e671dea7c039a0761648c1a2ee36c72ff2e2049c82a762ded0f437f288cbdcf +dist/2025-05-15/rust-std-1.87.0-armv7-unknown-linux-musleabihf.tar.gz=72e539e46fb3529ac2e30e200d5915fe3599db2210833c3377ec910649ae846d +dist/2025-05-15/rust-std-1.87.0-armv7-unknown-linux-musleabihf.tar.xz=0e7a4d5f841ac15421b20b9c8013b57e8ce9ad6c77a573ae2fb00b8ac87deafb +dist/2025-05-15/rust-std-1.87.0-armv7-unknown-linux-ohos.tar.gz=b8085d304b75a9ae59dc09ca07ef945dd779f63e75930df45b65a27e753f2bc0 +dist/2025-05-15/rust-std-1.87.0-armv7-unknown-linux-ohos.tar.xz=4617efeca2226f0855c7a8a0ecaf7a8bf116f88b62aabfa0943c3b783b380a11 +dist/2025-05-15/rust-std-1.87.0-armv7a-none-eabi.tar.gz=6fb3ccf89bb3b064b6342f6803b3c091fb13f388c14ffb79e88479ac05f87d3b +dist/2025-05-15/rust-std-1.87.0-armv7a-none-eabi.tar.xz=3203565fe05d07c9f8cb2f3819a67c50fec33b82a035fdfdfc54881b3bdd1f01 +dist/2025-05-15/rust-std-1.87.0-armv7r-none-eabi.tar.gz=8f8ec418bb210a9f4ea440a4b378b8076a63c2e1e2af57c700825e0a312d370b +dist/2025-05-15/rust-std-1.87.0-armv7r-none-eabi.tar.xz=d5fc2c7368d0e5835cf8fd6664d9e6e88f9e15ff9dc0c4378f7dd4034458d123 +dist/2025-05-15/rust-std-1.87.0-armv7r-none-eabihf.tar.gz=c917f05827049c3bc5ec2f3b6ea289bda45486a15402ca20ddd1cc6bc47c070f +dist/2025-05-15/rust-std-1.87.0-armv7r-none-eabihf.tar.xz=be9e4b46716a061c1630b062f3b3f1700a8ca1c6a1a4a5d3e490b6600c1aa21a +dist/2025-05-15/rust-std-1.87.0-i586-unknown-linux-gnu.tar.gz=874fcb2031ed91c2705b6be3dcc76d32a6a0e386530e29b7f8a60e452553f63d +dist/2025-05-15/rust-std-1.87.0-i586-unknown-linux-gnu.tar.xz=fc656140b5810a1bfa3b80456e416a0381dd68c565fc67fd23f945f8df80254b +dist/2025-05-15/rust-std-1.87.0-i586-unknown-linux-musl.tar.gz=33ddf9f91cfb23d877b0b8fa8bd164bfa7105907b91738f478482a14463364f2 +dist/2025-05-15/rust-std-1.87.0-i586-unknown-linux-musl.tar.xz=e2b951f52b4b48852b009cd907878a7360f9345156214e71fe4f6e9a06178442 +dist/2025-05-15/rust-std-1.87.0-i686-linux-android.tar.gz=b5436dbd55624a05c317f1d7a4aa2dd0b4ec29dd7ebd91e593a72e2617fe0e16 +dist/2025-05-15/rust-std-1.87.0-i686-linux-android.tar.xz=e1c0c0a9b4a650c452b5eaf9d2bd5e2f4536656e22f19f3f0286ee0cad93c54f +dist/2025-05-15/rust-std-1.87.0-i686-pc-windows-gnu.tar.gz=edba906bacde223b0d77f255df45e5bb3bc6926f9f4fbf2662aa08decb6ab3c8 +dist/2025-05-15/rust-std-1.87.0-i686-pc-windows-gnu.tar.xz=225993a5cf217251ddd566b9553e4c462ad3a6750bcb8d9b4d17f8ace0d53071 +dist/2025-05-15/rust-std-1.87.0-i686-pc-windows-gnullvm.tar.gz=e53f7744df018913e49a9463412a087e7606e0cac72798563255e0b379e417a5 +dist/2025-05-15/rust-std-1.87.0-i686-pc-windows-gnullvm.tar.xz=e854c9dc0a2d365c17d8d58fc26727b0f986ae49c167b3b434ccce7b1c808e27 +dist/2025-05-15/rust-std-1.87.0-i686-pc-windows-msvc.tar.gz=2508de21aa4a0fbdaa40eaeef3d18d021fdadffcaf2fb78e9211126b37c051cd +dist/2025-05-15/rust-std-1.87.0-i686-pc-windows-msvc.tar.xz=7344da7e3b72f535a081c8b7f00aa9d8d8a51ad175e3da11ee59c8d4d6b396f7 +dist/2025-05-15/rust-std-1.87.0-i686-unknown-freebsd.tar.gz=549e4ac66f2219119f2ce0c9e602ebb68929bdb5f796f4ee2cbd311392fb91f0 +dist/2025-05-15/rust-std-1.87.0-i686-unknown-freebsd.tar.xz=38196e92e2002a935e279859f97f02fb1845e9746d038662d477a6bb6236894b +dist/2025-05-15/rust-std-1.87.0-i686-unknown-linux-gnu.tar.gz=0455d9d0570090d08ce905088233aa7708794bdb915ece8aed6aa3a38cce53f6 +dist/2025-05-15/rust-std-1.87.0-i686-unknown-linux-gnu.tar.xz=df2bcaa75c9bfec12b4d0b43112c90647383865871cd0ea19f4af16b8942ac9f +dist/2025-05-15/rust-std-1.87.0-i686-unknown-linux-musl.tar.gz=fb89c9489e3cbcd1bc451e035d65b60decba3d1ab3dfba4d1796e61da6e3cfa5 +dist/2025-05-15/rust-std-1.87.0-i686-unknown-linux-musl.tar.xz=cb7bf64656658619918341b2987fd97d7b368308da16f0f923d767d5c60862b0 +dist/2025-05-15/rust-std-1.87.0-i686-unknown-uefi.tar.gz=318f233ede1fb163e4503be22a464e3a0182c3a354be45d6e8875fe9408ea83e +dist/2025-05-15/rust-std-1.87.0-i686-unknown-uefi.tar.xz=09431929dbebb3b901654712635387bf2b17aec7fe869c3585b6529e0408dc3b +dist/2025-05-15/rust-std-1.87.0-loongarch64-unknown-linux-gnu.tar.gz=25d757a99ab6bc64036d9c9ee16ad216f18e129d350b792f016ab06bf21327db +dist/2025-05-15/rust-std-1.87.0-loongarch64-unknown-linux-gnu.tar.xz=333cf7f4328c13e2ea0d05fa87ee0509d63c57bab570b685c891fe6113e6d36a +dist/2025-05-15/rust-std-1.87.0-loongarch64-unknown-linux-musl.tar.gz=9cfdd4b1cca5d1648847c2526d70043729878a4baf5bd413004fb576141b8fd1 +dist/2025-05-15/rust-std-1.87.0-loongarch64-unknown-linux-musl.tar.xz=5bfc90bd19865daeb12e8d845bc03a8ba898a5770378083e3a584f0688bee164 +dist/2025-05-15/rust-std-1.87.0-loongarch64-unknown-none.tar.gz=2bf1bf0a5dc4ea0cce379d10472993d137dc3454b159598e2192d267bf247780 +dist/2025-05-15/rust-std-1.87.0-loongarch64-unknown-none.tar.xz=ff3e4dd0e4b81568861ce4e78295b28ba41d6302ea14e0040736ad3b1e88f1fc +dist/2025-05-15/rust-std-1.87.0-loongarch64-unknown-none-softfloat.tar.gz=54fe19c2803e192038ca144594fdf6ecec067a8fc5694ac8d24f6e82917a509a +dist/2025-05-15/rust-std-1.87.0-loongarch64-unknown-none-softfloat.tar.xz=e45b4633a33b0e3bd5a20e238a7bfa4b27ae76f20019e0c1e82826d6b5eb476f +dist/2025-05-15/rust-std-1.87.0-nvptx64-nvidia-cuda.tar.gz=023ccedfabee77a4c76bf56410de83499df84175dbd42ded4948284944d6171a +dist/2025-05-15/rust-std-1.87.0-nvptx64-nvidia-cuda.tar.xz=99df1c2f4a6d93091c905d5a52165fe173dfd48bde67435bb6c5cc80d44658cc +dist/2025-05-15/rust-std-1.87.0-powerpc-unknown-linux-gnu.tar.gz=4ef6a6f32ac977cb699510d154ebd2394acd2466738ce728a04b1fe4763f6864 +dist/2025-05-15/rust-std-1.87.0-powerpc-unknown-linux-gnu.tar.xz=df327566871a7595efc393e8fec9cd529615d4296727a228625cffd67a322126 +dist/2025-05-15/rust-std-1.87.0-powerpc64-unknown-linux-gnu.tar.gz=b05f30c583b81b1d9972f58a21bf3c95af8f89f838b88002bbde5e89496c7f82 +dist/2025-05-15/rust-std-1.87.0-powerpc64-unknown-linux-gnu.tar.xz=4a69e1a021ddd0c645fe7bee229a4db306c08a6f4976dc5eaf64bf95a810f7c2 +dist/2025-05-15/rust-std-1.87.0-powerpc64le-unknown-linux-gnu.tar.gz=7accad199acb7c692667ac8a03fc4788eb44ecaf6ce2edd3549cbe778a4ebfef +dist/2025-05-15/rust-std-1.87.0-powerpc64le-unknown-linux-gnu.tar.xz=73ed9c6ef539095cdca4e41b789b4e47effce6f796be73542f86cb9d5855a9ea +dist/2025-05-15/rust-std-1.87.0-powerpc64le-unknown-linux-musl.tar.gz=e8be601f1c8a9b4d41a595fb06eb6a2c2c114d73a8de36f3851fcbcc1a077d1f +dist/2025-05-15/rust-std-1.87.0-powerpc64le-unknown-linux-musl.tar.xz=0c54d29f3f1756555fd9c40e81816b3c2c214178f51da7bd3c00f48be578fb0d +dist/2025-05-15/rust-std-1.87.0-riscv32i-unknown-none-elf.tar.gz=e455f27f26fb8e0b8ee98db35309f2c94afa4b22c8309744fb606dcb9f654dc4 +dist/2025-05-15/rust-std-1.87.0-riscv32i-unknown-none-elf.tar.xz=c3eff96ec52baa36723487073818906299aff1b77eba44f2321a375b3db8e284 +dist/2025-05-15/rust-std-1.87.0-riscv32im-unknown-none-elf.tar.gz=477697465884e7d4b290f4ff381c92685ddf6365ed3be57089f7369fe94f120f +dist/2025-05-15/rust-std-1.87.0-riscv32im-unknown-none-elf.tar.xz=942352bb8c8f9d55ad5c0e565077e3108516d8220cb60d24434bae38ae9b4954 +dist/2025-05-15/rust-std-1.87.0-riscv32imac-unknown-none-elf.tar.gz=50cc0e08ec8219061dc5dcf3e8ac0566791d44f476832f68b90ab5d1787d8d71 +dist/2025-05-15/rust-std-1.87.0-riscv32imac-unknown-none-elf.tar.xz=e1990aecc0025885fa5aafe10a631cc2babef3de0e3cf3d284e6a9b87e0bbb69 +dist/2025-05-15/rust-std-1.87.0-riscv32imafc-unknown-none-elf.tar.gz=0f0025a57c59865a6622ff78bd62054484391f5be1802ad6bf8af32ef4e14119 +dist/2025-05-15/rust-std-1.87.0-riscv32imafc-unknown-none-elf.tar.xz=854f7f8b4f2fa003ef96f7ef6c9fc186f39d3b014035b37d2a84d901b3e2380d +dist/2025-05-15/rust-std-1.87.0-riscv32imc-unknown-none-elf.tar.gz=badd6aca1e8cb1c474d611c7c3c30825fd74a4926b4e38152a156aa5eaa97f05 +dist/2025-05-15/rust-std-1.87.0-riscv32imc-unknown-none-elf.tar.xz=d8acff8560e34d6b6cf7b0ea5731c7c8ae7ab40ae9c5dd766d22a998a57a20e0 +dist/2025-05-15/rust-std-1.87.0-riscv64gc-unknown-linux-gnu.tar.gz=ed54c611c8a80fb2850be077b1b3fec44ab12a65cef239a8b731a2f9630ad79c +dist/2025-05-15/rust-std-1.87.0-riscv64gc-unknown-linux-gnu.tar.xz=71f3a9dee3955255cd25ea4b15fe664284ac89591bc920667b9e47ff37f330fd +dist/2025-05-15/rust-std-1.87.0-riscv64gc-unknown-linux-musl.tar.gz=6323d41ba93206e3454956a72ebf8972d1675cc67c2da55e7dd03f64a66decd5 +dist/2025-05-15/rust-std-1.87.0-riscv64gc-unknown-linux-musl.tar.xz=dcb49948779ef87bb10067bf97c40010398f385de0915c8cb7b7b4ab117eee47 +dist/2025-05-15/rust-std-1.87.0-riscv64gc-unknown-none-elf.tar.gz=719fad95ea1af6ce56e3355efa6ada8974e5f5b975da318347f9e01f676bbcd5 +dist/2025-05-15/rust-std-1.87.0-riscv64gc-unknown-none-elf.tar.xz=a55a9c18e9b398641bd14e99462d0b003b8c25e1a4486fdb670c9f3098c41f8a +dist/2025-05-15/rust-std-1.87.0-riscv64imac-unknown-none-elf.tar.gz=6fee7c2bdb53b41198c326d1cebc10f40f4d9c95941ed83a7c7010761804e4b0 +dist/2025-05-15/rust-std-1.87.0-riscv64imac-unknown-none-elf.tar.xz=ad68c62b1d9b8026e0a78533f6aaed34c020df4cf430a7c9414a93d50937c50e +dist/2025-05-15/rust-std-1.87.0-s390x-unknown-linux-gnu.tar.gz=3160636ea30804678d7f66d47533e6f34632a3e09e66929608d7db23b99af7c5 +dist/2025-05-15/rust-std-1.87.0-s390x-unknown-linux-gnu.tar.xz=9fb2a2ceb9671ab74ccceb61c5763c591eb1be21584b944ad7e5458edab171c9 +dist/2025-05-15/rust-std-1.87.0-sparc64-unknown-linux-gnu.tar.gz=caea9e41c907c035984a0c80417e26c16f5d278b5cd87c96248ce2f6c4ff172b +dist/2025-05-15/rust-std-1.87.0-sparc64-unknown-linux-gnu.tar.xz=2a7f654b1c31cb60b4841bf0a041a2fcdec9baecf8bb0f9ae1d1743862073907 +dist/2025-05-15/rust-std-1.87.0-sparcv9-sun-solaris.tar.gz=34c33aa94d9a98ee077f9daffc47e0a2e27a4303d49321d230c677742fda8c97 +dist/2025-05-15/rust-std-1.87.0-sparcv9-sun-solaris.tar.xz=a09c5dd2e47d4221d6638658f40373955952c76fe9d0c88c573a188b80033f88 +dist/2025-05-15/rust-std-1.87.0-thumbv6m-none-eabi.tar.gz=0c4f978fe255b003087a588d0f4f4c5d9e94c1814cf70cf6b8693adfb4006707 +dist/2025-05-15/rust-std-1.87.0-thumbv6m-none-eabi.tar.xz=113260f44414861ba86c08f14d2516296e89504dec198540e84bb4664ef2af6a +dist/2025-05-15/rust-std-1.87.0-thumbv7em-none-eabi.tar.gz=36ffa65872667bea291315cde2941283942b1c3898b6d4a26094c27fe9163236 +dist/2025-05-15/rust-std-1.87.0-thumbv7em-none-eabi.tar.xz=9d890973f52462102a4f12b4c7916feb5b82a895728fec1928eae029f58174eb +dist/2025-05-15/rust-std-1.87.0-thumbv7em-none-eabihf.tar.gz=954c89bab6e382f63f699e5529503ca5f26f038e28458df9eb60119e81c25ddc +dist/2025-05-15/rust-std-1.87.0-thumbv7em-none-eabihf.tar.xz=f7c6963c9ac504770719bbd16bf3e48edff45ed72664c7c83859e8e012e35485 +dist/2025-05-15/rust-std-1.87.0-thumbv7m-none-eabi.tar.gz=d366a900b8039759915fc57d995f0bb66e2bc1e476c0daec1e975087f12ae43e +dist/2025-05-15/rust-std-1.87.0-thumbv7m-none-eabi.tar.xz=e1c81270071c35445dddd6941d0d96811c76ac3a107ebd23ba91dfb2ad48180f +dist/2025-05-15/rust-std-1.87.0-thumbv7neon-linux-androideabi.tar.gz=8a16943edac35d2c09951481d005cdf89b94b304dee8e378fd71c89021607185 +dist/2025-05-15/rust-std-1.87.0-thumbv7neon-linux-androideabi.tar.xz=da94b58270bf9035604669dbbd62ca5b060a9979ba72fcaf89f3b40caa5b2760 +dist/2025-05-15/rust-std-1.87.0-thumbv7neon-unknown-linux-gnueabihf.tar.gz=15c39e11dd231a9630aa63b1b103101bfb8bc8bec14fb92da7bdca1fa852c163 +dist/2025-05-15/rust-std-1.87.0-thumbv7neon-unknown-linux-gnueabihf.tar.xz=4a08efce713348407c9027e2d04ba45a4b8b3f5897b14acba7b7c723323e39ce +dist/2025-05-15/rust-std-1.87.0-thumbv8m.base-none-eabi.tar.gz=20960e1fb26cd196fe9173be5b78e9f530c0c21b59cca1d3a9790a420b5c3217 +dist/2025-05-15/rust-std-1.87.0-thumbv8m.base-none-eabi.tar.xz=4148db48c1fdd7bd5fcade1857842e6fd519651f5bc7a99e44ecc5150e9e4921 +dist/2025-05-15/rust-std-1.87.0-thumbv8m.main-none-eabi.tar.gz=0bc210f8b2ab923d3c71cffc4a39c759a1ca8eb7691a101661a2de1625c9d3f7 +dist/2025-05-15/rust-std-1.87.0-thumbv8m.main-none-eabi.tar.xz=ddf42d7e3be755893b1d48d467d5f1912f74b590be81965a161d159043b25cd5 +dist/2025-05-15/rust-std-1.87.0-thumbv8m.main-none-eabihf.tar.gz=d57f6d318424990a88e4d071d14ea150ae90442049e0750b98a4ff2119dc9392 +dist/2025-05-15/rust-std-1.87.0-thumbv8m.main-none-eabihf.tar.xz=2364bf03b9e46e197866df1d35ec6a0350f1ee52be23c9fe0c229d17ddb14644 +dist/2025-05-15/rust-std-1.87.0-wasm32-unknown-emscripten.tar.gz=7216e041f6d7427c1a42a7d1edf39a4761df71638353343efa008685761bd7e4 +dist/2025-05-15/rust-std-1.87.0-wasm32-unknown-emscripten.tar.xz=2b8c3105d4bce30114db540224d156061f09443fc88b9f81a87864502db068fb +dist/2025-05-15/rust-std-1.87.0-wasm32-unknown-unknown.tar.gz=8baa5b308c1072348bf71cf8eee0f8d270ddfcfff8eb674deb232a380d8e77dd +dist/2025-05-15/rust-std-1.87.0-wasm32-unknown-unknown.tar.xz=2df7a99ffd6a85c7c82f1355543108443d8cad39db821fd3fd827fbde79b7861 +dist/2025-05-15/rust-std-1.87.0-wasm32-wasip1.tar.gz=ff7eeca44ad18538f17c5382613f140fc2c718ff4b21ea06f06de48729ae7a4a +dist/2025-05-15/rust-std-1.87.0-wasm32-wasip1.tar.xz=a029ea4f2c696c543d22e4c19466a68c04c41195a6c45a90d9b3fb56e2047d9e +dist/2025-05-15/rust-std-1.87.0-wasm32-wasip1-threads.tar.gz=1410eadee1e8f56a9f6560ad746962eb7b09322cc27ac67a87e3e1e5b7acae0c +dist/2025-05-15/rust-std-1.87.0-wasm32-wasip1-threads.tar.xz=0963bb9cc500be1f0cd133e130da8b35afa772234722b82194718bd5986a40b4 +dist/2025-05-15/rust-std-1.87.0-wasm32-wasip2.tar.gz=720fb7751cb9baaf45bc5358d211482a40cff1d1aaa89cabea7b48557db08d35 +dist/2025-05-15/rust-std-1.87.0-wasm32-wasip2.tar.xz=ade5d8c4685e018f8559a3036e391db9aa1da55a7e87dd92da577c452924aa5a +dist/2025-05-15/rust-std-1.87.0-wasm32v1-none.tar.gz=ec3574ef328d78250b7b17862d8d08fea8b245dfb8a7ac0360c5b9a52d2cfc88 +dist/2025-05-15/rust-std-1.87.0-wasm32v1-none.tar.xz=4b5ff7004b1385a48d66db59c29074bcc3ed7bc7c8233dd1162f47faa27f3268 +dist/2025-05-15/rust-std-1.87.0-x86_64-apple-darwin.tar.gz=a5e1e1ebcad4cd1363d71686059017322ca967069099f1a345425ff44a0d5209 +dist/2025-05-15/rust-std-1.87.0-x86_64-apple-darwin.tar.xz=45ce5785c3595318e2d8738fb07fc8142d52c06e0f6d5d946167ae71bc6acb95 +dist/2025-05-15/rust-std-1.87.0-x86_64-apple-ios.tar.gz=fa55043d2f251f3c201577b67efc65454a46133d6454f0135393a82abcfb9f59 +dist/2025-05-15/rust-std-1.87.0-x86_64-apple-ios.tar.xz=8c0790b3c99c2ca4388b9025101baa903e9cc872f7c33b72c8a92e077f919a17 +dist/2025-05-15/rust-std-1.87.0-x86_64-apple-ios-macabi.tar.gz=5a29c9067e4ed3a3ffe217675eff0f6fd27efc79a9767598e4206adb15ed0993 +dist/2025-05-15/rust-std-1.87.0-x86_64-apple-ios-macabi.tar.xz=00fbe8cdda1f8c38542f75479bf7b7c52dff8ea6e44d5f4aea9ab7ceedbd895f +dist/2025-05-15/rust-std-1.87.0-x86_64-fortanix-unknown-sgx.tar.gz=88e6bf540c5d6494f0eaf0a77777e494b61b35f45b4bebea5e892b34ddb1219f +dist/2025-05-15/rust-std-1.87.0-x86_64-fortanix-unknown-sgx.tar.xz=4450ea63e35d72ee84d3e31508ed3a2cfa90b9a35d37de3ea3dbb142e1dcd81c +dist/2025-05-15/rust-std-1.87.0-x86_64-linux-android.tar.gz=6866d6708b1a2b426f37859e4b5bdd1fcbb86458f0aeb6364d1002d6b8bd4aae +dist/2025-05-15/rust-std-1.87.0-x86_64-linux-android.tar.xz=c289402c1809cb7432d33cbb37f9d214bade39482747cb3f8f5c367a5919c003 +dist/2025-05-15/rust-std-1.87.0-x86_64-pc-solaris.tar.gz=47013701834d134912a1e44bff7879bb6f93a313e13a2694454c9e9909b5063c +dist/2025-05-15/rust-std-1.87.0-x86_64-pc-solaris.tar.xz=32fc71dc91b89941583ce98a9f5a070d112f43356f55fb8464535a6c4f93d969 +dist/2025-05-15/rust-std-1.87.0-x86_64-pc-windows-gnu.tar.gz=fc5b65a21d7e5c066a1714cb62d28477c902ecca0487f5007f13e6031a823129 +dist/2025-05-15/rust-std-1.87.0-x86_64-pc-windows-gnu.tar.xz=91d2e98d86457477783838032e8c1cdeca74f904e8daf06bd387e78d4d9080fe +dist/2025-05-15/rust-std-1.87.0-x86_64-pc-windows-gnullvm.tar.gz=8de0fa59522467f5191da3480c2a3bab94e2811f438522a53098aa640f9b6dd6 +dist/2025-05-15/rust-std-1.87.0-x86_64-pc-windows-gnullvm.tar.xz=81233efa865792d296f9a7fbf8d479cdcc105cf854113e501022c8c490f7e529 +dist/2025-05-15/rust-std-1.87.0-x86_64-pc-windows-msvc.tar.gz=fc2a7f961ce5f49095bcddb8c31a79454ac611b9e6fc190d660a9ca8a6ad9ff2 +dist/2025-05-15/rust-std-1.87.0-x86_64-pc-windows-msvc.tar.xz=e8da02256dc7b59f850ba1499f3b4262eb609e9c921a14b45005b92b914aaf48 +dist/2025-05-15/rust-std-1.87.0-x86_64-unknown-freebsd.tar.gz=a87508322169653bd082652cef03a015f98840ab245135b6f072b53c14cd8d6e +dist/2025-05-15/rust-std-1.87.0-x86_64-unknown-freebsd.tar.xz=8b3785b42aecbb628428d617f6573463752c0927dd4ed0b626788666f44ec74d +dist/2025-05-15/rust-std-1.87.0-x86_64-unknown-fuchsia.tar.gz=ed24742f09bad3fb5c7117834d46ff5c50c3e686c91f8bfce334089ecfe7a4c0 +dist/2025-05-15/rust-std-1.87.0-x86_64-unknown-fuchsia.tar.xz=294a9b3e8eb3cc5da755c274d918ff2eca4e12380c9c3192cc3081d33d73f888 +dist/2025-05-15/rust-std-1.87.0-x86_64-unknown-illumos.tar.gz=bf175e2d0d4b20b1cdbb08facf094c1151f01e9512d26c6f0bcadf187cd79892 +dist/2025-05-15/rust-std-1.87.0-x86_64-unknown-illumos.tar.xz=7ab14be4e505eed71ba3e35077ec944471d8a4ac72437262509f1e4da53f7613 +dist/2025-05-15/rust-std-1.87.0-x86_64-unknown-linux-gnu.tar.gz=68e2cb00d28b42caea0d07be6fe603ef28389dfb02f19013f2c57e5783831328 +dist/2025-05-15/rust-std-1.87.0-x86_64-unknown-linux-gnu.tar.xz=1b57253bd32b8b292c965b3a2d992a266763158494cab8555584c09360b90f77 +dist/2025-05-15/rust-std-1.87.0-x86_64-unknown-linux-gnux32.tar.gz=9110866b0e12b8eda555b4f687c9ecd0469e148ac92ec352cf24ac1ed0462133 +dist/2025-05-15/rust-std-1.87.0-x86_64-unknown-linux-gnux32.tar.xz=9f6da619b6b17bf63498f869f86d6bda7b1aff57f3026fc702a04975b333dcaf +dist/2025-05-15/rust-std-1.87.0-x86_64-unknown-linux-musl.tar.gz=ec462ba2117e4711f34bba402b564f5b866fddc4dfcf73290196702fd04c5f2d +dist/2025-05-15/rust-std-1.87.0-x86_64-unknown-linux-musl.tar.xz=074f802189975d7c1bf14cf5269c5f0d77b15eee9b319a2e78db7f5397ca4952 +dist/2025-05-15/rust-std-1.87.0-x86_64-unknown-linux-ohos.tar.gz=bfc38371e9e88d7024b56b774e5e5812ae4cb93611b72bb5863ce9dd5c51a317 +dist/2025-05-15/rust-std-1.87.0-x86_64-unknown-linux-ohos.tar.xz=84795a6899e551d2012adb5d6e0330cacc83c036eb6e4fa36a596aeab444896b +dist/2025-05-15/rust-std-1.87.0-x86_64-unknown-netbsd.tar.gz=5801bf21539e776c1f21a3027357b741b77227bf10985383db53fa15d683d0ed +dist/2025-05-15/rust-std-1.87.0-x86_64-unknown-netbsd.tar.xz=ade048036fcb0f5f704fb0b439aec0a000e9d6927abefb74fd616723a0562de4 +dist/2025-05-15/rust-std-1.87.0-x86_64-unknown-none.tar.gz=81133de2ec254eec1b6ea8972779fe8372639bdced80faf36e555b78a66749ab +dist/2025-05-15/rust-std-1.87.0-x86_64-unknown-none.tar.xz=c916e21cf2c59d6bff89bcec3069967fbe5d192bf31aa948e2b803d1ba73e896 +dist/2025-05-15/rust-std-1.87.0-x86_64-unknown-redox.tar.gz=41bff11b5a54e86eccebbe664da6d63f4aeeb411c5319081f356f683fd67afb6 +dist/2025-05-15/rust-std-1.87.0-x86_64-unknown-redox.tar.xz=2cda98c61761816a497e8d7d476e708c10d49aa4d7a5c859715482fe07785ed6 +dist/2025-05-15/rust-std-1.87.0-x86_64-unknown-uefi.tar.gz=464e0bf44f1b7c7b60970f4d7f595c5e54440724b961c0231d539fca906048c8 +dist/2025-05-15/rust-std-1.87.0-x86_64-unknown-uefi.tar.xz=ea89a3512bd6898ee1e232314b267468fabbbfcbd237a9a066495a77682c176c +dist/2025-05-15/cargo-1.87.0-aarch64-apple-darwin.tar.gz=285d1bf6dd1a5572103e21dfc6e677b297609a20aaf01e00c11a3e571e1a585b +dist/2025-05-15/cargo-1.87.0-aarch64-apple-darwin.tar.xz=f8d6f554e5ed081de5c3fd23cf2f30f4012013e95fb7a5458a50d8215651fb88 +dist/2025-05-15/cargo-1.87.0-aarch64-pc-windows-msvc.tar.gz=6b79d018707e7663999d8647d38073cfd2b931db565b2ef1f17ff3fda2ad9dea +dist/2025-05-15/cargo-1.87.0-aarch64-pc-windows-msvc.tar.xz=34abcccecf8ad7799bcf0665396be5f572bba77eac784e1108219e2ce38fddb2 +dist/2025-05-15/cargo-1.87.0-aarch64-unknown-linux-gnu.tar.gz=27835250d38f78d14308ad1d68786e437392ce21304d8cdf9dbed800a1dca29a +dist/2025-05-15/cargo-1.87.0-aarch64-unknown-linux-gnu.tar.xz=51e237e7f383840a404a5be721491a8ca4671bf9c14e62566ecadccfcc6e4291 +dist/2025-05-15/cargo-1.87.0-aarch64-unknown-linux-musl.tar.gz=8fd11ea53ef6659846b76a938e4de6b165f798030457c913a8507bcb89cac14a +dist/2025-05-15/cargo-1.87.0-aarch64-unknown-linux-musl.tar.xz=4fe6af67bca67abc26232bf8050f7cb37f0d988a92c54cddbf4c15b2f4af055a +dist/2025-05-15/cargo-1.87.0-arm-unknown-linux-gnueabi.tar.gz=ed4490c619ea522e5558792f12c8828a6e719b314c282e936463c53119d4b0a7 +dist/2025-05-15/cargo-1.87.0-arm-unknown-linux-gnueabi.tar.xz=f9e4ee6749c0315c7a6ad1fbe5834c63bc4f08991a4af8b1755fd8de5bf008aa +dist/2025-05-15/cargo-1.87.0-arm-unknown-linux-gnueabihf.tar.gz=3eeabb8945b02f15ace5fad38383bb4c3b112e31f570fa94af1767f41d9eef68 +dist/2025-05-15/cargo-1.87.0-arm-unknown-linux-gnueabihf.tar.xz=661376af716de8d6abf943891bc0d8ff6b1733d97ee7da9be92820b8e11d20d1 +dist/2025-05-15/cargo-1.87.0-armv7-unknown-linux-gnueabihf.tar.gz=91767f6fb65c9b114b9a2fab49bb638a43c6db2b88d6d362c841cff64f319278 +dist/2025-05-15/cargo-1.87.0-armv7-unknown-linux-gnueabihf.tar.xz=1351c67995c4673e7bc115cb9c21baeaf6d7f9c46146dcd20313d9cdd127e710 +dist/2025-05-15/cargo-1.87.0-i686-pc-windows-gnu.tar.gz=5f23062b3cd4f3de6c62a021dd1b7b3353209dd480b972c4b112d0ac61706401 +dist/2025-05-15/cargo-1.87.0-i686-pc-windows-gnu.tar.xz=840baaa8d99087b4fbb67c57cf0687f53b51f387b0c44ea206d5c6262114c9ed +dist/2025-05-15/cargo-1.87.0-i686-pc-windows-msvc.tar.gz=b8b7e79dfe85c0468abba27439f542f256db8ff74b4f927ab1570dfd88cd8f4a +dist/2025-05-15/cargo-1.87.0-i686-pc-windows-msvc.tar.xz=8958b0c973037eed80db5bbbdf465afa9cb49970d7e0246f726ca624f566dcb9 +dist/2025-05-15/cargo-1.87.0-i686-unknown-linux-gnu.tar.gz=d217aecca37871c6a1de826acde48bf73445e2e9a9c4587596a93d6a4c957bd8 +dist/2025-05-15/cargo-1.87.0-i686-unknown-linux-gnu.tar.xz=50daf02ba229b7f58a80843a69a537ede1b7189bd8ae7bfc308b8083694eba0f +dist/2025-05-15/cargo-1.87.0-loongarch64-unknown-linux-gnu.tar.gz=1897c0233ccf81c51d540db634d7e5d1b854fa7f690b48f6978abdf2f1f475d9 +dist/2025-05-15/cargo-1.87.0-loongarch64-unknown-linux-gnu.tar.xz=ae613f51e848f09e2e2b079b0036f07beee965a3a15f80b39ec1f791c72c6a8f +dist/2025-05-15/cargo-1.87.0-loongarch64-unknown-linux-musl.tar.gz=a6529da6d12040fd43c89e028d56cd646a583638726a24211ca95e763bb021b2 +dist/2025-05-15/cargo-1.87.0-loongarch64-unknown-linux-musl.tar.xz=1c95adb0e2917f546c0cf29ffd19e1762857a90cf3fcb0e868cc467a26604713 +dist/2025-05-15/cargo-1.87.0-powerpc-unknown-linux-gnu.tar.gz=d5e5f44ee48e6051c5de19dcb0fb929be440f9e913d7e7217166b6980e50784f +dist/2025-05-15/cargo-1.87.0-powerpc-unknown-linux-gnu.tar.xz=b6ffefdf0c1bc00880aae0a2a4fc038e1412b7df364c8f601b63ca3589ef9e76 +dist/2025-05-15/cargo-1.87.0-powerpc64-unknown-linux-gnu.tar.gz=0c08467f2a9cdff615bf0e60a0fb3db10a42f4a02b852430f30a686c31cc074e +dist/2025-05-15/cargo-1.87.0-powerpc64-unknown-linux-gnu.tar.xz=c3992ae2b799941acd29561978115315ccc31fae851d23c7ac93c716b7b10ad7 +dist/2025-05-15/cargo-1.87.0-powerpc64le-unknown-linux-gnu.tar.gz=f5f4c4af6d899971b21e1e6231f3e309ea8a7327ad5e4b12a40a3f7ccb2f0c8d +dist/2025-05-15/cargo-1.87.0-powerpc64le-unknown-linux-gnu.tar.xz=2b9ef59c3c1818d6712ea4ec8af53720a0c2017ace80a15c287f05768ac04e0a +dist/2025-05-15/cargo-1.87.0-powerpc64le-unknown-linux-musl.tar.gz=10cb759f842d839f242558b319ac3d0cae6aaed5e45dd6c6f4fe9b1fea0679c2 +dist/2025-05-15/cargo-1.87.0-powerpc64le-unknown-linux-musl.tar.xz=d96e9d0c4787c4933305b4e697c5e57c3fe98bcda03561026648c31d47fa7554 +dist/2025-05-15/cargo-1.87.0-riscv64gc-unknown-linux-gnu.tar.gz=08b1397388def6022f789a9da91e9275cb7f79aa3901fcd60744538962e635b3 +dist/2025-05-15/cargo-1.87.0-riscv64gc-unknown-linux-gnu.tar.xz=ced9e08041d4d24611593366537f3f14db63cede6a4d65c1297853b72c7b72d9 +dist/2025-05-15/cargo-1.87.0-s390x-unknown-linux-gnu.tar.gz=64c2a9bcc3638c6c65a3a123b9e37b89c2aec7ac8078f73bfa9b20fd38144f37 +dist/2025-05-15/cargo-1.87.0-s390x-unknown-linux-gnu.tar.xz=73402a5585c32bdc80ace0070cec695768395fcc85efa0843ca42a453034a953 +dist/2025-05-15/cargo-1.87.0-x86_64-apple-darwin.tar.gz=1d34287cfda8b1d1383f710b4d9fab88720dd3380347bb39093733a19425b4cf +dist/2025-05-15/cargo-1.87.0-x86_64-apple-darwin.tar.xz=f64c61e5910bd23238cb2bc48174b94b17c281933e1b38159a8f62caf15d4334 +dist/2025-05-15/cargo-1.87.0-x86_64-pc-windows-gnu.tar.gz=767ab830dfa538ae92de1130abd67969d33b2f581500fa58926cda462252db1d +dist/2025-05-15/cargo-1.87.0-x86_64-pc-windows-gnu.tar.xz=a21d1a25f1ce722cb8333d4cd2e04f6d6f9dcdbd54f7cf224ff14385dcccaa94 +dist/2025-05-15/cargo-1.87.0-x86_64-pc-windows-msvc.tar.gz=2f034fd41bc99a6998dcfaee6df36987acc09be9fc9266499cca08b9a0748a25 +dist/2025-05-15/cargo-1.87.0-x86_64-pc-windows-msvc.tar.xz=e6bca45ae3131d63d5c9e6bcb84c19249848e6b1b49f0c65784e8f0b5765a37d +dist/2025-05-15/cargo-1.87.0-x86_64-unknown-freebsd.tar.gz=811d3e5aac27204cb09e21712a9a1da3b34b0bd78f69782a9535af9b4272d2b2 +dist/2025-05-15/cargo-1.87.0-x86_64-unknown-freebsd.tar.xz=225bfd237fe95c6a31cb82d3beab98a4a60df6700f48f2239e78d15b9fefe630 +dist/2025-05-15/cargo-1.87.0-x86_64-unknown-illumos.tar.gz=40a8f55224c934f0ccd7f9725046b9a98c64e11c10f9dbe87700320c01a54b8d +dist/2025-05-15/cargo-1.87.0-x86_64-unknown-illumos.tar.xz=6b97c69f621e443c79abf0671ae87b8088a522c63a85f9308986023e065b3b46 +dist/2025-05-15/cargo-1.87.0-x86_64-unknown-linux-gnu.tar.gz=76902b7b786ab483de87e8191b9b329de100360175cd8e0a6e29443189e06368 +dist/2025-05-15/cargo-1.87.0-x86_64-unknown-linux-gnu.tar.xz=469d5dc479835adadd728bc3587f8abf1941b3dd71f9865abd3e0783ae662555 +dist/2025-05-15/cargo-1.87.0-x86_64-unknown-linux-musl.tar.gz=bfbea3cc110ab12eab59ceadf06e344621fb46baaf9019fc328d8e5412411134 +dist/2025-05-15/cargo-1.87.0-x86_64-unknown-linux-musl.tar.xz=a253b80d9eefa12986e99fead11e09763256dd9abe68ffcff6e9baadc3434862 +dist/2025-05-15/cargo-1.87.0-x86_64-unknown-netbsd.tar.gz=6d8b4bfaa2caec8e0c29a01f7f73130ad2580908478ca36421f3f51aa7b1c64d +dist/2025-05-15/cargo-1.87.0-x86_64-unknown-netbsd.tar.xz=ca47b1633f0c8cce56ee54170fedf1864b59204ac8de91eee7f00eec32580ee9 +dist/2025-05-15/clippy-1.87.0-aarch64-apple-darwin.tar.gz=8adf76188b2dfd9c69ea4a60640fd79ab47a9121e4e125da58b52b70f7b40872 +dist/2025-05-15/clippy-1.87.0-aarch64-apple-darwin.tar.xz=eeadac2cc415890d952510bd32110da8ea14a710e997ae696212294b4401740f +dist/2025-05-15/clippy-1.87.0-aarch64-pc-windows-msvc.tar.gz=41e8988ef3eb11a64ddebe8a74e3998b8832785122445573acfad64a91769f5f +dist/2025-05-15/clippy-1.87.0-aarch64-pc-windows-msvc.tar.xz=5a9a8f4646e87cae8c8e238449db5e9effd15dfe5c0edfc3b9ed5c3e63557dbc +dist/2025-05-15/clippy-1.87.0-aarch64-unknown-linux-gnu.tar.gz=87d7fab0ed1c8277bc11c1d72f7df73d4cd2cd7938f739543d23bf2b6252dd10 +dist/2025-05-15/clippy-1.87.0-aarch64-unknown-linux-gnu.tar.xz=38b5bb919b5e256cc8bed5b69eecca577677ccb404fdd7bc3a9f2f79bede1a50 +dist/2025-05-15/clippy-1.87.0-aarch64-unknown-linux-musl.tar.gz=365ce7c0f6de95b21ac1fae9d33306dabb59364f123bbda92a59386adf68ff66 +dist/2025-05-15/clippy-1.87.0-aarch64-unknown-linux-musl.tar.xz=8e4022d7c74ef5283393579eda6d90bca6d0074c180812c4bcc7c7b8e16da6a3 +dist/2025-05-15/clippy-1.87.0-arm-unknown-linux-gnueabi.tar.gz=ba4b672d3a0c03c9ef0c5254a8b9c45884ab7f81b95b4c96218294f22cd708e2 +dist/2025-05-15/clippy-1.87.0-arm-unknown-linux-gnueabi.tar.xz=1436afd650229df79f4020abc24702b81e284cc6e7683a59b127cd3a3f57f381 +dist/2025-05-15/clippy-1.87.0-arm-unknown-linux-gnueabihf.tar.gz=dfdedd5c683d6e62d1b0d59cc65bbd4975b197f3c297903469b50cb043862434 +dist/2025-05-15/clippy-1.87.0-arm-unknown-linux-gnueabihf.tar.xz=2d68c539c8a93b3bc2625bbaab07b4d800a9c3483239f7ecfe8644e8cf356212 +dist/2025-05-15/clippy-1.87.0-armv7-unknown-linux-gnueabihf.tar.gz=51ae66aea109d7a3f66d31e804aa19b0b78037a6cf157ba842c0a251e106c44c +dist/2025-05-15/clippy-1.87.0-armv7-unknown-linux-gnueabihf.tar.xz=3d41c6a868ddcb9797885a1286d70eecc88a78082eb7cc0d8032b32fc0862ae7 +dist/2025-05-15/clippy-1.87.0-i686-pc-windows-gnu.tar.gz=ded0319944d809b5300b04feba5f3a03baa4e5565c71cdb4bb08b5eeee626d30 +dist/2025-05-15/clippy-1.87.0-i686-pc-windows-gnu.tar.xz=453971a4c5843da833408927ef9566203e047f2a88b5ba927ec7bdb5e844dfb5 +dist/2025-05-15/clippy-1.87.0-i686-pc-windows-msvc.tar.gz=ff93302df7cfe262a8ee58090199de863e9506a490e7a7768e5a5364ff3f0bb0 +dist/2025-05-15/clippy-1.87.0-i686-pc-windows-msvc.tar.xz=42a96ff4830bc476cc225e11b044e1e238b6cda424567ce970eee877e53981b6 +dist/2025-05-15/clippy-1.87.0-i686-unknown-linux-gnu.tar.gz=683129a00fedb0f0a62c5ee1179e1f5da4a2a1f2d8c4729f8be6f55897e9d120 +dist/2025-05-15/clippy-1.87.0-i686-unknown-linux-gnu.tar.xz=fbaf630b50109512573152d66797760933a1aa44e4ab2056c39e2e5ef457ffd9 +dist/2025-05-15/clippy-1.87.0-loongarch64-unknown-linux-gnu.tar.gz=30d852a6e292cc60cbb1b7d2e882c23e532d14b69a9d12f4ecdbde5a0ec0a967 +dist/2025-05-15/clippy-1.87.0-loongarch64-unknown-linux-gnu.tar.xz=7825d8bc9ab68f2015a1b432b26aad9f208b6293369a67887d2a2f8b5cabfb01 +dist/2025-05-15/clippy-1.87.0-loongarch64-unknown-linux-musl.tar.gz=a62da11b00877422d5d5977abfe9975d7843a9f8c59baab7d8f9ce06b10af32d +dist/2025-05-15/clippy-1.87.0-loongarch64-unknown-linux-musl.tar.xz=46d1ee0098d11fd7e6f874c91ee69eedbc6c853208d1fe0bf25d6af3a4c20d54 +dist/2025-05-15/clippy-1.87.0-powerpc-unknown-linux-gnu.tar.gz=7c26526f026541151ba9a81288c79297710eaf2f34cc41d391e0efff4fefb40d +dist/2025-05-15/clippy-1.87.0-powerpc-unknown-linux-gnu.tar.xz=53307af7138bf26b8cd5da2057c2642830969b4482560c9fb1c229d984d8abdb +dist/2025-05-15/clippy-1.87.0-powerpc64-unknown-linux-gnu.tar.gz=40519fcc34fc8ef9d7996b31dd13b1ed6d05ee1fd4ca2fac646254605fffc679 +dist/2025-05-15/clippy-1.87.0-powerpc64-unknown-linux-gnu.tar.xz=7f968106335bb20b944ad0ff988ebe918b62a923d8f5fcfe8a998583ea22cebd +dist/2025-05-15/clippy-1.87.0-powerpc64le-unknown-linux-gnu.tar.gz=7cb1584effaa82248cf2ec442ff72693ed0dccb5e3bf90f7a132f9dcd3b09df2 +dist/2025-05-15/clippy-1.87.0-powerpc64le-unknown-linux-gnu.tar.xz=1dd6d1622f4e8fe33af90f4fca7851757fe2856248c36d79fdef38abc81f98b2 +dist/2025-05-15/clippy-1.87.0-powerpc64le-unknown-linux-musl.tar.gz=933bb377da123948f3c01a71e2d75b385a5966feefcc2276b6e3ceb6d8006648 +dist/2025-05-15/clippy-1.87.0-powerpc64le-unknown-linux-musl.tar.xz=4b3d69d695838c602c3b54e6bc025975591359c2790c2fd6e2def7549112fd00 +dist/2025-05-15/clippy-1.87.0-riscv64gc-unknown-linux-gnu.tar.gz=cb5ffed4609d3b355b9bf8251809d07661043ad394e00cf7156eb688bb924836 +dist/2025-05-15/clippy-1.87.0-riscv64gc-unknown-linux-gnu.tar.xz=8d3665a04ecf3191196998f7aeb94cd6cdafba9200345387d854101629f94fe6 +dist/2025-05-15/clippy-1.87.0-s390x-unknown-linux-gnu.tar.gz=06094a4b3ef6d5aeaa3cc45ac00aaa85ad0f0e6816a67ddf0ff1121a67ec0df2 +dist/2025-05-15/clippy-1.87.0-s390x-unknown-linux-gnu.tar.xz=bab8cff53f93466c77d2f17b007132c77cf782314bfc6c3d897dc0fc1e4e6375 +dist/2025-05-15/clippy-1.87.0-x86_64-apple-darwin.tar.gz=7b775cbe7185097f6671da95b84b8c277e6a015e76c40a4a543693592198111c +dist/2025-05-15/clippy-1.87.0-x86_64-apple-darwin.tar.xz=dd4a567dc6af5e5f038f448264d36b80d24ad69dd1570da9e1071fd61a45799a +dist/2025-05-15/clippy-1.87.0-x86_64-pc-windows-gnu.tar.gz=c3fab78ecbd49f78f21f1b6f3dc44394315820edf53bf42714e643c3da661574 +dist/2025-05-15/clippy-1.87.0-x86_64-pc-windows-gnu.tar.xz=9aecce35724017e273d5849fecc2b17b96991fa4744e691c0637da92383b2ab6 +dist/2025-05-15/clippy-1.87.0-x86_64-pc-windows-msvc.tar.gz=35251bd75ce28465b4b89ae8c8396260e88b31f8f5ed45d1c1ede8216d89ab55 +dist/2025-05-15/clippy-1.87.0-x86_64-pc-windows-msvc.tar.xz=1f0e1fa2df33ae9c8501cf0cf281a8e8b263abfd792caf91db6497b7029fb84a +dist/2025-05-15/clippy-1.87.0-x86_64-unknown-freebsd.tar.gz=5114ac286744f7bc7fa14af923ea18fe7e46e5fb175f55d1f227f76a101d1bde +dist/2025-05-15/clippy-1.87.0-x86_64-unknown-freebsd.tar.xz=eaba18e60c668a27e949d95a24e760b40026db5a742b3699da32af6a5a634b03 +dist/2025-05-15/clippy-1.87.0-x86_64-unknown-illumos.tar.gz=995b5d2ee481964d65ad43da5c2592237f59dae3e45654446fb7f8f39186c161 +dist/2025-05-15/clippy-1.87.0-x86_64-unknown-illumos.tar.xz=736b7b55809b14e0f31d00f96f3e93c85078e47dbc72f1bd9de1252682b4b13d +dist/2025-05-15/clippy-1.87.0-x86_64-unknown-linux-gnu.tar.gz=549ba46ede510a5215fc4d32a1fffd8aec6b9822c4e0d94e096cf8ea696db710 +dist/2025-05-15/clippy-1.87.0-x86_64-unknown-linux-gnu.tar.xz=9d440eef6811112a000acf96a062df7bcbc013fa4f8e00a7f9a4f57ef90637a1 +dist/2025-05-15/clippy-1.87.0-x86_64-unknown-linux-musl.tar.gz=e91499f79176b80f7ac25296fb00a5c9083ab1f7ef71d4b04370719322c1e470 +dist/2025-05-15/clippy-1.87.0-x86_64-unknown-linux-musl.tar.xz=d803392919e7cf34a2f5e7aaada3a1fedc4f5bb11813c95be388968023371e96 +dist/2025-05-15/clippy-1.87.0-x86_64-unknown-netbsd.tar.gz=7caa3b376d6b7bfb644858f7d61c4096bd0d4eb860d5bcece8f56e5778c67529 +dist/2025-05-15/clippy-1.87.0-x86_64-unknown-netbsd.tar.xz=207399d067434b3d18f014ce428a26ca60a77208371a2221f4cef427ca4a9dbf From e6d35812147b349de8bd32e40323a355de059f65 Mon Sep 17 00:00:00 2001 From: est31 Date: Fri, 9 May 2025 17:11:29 +0200 Subject: [PATCH 06/21] Update the edition guide for let chains (cherry picked from commit 577e82f71b07b11c6a6f74ac788c65cbd2674a2a) --- src/doc/edition-guide | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/doc/edition-guide b/src/doc/edition-guide index 467f45637b73e..1b1bb49babd65 160000 --- a/src/doc/edition-guide +++ b/src/doc/edition-guide @@ -1 +1 @@ -Subproject commit 467f45637b73ec6aa70fb36bc3054bb50b8967ea +Subproject commit 1b1bb49babd65c732468cfa515b0c009bd1d26bc From e39669866a746fc891f4285692e53ddb8d5c5d8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Ber=C3=A1nek?= Date: Sat, 10 May 2025 21:39:08 +0200 Subject: [PATCH 07/21] Fix download of GCC from CI on non-nightly channels (cherry picked from commit 448b7afb32e4fd55af8c0592227b16fcc5b64308) --- src/bootstrap/src/core/download.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/bootstrap/src/core/download.rs b/src/bootstrap/src/core/download.rs index b95d07356c1b9..da305fb18fa9e 100644 --- a/src/bootstrap/src/core/download.rs +++ b/src/bootstrap/src/core/download.rs @@ -852,7 +852,8 @@ download-rustc = false t!(fs::create_dir_all(&gcc_cache)); } let base = &self.stage0_metadata.config.artifacts_server; - let filename = format!("gcc-nightly-{}.tar.xz", self.build.triple); + let version = self.artifact_version_part(gcc_sha); + let filename = format!("gcc-{version}-{}.tar.xz", self.build.triple); let tarball = gcc_cache.join(&filename); if !tarball.exists() { let help_on_error = "ERROR: failed to download gcc from ci From fcdcea758ec03be56586d1e631f8b574a4626f6c Mon Sep 17 00:00:00 2001 From: Jieyou Xu Date: Thu, 15 May 2025 16:51:32 +0800 Subject: [PATCH 08/21] Revert "Fix linking statics on Arm64EC #140176" Unfortunately, multiple people are reporting linker warnings related to `__rust_no_alloc_shim_is_unstable` after this change. The solution isn't quite clear yet, let's revert to green for now, and try a reland with a determined solution for `__rust_no_alloc_shim_is_unstable`. This reverts commit c8b7f32434c0306db5c1b974ee43443746098a92, reversing changes made to 667247db71ea18c4130dd018d060e7f09d589490. (cherry picked from commit 734a5b1aa7888db3d86faffea1a15254022d68c9) --- compiler/rustc_codegen_llvm/src/consts.rs | 7 +- compiler/rustc_codegen_ssa/src/back/linker.rs | 120 +++++------------- .../src/back/symbol_export.rs | 11 +- compiler/rustc_codegen_ssa/src/base.rs | 47 +++---- compiler/rustc_codegen_ssa/src/lib.rs | 2 +- .../src/middle/exported_symbols.rs | 2 +- compiler/rustc_target/src/spec/base/msvc.rs | 14 +- .../arm64ec-import-export-static/export.rs | 23 ---- .../arm64ec-import-export-static/import.rs | 12 -- .../arm64ec-import-export-static/rmake.rs | 15 --- .../run-make/sanitizer-dylib-link/program.rs | 2 +- 11 files changed, 54 insertions(+), 201 deletions(-) delete mode 100644 tests/run-make/arm64ec-import-export-static/export.rs delete mode 100644 tests/run-make/arm64ec-import-export-static/import.rs delete mode 100644 tests/run-make/arm64ec-import-export-static/rmake.rs diff --git a/compiler/rustc_codegen_llvm/src/consts.rs b/compiler/rustc_codegen_llvm/src/consts.rs index cbac55c715310..bf81eb648f8ae 100644 --- a/compiler/rustc_codegen_llvm/src/consts.rs +++ b/compiler/rustc_codegen_llvm/src/consts.rs @@ -364,12 +364,7 @@ impl<'ll> CodegenCx<'ll, '_> { if !def_id.is_local() { let needs_dll_storage_attr = self.use_dll_storage_attrs - // If the symbol is a foreign item, then don't automatically apply DLLImport, as - // we'll rely on the #[link] attribute instead. BUT, if this is an internal symbol - // then it may be generated by the compiler in some crate, so we do need to apply - // DLLImport when linking with the MSVC linker. - && (!self.tcx.is_foreign_item(def_id) - || (self.sess().target.is_like_msvc && fn_attrs.flags.contains(CodegenFnAttrFlags::RUSTC_STD_INTERNAL_SYMBOL))) + && !self.tcx.is_foreign_item(def_id) // Local definitions can never be imported, so we must not apply // the DLLImport annotation. && !dso_local diff --git a/compiler/rustc_codegen_ssa/src/back/linker.rs b/compiler/rustc_codegen_ssa/src/back/linker.rs index 80ee8ea22288a..8fc83908efbcc 100644 --- a/compiler/rustc_codegen_ssa/src/back/linker.rs +++ b/compiler/rustc_codegen_ssa/src/back/linker.rs @@ -337,12 +337,7 @@ pub(crate) trait Linker { fn debuginfo(&mut self, strip: Strip, natvis_debugger_visualizers: &[PathBuf]); fn no_crt_objects(&mut self); fn no_default_libraries(&mut self); - fn export_symbols( - &mut self, - tmpdir: &Path, - crate_type: CrateType, - symbols: &[(String, SymbolExportKind)], - ); + fn export_symbols(&mut self, tmpdir: &Path, crate_type: CrateType, symbols: &[String]); fn subsystem(&mut self, subsystem: &str); fn linker_plugin_lto(&mut self); fn add_eh_frame_header(&mut self) {} @@ -775,12 +770,7 @@ impl<'a> Linker for GccLinker<'a> { } } - fn export_symbols( - &mut self, - tmpdir: &Path, - crate_type: CrateType, - symbols: &[(String, SymbolExportKind)], - ) { + fn export_symbols(&mut self, tmpdir: &Path, crate_type: CrateType, symbols: &[String]) { // Symbol visibility in object files typically takes care of this. if crate_type == CrateType::Executable { let should_export_executable_symbols = @@ -809,7 +799,7 @@ impl<'a> Linker for GccLinker<'a> { // Write a plain, newline-separated list of symbols let res: io::Result<()> = try { let mut f = File::create_buffered(&path)?; - for (sym, _) in symbols { + for sym in symbols { debug!(" _{sym}"); writeln!(f, "_{sym}")?; } @@ -824,12 +814,11 @@ impl<'a> Linker for GccLinker<'a> { // .def file similar to MSVC one but without LIBRARY section // because LD doesn't like when it's empty writeln!(f, "EXPORTS")?; - for (symbol, kind) in symbols { - let kind_marker = if *kind == SymbolExportKind::Data { " DATA" } else { "" }; + for symbol in symbols { debug!(" _{symbol}"); // Quote the name in case it's reserved by linker in some way // (this accounts for names with dots in particular). - writeln!(f, " \"{symbol}\"{kind_marker}")?; + writeln!(f, " \"{symbol}\"")?; } }; if let Err(error) = res { @@ -842,7 +831,7 @@ impl<'a> Linker for GccLinker<'a> { writeln!(f, "{{")?; if !symbols.is_empty() { writeln!(f, " global:")?; - for (sym, _) in symbols { + for sym in symbols { debug!(" {sym};"); writeln!(f, " {sym};")?; } @@ -1109,12 +1098,7 @@ impl<'a> Linker for MsvcLinker<'a> { // crates. Upstream rlibs may be linked statically to this dynamic library, // in which case they may continue to transitively be used and hence need // their symbols exported. - fn export_symbols( - &mut self, - tmpdir: &Path, - crate_type: CrateType, - symbols: &[(String, SymbolExportKind)], - ) { + fn export_symbols(&mut self, tmpdir: &Path, crate_type: CrateType, symbols: &[String]) { // Symbol visibility takes care of this typically if crate_type == CrateType::Executable { let should_export_executable_symbols = @@ -1132,10 +1116,9 @@ impl<'a> Linker for MsvcLinker<'a> { // straight to exports. writeln!(f, "LIBRARY")?; writeln!(f, "EXPORTS")?; - for (symbol, kind) in symbols { - let kind_marker = if *kind == SymbolExportKind::Data { " DATA" } else { "" }; + for symbol in symbols { debug!(" _{symbol}"); - writeln!(f, " {symbol}{kind_marker}")?; + writeln!(f, " {symbol}")?; } }; if let Err(error) = res { @@ -1276,19 +1259,14 @@ impl<'a> Linker for EmLinker<'a> { self.cc_arg("-nodefaultlibs"); } - fn export_symbols( - &mut self, - _tmpdir: &Path, - _crate_type: CrateType, - symbols: &[(String, SymbolExportKind)], - ) { + fn export_symbols(&mut self, _tmpdir: &Path, _crate_type: CrateType, symbols: &[String]) { debug!("EXPORTED SYMBOLS:"); self.cc_arg("-s"); let mut arg = OsString::from("EXPORTED_FUNCTIONS="); let encoded = serde_json::to_string( - &symbols.iter().map(|(sym, _)| "_".to_owned() + sym).collect::>(), + &symbols.iter().map(|sym| "_".to_owned() + sym).collect::>(), ) .unwrap(); debug!("{encoded}"); @@ -1450,13 +1428,8 @@ impl<'a> Linker for WasmLd<'a> { fn no_default_libraries(&mut self) {} - fn export_symbols( - &mut self, - _tmpdir: &Path, - _crate_type: CrateType, - symbols: &[(String, SymbolExportKind)], - ) { - for (sym, _) in symbols { + fn export_symbols(&mut self, _tmpdir: &Path, _crate_type: CrateType, symbols: &[String]) { + for sym in symbols { self.link_args(&["--export", sym]); } @@ -1590,7 +1563,7 @@ impl<'a> Linker for L4Bender<'a> { self.cc_arg("-nostdlib"); } - fn export_symbols(&mut self, _: &Path, _: CrateType, _: &[(String, SymbolExportKind)]) { + fn export_symbols(&mut self, _: &Path, _: CrateType, _: &[String]) { // ToDo, not implemented, copy from GCC self.sess.dcx().emit_warn(errors::L4BenderExportingSymbolsUnimplemented); } @@ -1747,17 +1720,12 @@ impl<'a> Linker for AixLinker<'a> { fn no_default_libraries(&mut self) {} - fn export_symbols( - &mut self, - tmpdir: &Path, - _crate_type: CrateType, - symbols: &[(String, SymbolExportKind)], - ) { + fn export_symbols(&mut self, tmpdir: &Path, _crate_type: CrateType, symbols: &[String]) { let path = tmpdir.join("list.exp"); let res: io::Result<()> = try { let mut f = File::create_buffered(&path)?; // FIXME: use llvm-nm to generate export list. - for (symbol, _) in symbols { + for symbol in symbols { debug!(" _{symbol}"); writeln!(f, " {symbol}")?; } @@ -1801,12 +1769,9 @@ fn for_each_exported_symbols_include_dep<'tcx>( } } -pub(crate) fn exported_symbols( - tcx: TyCtxt<'_>, - crate_type: CrateType, -) -> Vec<(String, SymbolExportKind)> { +pub(crate) fn exported_symbols(tcx: TyCtxt<'_>, crate_type: CrateType) -> Vec { if let Some(ref exports) = tcx.sess.target.override_export_symbols { - return exports.iter().map(|name| (name.to_string(), SymbolExportKind::Text)).collect(); + return exports.iter().map(ToString::to_string).collect(); } if let CrateType::ProcMacro = crate_type { @@ -1816,10 +1781,7 @@ pub(crate) fn exported_symbols( } } -fn exported_symbols_for_non_proc_macro( - tcx: TyCtxt<'_>, - crate_type: CrateType, -) -> Vec<(String, SymbolExportKind)> { +fn exported_symbols_for_non_proc_macro(tcx: TyCtxt<'_>, crate_type: CrateType) -> Vec { let mut symbols = Vec::new(); let export_threshold = symbol_export::crates_export_threshold(&[crate_type]); for_each_exported_symbols_include_dep(tcx, crate_type, |symbol, info, cnum| { @@ -1827,18 +1789,17 @@ fn exported_symbols_for_non_proc_macro( // from any cdylib. The latter doesn't work anyway as we use hidden visibility for // compiler-builtins. Most linkers silently ignore it, but ld64 gives a warning. if info.level.is_below_threshold(export_threshold) && !tcx.is_compiler_builtins(cnum) { - symbols.push(( - symbol_export::exporting_symbol_name_for_instance_in_crate(tcx, symbol, cnum), - info.kind, + symbols.push(symbol_export::exporting_symbol_name_for_instance_in_crate( + tcx, symbol, cnum, )); - symbol_export::extend_exported_symbols(&mut symbols, tcx, symbol, info, cnum); + symbol_export::extend_exported_symbols(&mut symbols, tcx, symbol, cnum); } }); symbols } -fn exported_symbols_for_proc_macro_crate(tcx: TyCtxt<'_>) -> Vec<(String, SymbolExportKind)> { +fn exported_symbols_for_proc_macro_crate(tcx: TyCtxt<'_>) -> Vec { // `exported_symbols` will be empty when !should_codegen. if !tcx.sess.opts.output_types.should_codegen() { return Vec::new(); @@ -1848,10 +1809,7 @@ fn exported_symbols_for_proc_macro_crate(tcx: TyCtxt<'_>) -> Vec<(String, Symbol let proc_macro_decls_name = tcx.sess.generate_proc_macro_decls_symbol(stable_crate_id); let metadata_symbol_name = exported_symbols::metadata_symbol_name(tcx); - vec![ - (proc_macro_decls_name, SymbolExportKind::Text), - (metadata_symbol_name, SymbolExportKind::Text), - ] + vec![proc_macro_decls_name, metadata_symbol_name] } pub(crate) fn linked_symbols( @@ -1873,9 +1831,7 @@ pub(crate) fn linked_symbols( || info.used { symbols.push(( - symbol_export::linking_symbol_name_for_instance_in_crate( - tcx, symbol, info.kind, cnum, - ), + symbol_export::linking_symbol_name_for_instance_in_crate(tcx, symbol, cnum), info.kind, )); } @@ -1950,13 +1906,7 @@ impl<'a> Linker for PtxLinker<'a> { fn ehcont_guard(&mut self) {} - fn export_symbols( - &mut self, - _tmpdir: &Path, - _crate_type: CrateType, - _symbols: &[(String, SymbolExportKind)], - ) { - } + fn export_symbols(&mut self, _tmpdir: &Path, _crate_type: CrateType, _symbols: &[String]) {} fn subsystem(&mut self, _subsystem: &str) {} @@ -2025,15 +1975,10 @@ impl<'a> Linker for LlbcLinker<'a> { fn ehcont_guard(&mut self) {} - fn export_symbols( - &mut self, - _tmpdir: &Path, - _crate_type: CrateType, - symbols: &[(String, SymbolExportKind)], - ) { + fn export_symbols(&mut self, _tmpdir: &Path, _crate_type: CrateType, symbols: &[String]) { match _crate_type { CrateType::Cdylib => { - for (sym, _) in symbols { + for sym in symbols { self.link_args(&["--export-symbol", sym]); } } @@ -2107,16 +2052,11 @@ impl<'a> Linker for BpfLinker<'a> { fn ehcont_guard(&mut self) {} - fn export_symbols( - &mut self, - tmpdir: &Path, - _crate_type: CrateType, - symbols: &[(String, SymbolExportKind)], - ) { + fn export_symbols(&mut self, tmpdir: &Path, _crate_type: CrateType, symbols: &[String]) { let path = tmpdir.join("symbols"); let res: io::Result<()> = try { let mut f = File::create_buffered(&path)?; - for (sym, _) in symbols { + for sym in symbols { writeln!(f, "{sym}")?; } }; diff --git a/compiler/rustc_codegen_ssa/src/back/symbol_export.rs b/compiler/rustc_codegen_ssa/src/back/symbol_export.rs index 06ba5b4f6a752..5f0a0cf922af2 100644 --- a/compiler/rustc_codegen_ssa/src/back/symbol_export.rs +++ b/compiler/rustc_codegen_ssa/src/back/symbol_export.rs @@ -692,7 +692,6 @@ fn calling_convention_for_symbol<'tcx>( pub(crate) fn linking_symbol_name_for_instance_in_crate<'tcx>( tcx: TyCtxt<'tcx>, symbol: ExportedSymbol<'tcx>, - export_kind: SymbolExportKind, instantiating_crate: CrateNum, ) -> String { let mut undecorated = symbol_name_for_instance_in_crate(tcx, symbol, instantiating_crate); @@ -713,9 +712,8 @@ pub(crate) fn linking_symbol_name_for_instance_in_crate<'tcx>( let prefix = match &target.arch[..] { "x86" => Some('_'), "x86_64" => None, - // Only functions are decorated for arm64ec. - "arm64ec" if export_kind == SymbolExportKind::Text => Some('#'), - // Only x86/64 and arm64ec use symbol decorations. + "arm64ec" => Some('#'), + // Only x86/64 use symbol decorations. _ => return undecorated, }; @@ -755,10 +753,9 @@ pub(crate) fn exporting_symbol_name_for_instance_in_crate<'tcx>( /// Add it to the symbols list for all kernel functions, so that it is exported in the linked /// object. pub(crate) fn extend_exported_symbols<'tcx>( - symbols: &mut Vec<(String, SymbolExportKind)>, + symbols: &mut Vec, tcx: TyCtxt<'tcx>, symbol: ExportedSymbol<'tcx>, - info: SymbolExportInfo, instantiating_crate: CrateNum, ) { let (conv, _) = calling_convention_for_symbol(tcx, symbol); @@ -770,7 +767,7 @@ pub(crate) fn extend_exported_symbols<'tcx>( let undecorated = symbol_name_for_instance_in_crate(tcx, symbol, instantiating_crate); // Add the symbol for the kernel descriptor (with .kd suffix) - symbols.push((format!("{undecorated}.kd"), info.kind)); + symbols.push(format!("{undecorated}.kd")); } fn maybe_emutls_symbol_name<'tcx>( diff --git a/compiler/rustc_codegen_ssa/src/base.rs b/compiler/rustc_codegen_ssa/src/base.rs index 93cbd4cbb7cc9..775ab9071e743 100644 --- a/compiler/rustc_codegen_ssa/src/base.rs +++ b/compiler/rustc_codegen_ssa/src/base.rs @@ -12,9 +12,9 @@ use rustc_data_structures::fx::{FxHashMap, FxIndexSet}; use rustc_data_structures::profiling::{get_resident_set_size, print_time_passes_entry}; use rustc_data_structures::sync::{IntoDynSyncSend, par_map}; use rustc_data_structures::unord::UnordMap; +use rustc_hir::ItemId; use rustc_hir::def_id::{DefId, LOCAL_CRATE}; use rustc_hir::lang_items::LangItem; -use rustc_hir::{ItemId, Target}; use rustc_metadata::EncodedMetadata; use rustc_middle::middle::codegen_fn_attrs::CodegenFnAttrs; use rustc_middle::middle::debugger_visualizer::{DebuggerVisualizerFile, DebuggerVisualizerType}; @@ -1038,35 +1038,21 @@ impl CrateInfo { // by the compiler, but that's ok because all this stuff is unstable anyway. let target = &tcx.sess.target; if !are_upstream_rust_objects_already_included(tcx.sess) { - let add_prefix = match (target.is_like_windows, target.arch.as_ref()) { - (true, "x86") => |name: String, _: SymbolExportKind| format!("_{name}"), - (true, "arm64ec") => { - // Only functions are decorated for arm64ec. - |name: String, export_kind: SymbolExportKind| match export_kind { - SymbolExportKind::Text => format!("#{name}"), - _ => name, - } - } - _ => |name: String, _: SymbolExportKind| name, - }; - let missing_weak_lang_items: FxIndexSet<(Symbol, SymbolExportKind)> = info + let missing_weak_lang_items: FxIndexSet = info .used_crates .iter() .flat_map(|&cnum| tcx.missing_lang_items(cnum)) .filter(|l| l.is_weak()) .filter_map(|&l| { let name = l.link_name()?; - let export_kind = match l.target() { - Target::Fn => SymbolExportKind::Text, - Target::Static => SymbolExportKind::Data, - _ => bug!( - "Don't know what the export kind is for lang item of kind {:?}", - l.target() - ), - }; - lang_items::required(tcx, l).then_some((name, export_kind)) + lang_items::required(tcx, l).then_some(name) }) .collect(); + let prefix = match (target.is_like_windows, target.arch.as_ref()) { + (true, "x86") => "_", + (true, "arm64ec") => "#", + _ => "", + }; // This loop only adds new items to values of the hash map, so the order in which we // iterate over the values is not important. @@ -1079,13 +1065,10 @@ impl CrateInfo { .for_each(|(_, linked_symbols)| { let mut symbols = missing_weak_lang_items .iter() - .map(|(item, export_kind)| { + .map(|item| { ( - add_prefix( - mangle_internal_symbol(tcx, item.as_str()), - *export_kind, - ), - *export_kind, + format!("{prefix}{}", mangle_internal_symbol(tcx, item.as_str())), + SymbolExportKind::Text, ) }) .collect::>(); @@ -1100,12 +1083,12 @@ impl CrateInfo { // errors. linked_symbols.extend(ALLOCATOR_METHODS.iter().map(|method| { ( - add_prefix( + format!( + "{prefix}{}", mangle_internal_symbol( tcx, - global_fn_name(method.name).as_str(), - ), - SymbolExportKind::Text, + global_fn_name(method.name).as_str() + ) ), SymbolExportKind::Text, ) diff --git a/compiler/rustc_codegen_ssa/src/lib.rs b/compiler/rustc_codegen_ssa/src/lib.rs index 4f9757f198b84..bfec208c4aed1 100644 --- a/compiler/rustc_codegen_ssa/src/lib.rs +++ b/compiler/rustc_codegen_ssa/src/lib.rs @@ -219,7 +219,7 @@ pub struct CrateInfo { pub target_cpu: String, pub target_features: Vec, pub crate_types: Vec, - pub exported_symbols: UnordMap>, + pub exported_symbols: UnordMap>, pub linked_symbols: FxIndexMap>, pub local_crate_name: Symbol, pub compiler_builtins: Option, diff --git a/compiler/rustc_middle/src/middle/exported_symbols.rs b/compiler/rustc_middle/src/middle/exported_symbols.rs index 64a1f2aff15c5..1d67d0fe3bbf4 100644 --- a/compiler/rustc_middle/src/middle/exported_symbols.rs +++ b/compiler/rustc_middle/src/middle/exported_symbols.rs @@ -22,7 +22,7 @@ impl SymbolExportLevel { } /// Kind of exported symbols. -#[derive(Eq, PartialEq, Debug, Copy, Clone, Encodable, Decodable, HashStable, Hash)] +#[derive(Eq, PartialEq, Debug, Copy, Clone, Encodable, Decodable, HashStable)] pub enum SymbolExportKind { Text, Data, diff --git a/compiler/rustc_target/src/spec/base/msvc.rs b/compiler/rustc_target/src/spec/base/msvc.rs index bd59678d23665..486d7158723f8 100644 --- a/compiler/rustc_target/src/spec/base/msvc.rs +++ b/compiler/rustc_target/src/spec/base/msvc.rs @@ -5,19 +5,7 @@ use crate::spec::{BinaryFormat, DebuginfoKind, LinkerFlavor, Lld, SplitDebuginfo pub(crate) fn opts() -> TargetOptions { // Suppress the verbose logo and authorship debugging output, which would needlessly // clog any log files. - let pre_link_args = TargetOptions::link_args( - LinkerFlavor::Msvc(Lld::No), - &[ - "/NOLOGO", - // "Symbol is marked as dllimport, but defined in an object file" - // Harmless warning that flags a potential performance improvement: marking a symbol as - // dllimport indirects usage via the `__imp_` symbol, which isn't required if the symbol - // is in the current binary. This is tripped by __rust_no_alloc_shim_is_unstable as it - // is generated by the compiler, but marked as a foreign item (hence the dllimport) in - // the standard library. - "/IGNORE:4286", - ], - ); + let pre_link_args = TargetOptions::link_args(LinkerFlavor::Msvc(Lld::No), &["/NOLOGO"]); TargetOptions { linker_flavor: LinkerFlavor::Msvc(Lld::No), diff --git a/tests/run-make/arm64ec-import-export-static/export.rs b/tests/run-make/arm64ec-import-export-static/export.rs deleted file mode 100644 index 98b3a66d80c04..0000000000000 --- a/tests/run-make/arm64ec-import-export-static/export.rs +++ /dev/null @@ -1,23 +0,0 @@ -#![crate_type = "dylib"] -#![allow(internal_features)] -#![feature(no_core, lang_items)] -#![no_core] -#![no_std] - -// This is needed because of #![no_core]: -#[lang = "sized"] -trait Sized {} -#[lang = "sync"] -trait Sync {} -impl Sync for i32 {} -#[lang = "copy"] -pub trait Copy {} -impl Copy for i32 {} -#[lang = "drop_in_place"] -pub unsafe fn drop_in_place(_: *mut T) {} -#[no_mangle] -extern "system" fn _DllMainCRTStartup(_: *const u8, _: u32, _: *const u8) -> u32 { - 1 -} - -pub static VALUE: i32 = 42; diff --git a/tests/run-make/arm64ec-import-export-static/import.rs b/tests/run-make/arm64ec-import-export-static/import.rs deleted file mode 100644 index 9d52db251250a..0000000000000 --- a/tests/run-make/arm64ec-import-export-static/import.rs +++ /dev/null @@ -1,12 +0,0 @@ -#![crate_type = "cdylib"] -#![allow(internal_features)] -#![feature(no_core)] -#![no_std] -#![no_core] - -extern crate export; - -#[no_mangle] -pub extern "C" fn func() -> i32 { - export::VALUE -} diff --git a/tests/run-make/arm64ec-import-export-static/rmake.rs b/tests/run-make/arm64ec-import-export-static/rmake.rs deleted file mode 100644 index 7fa31144810df..0000000000000 --- a/tests/run-make/arm64ec-import-export-static/rmake.rs +++ /dev/null @@ -1,15 +0,0 @@ -// Test that a static can be exported from one crate and imported into another. -// -// This was broken for Arm64EC as only functions, not variables, should be -// decorated with `#`. -// See https://github.com/rust-lang/rust/issues/138541 - -//@ needs-llvm-components: aarch64 -//@ only-windows - -use run_make_support::rustc; - -fn main() { - rustc().input("export.rs").target("aarch64-pc-windows-msvc").panic("abort").run(); - rustc().input("import.rs").target("aarch64-pc-windows-msvc").panic("abort").run(); -} diff --git a/tests/run-make/sanitizer-dylib-link/program.rs b/tests/run-make/sanitizer-dylib-link/program.rs index dbf885d343fea..1026c7f89ba9f 100644 --- a/tests/run-make/sanitizer-dylib-link/program.rs +++ b/tests/run-make/sanitizer-dylib-link/program.rs @@ -1,4 +1,4 @@ -#[cfg_attr(windows, link(name = "library", kind = "raw-dylib"))] +#[cfg_attr(windows, link(name = "library.dll.lib", modifiers = "+verbatim"))] #[cfg_attr(not(windows), link(name = "library"))] extern "C" { fn overflow(); From 542e61c21bd10749475bdd12991474f51ed4fdb5 Mon Sep 17 00:00:00 2001 From: Daniel Paoliello Date: Thu, 15 May 2025 11:15:52 -0700 Subject: [PATCH 09/21] [win][arm64] Remove 'Arm64 Hazard' undocumented MSVC option and instead disable problematic test (cherry picked from commit 6128fca0b0b70ac6497bf5da38a5d3db37219f78) --- .../src/spec/targets/aarch64_pc_windows_msvc.rs | 7 +------ .../llvm-location-discriminator-limit-dummy-span/rmake.rs | 7 +++++++ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/compiler/rustc_target/src/spec/targets/aarch64_pc_windows_msvc.rs b/compiler/rustc_target/src/spec/targets/aarch64_pc_windows_msvc.rs index c5704c574483f..f1b6fa123deb4 100644 --- a/compiler/rustc_target/src/spec/targets/aarch64_pc_windows_msvc.rs +++ b/compiler/rustc_target/src/spec/targets/aarch64_pc_windows_msvc.rs @@ -1,4 +1,4 @@ -use crate::spec::{FramePointer, LinkerFlavor, Lld, Target, TargetMetadata, base}; +use crate::spec::{FramePointer, Target, TargetMetadata, base}; pub(crate) fn target() -> Target { let mut base = base::windows_msvc::opts(); @@ -11,11 +11,6 @@ pub(crate) fn target() -> Target { // and other services. It must point to the previous {x29, x30} pair on the stack." base.frame_pointer = FramePointer::NonLeaf; - // MSVC emits a warning about code that may trip "Cortex-A53 MPCore processor bug #843419" (see - // https://developer.arm.com/documentation/epm048406/latest) which is sometimes emitted by LLVM. - // Since Arm64 Windows 10+ isn't supported on that processor, it's safe to disable the warning. - base.add_pre_link_args(LinkerFlavor::Msvc(Lld::No), &["/arm64hazardfree"]); - Target { llvm_target: "aarch64-pc-windows-msvc".into(), metadata: TargetMetadata { diff --git a/tests/run-make/llvm-location-discriminator-limit-dummy-span/rmake.rs b/tests/run-make/llvm-location-discriminator-limit-dummy-span/rmake.rs index 2727effe81883..d28c8463016cb 100644 --- a/tests/run-make/llvm-location-discriminator-limit-dummy-span/rmake.rs +++ b/tests/run-make/llvm-location-discriminator-limit-dummy-span/rmake.rs @@ -11,6 +11,13 @@ //@ needs-dynamic-linking //@ only-nightly (requires unstable rustc flag) +// This test trips a check in the MSVC linker for an outdated processor: +// "LNK1322: cannot avoid potential ARM hazard (Cortex-A53 MPCore processor bug #843419)" +// Until MSVC removes this check: +// https://developercommunity.microsoft.com/t/Remove-checking-for-and-fixing-Cortex-A/10905134 +// we'll need to disable this test on Arm64 Windows. +//@ ignore-aarch64-pc-windows-msvc + #![deny(warnings)] use run_make_support::{dynamic_lib_name, rfs, rust_lib_name, rustc}; From 14acce0cb64cca2290e7042fbca8d8030f5c16d7 Mon Sep 17 00:00:00 2001 From: Santiago Pastorino Date: Tue, 20 May 2025 16:55:09 -0300 Subject: [PATCH 10/21] Do not call name() on rpitit assoc_item (cherry picked from commit 66d47c16873fc04a02cb0bd977ec7f3d50f228f1) --- .../src/error_reporting/traits/suggestions.rs | 23 +++++++++++-------- .../in-trait/not-inferred-generic.rs | 13 +++++++++++ .../in-trait/not-inferred-generic.stderr | 21 +++++++++++++++++ 3 files changed, 47 insertions(+), 10 deletions(-) create mode 100644 tests/ui/impl-trait/in-trait/not-inferred-generic.rs create mode 100644 tests/ui/impl-trait/in-trait/not-inferred-generic.stderr diff --git a/compiler/rustc_trait_selection/src/error_reporting/traits/suggestions.rs b/compiler/rustc_trait_selection/src/error_reporting/traits/suggestions.rs index 8801397b77541..6863857f9ecb8 100644 --- a/compiler/rustc_trait_selection/src/error_reporting/traits/suggestions.rs +++ b/compiler/rustc_trait_selection/src/error_reporting/traits/suggestions.rs @@ -2124,16 +2124,19 @@ impl<'a, 'tcx> TypeErrCtxt<'a, 'tcx> { accessed through a specific `impl`", self.tcx.def_kind_descr(assoc_item.as_def_kind(), item_def_id) )); - err.span_suggestion( - span, - "use the fully qualified path to an implementation", - format!( - "::{}", - self.tcx.def_path_str(trait_ref), - assoc_item.name() - ), - Applicability::HasPlaceholders, - ); + + if !assoc_item.is_impl_trait_in_trait() { + err.span_suggestion( + span, + "use the fully qualified path to an implementation", + format!( + "::{}", + self.tcx.def_path_str(trait_ref), + assoc_item.name() + ), + Applicability::HasPlaceholders, + ); + } } } } diff --git a/tests/ui/impl-trait/in-trait/not-inferred-generic.rs b/tests/ui/impl-trait/in-trait/not-inferred-generic.rs new file mode 100644 index 0000000000000..3879ea0e62628 --- /dev/null +++ b/tests/ui/impl-trait/in-trait/not-inferred-generic.rs @@ -0,0 +1,13 @@ +trait TypedClient { + fn publish_typed(&self) -> impl Sized + where + F: Clone; +} +impl TypedClient for () { + fn publish_typed(&self) -> impl Sized {} +} + +fn main() { + ().publish_typed(); + //~^ ERROR type annotations needed [E0283] +} diff --git a/tests/ui/impl-trait/in-trait/not-inferred-generic.stderr b/tests/ui/impl-trait/in-trait/not-inferred-generic.stderr new file mode 100644 index 0000000000000..07f029d3bb7dc --- /dev/null +++ b/tests/ui/impl-trait/in-trait/not-inferred-generic.stderr @@ -0,0 +1,21 @@ +error[E0283]: type annotations needed + --> $DIR/not-inferred-generic.rs:11:8 + | +LL | ().publish_typed(); + | ^^^^^^^^^^^^^ cannot infer type of the type parameter `F` declared on the method `publish_typed` + | + = note: cannot satisfy `_: Clone` + = note: associated types cannot be accessed directly on a `trait`, they can only be accessed through a specific `impl` +note: required by a bound in `TypedClient::publish_typed::{anon_assoc#0}` + --> $DIR/not-inferred-generic.rs:4:12 + | +LL | F: Clone; + | ^^^^^ required by this bound in `TypedClient::publish_typed::{anon_assoc#0}` +help: consider specifying the generic argument + | +LL | ().publish_typed::(); + | +++++ + +error: aborting due to 1 previous error + +For more information about this error, try `rustc --explain E0283`. From 1272ff814f25a866edd7b06ed3c8db857ef9a125 Mon Sep 17 00:00:00 2001 From: Jieyou Xu Date: Thu, 15 May 2025 16:32:45 +0800 Subject: [PATCH 11/21] Temporarily use Windows Server 2022 instead of Windows Server 2025 images At the moment, it seems like Windows Server 2025 20250504.1.0 is misconfigured causing insufficient disk space failures. Temporarily go back to Windows Server 2022 in the hope that those are not also misconfigured. (cherry picked from commit f4ce73ede2f4df0f9983b337ceeed96c11f52c14) --- src/ci/github-actions/jobs.yml | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/ci/github-actions/jobs.yml b/src/ci/github-actions/jobs.yml index afcc092e78e8d..88e9c71a9e318 100644 --- a/src/ci/github-actions/jobs.yml +++ b/src/ci/github-actions/jobs.yml @@ -35,6 +35,8 @@ runners: os: windows-2022 <<: *base-job + # FIXME(#141022): Windows Server 2025 20250504.1.0 currently experiences + # insufficient disk space. - &job-windows-25 os: windows-2025 <<: *base-job @@ -476,13 +478,17 @@ auto: env: RUST_CONFIGURE_ARGS: --build=x86_64-pc-windows-msvc --enable-sanitizers --enable-profiler SCRIPT: make ci-msvc-py - <<: *job-windows-25 + # FIXME(#141022): Windows Server 2025 20250504.1.0 currently experiences + # insufficient disk space. + <<: *job-windows - name: x86_64-msvc-2 env: RUST_CONFIGURE_ARGS: --build=x86_64-pc-windows-msvc --enable-sanitizers --enable-profiler SCRIPT: make ci-msvc-ps1 - <<: *job-windows-25 + # FIXME(#141022): Windows Server 2025 20250504.1.0 currently experiences + # insufficient disk space. + <<: *job-windows # i686-msvc is split into two jobs to run tests in parallel. - name: i686-msvc-1 From eafa0f9b2374db88ab7bd23064753eca2e6b82dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Ber=C3=A1nek?= Date: Tue, 20 May 2025 10:39:34 +0200 Subject: [PATCH 12/21] Use Docker cache from the current repository This is needed to make the cache work after moving CI from the `rust-lang-ci` org to `rust-lang`. (cherry picked from commit eb530325f08b9151cb1917d01a8cb913ab1dd1ab) --- src/ci/docker/run.sh | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/ci/docker/run.sh b/src/ci/docker/run.sh index 36f7df2b06907..4e69fb2f37057 100755 --- a/src/ci/docker/run.sh +++ b/src/ci/docker/run.sh @@ -97,9 +97,8 @@ if [ -f "$docker_dir/$image/Dockerfile" ]; then docker --version REGISTRY=ghcr.io - # Hardcode username to reuse cache between auto and pr jobs - # FIXME: should be changed after move from rust-lang-ci - REGISTRY_USERNAME=rust-lang-ci + # Default to `rust-lang` to allow reusing the cache for local builds + REGISTRY_USERNAME=${GITHUB_REPOSITORY_OWNER:-rust-lang} # Tag used to push the final Docker image, so that it can be pulled by e.g. rustup IMAGE_TAG=${REGISTRY}/${REGISTRY_USERNAME}/rust-ci:${cksum} # Tag used to cache the Docker build From b3094a53bd8bc80108f6ebb11897b80d705714fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Ber=C3=A1nek?= Date: Thu, 22 May 2025 12:09:37 +0200 Subject: [PATCH 13/21] Move `dist-x86_64-linux` CI job to GitHub temporarily To make it easier to migrate off the `rust-lang-ci/rust` repository. (cherry picked from commit 7d32303574c63cb396d5e1cb17f00061665a0f75) --- src/ci/github-actions/jobs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ci/github-actions/jobs.yml b/src/ci/github-actions/jobs.yml index 88e9c71a9e318..a11f3d79cfec1 100644 --- a/src/ci/github-actions/jobs.yml +++ b/src/ci/github-actions/jobs.yml @@ -221,7 +221,7 @@ auto: - name: dist-x86_64-linux env: CODEGEN_BACKENDS: llvm,cranelift - <<: *job-linux-36c-codebuild + <<: *job-linux-16c - name: dist-x86_64-linux-alt env: From 53458c89cebc02fb3019081a58c3232c5c5dd60a Mon Sep 17 00:00:00 2001 From: MarcoIeni <11428655+MarcoIeni@users.noreply.github.com> Date: Thu, 22 May 2025 12:48:12 +0200 Subject: [PATCH 14/21] ci: prepare aws access keys for migration (cherry picked from commit 806cd12f56446bd31aea495e83661f5c3cf3a17d) --- .github/workflows/ci.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 93316b9cff7b1..1b8b6eabdc578 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -225,8 +225,8 @@ jobs: fi exit ${STATUS} env: - AWS_ACCESS_KEY_ID: ${{ env.CACHES_AWS_ACCESS_KEY_ID }} - AWS_SECRET_ACCESS_KEY: ${{ secrets[format('AWS_SECRET_ACCESS_KEY_{0}', env.CACHES_AWS_ACCESS_KEY_ID)] }} + AWS_ACCESS_KEY_ID: ${{ (github.repository == 'rust-lang/rust' && secrets.CACHES_AWS_ACCESS_KEY_ID) || env.CACHES_AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ (github.repository == 'rust-lang/rust' && secrets.CACHES_AWS_SECRET_ACCESS_KEY) || secrets[format('AWS_SECRET_ACCESS_KEY_{0}', env.CACHES_AWS_ACCESS_KEY_ID)] }} - name: create github artifacts run: src/ci/scripts/create-doc-artifacts.sh @@ -248,8 +248,8 @@ jobs: - name: upload artifacts to S3 run: src/ci/scripts/upload-artifacts.sh env: - AWS_ACCESS_KEY_ID: ${{ env.ARTIFACTS_AWS_ACCESS_KEY_ID }} - AWS_SECRET_ACCESS_KEY: ${{ secrets[format('AWS_SECRET_ACCESS_KEY_{0}', env.ARTIFACTS_AWS_ACCESS_KEY_ID)] }} + AWS_ACCESS_KEY_ID: ${{ (github.repository == 'rust-lang/rust' && secrets.ARTIFACTS_AWS_ACCESS_KEY_ID) || env.ARTIFACTS_AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ (github.repository == 'rust-lang/rust' && secrets.ARTIFACTS_AWS_SECRET_ACCESS_KEY) || secrets[format('AWS_SECRET_ACCESS_KEY_{0}', env.ARTIFACTS_AWS_ACCESS_KEY_ID)] }} # Adding a condition on DEPLOY=1 or DEPLOY_ALT=1 is not needed as all deploy # builders *should* have the AWS credentials available. Still, explicitly # adding the condition is helpful as this way CI will not silently skip From 1718bb2037fd1baafd2068b06309e9be6bdc2a65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Ber=C3=A1nek?= Date: Tue, 20 May 2025 15:16:16 +0200 Subject: [PATCH 15/21] Add bors environment to CI This will be used to access secrets once we move off rust-lang-ci. --- .github/workflows/ci.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1b8b6eabdc578..566ae2235001c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -73,6 +73,15 @@ jobs: needs: [ calculate_matrix ] runs-on: "${{ matrix.os }}" timeout-minutes: 360 + # The bors environment contains secrets required for elevated workflows (try and auto builds), + # which need to access e.g. S3 and upload artifacts. We want to provide access to that + # environment only on the try/auto branches, which are only accessible to bors. + # This also ensures that PR CI (which doesn't get write access to S3) works, as it cannot + # access the environment. + # + # We only enable the environment for the rust-lang/rust repository, so that rust-lang-ci/rust + # CI works until we migrate off it (since that repository doesn't contain the environment). + environment: ${{ ((github.repository == 'rust-lang/rust' && (github.ref == 'refs/heads/try' || github.ref == 'refs/heads/auto')) && 'bors') || '' }} env: CI_JOB_NAME: ${{ matrix.name }} CI_JOB_DOC_URL: ${{ matrix.doc_url }} From 5257f89f89b6c7dd93074e5ea43bb7ae61ccc7a2 Mon Sep 17 00:00:00 2001 From: MarcoIeni <11428655+MarcoIeni@users.noreply.github.com> Date: Sun, 18 May 2025 12:12:20 +0200 Subject: [PATCH 16/21] ci: split dist-arm-linux job --- .../dist-arm-linux-gnueabi/Dockerfile | 35 +++++++++++++++++++ .../arm-linux-gnueabi.defconfig | 0 .../Dockerfile | 10 ++---- .../arm-linux-musl.defconfig | 13 +++++++ src/ci/github-actions/jobs.yml | 7 ++-- 5 files changed, 55 insertions(+), 10 deletions(-) create mode 100644 src/ci/docker/host-x86_64/dist-arm-linux-gnueabi/Dockerfile rename src/ci/docker/host-x86_64/{dist-arm-linux => dist-arm-linux-gnueabi}/arm-linux-gnueabi.defconfig (100%) rename src/ci/docker/host-x86_64/{dist-arm-linux => dist-arm-linux-musl}/Dockerfile (73%) create mode 100644 src/ci/docker/host-x86_64/dist-arm-linux-musl/arm-linux-musl.defconfig diff --git a/src/ci/docker/host-x86_64/dist-arm-linux-gnueabi/Dockerfile b/src/ci/docker/host-x86_64/dist-arm-linux-gnueabi/Dockerfile new file mode 100644 index 0000000000000..996dacd712478 --- /dev/null +++ b/src/ci/docker/host-x86_64/dist-arm-linux-gnueabi/Dockerfile @@ -0,0 +1,35 @@ +FROM ghcr.io/rust-lang/ubuntu:22.04 + +COPY scripts/cross-apt-packages.sh /scripts/ +RUN sh /scripts/cross-apt-packages.sh + +COPY scripts/crosstool-ng.sh /scripts/ +RUN sh /scripts/crosstool-ng.sh + +WORKDIR /build + +COPY scripts/rustbuild-setup.sh /scripts/ +RUN sh /scripts/rustbuild-setup.sh +WORKDIR /tmp + +COPY scripts/crosstool-ng-build.sh /scripts/ +COPY host-x86_64/dist-arm-linux-gnueabi/arm-linux-gnueabi.defconfig /tmp/crosstool.defconfig +RUN /scripts/crosstool-ng-build.sh + +COPY scripts/sccache.sh /scripts/ +RUN sh /scripts/sccache.sh + +ENV PATH=$PATH:/x-tools/arm-unknown-linux-gnueabi/bin + +ENV CC_arm_unknown_linux_gnueabi=arm-unknown-linux-gnueabi-gcc \ + AR_arm_unknown_linux_gnueabi=arm-unknown-linux-gnueabi-ar \ + CXX_arm_unknown_linux_gnueabi=arm-unknown-linux-gnueabi-g++ + +ENV HOSTS=arm-unknown-linux-gnueabi + +ENV RUST_CONFIGURE_ARGS \ + --enable-full-tools \ + --disable-docs \ + --enable-sanitizers \ + --enable-profiler +ENV SCRIPT python3 ../x.py dist --host $HOSTS --target $HOSTS diff --git a/src/ci/docker/host-x86_64/dist-arm-linux/arm-linux-gnueabi.defconfig b/src/ci/docker/host-x86_64/dist-arm-linux-gnueabi/arm-linux-gnueabi.defconfig similarity index 100% rename from src/ci/docker/host-x86_64/dist-arm-linux/arm-linux-gnueabi.defconfig rename to src/ci/docker/host-x86_64/dist-arm-linux-gnueabi/arm-linux-gnueabi.defconfig diff --git a/src/ci/docker/host-x86_64/dist-arm-linux/Dockerfile b/src/ci/docker/host-x86_64/dist-arm-linux-musl/Dockerfile similarity index 73% rename from src/ci/docker/host-x86_64/dist-arm-linux/Dockerfile rename to src/ci/docker/host-x86_64/dist-arm-linux-musl/Dockerfile index 3795859f308e6..6e055cd2bd5aa 100644 --- a/src/ci/docker/host-x86_64/dist-arm-linux/Dockerfile +++ b/src/ci/docker/host-x86_64/dist-arm-linux-musl/Dockerfile @@ -19,19 +19,13 @@ RUN sh /scripts/rustbuild-setup.sh WORKDIR /tmp COPY scripts/crosstool-ng-build.sh /scripts/ -COPY host-x86_64/dist-arm-linux/arm-linux-gnueabi.defconfig /tmp/crosstool.defconfig +COPY host-x86_64/dist-arm-linux-musl/arm-linux-musl.defconfig /tmp/crosstool.defconfig RUN /scripts/crosstool-ng-build.sh COPY scripts/sccache.sh /scripts/ RUN sh /scripts/sccache.sh -ENV PATH=$PATH:/x-tools/arm-unknown-linux-gnueabi/bin - -ENV CC_arm_unknown_linux_gnueabi=arm-unknown-linux-gnueabi-gcc \ - AR_arm_unknown_linux_gnueabi=arm-unknown-linux-gnueabi-ar \ - CXX_arm_unknown_linux_gnueabi=arm-unknown-linux-gnueabi-g++ - -ENV HOSTS=arm-unknown-linux-gnueabi,aarch64-unknown-linux-musl +ENV HOSTS=aarch64-unknown-linux-musl ENV RUST_CONFIGURE_ARGS \ --enable-full-tools \ diff --git a/src/ci/docker/host-x86_64/dist-arm-linux-musl/arm-linux-musl.defconfig b/src/ci/docker/host-x86_64/dist-arm-linux-musl/arm-linux-musl.defconfig new file mode 100644 index 0000000000000..e7afdbe9d4dea --- /dev/null +++ b/src/ci/docker/host-x86_64/dist-arm-linux-musl/arm-linux-musl.defconfig @@ -0,0 +1,13 @@ +CT_CONFIG_VERSION="4" +CT_PREFIX_DIR="/x-tools/${CT_TARGET}" +CT_USE_MIRROR=y +CT_MIRROR_BASE_URL="https://ci-mirrors.rust-lang.org/rustc" +CT_ARCH_ARM=y +CT_ARCH_ARCH="armv6" +CT_ARCH_FLOAT_SW=y +CT_KERNEL_LINUX=y +CT_LINUX_V_3_2=y +CT_BINUTILS_V_2_32=y +CT_GLIBC_V_2_17=y +CT_GCC_V_8=y +CT_CC_LANG_CXX=y diff --git a/src/ci/github-actions/jobs.yml b/src/ci/github-actions/jobs.yml index a11f3d79cfec1..423bbbf47c752 100644 --- a/src/ci/github-actions/jobs.yml +++ b/src/ci/github-actions/jobs.yml @@ -167,8 +167,11 @@ auto: - name: dist-android <<: *job-linux-4c - - name: dist-arm-linux - <<: *job-linux-8c-codebuild + - name: dist-arm-linux-gnueabi + <<: *job-linux-4c + + - name: dist-arm-linux-musl + <<: *job-linux-4c - name: dist-armhf-linux <<: *job-linux-4c From 1460957ff1243b67e5342cebd26e473c105f7b1b Mon Sep 17 00:00:00 2001 From: dianqk Date: Fri, 16 May 2025 08:34:16 +0800 Subject: [PATCH 17/21] Update to LLVM 20.1.5 (cherry picked from commit c7a2694a803513d09c96dbaf3f3a7b099d93cec6) --- src/llvm-project | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/llvm-project b/src/llvm-project index 8448283b4bd34..c1118fdbb3024 160000 --- a/src/llvm-project +++ b/src/llvm-project @@ -1 +1 @@ -Subproject commit 8448283b4bd34ea00d76fd4f18ec730b549d6e1d +Subproject commit c1118fdbb3024157df7f4cfe765f2b0b4339e8a2 From f84d99cf09c26eee762c0b712628378b1be89d7a Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Tue, 20 May 2025 21:53:57 +0200 Subject: [PATCH 18/21] x86 (32/64): go back to passing SIMD vectors by-ptr (cherry picked from commit 321db85fb4fa58fc03e86a3a7a901ff7fb624583) --- compiler/rustc_target/src/callconv/mod.rs | 27 ++++--------------- tests/codegen/abi-x86-sse.rs | 5 ++-- .../simd-intrinsic-transmute-array.rs | 20 ++++---------- tests/codegen/simd/packed-simd.rs | 16 ++++++----- 4 files changed, 22 insertions(+), 46 deletions(-) diff --git a/compiler/rustc_target/src/callconv/mod.rs b/compiler/rustc_target/src/callconv/mod.rs index ae366e29e3232..3d67872dab691 100644 --- a/compiler/rustc_target/src/callconv/mod.rs +++ b/compiler/rustc_target/src/callconv/mod.rs @@ -7,7 +7,7 @@ use rustc_abi::{ }; use rustc_macros::HashStable_Generic; -use crate::spec::{HasTargetSpec, HasWasmCAbiOpt, HasX86AbiOpt, RustcAbi, WasmCAbi}; +use crate::spec::{HasTargetSpec, HasWasmCAbiOpt, HasX86AbiOpt, WasmCAbi}; mod aarch64; mod amdgpu; @@ -732,24 +732,6 @@ impl<'a, Ty> FnAbi<'a, Ty> { _ => {} }; - // Decides whether we can pass the given SIMD argument via `PassMode::Direct`. - // May only return `true` if the target will always pass those arguments the same way, - // no matter what the user does with `-Ctarget-feature`! In other words, whatever - // target features are required to pass a SIMD value in registers must be listed in - // the `abi_required_features` for the current target and ABI. - let can_pass_simd_directly = |arg: &ArgAbi<'_, Ty>| match &*spec.arch { - // On x86, if we have SSE2 (which we have by default for x86_64), we can always pass up - // to 128-bit-sized vectors. - "x86" if spec.rustc_abi == Some(RustcAbi::X86Sse2) => arg.layout.size.bits() <= 128, - "x86_64" if spec.rustc_abi != Some(RustcAbi::X86Softfloat) => { - // FIXME once https://github.com/bytecodealliance/wasmtime/issues/10254 is fixed - // accept vectors up to 128bit rather than vectors of exactly 128bit. - arg.layout.size.bits() == 128 - } - // So far, we haven't implemented this logic for any other target. - _ => false, - }; - for (arg_idx, arg) in self .args .iter_mut() @@ -849,9 +831,10 @@ impl<'a, Ty> FnAbi<'a, Ty> { // target feature sets. Some more information about this // issue can be found in #44367. // - // Note that the intrinsic ABI is exempt here as those are not - // real functions anyway, and the backend expects very specific types. - if spec.simd_types_indirect && !can_pass_simd_directly(arg) { + // We *could* do better in some cases, e.g. on x86_64 targets where SSE2 is + // required. However, it turns out that that makes LLVM worse at optimizing this + // code, so we pass things indirectly even there. See #139029 for more on that. + if spec.simd_types_indirect { arg.make_indirect(); } } diff --git a/tests/codegen/abi-x86-sse.rs b/tests/codegen/abi-x86-sse.rs index 837bf6134b01c..90757e601af41 100644 --- a/tests/codegen/abi-x86-sse.rs +++ b/tests/codegen/abi-x86-sse.rs @@ -27,8 +27,9 @@ trait Copy {} #[repr(simd)] pub struct Sse([f32; 4]); -// x86-64: <4 x float> @sse_id(<4 x float> {{[^,]*}}) -// x86-32: <4 x float> @sse_id(<4 x float> {{[^,]*}}) +// FIXME: due to #139029 we are passing them all indirectly. +// x86-64: void @sse_id(ptr{{( [^,]*)?}} sret([16 x i8]){{( .*)?}}, ptr{{( [^,]*)?}}) +// x86-32: void @sse_id(ptr{{( [^,]*)?}} sret([16 x i8]){{( .*)?}}, ptr{{( [^,]*)?}}) // x86-32-nosse: void @sse_id(ptr{{( [^,]*)?}} sret([16 x i8]){{( .*)?}}, ptr{{( [^,]*)?}}) #[no_mangle] pub fn sse_id(x: Sse) -> Sse { diff --git a/tests/codegen/simd-intrinsic/simd-intrinsic-transmute-array.rs b/tests/codegen/simd-intrinsic/simd-intrinsic-transmute-array.rs index d3853361de9ed..977bf3379b7dd 100644 --- a/tests/codegen/simd-intrinsic/simd-intrinsic-transmute-array.rs +++ b/tests/codegen/simd-intrinsic/simd-intrinsic-transmute-array.rs @@ -1,14 +1,8 @@ // //@ compile-flags: -C no-prepopulate-passes -// LLVM IR isn't very portable and the one tested here depends on the ABI -// which is different between x86 (where we use SSE registers) and others. -// `x86-64` and `x86-32-sse2` are identical, but compiletest does not support -// taking the union of multiple `only` annotations. -//@ revisions: x86-64 x86-32-sse2 other -//@[x86-64] only-x86_64 -//@[x86-32-sse2] only-rustc_abi-x86-sse2 -//@[other] ignore-rustc_abi-x86-sse2 -//@[other] ignore-x86_64 +// 32bit MSVC does not align things properly so we suppress high alignment annotations (#112480) +//@ ignore-i686-pc-windows-msvc +//@ ignore-i686-pc-windows-gnu #![crate_type = "lib"] #![allow(non_camel_case_types)] @@ -47,9 +41,7 @@ pub fn build_array_s(x: [f32; 4]) -> S<4> { #[no_mangle] pub fn build_array_transmute_s(x: [f32; 4]) -> S<4> { // CHECK: %[[VAL:.+]] = load <4 x float>, ptr %x, align [[ARRAY_ALIGN]] - // x86-32: ret <4 x float> %[[VAL:.+]] - // x86-64: ret <4 x float> %[[VAL:.+]] - // other: store <4 x float> %[[VAL:.+]], ptr %_0, align [[VECTOR_ALIGN]] + // CHECK: store <4 x float> %[[VAL:.+]], ptr %_0, align [[VECTOR_ALIGN]] unsafe { std::mem::transmute(x) } } @@ -64,8 +56,6 @@ pub fn build_array_t(x: [f32; 4]) -> T { #[no_mangle] pub fn build_array_transmute_t(x: [f32; 4]) -> T { // CHECK: %[[VAL:.+]] = load <4 x float>, ptr %x, align [[ARRAY_ALIGN]] - // x86-32: ret <4 x float> %[[VAL:.+]] - // x86-64: ret <4 x float> %[[VAL:.+]] - // other: store <4 x float> %[[VAL:.+]], ptr %_0, align [[VECTOR_ALIGN]] + // CHECK: store <4 x float> %[[VAL:.+]], ptr %_0, align [[VECTOR_ALIGN]] unsafe { std::mem::transmute(x) } } diff --git a/tests/codegen/simd/packed-simd.rs b/tests/codegen/simd/packed-simd.rs index a27d5e3af452a..73e0d29d7d67c 100644 --- a/tests/codegen/simd/packed-simd.rs +++ b/tests/codegen/simd/packed-simd.rs @@ -30,16 +30,18 @@ fn load(v: PackedSimd) -> FullSimd { } } -// CHECK-LABEL: define <3 x float> @square_packed_full(ptr{{[a-z_ ]*}} align 4 {{[^,]*}}) +// CHECK-LABEL: square_packed_full +// CHECK-SAME: ptr{{[a-z_ ]*}} sret([[RET_TYPE:[^)]+]]) [[RET_ALIGN:align (8|16)]]{{[^%]*}} [[RET_VREG:%[_0-9]*]] +// CHECK-SAME: ptr{{[a-z_ ]*}} align 4 #[no_mangle] pub fn square_packed_full(x: PackedSimd) -> FullSimd { - // The unoptimized version of this is not very interesting to check - // since `load` does not get inlined. - // opt3-NEXT: start: - // opt3-NEXT: load <3 x float> + // CHECK-NEXT: start + // noopt: alloca [[RET_TYPE]], [[RET_ALIGN]] + // CHECK: load <3 x float> let x = load(x); - // opt3-NEXT: [[VREG:%[a-z0-9_]+]] = fmul <3 x float> - // opt3-NEXT: ret <3 x float> [[VREG:%[a-z0-9_]+]] + // CHECK: [[VREG:%[a-z0-9_]+]] = fmul <3 x float> + // CHECK-NEXT: store <3 x float> [[VREG]], ptr [[RET_VREG]], [[RET_ALIGN]] + // CHECK-NEXT: ret void unsafe { intrinsics::simd_mul(x, x) } } From 490bc3e1543b92f01123f678ef7304dba50c9eb0 Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Sun, 1 Jun 2025 10:42:37 +0200 Subject: [PATCH 19/21] abi_check: tweak some comments (cherry picked from commit f01bbfc5e78b4abefe5b386dcf8e83ced4cbe664) --- .../src/mono_checks/abi_check.rs | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/compiler/rustc_monomorphize/src/mono_checks/abi_check.rs b/compiler/rustc_monomorphize/src/mono_checks/abi_check.rs index cfeaee0777610..71aba1e60647b 100644 --- a/compiler/rustc_monomorphize/src/mono_checks/abi_check.rs +++ b/compiler/rustc_monomorphize/src/mono_checks/abi_check.rs @@ -35,8 +35,6 @@ fn do_check_simd_vector_abi<'tcx>( is_call: bool, loc: impl Fn() -> (Span, HirId), ) { - // We check this on all functions, including those using the "Rust" ABI. - // For the "Rust" ABI it would be a bug if the lint ever triggered, but better safe than sorry. let feature_def = tcx.sess.target.features_for_correct_vector_abi(); let codegen_attrs = tcx.codegen_fn_attrs(def_id); let have_feature = |feat: Symbol| { @@ -123,8 +121,9 @@ fn do_check_wasm_abi<'tcx>( is_call: bool, loc: impl Fn() -> (Span, HirId), ) { - // Only proceed for `extern "C" fn` on wasm32-unknown-unknown (same check as what `adjust_for_foreign_abi` uses to call `compute_wasm_abi_info`), - // and only proceed if `wasm_c_abi_opt` indicates we should emit the lint. + // Only proceed for `extern "C" fn` on wasm32-unknown-unknown (same check as what + // `adjust_for_foreign_abi` uses to call `compute_wasm_abi_info`), and only proceed if + // `wasm_c_abi_opt` indicates we should emit the lint. if !(tcx.sess.target.arch == "wasm32" && tcx.sess.target.os == "unknown" && tcx.wasm_c_abi_opt() == WasmCAbi::Legacy { with_lint: true } @@ -157,8 +156,15 @@ fn check_instance_abi<'tcx>(tcx: TyCtxt<'tcx>, instance: Instance<'tcx>) { else { // An error will be reported during codegen if we cannot determine the ABI of this // function. + tcx.dcx().delayed_bug("ABI computation failure should lead to compilation failure"); return; }; + // Unlike the call-site check, we do also check "Rust" ABI functions here. + // This should never trigger, *except* if we start making use of vector registers + // for the "Rust" ABI and the user disables those vector registers (which should trigger a + // warning as that's clearly disabling a "required" target feature for this target). + // Using such a function is where disabling the vector register actually can start leading + // to soundness issues, so erroring here seems good. let loc = || { let def_id = instance.def_id(); ( @@ -179,7 +185,8 @@ fn check_call_site_abi<'tcx>( loc: impl Fn() -> (Span, HirId) + Copy, ) { if callee.fn_sig(tcx).abi().is_rustic_abi() { - // we directly handle the soundness of Rust ABIs + // We directly handle the soundness of Rust ABIs -- so let's skip the majority of + // call sites to avoid a perf regression. return; } let typing_env = ty::TypingEnv::fully_monomorphized(); From 6f3443d5db099c112ebfeb746a11508b17b8e133 Mon Sep 17 00:00:00 2001 From: Folkert de Vries Date: Mon, 9 Jun 2025 21:55:17 +0200 Subject: [PATCH 20/21] use correct edition when warning for unsafe attributes If an attribute is re-emitted by a macro, the incorrect edition was used to emit warnings for unsafe attributes (cherry picked from commit 2c8257493da0e452c03f34cc6f409d98234746db) --- compiler/rustc_parse/src/validate_attr.rs | 7 ++++- .../unsafe-attr-edition-span.e2024.stderr | 24 +++++++++++++++++ tests/ui/editions/unsafe-attr-edition-span.rs | 27 +++++++++++++++++++ 3 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 tests/ui/editions/unsafe-attr-edition-span.e2024.stderr create mode 100644 tests/ui/editions/unsafe-attr-edition-span.rs diff --git a/compiler/rustc_parse/src/validate_attr.rs b/compiler/rustc_parse/src/validate_attr.rs index 378cbb846379d..555ab3cdb2b6e 100644 --- a/compiler/rustc_parse/src/validate_attr.rs +++ b/compiler/rustc_parse/src/validate_attr.rs @@ -180,9 +180,14 @@ pub fn check_attribute_safety( let diag_span = attr_item.span(); // Attributes can be safe in earlier editions, and become unsafe in later ones. + // + // Use the span of the attribute's name to determine the edition: the span of the + // attribute as a whole may be inaccurate if it was emitted by a macro. + // + // See https://github.com/rust-lang/rust/issues/142182. let emit_error = match unsafe_since { None => true, - Some(unsafe_since) => attr.span.edition() >= unsafe_since, + Some(unsafe_since) => path_span.edition() >= unsafe_since, }; if emit_error { diff --git a/tests/ui/editions/unsafe-attr-edition-span.e2024.stderr b/tests/ui/editions/unsafe-attr-edition-span.e2024.stderr new file mode 100644 index 0000000000000..28871a1cce4fe --- /dev/null +++ b/tests/ui/editions/unsafe-attr-edition-span.e2024.stderr @@ -0,0 +1,24 @@ +error: unsafe attribute used without unsafe + --> $DIR/unsafe-attr-edition-span.rs:21:3 + | +LL | #[no_mangle] + | ^^^^^^^^^ usage of unsafe attribute + | +help: wrap the attribute in `unsafe(...)` + | +LL | #[unsafe(no_mangle)] + | +++++++ + + +error: unsafe attribute used without unsafe + --> $DIR/unsafe-attr-edition-span.rs:25:7 + | +LL | #[no_mangle] + | ^^^^^^^^^ usage of unsafe attribute + | +help: wrap the attribute in `unsafe(...)` + | +LL | #[unsafe(no_mangle)] + | +++++++ + + +error: aborting due to 2 previous errors + diff --git a/tests/ui/editions/unsafe-attr-edition-span.rs b/tests/ui/editions/unsafe-attr-edition-span.rs new file mode 100644 index 0000000000000..bc44b34063ccf --- /dev/null +++ b/tests/ui/editions/unsafe-attr-edition-span.rs @@ -0,0 +1,27 @@ +// Tests that the correct span is used to determine the edition of an attribute that was safe to use +// in earlier editions, but has become `unsafe` in later editions. +// +// Determining the correct edition is non-trivial because of macro expansion. For instance, +// the `thread_local!` macro (defined in std and hence using the most recent edition) parses the +// attribute, and then re-emits it. Therefore, the span of the `#` token starting the +// `#[no_mangle]` attribute has std's edition, while the attribute name has the edition of this +// file, which may be different. + +//@ revisions: e2015 e2018 e2021 e2024 + +//@[e2018] edition:2018 +//@[e2021] edition:2021 +//@[e2024] edition:2024 +// +//@[e2015] check-pass +//@[e2018] check-pass +//@[e2021] check-pass +#![crate_type = "lib"] + +#[no_mangle] //[e2024]~ ERROR unsafe attribute used without unsafe +static TEST_OUTSIDE: usize = 0; + +thread_local! { + #[no_mangle]//[e2024]~ ERROR unsafe attribute used without unsafe + static TEST: usize = 0; +} From 0e928cab5c1bb6146ac8377c761527373acb866e Mon Sep 17 00:00:00 2001 From: Amanieu d'Antras Date: Wed, 18 Jun 2025 21:07:53 +0100 Subject: [PATCH 21/21] Backport rust-lang/stdarch#1818 for 1.88 --- library/stdarch | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/stdarch b/library/stdarch index f1c1839c0deb9..2e155e6aa4570 160000 --- a/library/stdarch +++ b/library/stdarch @@ -1 +1 @@ -Subproject commit f1c1839c0deb985a9f98cbd6b38a6d43f2df6157 +Subproject commit 2e155e6aa45705470146c3e2ecd51a45fff9c1e8