From 8e4d447d14d18e6ef2358278c91ea31d5654b898 Mon Sep 17 00:00:00 2001 From: Transaction Science Date: Sun, 25 Oct 2026 22:04:23 -0400 Subject: [PATCH 1/5] clippy 1.99: fix what Rust 1.99.1's clippy newly reports, before the pin moves These are the only lints clippy 1.99.1 reports that clippy 1.98.0 does not. Every cargo root in the tree was compared on both toolchains (the evidence is in the next commit). 1.98.0's clippy also builds every target of the fixed code, and reports nothing it did not report before, so this commit stands under either pin. What changed, and why - clippy::assert_is_empty is new in 1.99. 36 sites, all in test code (#[cfg(test)] modules; no lib or bin build reports any): aac-core and access-core, 23 sites; openpay's op-crypto-extra, op-emv, op-iso20022, op-reconciliation, op-routing, op-screening, op-settlement and op-tax, 13 sites. `assert!(x.is_empty())` becomes `assert_eq!(x, [] as [T; 0])`, `assert_ne!` for the negation, or `""` for strings, so a failure prints the value instead of only "false". aac-core and access-core are `#![deny(warnings)]` and `#![deny(clippy::all)]`, so without this their clippy run fails on 1.99.1. Judgment call: at 18 of the 36 sites, clippy's own "MachineApplicable" suggestion does not compile. It names local types by crate-relative path (`finder::Found`, which is not in scope in a test module), or offers a bare `[]` whose element type cannot be inferred. So each site names its element type as its own module sees it (`[] as [Found; 0]`, `[] as [f64; 0]`). The four lines rustfmt would wrap are wrapped the way rustfmt wraps them. - clippy::approx_constant (deny-by-default) now knows EULER_GAMMA and GOLDEN_RATIO. Both are in std::f{32,64}::consts and stable since 1.94; the jouleclaw workspace MSRV is 1.97. - jouleclaw-omni, inference/architecture/mochi.rs: `1.618_034` becomes `std::f32::consts::GOLDEN_RATIO`. They are the same f32 (1.61803400516510009765625), so the latents do not change. This file is in standards-build.yml's macOS gate (`cargo clippy -p jouleclaw-omni --features metal -- -D warnings`), which fails on 1.99.1 without the fix. - jouleclaw-outlier, c_factor: `0.5772156649` becomes `std::f64::consts::EULER_GAMMA`. Judgment call: the literal was truncated, so c(n) moves by 3.1e-12. The normalisation in the isolation-forest paper uses the Euler-Mascheroni constant itself, so this is the intended value. No other crate and no committed vector reads these scores, and the crate's tests pass unchanged. - smart-byte-rs/Cargo.lock: async-trait 0.1.89 becomes 0.1.92, which adds syn 3.0.9 as its dependency. 0.1.89 put `#[must_use]` on every trait method it generates. clippy 1.99 now counts the returned `Pin>` as must_use already, so clippy::double_must_use fired at 9 #[async_trait] trait methods. The attribute there is the macro's, not ours, so the right fix is the macro: 0.1.92 no longer emits it, and every other lockfile in this tree already uses 0.1.92. A narrow `cargo update -p async-trait --precise 0.1.92` also moved data-encoding-macro-internal (which accepts syn >=1, <3) from syn 2 to syn 1. That was put back to syn 2.0.117, as on main, so the lock changes only what the bump needs. `cargo update --workspace --locked` and scripts/check-lockfiles.sh accept it. Left as they are - openpay op-dispute-evidence evidence.rs:92 (clippy::double_must_use) is reported on 1.98.0 too. Only the message's wording changed in 1.99. Co-Authored-By: Claude Opus 5.5 --- aac/aac-rs/crates/aac-core/src/analytics.rs | 2 +- aac/aac-rs/crates/aac-core/src/finder.rs | 9 ++++++--- aac/aac-rs/crates/aac-core/src/ja_inflect.rs | 2 +- .../crates/aac-core/src/keyboard/by_ear.rs | 4 ++-- .../crates/aac-core/src/keyboard/tests.rs | 2 +- aac/aac-rs/crates/aac-core/src/obf.rs | 12 +++++++++--- aac/aac-rs/crates/aac-core/src/prediction.rs | 4 ++-- aac/aac-rs/crates/aac-core/src/print/tests.rs | 4 ++-- aac/aac-rs/crates/aac-core/src/symbols/mod.rs | 4 ++-- aac/aac-rs/crates/aac-core/src/usage.rs | 2 +- aac/aac-rs/crates/aac-core/src/wordsplit.rs | 2 +- aac/aac-rs/crates/access-core/src/adaptation.rs | 7 +++++-- .../crates/access-core/src/press_timing.rs | 4 ++-- .../src/inference/architecture/mochi.rs | 2 +- .../crates/jouleclaw-outlier/src/lib.rs | 2 +- openpay/crates/op-crypto-extra/src/htlc.rs | 2 +- openpay/crates/op-crypto-extra/src/stable.rs | 2 +- openpay/crates/op-emv/src/stream.rs | 2 +- openpay/crates/op-iso20022/src/bah.rs | 2 +- openpay/crates/op-iso20022/src/statement.rs | 2 +- openpay/crates/op-reconciliation/src/matcher.rs | 6 +++--- openpay/crates/op-routing/src/lcr.rs | 2 +- openpay/crates/op-screening/src/screener.rs | 2 +- openpay/crates/op-settlement/src/batch.rs | 2 +- openpay/crates/op-settlement/src/store.rs | 2 +- openpay/crates/op-tax/src/nexus.rs | 2 +- smart-byte/smart-byte-rs/Cargo.lock | 17 ++++++++++++++--- 27 files changed, 64 insertions(+), 41 deletions(-) diff --git a/aac/aac-rs/crates/aac-core/src/analytics.rs b/aac/aac-rs/crates/aac-core/src/analytics.rs index 7cd4fcfd7..6619dfbed 100644 --- a/aac/aac-rs/crates/aac-core/src/analytics.rs +++ b/aac/aac-rs/crates/aac-core/src/analytics.rs @@ -277,6 +277,6 @@ mod tests { assert!(coverage.core_words_used >= 3); assert!(coverage.coverage_percent > 0.0); - assert!(!coverage.unused_words.is_empty()); + assert_ne!(coverage.unused_words, [] as [String; 0]); } } diff --git a/aac/aac-rs/crates/aac-core/src/finder.rs b/aac/aac-rs/crates/aac-core/src/finder.rs index aa704ee94..efbd25934 100644 --- a/aac/aac-rs/crates/aac-core/src/finder.rs +++ b/aac/aac-rs/crates/aac-core/src/finder.rs @@ -1333,7 +1333,10 @@ mod tests { assert_eq!(second.len(), 3); assert_eq!(second.presses.iter().map(|p| p.board).collect::>(), [w.home.id, w.needs.id, w.drinks.id]); // A word on no board is not found; one no press leads to has no way. - assert!(f.find("zorp", &[w.home.id], Reach::default()).is_empty()); + assert_eq!( + f.find("zorp", &[w.home.id], Reach::default()), + [] as [Found; 0] + ); let lonely = f.find("lonely", &[w.home.id], Reach::default()); assert_eq!(lonely.len(), 1); assert_eq!(lonely[0].way, None); @@ -1427,7 +1430,7 @@ mod tests { assert_eq!(got("wat"), [("I want water".into(), Match::Start)]); assert_eq!(got("ate"), [("I want water".into(), Match::Inside)]); // One letter is never found inside a word. - assert!(got("t").is_empty()); + assert_eq!(got("t"), [] as [(String, Match); 0]); } #[test] @@ -1459,7 +1462,7 @@ mod tests { } // A Hangul syllable is its jamo, so one still being typed is found. assert!(search_key("물").starts_with(&search_key("무"))); - assert!(!search_key("물").is_empty()); + assert_ne!(search_key("물"), ""); // Chinese is as written. assert_ne!(search_key("说"), search_key("說")); } diff --git a/aac/aac-rs/crates/aac-core/src/ja_inflect.rs b/aac/aac-rs/crates/aac-core/src/ja_inflect.rs index 022fd257c..cbd4fd233 100644 --- a/aac/aac-rs/crates/aac-core/src/ja_inflect.rs +++ b/aac/aac-rs/crates/aac-core/src/ja_inflect.rs @@ -546,6 +546,6 @@ mod tests { } // Never the word itself, and never a bare stem as a verb. assert!(!dictionary_forms("たべる", kinds).contains(&"たべる".to_string())); - assert!(dictionary_forms("いき", kinds).is_empty()); + assert_eq!(dictionary_forms("いき", kinds), [] as [String; 0]); } } diff --git a/aac/aac-rs/crates/aac-core/src/keyboard/by_ear.rs b/aac/aac-rs/crates/aac-core/src/keyboard/by_ear.rs index 98b3e6819..defbc2023 100644 --- a/aac/aac-rs/crates/aac-core/src/keyboard/by_ear.rs +++ b/aac/aac-rs/crates/aac-core/src/keyboard/by_ear.rs @@ -388,7 +388,7 @@ mod tests { // Vietnamese: a vowel takes its five tones; a consonant none. assert_eq!(then_for("vi", "a").len(), 5); assert!(then_for("vi", "an").is_empty() || then_for("vi", "an").len() == 5); - assert!(then_for("en", "a").is_empty()); + assert_eq!(then_for("en", "a"), [] as [Item; 0]); // Kana: its small and voiced forms, then the katakana of each; // Ethiopic: the other orders. let form = |f: &str| Item::Form(f.into()); @@ -397,7 +397,7 @@ mod tests { // has a name. assert_eq!(then_for("sv", "e"), vec![form("é")]); assert_eq!(then_for("sv", "E"), vec![form("é")]); - assert!(then_for("sv", "a").is_empty()); + assert_eq!(then_for("sv", "a"), [] as [Item; 0]); assert!(letter_groups("fr", 5).last().unwrap().contains(&letter("'"))); assert!(!letter_groups("de", 5).last().unwrap().contains(&letter("'"))); assert_eq!(then_for("am", "ቀ").len(), 6 + 5); diff --git a/aac/aac-rs/crates/aac-core/src/keyboard/tests.rs b/aac/aac-rs/crates/aac-core/src/keyboard/tests.rs index 27d63e7d2..18e4e3e18 100644 --- a/aac/aac-rs/crates/aac-core/src/keyboard/tests.rs +++ b/aac/aac-rs/crates/aac-core/src/keyboard/tests.rs @@ -33,7 +33,7 @@ fn places_of(page: &Page, action: &KeyAction) -> Vec<(u16, u16)> { fn every_row_covers_the_whole_grid() { for kb in all() { for page in &kb.pages { - assert!(!page.rows.is_empty()); + assert_ne!(page.rows, [] as [Vec; 0]); for (r, row) in page.rows.iter().enumerate() { let covered: u16 = row.iter().map(|k| k.span).sum(); assert_eq!( diff --git a/aac/aac-rs/crates/aac-core/src/obf.rs b/aac/aac-rs/crates/aac-core/src/obf.rs index f110a092e..5f8592e1a 100644 --- a/aac/aac-rs/crates/aac-core/src/obf.rs +++ b/aac/aac-rs/crates/aac-core/src/obf.rs @@ -2451,7 +2451,7 @@ mod tests { let v = to_obf_with(&sample_board(), &ObfExportOptions { sprites: sprites(), ..ObfExportOptions::default() }); assert_eq!(v["license"]["type"], "private"); let images = v["images"].as_array().unwrap(); - assert!(!images.is_empty()); + assert_ne!(images.as_slice(), [] as [Value; 0]); for img in images { let set = img["symbol"]["set"].as_str().unwrap(); let info = set_info(SymbolSet::ALL.into_iter().find(|s| s.as_str() == set).unwrap()); @@ -2487,7 +2487,10 @@ mod tests { assert!(bare["images"].as_array().unwrap().iter().all(|img| img.get("data").is_none() && img["width"].is_u64())); // Words only: no pictures. let none = to_obf_with(&sample_board(), &ObfExportOptions { symbol_set: None, ..ObfExportOptions::default() }); - assert!(none["images"].as_array().unwrap().is_empty()); + assert_eq!( + none["images"].as_array().unwrap().as_slice(), + [] as [Value; 0] + ); } #[test] @@ -2762,7 +2765,10 @@ mod tests { // Without the bytes, a recording is left out rather than named // where no other app can find it; the button speaks its words. let bare = to_obf(&board); - assert!(bare["sounds"].as_array().unwrap().is_empty()); + assert_eq!( + bare["sounds"].as_array().unwrap().as_slice(), + [] as [Value; 0] + ); assert!(button(&bare, "love").get("sound_id").is_none()); assert!(button(&bare, "Rex").get("image_id").is_none()); } diff --git a/aac/aac-rs/crates/aac-core/src/prediction.rs b/aac/aac-rs/crates/aac-core/src/prediction.rs index e2b484e59..7bf8fcd8a 100644 --- a/aac/aac-rs/crates/aac-core/src/prediction.rs +++ b/aac/aac-rs/crates/aac-core/src/prediction.rs @@ -1384,7 +1384,7 @@ mod tests { let ctx = CommunicationContext::now(); let preds = engine.predict("hello", &ctx, 10); assert!(preds.is_empty()); - assert!(engine.predict_letters("hel", 5).is_empty()); + assert_eq!(engine.predict_letters("hel", 5), [] as [LetterCandidate; 0]); } #[test] @@ -1485,7 +1485,7 @@ mod tests { .unwrap(); let mut engine = PredictionEngine::new(); engine.set_language("gu", None).unwrap(); - assert!(engine.language_status().notes.is_empty()); + assert_eq!(engine.language_status().notes, [] as [String; 0]); assert_eq!(engine.language_status_in(&index).notes, vec!["no source covers it yet".to_string()]); assert_eq!(PredictionLanguageStatus::from_index(&index, "gu").notes, engine.language_status_in(&index).notes); } diff --git a/aac/aac-rs/crates/aac-core/src/print/tests.rs b/aac/aac-rs/crates/aac-core/src/print/tests.rs index 3ec6d3c6d..b5a66449e 100644 --- a/aac/aac-rs/crates/aac-core/src/print/tests.rs +++ b/aac/aac-rs/crates/aac-core/src/print/tests.rs @@ -195,7 +195,7 @@ fn hidden_and_blank_cells_print_as_empty_places() { only_cat.cells.retain(|c| c.id == hidden); map.insert(id, only_cat); let plan = plan(&map, Some(id), Some(&[id]), PrintKind::Boards, PrintSettings::default(), Some(SymbolSet::Mulberry), None).unwrap(); - assert!(plan.symbol_sets.is_empty()); + assert_eq!(plan.symbol_sets, [] as [SymbolSet; 0]); assert!(!plan.pages.contains(&PageKind::Credits)); } @@ -206,7 +206,7 @@ fn one_board_prints_on_one_page_with_its_credits_at_the_foot() { assert_eq!(plan.pages.len(), 1); assert!(matches!(&plan.pages[0], PageKind::Board { board, part: 1, parts: 1, .. } if *board == home)); assert!(plan.credits_at_foot); - assert!(!plan.symbol_sets.is_empty()); + assert_ne!(plan.symbol_sets, [] as [SymbolSet; 0]); // Feelings is not printed: its link has no page. assert_eq!(plan.page_of(feelings), None); assert_eq!(plan.go_to(&CellAction::Navigate(feelings)), None); diff --git a/aac/aac-rs/crates/aac-core/src/symbols/mod.rs b/aac/aac-rs/crates/aac-core/src/symbols/mod.rs index 734b90dd1..cfe187c50 100644 --- a/aac/aac-rs/crates/aac-core/src/symbols/mod.rs +++ b/aac/aac-rs/crates/aac-core/src/symbols/mod.rs @@ -591,7 +591,7 @@ mod tests { fn the_picker_finds_symbols_in_english_and_in_the_persons_language() { let dog = search_concepts("dog", "en-US", 10); assert_eq!(dog.first(), Some(&"dog"), "{dog:?}"); - assert!(search_concepts(" ", "en", 10).is_empty()); + assert_eq!(search_concepts(" ", "en", 10), [] as [&str; 0]); assert!(search_concepts("d", "en", 5).len() <= 5); assert!(search_concepts("e", "en", 1000).iter().all(|k| !k.contains(':')), "no actions or arrows"); // Spanish: "perro" finds the dog. @@ -687,7 +687,7 @@ mod tests { #[test] #[cfg(not(feature = "nc-symbols"))] fn a_build_without_the_optional_sets_knows_none() { - assert!(SymbolSet::NONCOMMERCIAL.is_empty()); + assert_eq!(SymbolSet::NONCOMMERCIAL.as_slice(), []); assert_eq!(SymbolSet::EVERY, SymbolSet::ALL); assert!(concepts().all(|(_, sets)| sets.keys().all(|s| SymbolSet::ALL.contains(s)))); for set in SymbolSet::ALL { diff --git a/aac/aac-rs/crates/aac-core/src/usage.rs b/aac/aac-rs/crates/aac-core/src/usage.rs index dac427fe9..bd20174c3 100644 --- a/aac/aac-rs/crates/aac-core/src/usage.rs +++ b/aac/aac-rs/crates/aac-core/src/usage.rs @@ -326,7 +326,7 @@ mod tests { }) .collect(); let started = std::time::Instant::now(); - assert!(new_in(&long, long.clone()).is_empty()); + assert_eq!(new_in(&long, long.clone()), [] as [Selection; 0]); assert!(started.elapsed() < std::time::Duration::from_secs(2), "{:?}", started.elapsed()); let mut mine: Modelled = [("a".to_string(), 3), ("b".to_string(), 1)].into(); merge_modelled(&mut mine, &[("a".to_string(), 2), ("c".to_string(), 4)].into()); diff --git a/aac/aac-rs/crates/aac-core/src/wordsplit.rs b/aac/aac-rs/crates/aac-core/src/wordsplit.rs index 5d58cbc37..3ed105479 100644 --- a/aac/aac-rs/crates/aac-core/src/wordsplit.rs +++ b/aac/aac-rs/crates/aac-core/src/wordsplit.rs @@ -285,7 +285,7 @@ mod tests { assert_eq!(s.words, ["I", "want", "wat"]); assert!(s.open); assert!(!split_words("I want ", false).open); - assert!(split_words("", false).words.is_empty()); + assert_eq!(split_words("", false).words, [] as [String; 0]); } #[test] diff --git a/aac/aac-rs/crates/access-core/src/adaptation.rs b/aac/aac-rs/crates/access-core/src/adaptation.rs index 55335a878..8e0a2bace 100644 --- a/aac/aac-rs/crates/access-core/src/adaptation.rs +++ b/aac/aac-rs/crates/access-core/src/adaptation.rs @@ -271,7 +271,10 @@ mod tests { fn uniform_is_uniform() { let p = UniformPrior.probabilities(&opts(), &PriorContext::default()); assert_eq!(p, vec![1.0 / 3.0; 3]); - assert!(UniformPrior.probabilities(&[], &PriorContext::default()).is_empty()); + assert_eq!( + UniformPrior.probabilities(&[], &PriorContext::default()), + [] as [f64; 0] + ); } #[test] @@ -288,7 +291,7 @@ mod tests { fn normalize_handles_garbage() { assert_eq!(normalize(&[f64::NAN, -1.0, 0.0]), vec![1.0 / 3.0; 3]); assert_eq!(normalize(&[2.0, f64::INFINITY, 2.0]), vec![0.5, 0.0, 0.5]); - assert!(normalize(&[]).is_empty()); + assert_eq!(normalize(&[]), [] as [f64; 0]); } #[test] diff --git a/aac/aac-rs/crates/access-core/src/press_timing.rs b/aac/aac-rs/crates/access-core/src/press_timing.rs index 64478b15d..4ed3d2603 100644 --- a/aac/aac-rs/crates/access-core/src/press_timing.rs +++ b/aac/aac-rs/crates/access-core/src/press_timing.rs @@ -564,7 +564,7 @@ mod tests { m.complete_selection(); m.stage(&[900.0], true); m.abandon(); - assert!(m.staged().is_empty()); + assert_eq!(m.staged(), [] as [f64; 0]); for k in 0..3 { select(&mut m, 700.0 + f64::from(k)); } @@ -615,7 +615,7 @@ mod tests { fn nan_offsets_are_ignored() { let mut m = PressTimingModel::for_scan_interval(1000); m.stage(&[f64::NAN, f64::INFINITY], true); - assert!(m.staged().is_empty()); + assert_eq!(m.staged(), [] as [f64; 0]); m.learn_kept(&[f64::NAN]); assert_eq!(m.confirmed(), 0); } diff --git a/jouleclaw/jouleclaw-rs/crates/jouleclaw-omni/src/inference/architecture/mochi.rs b/jouleclaw/jouleclaw-rs/crates/jouleclaw-omni/src/inference/architecture/mochi.rs index 782eaf9f1..7a4842e09 100644 --- a/jouleclaw/jouleclaw-rs/crates/jouleclaw-omni/src/inference/architecture/mochi.rs +++ b/jouleclaw/jouleclaw-rs/crates/jouleclaw-omni/src/inference/architecture/mochi.rs @@ -259,7 +259,7 @@ impl MochiPipeline { let mut latent_data = vec![0.0f32; latent_size]; // Simple pseudo-random initialization using golden ratio hash for i in 0..latent_size { - let hash = ((i as f32 * 1.618_034) % 1.0) * 2.0 - 1.0; + let hash = ((i as f32 * std::f32::consts::GOLDEN_RATIO) % 1.0) * 2.0 - 1.0; latent_data[i] = hash * 0.1; } let latent_f16: Vec = latent_data.iter().map(|&v| half::f16::from_f32(v)).collect(); diff --git a/jouleclaw/jouleclaw-rs/crates/jouleclaw-outlier/src/lib.rs b/jouleclaw/jouleclaw-rs/crates/jouleclaw-outlier/src/lib.rs index 440adbd92..79fa6cb9d 100644 --- a/jouleclaw/jouleclaw-rs/crates/jouleclaw-outlier/src/lib.rs +++ b/jouleclaw/jouleclaw-rs/crates/jouleclaw-outlier/src/lib.rs @@ -310,7 +310,7 @@ fn c_factor(n: usize) -> f64 { return 0.0; } let n_f = n as f64; - 2.0 * ((n_f - 1.0).ln() + 0.5772156649) - (2.0 * (n_f - 1.0) / n_f) + 2.0 * ((n_f - 1.0).ln() + std::f64::consts::EULER_GAMMA) - (2.0 * (n_f - 1.0) / n_f) } impl Scored for IsolationForest { diff --git a/openpay/crates/op-crypto-extra/src/htlc.rs b/openpay/crates/op-crypto-extra/src/htlc.rs index df90881e6..bf15ec692 100644 --- a/openpay/crates/op-crypto-extra/src/htlc.rs +++ b/openpay/crates/op-crypto-extra/src/htlc.rs @@ -218,7 +218,7 @@ mod tests { c.state = s; // Round-trip via serde to confirm enum variants serialize. let s_json = serde_json::to_string(&c.state).unwrap(); - assert!(!s_json.is_empty()); + assert_ne!(s_json, ""); } } } diff --git a/openpay/crates/op-crypto-extra/src/stable.rs b/openpay/crates/op-crypto-extra/src/stable.rs index 3c8f1d021..d7d9c237a 100644 --- a/openpay/crates/op-crypto-extra/src/stable.rs +++ b/openpay/crates/op-crypto-extra/src/stable.rs @@ -289,7 +289,7 @@ mod tests { Stablecoin::Eurc, Stablecoin::Fdusd, ] { - assert!(!s.symbol().is_empty()); + assert_ne!(s.symbol(), ""); } } diff --git a/openpay/crates/op-emv/src/stream.rs b/openpay/crates/op-emv/src/stream.rs index f4db661d3..26a03265d 100644 --- a/openpay/crates/op-emv/src/stream.rs +++ b/openpay/crates/op-emv/src/stream.rs @@ -333,7 +333,7 @@ mod tests { assert_eq!(children[0].tag.0, 0x84); assert_eq!(children[0].value, &[0xAA, 0xBB]); assert_eq!(children[1].tag.0, 0xA5); - assert!(children[1].value.is_empty()); + assert_eq!(children[1].value, []); } #[test] diff --git a/openpay/crates/op-iso20022/src/bah.rs b/openpay/crates/op-iso20022/src/bah.rs index 9f93eb7bc..cce3f499f 100644 --- a/openpay/crates/op-iso20022/src/bah.rs +++ b/openpay/crates/op-iso20022/src/bah.rs @@ -267,7 +267,7 @@ mod tests { PartyIdentification::AbaRoutingNumber("026009593".into()), "pacs.008.001.08", ); - assert!(!bah.business_message_id.is_empty()); + assert_ne!(bah.business_message_id, ""); assert_eq!(bah.message_definition_id, "pacs.008.001.08"); assert!(bah.validate().is_ok()); } diff --git a/openpay/crates/op-iso20022/src/statement.rs b/openpay/crates/op-iso20022/src/statement.rs index b6da7145c..a0f5bf618 100644 --- a/openpay/crates/op-iso20022/src/statement.rs +++ b/openpay/crates/op-iso20022/src/statement.rs @@ -196,7 +196,7 @@ mod tests { fn non_camt053_message_yields_no_entries() { // Any other kind flattens to nothing rather than erroring. let admi = Message::Admi002(Box::default()); - assert!(admi.camt053_entries().is_empty()); + assert_eq!(admi.camt053_entries(), [] as [StatementEntry; 0]); } #[test] diff --git a/openpay/crates/op-reconciliation/src/matcher.rs b/openpay/crates/op-reconciliation/src/matcher.rs index ab566da59..37eb33b28 100644 --- a/openpay/crates/op-reconciliation/src/matcher.rs +++ b/openpay/crates/op-reconciliation/src/matcher.rs @@ -283,7 +283,7 @@ mod tests { TOL, ); assert_eq!(o.matched, 1); - assert!(o.discrepancies.is_empty()); + assert_eq!(o.discrepancies, [] as [Discrepancy; 0]); } #[test] @@ -308,7 +308,7 @@ mod tests { fn out_of_window_ledger_tx_not_flagged() { // tx effective beyond the window end → not our concern. let o = match_lines(&[], &[posted("ORD-X", 10, 2_000_000)], W, TOL); - assert!(o.discrepancies.is_empty()); + assert_eq!(o.discrepancies, [] as [Discrepancy; 0]); } #[test] @@ -355,7 +355,7 @@ mod tests { TOL, ); assert_eq!(o.fuzzy_matched, 1); - assert!(o.discrepancies.is_empty()); + assert_eq!(o.discrepancies, [] as [Discrepancy; 0]); } #[test] diff --git a/openpay/crates/op-routing/src/lcr.rs b/openpay/crates/op-routing/src/lcr.rs index 95d89399d..aefa33075 100644 --- a/openpay/crates/op-routing/src/lcr.rs +++ b/openpay/crates/op-routing/src/lcr.rs @@ -264,6 +264,6 @@ mod tests { #[test] fn empty_pool_returns_empty() { let router = LeastCostRouter::new(); - assert!(router.select(&intent(10_000)).is_empty()); + assert_eq!(router.select(&intent(10_000)), [] as [Route; 0]); } } diff --git a/openpay/crates/op-screening/src/screener.rs b/openpay/crates/op-screening/src/screener.rs index a73cc79f8..2cbd6666d 100644 --- a/openpay/crates/op-screening/src/screener.rs +++ b/openpay/crates/op-screening/src/screener.rs @@ -249,7 +249,7 @@ mod tests { .await .expect("ok"); assert_eq!(r.decision, ScreenDecision::Clear); - assert!(r.hits.is_empty()); + assert_eq!(r.hits, [] as [MatchScore; 0]); } #[tokio::test] diff --git a/openpay/crates/op-settlement/src/batch.rs b/openpay/crates/op-settlement/src/batch.rs index f3906aa4e..5dca6a93e 100644 --- a/openpay/crates/op-settlement/src/batch.rs +++ b/openpay/crates/op-settlement/src/batch.rs @@ -328,7 +328,7 @@ mod tests { fn opens_in_open_status() { let b = Batch::open(Currency::USD, PayoutRail::AchNacha, 1_000); assert_eq!(b.status.code(), "open"); - assert!(b.entries.is_empty()); + assert_eq!(b.entries, [] as [BatchEntry; 0]); } #[test] diff --git a/openpay/crates/op-settlement/src/store.rs b/openpay/crates/op-settlement/src/store.rs index c58f83f30..a0ab7c975 100644 --- a/openpay/crates/op-settlement/src/store.rs +++ b/openpay/crates/op-settlement/src/store.rs @@ -222,6 +222,6 @@ mod tests { Ok(()) }) .unwrap(); - assert!(store.list_open().unwrap().is_empty()); + assert_eq!(store.list_open().unwrap(), [] as [Batch; 0]); } } diff --git a/openpay/crates/op-tax/src/nexus.rs b/openpay/crates/op-tax/src/nexus.rs index 59f3ee8d3..18ad909bd 100644 --- a/openpay/crates/op-tax/src/nexus.rs +++ b/openpay/crates/op-tax/src/nexus.rs @@ -323,6 +323,6 @@ mod tests { let mut m = NexusMonitor::new(); // No thresholds configured. let events = m.record(&tx("WA", 1_000_000)); - assert!(events.is_empty()); + assert_eq!(events, [] as [NexusEvent; 0]); } } diff --git a/smart-byte/smart-byte-rs/Cargo.lock b/smart-byte/smart-byte-rs/Cargo.lock index 9a37b24bd..7ac35d21c 100644 --- a/smart-byte/smart-byte-rs/Cargo.lock +++ b/smart-byte/smart-byte-rs/Cargo.lock @@ -256,13 +256,13 @@ dependencies = [ [[package]] name = "async-trait" -version = "0.1.89" +version = "0.1.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" +checksum = "82f6aeea286b8eb4dd3431a1be1b59d290ace00f5bfd8e2a159bc2a05e2c1667" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 3.0.9", ] [[package]] @@ -6469,6 +6469,17 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "syn" +version = "3.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d78c8dee4c7bf0e14673097256fed6142ce9d3b85a408189d07482442145823b" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + [[package]] name = "syn-mid" version = "0.5.4" -- 2.54.0 (Apple Git-157) From 3b4b6059f5ac4f888079ab0aa864eaded3ae4999 Mon Sep 17 00:00:00 2001 From: Transaction Science Date: Sun, 25 Oct 2026 22:04:23 -0400 Subject: [PATCH 2/5] toolchain: Rust 1.98.0 -> 1.99.1 (change-controlled pin) Approved by the owner on 2026-10-22. Procedure: change `channel`, run `rustup show`, then run the pipeline. What changed - rust-toolchain.toml and eoc/eoc-rs/rust-toolchain.toml: channel "1.98.0" becomes "1.99.1". These are the only two pins in the tree, and the root one governs every other cargo root. - 64 workflows under .github/workflows (the forge's CI): every `Install Rust 1.98.0`, `rustup toolchain install / default / component add / target add --toolchain 1.98.0` and `--default-toolchain 1.98.0` now names 1.99.1 (409 lines). Two of those lines are in build steps rather than install steps (wai-conformance.yml's two `wasm32 (unix)` steps each `rustup target add --toolchain`), and they move with the rest: a target added to a toolchain that is not installed is an error. - Left as they are, because they record what was measured on 1.98.0: standards-build.yml's "Verified on a native arm64 Linux container (rustc 1.98.0)", wai-conformance.yml's note on Rust 1.98's LLD 22, and the "rustc 1.98.0 (example)" strings in receipts, vectors and docs. The one-codegen-unit workaround that note explains also stays. 1.99.1 ships LLD 23.1.1, which the note says links those inputs, but removing the workaround should wait for a run at the CI path on x86_64. Why - 1.98.0 has a P-critical miscompile, rust-lang/rust#161441 (I-miscompile, regression-from-stable-to-stable). rustc emits a vacant (null) method slot in a trait-object vtable, so a safe dynamic call jumps to address zero (undefined behaviour). RELEASES.md records the fix in 1.98.1 ("rustc: fix miscompilation in generating vtables"). - 1.99.1 is the current stable (channel manifest dated 2026-10-15; rustc 58cf8f9c3 2026-10-13). It also fixes 1.99.0's own regressions: wcslen on UEFI and embedded targets, x86_64 FFI `bool` returns, and the rust-lld rpath on macOS. Evidence All of it ran on the build host (dcharlot@100.100.141.123, aarch64-apple-darwin) through ~/kani-logs/remote/rb. Nothing was built on the dev Mac. - `rustup show`: the active toolchain is 1.99.1-aarch64-apple-darwin, "overridden by .../rust-toolchain.toml" (and by eoc/eoc-rs's own file there). rustc 1.99.1 (58cf8f9c3 2026-10-13), LLVM 23.1.1, clippy 0.1.99, rustfmt 1.10.0. The baseline is rustc 1.98.0 (88d9e12ae 2026-08-18). - Scope: every cargo root the pin governs, which is 46 of the 49 tracked lockfiles. The other three: two are vendored crates that resolve inside their parents, and wai/wai-rs/fuzz builds on its own pinned nightly. - Trees. The final tree is main at 96117c570 plus these two commits. Main moved four times while this ran, and each root's evidence comes from the newest tree it was run on: - 13 roots on the final tree: every root main changed after 1a465f23d, and every root that consumes such a crate by path. - 12 roots on 1a465f23d plus these two commits. - 7 roots on b16816671 plus these two commits. - 14 roots on aa61ab3b9 plus the pin change. For each root in the last three groups, checked with git diff and the lockfiles' path packages: none of its files, and no crate it reaches by path, differs on the final tree. - Each root got: (a) `cargo fmt --all -- --check` on the pin and on 1.98.0. The output is byte-identical in all 46. CI gates no root on rustfmt, and none is rustfmt-clean on main. (b) `cargo clippy --locked --keep-going --workspace --all-targets` on both toolchains, with the diagnostics compared line by line. After the previous commit, no root has a diagnostic that only 1.99.1 reports. openpay's one differing line is the same lint at the same site, reworded. (c) `cargo test --workspace --locked`. (d) the root's other CI steps that can run on this host: feature-gated tests, conformance suites, release-profile tests, the aac page-set checks, and every clippy -D warnings gate. The gates are standards-build's macOS meter and omni lints (jouleclaw-energy x2, jouleclaw-omni metal, jouleclaw-loader-gguf, jcp, proof, eoc, sandbox), wai-pack, wai-quantum-cli (default, no-default and metal), wai-quantum-service, wai-quantum-qpu and wai-quantum-desktop. - Totals: `cargo test --workspace` ran in 43 roots: 12,532 passed, 1 failed, 101 ignored. The other 3 roots are wasm32-only, and their `cargo build --release --target wasm32-unknown-unknown` passed. Every other CI step passed (62 of 62). - On the final tree: scripts/check-lockfiles.sh (cargo 1.99.1) found all 47 lockfiles current, and scripts/check-advisories.py passes. - tokio is 1.54.1 in every lockfile cargo reads. That is patched for both RUSTSEC-2026-0386 (>= 1.53.3) and RUSTSEC-2026-0384 (>= 1.54.1). The 1.53.1 in vendor/wtransport/Cargo.lock is the upstream file kept with the vendored source; cargo resolves wtransport inside its parents, and both gates skip that file. - What is not green, each one reproduced on 1.98.0: - wai-ops-gpu: under the debug profile, `corpus` trips the debug_assert at exec.rs:187 on both toolchains. CI runs it in release only, and that passes (6/6). - wai-ops: clippy::derived_hash_with_manual_eq (deny-by-default) on both toolchains. No CI job runs clippy there. - wai-vector/wasm: `--all-targets` cannot build the lib-test target (its own `panic_impl`) on either toolchain. `clippy --lib` for wasm32 reports 0 diagnostics on both. - eoc-cascade's hit_calibration_process_energy test reads real energy counters, and it fails some of the time on the loaded shared host. In interleaved runs each toolchain passed 18 of 20. The full eoc-rs suite passed on the final tree (741 passed). - Environment, not code: - wai-quantum-desktop embeds the Studio's build, so wai/quantum-studio was built first (`npm ci`, `node build.mjs`), as CI does. - Not covered here: the x86_64 and arm64 Linux and Windows legs; the GPU, NPU, FPGA, emulator and hardware-meter legs; wasm32 tests under Node, wasmtime and wasip2; and the fuzz job. Co-Authored-By: Claude Opus 5.5 --- .github/workflows/joule-code-conformance.yml | 24 +++--- .github/workflows/joule-moq-remote.yml | 8 +- .github/workflows/joule-moq-room.yml | 8 +- .../jouleclaw-public-surface-documented.yml | 8 +- .github/workflows/repo-checks.yml | 8 +- .github/workflows/wai-app.yml | 8 +- .github/workflows/wai-audit.yml | 8 +- .github/workflows/wai-breaking.yml | 16 ++-- .github/workflows/wai-byte-equality.yml | 14 ++-- .github/workflows/wai-catalogue.yml | 8 +- .github/workflows/wai-conformance.yml | 84 +++++++++---------- .github/workflows/wai-energy-receipts.yml | 8 +- .github/workflows/wai-examples.yml | 16 ++-- .github/workflows/wai-fleet.yml | 8 +- .github/workflows/wai-formal-verification.yml | 2 +- .github/workflows/wai-http.yml | 24 +++--- .github/workflows/wai-jpegai-e2e.yml | 8 +- .github/workflows/wai-key-proxy.yml | 8 +- .github/workflows/wai-ledger.yml | 8 +- .github/workflows/wai-neural-e2e.yml | 8 +- .github/workflows/wai-neural-gates.yml | 8 +- .github/workflows/wai-ops-differential.yml | 8 +- .github/workflows/wai-ops-gpu.yml | 10 +-- .github/workflows/wai-ops-npu.yml | 8 +- .github/workflows/wai-ops.yml | 24 +++--- .github/workflows/wai-pack.yml | 26 +++--- .github/workflows/wai-quantum-cli-release.yml | 8 +- .github/workflows/wai-quantum-cli.yml | 10 +-- .github/workflows/wai-quantum-contract.yml | 16 ++-- .github/workflows/wai-quantum-cuda.yml | 8 +- .../workflows/wai-quantum-desktop-release.yml | 8 +- .github/workflows/wai-quantum-docs.yml | 16 ++-- .github/workflows/wai-quantum-editors.yml | 10 +-- .github/workflows/wai-quantum-estimate.yml | 8 +- .github/workflows/wai-quantum-formats.yml | 18 ++-- .github/workflows/wai-quantum-fpga.yml | 8 +- .github/workflows/wai-quantum-hip.yml | 8 +- .github/workflows/wai-quantum-js-release.yml | 8 +- .github/workflows/wai-quantum-js.yml | 8 +- .github/workflows/wai-quantum-lang.yml | 18 ++-- .github/workflows/wai-quantum-metal.yml | 8 +- .github/workflows/wai-quantum-npu-cores.yml | 8 +- .github/workflows/wai-quantum-npu.yml | 8 +- .github/workflows/wai-quantum-opencl.yml | 8 +- .github/workflows/wai-quantum-pulse.yml | 26 +++--- .github/workflows/wai-quantum-py-release.yml | 8 +- .github/workflows/wai-quantum-py.yml | 8 +- .github/workflows/wai-quantum-qec.yml | 8 +- .github/workflows/wai-quantum-qpu.yml | 8 +- .github/workflows/wai-quantum-registry.yml | 18 ++-- .github/workflows/wai-quantum-service.yml | 8 +- .github/workflows/wai-quantum-studio.yml | 16 ++-- .../workflows/wai-quantum-tensor-engine.yml | 8 +- .github/workflows/wai-quantum-variational.yml | 8 +- .github/workflows/wai-quantum-verdict.yml | 18 ++-- .github/workflows/wai-quantum-views.yml | 16 ++-- .github/workflows/wai-quantum-webgpu.yml | 18 ++-- .github/workflows/wai-release.yml | 8 +- .github/workflows/wai-sink-android.yml | 8 +- .github/workflows/wai-sota-vectors.yml | 8 +- .github/workflows/wai-studio.yml | 12 +-- .github/workflows/wai-vector.yml | 40 ++++----- .github/workflows/wai-web-reach.yml | 10 +-- .github/workflows/wai-web-wasm.yml | 8 +- eoc/eoc-rs/rust-toolchain.toml | 2 +- rust-toolchain.toml | 2 +- 66 files changed, 409 insertions(+), 409 deletions(-) diff --git a/.github/workflows/joule-code-conformance.yml b/.github/workflows/joule-code-conformance.yml index 099c4bc83..e0b149410 100644 --- a/.github/workflows/joule-code-conformance.yml +++ b/.github/workflows/joule-code-conformance.yml @@ -111,13 +111,13 @@ jobs: # Bootstrap rustup: the docker runner image ships no Rust, and # dtolnay/rust-toolchain cannot help — it calls `rustup`, which is absent. - - name: Install Rust 1.98.0 + - name: Install Rust 1.99.1 run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" - name: Cache cargo @@ -241,14 +241,14 @@ jobs: - name: Checkout uses: actions/checkout@v4 - - name: Install Rust 1.98.0 + - name: Install Rust 1.99.1 shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" - name: joule-moq-relay, every target @@ -312,14 +312,14 @@ jobs: - name: Checkout uses: actions/checkout@v4 - - name: Install Rust 1.98.0 + - name: Install Rust 1.99.1 shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" - name: joule-moq-ingest, every target diff --git a/.github/workflows/joule-moq-remote.yml b/.github/workflows/joule-moq-remote.yml index b61601291..adf524b9b 100644 --- a/.github/workflows/joule-moq-remote.yml +++ b/.github/workflows/joule-moq-remote.yml @@ -72,14 +72,14 @@ jobs: - name: Checkout uses: actions/checkout@v4 - - name: Install Rust 1.98.0 + - name: Install Rust 1.99.1 shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal --component clippy - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal --component clippy + rustup default 1.99.1 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" # One test at a time: the sessions share the host with other jobs, and each takes a lock. diff --git a/.github/workflows/joule-moq-room.yml b/.github/workflows/joule-moq-room.yml index eaef01d1f..a91414949 100644 --- a/.github/workflows/joule-moq-room.yml +++ b/.github/workflows/joule-moq-room.yml @@ -92,14 +92,14 @@ jobs: - name: Checkout uses: actions/checkout@v4 - - name: Install Rust 1.98.0 + - name: Install Rust 1.99.1 shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" - name: joule-moq-room, every target diff --git a/.github/workflows/jouleclaw-public-surface-documented.yml b/.github/workflows/jouleclaw-public-surface-documented.yml index d419ec24a..b94d6b6dd 100644 --- a/.github/workflows/jouleclaw-public-surface-documented.yml +++ b/.github/workflows/jouleclaw-public-surface-documented.yml @@ -59,13 +59,13 @@ jobs: # Bootstrap rustup: the docker runner image ships no Rust, and # dtolnay/rust-toolchain cannot help — it calls `rustup`, which is absent. - - name: Install Rust 1.98.0 + - name: Install Rust 1.99.1 run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" - name: Cache cargo registry + target diff --git a/.github/workflows/repo-checks.yml b/.github/workflows/repo-checks.yml index c1a71cd09..bed5b018a 100644 --- a/.github/workflows/repo-checks.yml +++ b/.github/workflows/repo-checks.yml @@ -36,14 +36,14 @@ jobs: python-version: '3.11' # check-lockfiles.sh runs `cargo` against every lockfile. - - name: Install Rust 1.98.0 + - name: Install Rust 1.99.1 shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" # ── Every Cargo.lock is current ────────────────────────────────────────── diff --git a/.github/workflows/wai-app.yml b/.github/workflows/wai-app.yml index fd1ab2da1..930b6391e 100644 --- a/.github/workflows/wai-app.yml +++ b/.github/workflows/wai-app.yml @@ -93,14 +93,14 @@ jobs: timeout-minutes: 60 steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0 + - name: Install Rust 1.99.1 shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal --component clippy - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal --component clippy + rustup default 1.99.1 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" - name: Tests and clippy shell: bash diff --git a/.github/workflows/wai-audit.yml b/.github/workflows/wai-audit.yml index 7f9aecf07..47c891c40 100644 --- a/.github/workflows/wai-audit.yml +++ b/.github/workflows/wai-audit.yml @@ -70,14 +70,14 @@ jobs: timeout-minutes: 60 steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0 + - name: Install Rust 1.99.1 shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal --component clippy - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal --component clippy + rustup default 1.99.1 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" - name: Tests and clippy shell: bash diff --git a/.github/workflows/wai-breaking.yml b/.github/workflows/wai-breaking.yml index 8d4bc9951..20f29ce07 100644 --- a/.github/workflows/wai-breaking.yml +++ b/.github/workflows/wai-breaking.yml @@ -63,14 +63,14 @@ jobs: - uses: actions/checkout@v5 with: fetch-depth: 0 - - name: Install Rust 1.98.0 + - name: Install Rust 1.99.1 shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 SUDO=""; [ "$(id -u)" -ne 0 ] && SUDO="sudo" command -v python3 >/dev/null || { $SUDO apt-get update -qq; $SUDO apt-get install -y -qq python3; } echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" @@ -103,14 +103,14 @@ jobs: timeout-minutes: 90 steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0 + - name: Install Rust 1.99.1 shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" - uses: actions/setup-python@v5 with: diff --git a/.github/workflows/wai-byte-equality.yml b/.github/workflows/wai-byte-equality.yml index 4b42ac20a..9e8ec6a20 100644 --- a/.github/workflows/wai-byte-equality.yml +++ b/.github/workflows/wai-byte-equality.yml @@ -175,22 +175,22 @@ jobs: # unix: bootstrap rustup (docker image ships no Rust; macOS host has it but # launchd's PATH omits ~/.cargo/bin). Windows is a host executor with rustup # already present, and must use pwsh — its `bash` is the WSL stub. - - name: Install Rust 1.98.0 (unix) + - name: Install Rust 1.99.1 (unix) if: matrix.os != 'windows' shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" - - name: Install Rust 1.98.0 (Windows) + - name: Install Rust 1.99.1 (Windows) if: matrix.os == 'windows' shell: pwsh run: | - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 - name: Decode fixtures, assert golden bytes working-directory: wai/byte-exact-conformance diff --git a/.github/workflows/wai-catalogue.yml b/.github/workflows/wai-catalogue.yml index 455bd4010..43f8c9ce6 100644 --- a/.github/workflows/wai-catalogue.yml +++ b/.github/workflows/wai-catalogue.yml @@ -96,14 +96,14 @@ jobs: timeout-minutes: 60 steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0 + - name: Install Rust 1.99.1 shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 SUDO=""; [ "$(id -u)" -ne 0 ] && SUDO="sudo" command -v python3 >/dev/null || { $SUDO apt-get update -qq; $SUDO apt-get install -y -qq python3; } echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" diff --git a/.github/workflows/wai-conformance.yml b/.github/workflows/wai-conformance.yml index ead55e12d..4979d269d 100644 --- a/.github/workflows/wai-conformance.yml +++ b/.github/workflows/wai-conformance.yml @@ -397,26 +397,26 @@ jobs: # is bootstrapped; the macOS `host` runner has it but launchd's PATH omits # ~/.cargo/bin. dtolnay/rust-toolchain is unusable — it calls a `rustup` # the docker image lacks. - - name: Install Rust 1.98.0 (unix) + - name: Install Rust 1.99.1 (unix) if: matrix.os != 'windows' shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 - rustup component add --toolchain 1.98.0 clippy + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 + rustup component add --toolchain 1.99.1 clippy echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" # Windows: a host executor with rustup already installed. Only ensure the # pinned toolchain is present + default. pwsh, never bash (that is WSL here). - - name: Install Rust 1.98.0 (Windows) + - name: Install Rust 1.99.1 (Windows) if: matrix.os == 'windows' shell: pwsh run: | - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 - name: Build the cargo classes (pure Rust, no C codec chain) working-directory: wai/wai-rs @@ -594,7 +594,7 @@ jobs: done # The decode bench prints its machine line from bench_env; no other step builds it. cargo build --no-default-features --features neural_int,video_int,audio_int,world_int,splat_int --bin wai_decode_bench - rustup target add --toolchain 1.98.0 wasm32-unknown-unknown + rustup target add --toolchain 1.99.1 wasm32-unknown-unknown cargo check --lib --target wasm32-unknown-unknown --no-default-features --features video_int,audio_int,splat_int,staged,http # The staged-measurement core is wasm32-clean: a browser computes the same figures. # Built, not only checked, so codegen and linking of the library run for wasm32. @@ -761,7 +761,7 @@ jobs: working-directory: wai/wai-rs run: | set -euo pipefail - rustup target add --toolchain 1.98.0 wasm32-unknown-unknown + rustup target add --toolchain 1.99.1 wasm32-unknown-unknown cargo check --lib --target wasm32-unknown-unknown --no-default-features --features key_discovery,http # The corpus-verify loop is genuinely shell-specific (a helper that groups @@ -947,15 +947,15 @@ jobs: steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0 with the wasm32-wasip2 target + - name: Install Rust 1.99.1 with the wasm32-wasip2 target shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 - rustup target add --toolchain 1.98.0 wasm32-wasip2 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 + rustup target add --toolchain 1.99.1 wasm32-wasip2 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" # The release binary, pinned by version and SHA-256, rather than a build from source. @@ -1091,15 +1091,15 @@ jobs: steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0 with the wasm32-wasip2 target + - name: Install Rust 1.99.1 with the wasm32-wasip2 target shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 - rustup target add --toolchain 1.98.0 wasm32-wasip2 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 + rustup target add --toolchain 1.99.1 wasm32-wasip2 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" # The release binary, pinned by version and SHA-256, rather than a build from source. @@ -1188,14 +1188,14 @@ jobs: steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0 + - name: Install Rust 1.99.1 shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" - uses: actions/setup-python@v5 @@ -2763,14 +2763,14 @@ jobs: steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0 + - name: Install Rust 1.99.1 shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" - name: wai-rs, each feature list alone @@ -2841,22 +2841,22 @@ jobs: steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0 (unix) + - name: Install Rust 1.99.1 (unix) if: matrix.os != 'windows' shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" - - name: Install Rust 1.98.0 (Windows) + - name: Install Rust 1.99.1 (Windows) if: matrix.os == 'windows' shell: pwsh run: | - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 - name: Integer rANS + int_synth + JPEG-AI mANS goldens (one machine → every machine) working-directory: wai/byte-exact-conformance @@ -2878,12 +2878,12 @@ jobs: steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0 + - name: Install Rust 1.99.1 shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" # Every one of these test files is `#![cfg(feature = "codecs")]`: built without @@ -2976,14 +2976,14 @@ jobs: steps: - uses: actions/checkout@v4 - - name: Install Rust 1.98.0 + - name: Install Rust 1.99.1 shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" # `rust_native_crypto` rather than the SDK's default openssl backend, so this diff --git a/.github/workflows/wai-energy-receipts.yml b/.github/workflows/wai-energy-receipts.yml index 5d7793d5b..0da877037 100644 --- a/.github/workflows/wai-energy-receipts.yml +++ b/.github/workflows/wai-energy-receipts.yml @@ -145,14 +145,14 @@ jobs: # The docker runners (linux / linux-arm64) ship no Rust, so rustup is # bootstrapped; the macOS host runner has it but launchd's PATH omits # ~/.cargo/bin. - - name: Install Rust 1.98.0 + - name: Install Rust 1.99.1 shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" # One feature set that compiles the wai-rs receipts that carry an diff --git a/.github/workflows/wai-examples.yml b/.github/workflows/wai-examples.yml index b7ea6a72b..2d3f48ba0 100644 --- a/.github/workflows/wai-examples.yml +++ b/.github/workflows/wai-examples.yml @@ -73,14 +73,14 @@ jobs: timeout-minutes: 90 steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0 + - name: Install Rust 1.99.1 shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 SUDO=""; [ "$(id -u)" -ne 0 ] && SUDO="sudo" command -v python3 >/dev/null && command -v curl >/dev/null || { $SUDO apt-get update -qq; $SUDO apt-get install -y -qq python3 curl; } echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" @@ -159,14 +159,14 @@ jobs: timeout-minutes: 60 steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0 + - name: Install Rust 1.99.1 shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" - name: JDK 17 shell: bash diff --git a/.github/workflows/wai-fleet.yml b/.github/workflows/wai-fleet.yml index 70c6de2ef..47dc75f2f 100644 --- a/.github/workflows/wai-fleet.yml +++ b/.github/workflows/wai-fleet.yml @@ -69,14 +69,14 @@ jobs: timeout-minutes: 60 steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0 + - name: Install Rust 1.99.1 shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal --component clippy - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal --component clippy + rustup default 1.99.1 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" - name: Tests and clippy shell: bash diff --git a/.github/workflows/wai-formal-verification.yml b/.github/workflows/wai-formal-verification.yml index 957e23457..27d53fc07 100644 --- a/.github/workflows/wai-formal-verification.yml +++ b/.github/workflows/wai-formal-verification.yml @@ -173,7 +173,7 @@ jobs: export PATH="$HOME/.cargo/bin:$PATH" if ! command -v rustup >/dev/null; then curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs \ - | sh -s -- -y --profile minimal --default-toolchain 1.98.0 + | sh -s -- -y --profile minimal --default-toolchain 1.99.1 fi echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" diff --git a/.github/workflows/wai-http.yml b/.github/workflows/wai-http.yml index fdaff68d9..ca3e472e1 100644 --- a/.github/workflows/wai-http.yml +++ b/.github/workflows/wai-http.yml @@ -156,15 +156,15 @@ jobs: steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0 + - name: Install Rust 1.99.1 if: startsWith(matrix.shard, 'patches') shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" - uses: actions/setup-python@v5 @@ -212,14 +212,14 @@ jobs: steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0 + - name: Install Rust 1.99.1 shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" - uses: actions/setup-python@v5 @@ -250,14 +250,14 @@ jobs: steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0 + - name: Install Rust 1.99.1 shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" - uses: actions/setup-python@v5 diff --git a/.github/workflows/wai-jpegai-e2e.yml b/.github/workflows/wai-jpegai-e2e.yml index e5aa29a23..0cf4c679f 100644 --- a/.github/workflows/wai-jpegai-e2e.yml +++ b/.github/workflows/wai-jpegai-e2e.yml @@ -172,14 +172,14 @@ jobs: steps: - uses: actions/checkout@v5 # Bootstrap rustup: the docker runner image ships no Rust. - - name: Install Rust 1.98.0 + - name: Install Rust 1.99.1 shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" - name: Fetch the JPEG-AI inputs and check each against the pinned manifest shell: bash diff --git a/.github/workflows/wai-key-proxy.yml b/.github/workflows/wai-key-proxy.yml index 5e627d37e..f77943341 100644 --- a/.github/workflows/wai-key-proxy.yml +++ b/.github/workflows/wai-key-proxy.yml @@ -58,14 +58,14 @@ jobs: timeout-minutes: 60 steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0 + - name: Install Rust 1.99.1 shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal --component clippy - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal --component clippy + rustup default 1.99.1 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" - name: Tests and clippy shell: bash diff --git a/.github/workflows/wai-ledger.yml b/.github/workflows/wai-ledger.yml index db49e3509..d51c2ee73 100644 --- a/.github/workflows/wai-ledger.yml +++ b/.github/workflows/wai-ledger.yml @@ -62,14 +62,14 @@ jobs: timeout-minutes: 60 steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0 + - name: Install Rust 1.99.1 shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal --component clippy - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal --component clippy + rustup default 1.99.1 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" - name: Tests and clippy shell: bash diff --git a/.github/workflows/wai-neural-e2e.yml b/.github/workflows/wai-neural-e2e.yml index 90df5ed2a..9da3c73ef 100644 --- a/.github/workflows/wai-neural-e2e.yml +++ b/.github/workflows/wai-neural-e2e.yml @@ -102,13 +102,13 @@ jobs: working-directory: wai run: python tools/wai_validate_synthetic.py --size 256 # Bootstrap rustup: the docker runner image ships no Rust. - - name: Install Rust 1.98.0 + - name: Install Rust 1.99.1 run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" - name: Each Rust decoder reproduces its reference end-to-end working-directory: wai/wai-rs diff --git a/.github/workflows/wai-neural-gates.yml b/.github/workflows/wai-neural-gates.yml index 2a2e9e343..9196d100d 100644 --- a/.github/workflows/wai-neural-gates.yml +++ b/.github/workflows/wai-neural-gates.yml @@ -130,13 +130,13 @@ jobs: steps: - uses: actions/checkout@v5 # Bootstrap rustup: the docker runner image ships no Rust. - - name: Install Rust 1.98.0 + - name: Install Rust 1.99.1 run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" - name: Prior-hash refusal, the strict replicate gate, and the int_mlicpp dispatch working-directory: wai/wai-rs diff --git a/.github/workflows/wai-ops-differential.yml b/.github/workflows/wai-ops-differential.yml index be49d420b..b1ee9755f 100644 --- a/.github/workflows/wai-ops-differential.yml +++ b/.github/workflows/wai-ops-differential.yml @@ -49,14 +49,14 @@ jobs: - uses: actions/checkout@v4 # The docker image ships no Rust. - - name: Install Rust 1.98.0 + - name: Install Rust 1.99.1 shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" - name: Through the operator set against the direct decode, random sets and payloads diff --git a/.github/workflows/wai-ops-gpu.yml b/.github/workflows/wai-ops-gpu.yml index c74252db1..c82bd6a30 100644 --- a/.github/workflows/wai-ops-gpu.yml +++ b/.github/workflows/wai-ops-gpu.yml @@ -114,15 +114,15 @@ jobs: timeout-minutes: 60 steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0 with the wasm32-unknown-unknown target + - name: Install Rust 1.99.1 with the wasm32-unknown-unknown target shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 - rustup target add --toolchain 1.98.0 wasm32-unknown-unknown + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 + rustup target add --toolchain 1.99.1 wasm32-unknown-unknown echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" # This container offers no adapter. The device tests must say so and pass; under # WAI_OPS_GPU_REQUIRE=1 the same tests must fail. Were an adapter ever offered diff --git a/.github/workflows/wai-ops-npu.yml b/.github/workflows/wai-ops-npu.yml index 1185b69fa..5bb8d4d13 100644 --- a/.github/workflows/wai-ops-npu.yml +++ b/.github/workflows/wai-ops-npu.yml @@ -145,14 +145,14 @@ jobs: timeout-minutes: 60 steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0 + - name: Install Rust 1.99.1 shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" # This host has no such device. The device tests must say so and pass; under # WAI_OPS_NPU_REQUIRE=1 the same tests must fail. diff --git a/.github/workflows/wai-ops.yml b/.github/workflows/wai-ops.yml index 233414008..8b700c528 100644 --- a/.github/workflows/wai-ops.yml +++ b/.github/workflows/wai-ops.yml @@ -116,14 +116,14 @@ jobs: # The docker images ship no Rust; the macOS host has it, but launchd's PATH omits # ~/.cargo/bin. - - name: Install Rust 1.98.0 + - name: Install Rust 1.99.1 shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" - name: Unit, goldens, step-8, verdict and doc tests, debug @@ -196,14 +196,14 @@ jobs: steps: - uses: actions/checkout@v4 - - name: Install Rust 1.98.0 with the wasm32-wasip2 target + - name: Install Rust 1.99.1 with the wasm32-wasip2 target shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 rustup target add wasm32-wasip2 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" @@ -250,14 +250,14 @@ jobs: steps: - uses: actions/checkout@v4 - - name: Install Rust 1.98.0 with the wasm32 target + - name: Install Rust 1.99.1 with the wasm32 target shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 rustup target add wasm32-unknown-unknown echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" diff --git a/.github/workflows/wai-pack.yml b/.github/workflows/wai-pack.yml index 7387169de..45da421ec 100644 --- a/.github/workflows/wai-pack.yml +++ b/.github/workflows/wai-pack.yml @@ -101,15 +101,15 @@ jobs: # The docker runners ship no Rust, so rustup is bootstrapped; the macOS host has # it, but launchd's PATH omits ~/.cargo/bin. - - name: Install Rust 1.98.0 + - name: Install Rust 1.99.1 shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 - rustup component add --toolchain 1.98.0 clippy + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 + rustup component add --toolchain 1.99.1 clippy echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" # clippy::float_arithmetic is denied for the library and the CLI (Cargo.toml and @@ -240,14 +240,14 @@ jobs: working-directory: wai shell: bash run: python3 pack-conformance/pack_verify.py --jobs 2 pack-conformance - - name: Install Rust 1.98.0 + - name: Install Rust 1.99.1 shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" # The source readers differentially: seeded Y4M and WAV mutations, every verdict of # wai-pack (debug and release, both with overflow checks) equal to pack_verify.py's, @@ -371,14 +371,14 @@ jobs: runs-on: linux-arm64 steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0 + - name: Install Rust 1.99.1 shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" - name: Install cargo-deny shell: bash diff --git a/.github/workflows/wai-quantum-cli-release.yml b/.github/workflows/wai-quantum-cli-release.yml index 439a12cab..8c946bfdd 100644 --- a/.github/workflows/wai-quantum-cli-release.yml +++ b/.github/workflows/wai-quantum-cli-release.yml @@ -100,14 +100,14 @@ jobs: triple: aarch64-unknown-linux-musl steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0, the musl target and musl-gcc + - name: Install Rust 1.99.1, the musl target and musl-gcc shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 rustup target add "${{ matrix.triple }}" SUDO=""; [ "$(id -u)" -ne 0 ] && SUDO="sudo" $SUDO apt-get update -qq diff --git a/.github/workflows/wai-quantum-cli.yml b/.github/workflows/wai-quantum-cli.yml index ba7c0d229..5a375a0f0 100644 --- a/.github/workflows/wai-quantum-cli.yml +++ b/.github/workflows/wai-quantum-cli.yml @@ -60,15 +60,15 @@ jobs: timeout-minutes: 60 steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0 with clippy and the wasm32-wasip2 target + - name: Install Rust 1.99.1 with clippy and the wasm32-wasip2 target shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal --component clippy - rustup default 1.98.0 - rustup target add --toolchain 1.98.0 wasm32-wasip2 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal --component clippy + rustup default 1.99.1 + rustup target add --toolchain 1.99.1 wasm32-wasip2 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" - name: Tests and clippy, with and without submit shell: bash diff --git a/.github/workflows/wai-quantum-contract.yml b/.github/workflows/wai-quantum-contract.yml index fdd341f5d..61887f6e6 100644 --- a/.github/workflows/wai-quantum-contract.yml +++ b/.github/workflows/wai-quantum-contract.yml @@ -114,14 +114,14 @@ jobs: SEMVER_CHECKS: "0.51.0" steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0 + - name: Install Rust 1.99.1 shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" - name: Install cargo-semver-checks ${{ env.SEMVER_CHECKS }} shell: bash @@ -185,14 +185,14 @@ jobs: timeout-minutes: 60 steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0, and uv + - name: Install Rust 1.99.1, and uv shell: bash run: | export PATH="$HOME/.local/bin:$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 command -v uv >/dev/null 2>&1 || curl -LsSf https://astral.sh/uv/install.sh | sh echo "$HOME/.local/bin" >> "$GITHUB_PATH" echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" diff --git a/.github/workflows/wai-quantum-cuda.yml b/.github/workflows/wai-quantum-cuda.yml index 4a7fc37e2..2112f9b75 100644 --- a/.github/workflows/wai-quantum-cuda.yml +++ b/.github/workflows/wai-quantum-cuda.yml @@ -231,14 +231,14 @@ jobs: WAI_QUANTUM_CUDA_EXPECT: none steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0 + - name: Install Rust 1.99.1 shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" - name: No CUDA here, and the member says so shell: bash diff --git a/.github/workflows/wai-quantum-desktop-release.yml b/.github/workflows/wai-quantum-desktop-release.yml index f06bdd7a7..abc054f56 100644 --- a/.github/workflows/wai-quantum-desktop-release.yml +++ b/.github/workflows/wai-quantum-desktop-release.yml @@ -202,14 +202,14 @@ jobs: SECRET_UPDATER_KEY_PASSWORD: ${{ secrets.WAI_QUANTUM_DESKTOP_UPDATER_KEY_PASSWORD }} steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0 and the web view's libraries + - name: Install Rust 1.99.1 and the web view's libraries shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 SUDO=""; [ "$(id -u)" -ne 0 ] && SUDO="sudo" $SUDO apt-get update -qq $SUDO apt-get install -y -qq libwebkit2gtk-4.1-dev libxdo-dev libayatana-appindicator3-dev librsvg2-dev file xdg-utils diff --git a/.github/workflows/wai-quantum-docs.yml b/.github/workflows/wai-quantum-docs.yml index d35cae060..d3a14adce 100644 --- a/.github/workflows/wai-quantum-docs.yml +++ b/.github/workflows/wai-quantum-docs.yml @@ -82,14 +82,14 @@ jobs: timeout-minutes: 180 steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0, and uv + - name: Install Rust 1.99.1, and uv shell: bash run: | export PATH="$HOME/.local/bin:$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 command -v uv >/dev/null 2>&1 || curl -LsSf https://astral.sh/uv/install.sh | sh echo "$HOME/.local/bin" >> "$GITHUB_PATH" echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" @@ -108,14 +108,14 @@ jobs: timeout-minutes: 60 steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0 + - name: Install Rust 1.99.1 shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" # A module filter is satisfied by any one test of the module, so each test is # required by name to have run. diff --git a/.github/workflows/wai-quantum-editors.yml b/.github/workflows/wai-quantum-editors.yml index 5ceacfecc..f525d9918 100644 --- a/.github/workflows/wai-quantum-editors.yml +++ b/.github/workflows/wai-quantum-editors.yml @@ -82,15 +82,15 @@ jobs: image: catthehacker/ubuntu:act-24.04 steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0 with the wasm32-wasip2 target + - name: Install Rust 1.99.1 with the wasm32-wasip2 target shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 - rustup target add --toolchain 1.98.0 wasm32-wasip2 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 + rustup target add --toolchain 1.99.1 wasm32-wasip2 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" - uses: actions/setup-node@v4 with: diff --git a/.github/workflows/wai-quantum-estimate.yml b/.github/workflows/wai-quantum-estimate.yml index 2cb2eb0a2..a2acfe92c 100644 --- a/.github/workflows/wai-quantum-estimate.yml +++ b/.github/workflows/wai-quantum-estimate.yml @@ -60,14 +60,14 @@ jobs: timeout-minutes: 60 steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0 + - name: Install Rust 1.99.1 shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" # A module filter is satisfied by any one test of the module, so each # module's tests are required by name to have run. diff --git a/.github/workflows/wai-quantum-formats.yml b/.github/workflows/wai-quantum-formats.yml index 89cc3e93d..1d780708a 100644 --- a/.github/workflows/wai-quantum-formats.yml +++ b/.github/workflows/wai-quantum-formats.yml @@ -63,14 +63,14 @@ jobs: timeout-minutes: 60 steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0 + - name: Install Rust 1.99.1 shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" # A module filter is satisfied by any one test of the module, so each # module's tests are required by name to have run. @@ -118,15 +118,15 @@ jobs: timeout-minutes: 60 steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0 with the wasm32-wasip2 target + - name: Install Rust 1.99.1 with the wasm32-wasip2 target shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 - rustup target add --toolchain 1.98.0 wasm32-wasip2 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 + rustup target add --toolchain 1.99.1 wasm32-wasip2 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" # The release binary, pinned by version and SHA-256, rather than a build from source. - name: Install wasmtime 49.0.2 diff --git a/.github/workflows/wai-quantum-fpga.yml b/.github/workflows/wai-quantum-fpga.yml index 659d8a8c3..30e3aaab8 100644 --- a/.github/workflows/wai-quantum-fpga.yml +++ b/.github/workflows/wai-quantum-fpga.yml @@ -111,14 +111,14 @@ jobs: WAI_QUANTUM_FPGA_EXPECT: none steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0 + - name: Install Rust 1.99.1 shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" - name: No simulator here, and the member says so shell: bash diff --git a/.github/workflows/wai-quantum-hip.yml b/.github/workflows/wai-quantum-hip.yml index 31d17c8b1..7ad0510ae 100644 --- a/.github/workflows/wai-quantum-hip.yml +++ b/.github/workflows/wai-quantum-hip.yml @@ -190,14 +190,14 @@ jobs: WAI_QUANTUM_HIP_EXPECT: none steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0 + - name: Install Rust 1.99.1 shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" - name: No HIP here, and the member says so shell: bash diff --git a/.github/workflows/wai-quantum-js-release.yml b/.github/workflows/wai-quantum-js-release.yml index 6ba3d3e69..3639ed53f 100644 --- a/.github/workflows/wai-quantum-js-release.yml +++ b/.github/workflows/wai-quantum-js-release.yml @@ -51,14 +51,14 @@ jobs: timeout-minutes: 60 steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0 with the wasm32 target + - name: Install Rust 1.99.1 with the wasm32 target shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 rustup target add wasm32-unknown-unknown echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" - name: wasm-bindgen CLI 0.2.127 diff --git a/.github/workflows/wai-quantum-js.yml b/.github/workflows/wai-quantum-js.yml index b9e407d69..cf1f5126e 100644 --- a/.github/workflows/wai-quantum-js.yml +++ b/.github/workflows/wai-quantum-js.yml @@ -59,14 +59,14 @@ jobs: timeout-minutes: 60 steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0 with the wasm32 target + - name: Install Rust 1.99.1 with the wasm32 target shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 rustup target add wasm32-unknown-unknown echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" # Pinned to the wasm-bindgen version in wai-web/Cargo.lock; build.sh refuses another. diff --git a/.github/workflows/wai-quantum-lang.yml b/.github/workflows/wai-quantum-lang.yml index 2bda24f62..f8bce6d52 100644 --- a/.github/workflows/wai-quantum-lang.yml +++ b/.github/workflows/wai-quantum-lang.yml @@ -61,14 +61,14 @@ jobs: timeout-minutes: 60 steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0 + - name: Install Rust 1.99.1 shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" # A module filter is satisfied by any one test of the module, so each # module's tests are required by name to have run. @@ -105,15 +105,15 @@ jobs: timeout-minutes: 60 steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0 with the wasm32-wasip2 target + - name: Install Rust 1.99.1 with the wasm32-wasip2 target shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 - rustup target add --toolchain 1.98.0 wasm32-wasip2 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 + rustup target add --toolchain 1.99.1 wasm32-wasip2 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" # The release binary, pinned by version and SHA-256, rather than a build from source. - name: Install wasmtime 49.0.2 diff --git a/.github/workflows/wai-quantum-metal.yml b/.github/workflows/wai-quantum-metal.yml index 2e33cfcad..c1ef295aa 100644 --- a/.github/workflows/wai-quantum-metal.yml +++ b/.github/workflows/wai-quantum-metal.yml @@ -131,14 +131,14 @@ jobs: WAI_QUANTUM_METAL_EXPECT: none steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0 + - name: Install Rust 1.99.1 shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" - name: No Metal here, and the member says so shell: bash diff --git a/.github/workflows/wai-quantum-npu-cores.yml b/.github/workflows/wai-quantum-npu-cores.yml index 99842bbde..6624c28d4 100644 --- a/.github/workflows/wai-quantum-npu-cores.yml +++ b/.github/workflows/wai-quantum-npu-cores.yml @@ -134,14 +134,14 @@ jobs: WAI_QUANTUM_NPU_CORES_EXPECT: none steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0 + - name: Install Rust 1.99.1 shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" - name: No neural processor here, and the member says so shell: bash diff --git a/.github/workflows/wai-quantum-npu.yml b/.github/workflows/wai-quantum-npu.yml index 21f8d8e76..00dd17056 100644 --- a/.github/workflows/wai-quantum-npu.yml +++ b/.github/workflows/wai-quantum-npu.yml @@ -99,14 +99,14 @@ jobs: WAI_QUANTUM_NPU_EXPECT: none steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0 + - name: Install Rust 1.99.1 shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" - name: No neural processor here, and the member says so shell: bash diff --git a/.github/workflows/wai-quantum-opencl.yml b/.github/workflows/wai-quantum-opencl.yml index 026b12e40..0a1cbb964 100644 --- a/.github/workflows/wai-quantum-opencl.yml +++ b/.github/workflows/wai-quantum-opencl.yml @@ -287,14 +287,14 @@ jobs: WAI_QUANTUM_OPENCL_EXPECT: none steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0 + - name: Install Rust 1.99.1 shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" - name: No OpenCL here, and the member says so shell: bash diff --git a/.github/workflows/wai-quantum-pulse.yml b/.github/workflows/wai-quantum-pulse.yml index c4021b295..90216aee7 100644 --- a/.github/workflows/wai-quantum-pulse.yml +++ b/.github/workflows/wai-quantum-pulse.yml @@ -57,14 +57,14 @@ jobs: timeout-minutes: 60 steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0 + - name: Install Rust 1.99.1 shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" # A module filter is satisfied by any one test of the module, so the # count is pinned and each test is required by name to have run and passed. @@ -131,14 +131,14 @@ jobs: steps: - uses: actions/checkout@v5 # launchd's PATH omits cargo on the macOS host runner. - - name: Install Rust 1.98.0 + - name: Install Rust 1.99.1 shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" - name: The pinned digests, in a debug build and a release build shell: bash @@ -161,15 +161,15 @@ jobs: timeout-minutes: 60 steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0 with the wasm32-wasip2 target + - name: Install Rust 1.99.1 with the wasm32-wasip2 target shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 - rustup target add --toolchain 1.98.0 wasm32-wasip2 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 + rustup target add --toolchain 1.99.1 wasm32-wasip2 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" # The release binary, pinned by version and SHA-256, rather than a build from source. - name: Install wasmtime 49.0.2 diff --git a/.github/workflows/wai-quantum-py-release.yml b/.github/workflows/wai-quantum-py-release.yml index 270698c61..eca6086cb 100644 --- a/.github/workflows/wai-quantum-py-release.yml +++ b/.github/workflows/wai-quantum-py-release.yml @@ -113,14 +113,14 @@ jobs: triple: aarch64-unknown-linux-gnu steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0 and uv + - name: Install Rust 1.99.1 and uv shell: bash run: | export PATH="$HOME/.local/bin:$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 rustup target add "${{ matrix.triple }}" command -v uv >/dev/null 2>&1 || curl -LsSf https://astral.sh/uv/install.sh | sh echo "$HOME/.local/bin" >> "$GITHUB_PATH" diff --git a/.github/workflows/wai-quantum-py.yml b/.github/workflows/wai-quantum-py.yml index 03416813c..eb25d4460 100644 --- a/.github/workflows/wai-quantum-py.yml +++ b/.github/workflows/wai-quantum-py.yml @@ -60,14 +60,14 @@ jobs: timeout-minutes: 90 steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0 with clippy, and uv + - name: Install Rust 1.99.1 with clippy, and uv shell: bash run: | export PATH="$HOME/.local/bin:$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal --component clippy - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal --component clippy + rustup default 1.99.1 command -v uv >/dev/null 2>&1 || curl -LsSf https://astral.sh/uv/install.sh | sh command -v node >/dev/null 2>&1 || { echo "::error::no node on this runner: the widgets' front ends are tested with it"; exit 1; } echo "$HOME/.local/bin" >> "$GITHUB_PATH" diff --git a/.github/workflows/wai-quantum-qec.yml b/.github/workflows/wai-quantum-qec.yml index 4357fbc2a..15a541e60 100644 --- a/.github/workflows/wai-quantum-qec.yml +++ b/.github/workflows/wai-quantum-qec.yml @@ -63,14 +63,14 @@ jobs: timeout-minutes: 60 steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0 + - name: Install Rust 1.99.1 shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" # A module filter is satisfied by any one test of the module, so each # new test is required by name to have run and passed. diff --git a/.github/workflows/wai-quantum-qpu.yml b/.github/workflows/wai-quantum-qpu.yml index 06f581c58..3cba4823d 100644 --- a/.github/workflows/wai-quantum-qpu.yml +++ b/.github/workflows/wai-quantum-qpu.yml @@ -60,14 +60,14 @@ jobs: timeout-minutes: 60 steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0 + - name: Install Rust 1.99.1 shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal --component clippy - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal --component clippy + rustup default 1.99.1 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" - name: Tests shell: bash diff --git a/.github/workflows/wai-quantum-registry.yml b/.github/workflows/wai-quantum-registry.yml index 63bf81343..183725779 100644 --- a/.github/workflows/wai-quantum-registry.yml +++ b/.github/workflows/wai-quantum-registry.yml @@ -62,14 +62,14 @@ jobs: timeout-minutes: 60 steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0 + - name: Install Rust 1.99.1 shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" # A module filter is satisfied by any one test of the module, so each # test is required by name to have run. @@ -129,15 +129,15 @@ jobs: timeout-minutes: 60 steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0 with the wasm32-wasip2 target + - name: Install Rust 1.99.1 with the wasm32-wasip2 target shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 - rustup target add --toolchain 1.98.0 wasm32-wasip2 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 + rustup target add --toolchain 1.99.1 wasm32-wasip2 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" # The release binary, pinned by version and SHA-256, rather than a build from source. - name: Install wasmtime 49.0.2 diff --git a/.github/workflows/wai-quantum-service.yml b/.github/workflows/wai-quantum-service.yml index 0ad4982ed..5a6b1fae4 100644 --- a/.github/workflows/wai-quantum-service.yml +++ b/.github/workflows/wai-quantum-service.yml @@ -61,14 +61,14 @@ jobs: timeout-minutes: 60 steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0 + - name: Install Rust 1.99.1 shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal --component clippy - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal --component clippy + rustup default 1.99.1 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" - name: Tests and clippy shell: bash diff --git a/.github/workflows/wai-quantum-studio.yml b/.github/workflows/wai-quantum-studio.yml index b8a41dcd1..45abfe8c2 100644 --- a/.github/workflows/wai-quantum-studio.yml +++ b/.github/workflows/wai-quantum-studio.yml @@ -95,14 +95,14 @@ jobs: timeout-minutes: 60 steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0 with the wasm32 target + - name: Install Rust 1.99.1 with the wasm32 target shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 rustup target add wasm32-unknown-unknown echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" # Pinned to the wasm-bindgen version in wai-web/Cargo.lock. @@ -190,14 +190,14 @@ jobs: timeout-minutes: 90 steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0 and the web view's libraries + - name: Install Rust 1.99.1 and the web view's libraries shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal --component clippy - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal --component clippy + rustup default 1.99.1 SUDO=""; [ "$(id -u)" -ne 0 ] && SUDO="sudo" $SUDO apt-get update -qq $SUDO apt-get install -y -qq libwebkit2gtk-4.1-dev libxdo-dev libayatana-appindicator3-dev librsvg2-dev diff --git a/.github/workflows/wai-quantum-tensor-engine.yml b/.github/workflows/wai-quantum-tensor-engine.yml index 9cc9d22fe..015aaf1f8 100644 --- a/.github/workflows/wai-quantum-tensor-engine.yml +++ b/.github/workflows/wai-quantum-tensor-engine.yml @@ -132,14 +132,14 @@ jobs: WAI_QUANTUM_TENSOR_ENGINE_EXPECT: none steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0 + - name: Install Rust 1.99.1 shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" - name: No kernel toolchain here, and the member says so shell: bash diff --git a/.github/workflows/wai-quantum-variational.yml b/.github/workflows/wai-quantum-variational.yml index f2d12a7d9..de42148bb 100644 --- a/.github/workflows/wai-quantum-variational.yml +++ b/.github/workflows/wai-quantum-variational.yml @@ -72,14 +72,14 @@ jobs: timeout-minutes: 60 steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0 + - name: Install Rust 1.99.1 shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" # A module filter is satisfied by any one test of the module, so each # new test is required by name to have run and passed. diff --git a/.github/workflows/wai-quantum-verdict.yml b/.github/workflows/wai-quantum-verdict.yml index 159e1d198..aaad31580 100644 --- a/.github/workflows/wai-quantum-verdict.yml +++ b/.github/workflows/wai-quantum-verdict.yml @@ -67,14 +67,14 @@ jobs: timeout-minutes: 60 steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0 + - name: Install Rust 1.99.1 shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" # A module filter is satisfied by any one test of the module, so each # module's tests are required by name to have run. @@ -124,15 +124,15 @@ jobs: timeout-minutes: 60 steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0 with the wasm32-wasip2 target + - name: Install Rust 1.99.1 with the wasm32-wasip2 target shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 - rustup target add --toolchain 1.98.0 wasm32-wasip2 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 + rustup target add --toolchain 1.99.1 wasm32-wasip2 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" # The release binary, pinned by version and SHA-256, rather than a build from source. - name: Install wasmtime 49.0.2 diff --git a/.github/workflows/wai-quantum-views.yml b/.github/workflows/wai-quantum-views.yml index d837d0f91..78bb89149 100644 --- a/.github/workflows/wai-quantum-views.yml +++ b/.github/workflows/wai-quantum-views.yml @@ -75,14 +75,14 @@ jobs: timeout-minutes: 60 steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0 with the wasm32 target + - name: Install Rust 1.99.1 with the wasm32 target shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 rustup target add wasm32-unknown-unknown echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" - uses: actions/setup-node@v4 @@ -129,14 +129,14 @@ jobs: timeout-minutes: 75 steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0 + - name: Install Rust 1.99.1 shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" - uses: actions/setup-node@v4 with: diff --git a/.github/workflows/wai-quantum-webgpu.yml b/.github/workflows/wai-quantum-webgpu.yml index dc9e9db84..1d6a685fd 100644 --- a/.github/workflows/wai-quantum-webgpu.yml +++ b/.github/workflows/wai-quantum-webgpu.yml @@ -97,16 +97,16 @@ jobs: timeout-minutes: 60 steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0 (wasm32 targets) and 1.97.0 + - name: Install Rust 1.99.1 (wasm32 targets) and 1.97.0 shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal rustup toolchain install 1.97.0 --profile minimal - rustup default 1.98.0 - rustup target add --toolchain 1.98.0 wasm32-unknown-unknown wasm32-wasip2 + rustup default 1.99.1 + rustup target add --toolchain 1.99.1 wasm32-unknown-unknown wasm32-wasip2 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" - name: SPIR-V validator shell: bash @@ -176,14 +176,14 @@ jobs: WAI_QUANTUM_WEBGPU_EXPECT: swgpu-vulkan-10005 steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0 + - name: Install Rust 1.99.1 shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" - name: The Vulkan loader and a software Vulkan driver shell: bash diff --git a/.github/workflows/wai-release.yml b/.github/workflows/wai-release.yml index d5293a522..e34ef27e8 100644 --- a/.github/workflows/wai-release.yml +++ b/.github/workflows/wai-release.yml @@ -131,14 +131,14 @@ jobs: triple: aarch64-unknown-linux-musl steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0, the musl target and musl-gcc + - name: Install Rust 1.99.1, the musl target and musl-gcc shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 rustup target add "${{ matrix.triple }}" SUDO=""; [ "$(id -u)" -ne 0 ] && SUDO="sudo" $SUDO apt-get update -qq diff --git a/.github/workflows/wai-sink-android.yml b/.github/workflows/wai-sink-android.yml index 542617414..39ed996e0 100644 --- a/.github/workflows/wai-sink-android.yml +++ b/.github/workflows/wai-sink-android.yml @@ -74,14 +74,14 @@ jobs: timeout-minutes: 60 steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0 + - name: Install Rust 1.99.1 shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" # A JDK 17, from the image's packages when the image has none. - name: JDK 17 diff --git a/.github/workflows/wai-sota-vectors.yml b/.github/workflows/wai-sota-vectors.yml index 331fcf66c..6b3a0832b 100644 --- a/.github/workflows/wai-sota-vectors.yml +++ b/.github/workflows/wai-sota-vectors.yml @@ -224,14 +224,14 @@ jobs: torchvision.ops.nms(torch.zeros(1, 4), torch.zeros(1), 0.5) PY # Bootstrap rustup: the docker runner image ships no Rust. - - name: Install Rust 1.98.0 + - name: Install Rust 1.99.1 shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" - name: Regenerate the int_hyper vectors (source photo → integer export → keyframe → clip) shell: bash diff --git a/.github/workflows/wai-studio.yml b/.github/workflows/wai-studio.yml index 28c0ff512..a6741cf05 100644 --- a/.github/workflows/wai-studio.yml +++ b/.github/workflows/wai-studio.yml @@ -95,14 +95,14 @@ jobs: timeout-minutes: 60 steps: - uses: actions/checkout@v5 - - name: Install Rust 1.98.0 + - name: Install Rust 1.99.1 shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal --component clippy - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal --component clippy + rustup default 1.99.1 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" - uses: actions/setup-node@v4 with: @@ -173,13 +173,13 @@ jobs: steps: - uses: actions/checkout@v5 # The floor's zstd is C, compiled for wasm32 by clang and archived by llvm-ar. - - name: Rust 1.98.0 with the wasm32 target, clang and llvm, wasm-bindgen CLI 0.2.127 + - name: Rust 1.99.1 with the wasm32 target, clang and llvm, wasm-bindgen CLI 0.2.127 shell: bash run: | set -euo pipefail apt-get update -qq apt-get install -y -qq --no-install-recommends curl ca-certificates build-essential pkg-config clang llvm python3 git > /dev/null - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 "$HOME/.cargo/bin/rustup" target add wasm32-unknown-unknown "$HOME/.cargo/bin/cargo" install --locked wasm-bindgen-cli --version 0.2.127 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" diff --git a/.github/workflows/wai-vector.yml b/.github/workflows/wai-vector.yml index 1db17d08f..eb7cad123 100644 --- a/.github/workflows/wai-vector.yml +++ b/.github/workflows/wai-vector.yml @@ -124,14 +124,14 @@ jobs: # The docker images ship no Rust; the macOS host has it, but launchd's PATH omits # ~/.cargo/bin. - - name: Install Rust 1.98.0 + - name: Install Rust 1.99.1 shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" # Debug builds check every arithmetic operation for overflow, so a bound the @@ -167,14 +167,14 @@ jobs: steps: - uses: actions/checkout@v4 - - name: Install Rust 1.98.0 with the wasm32-wasip2 target + - name: Install Rust 1.99.1 with the wasm32-wasip2 target shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 rustup target add wasm32-wasip2 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" @@ -221,14 +221,14 @@ jobs: steps: - uses: actions/checkout@v4 - - name: Install Rust 1.98.0 with the wasm32 target + - name: Install Rust 1.99.1 with the wasm32 target shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 rustup target add wasm32-unknown-unknown echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" @@ -267,14 +267,14 @@ jobs: # The image ships no Rust. wasm32v1-none is the package's target: its # precompiled core and alloc are WebAssembly 1.0, which those of # wasm32-unknown-unknown are not (wasm/build-pkg.sh says why that decides it). - - name: Install Rust 1.98.0 with the wasm32v1-none and wasm32-unknown-unknown targets + - name: Install Rust 1.99.1 with the wasm32v1-none and wasm32-unknown-unknown targets shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 rustup target add wasm32v1-none wasm32-unknown-unknown echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" @@ -338,14 +338,14 @@ jobs: steps: - uses: actions/checkout@v4 - - name: Install Rust 1.98.0 + - name: Install Rust 1.99.1 shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" # Every corpus vector and every file under fuzz/seeds/ as a seed, 2,000 diff --git a/.github/workflows/wai-web-reach.yml b/.github/workflows/wai-web-reach.yml index ef3e9360e..0b465c6a9 100644 --- a/.github/workflows/wai-web-reach.yml +++ b/.github/workflows/wai-web-reach.yml @@ -114,16 +114,16 @@ jobs: steps: - uses: actions/checkout@v5 # The docker runner image ships no Rust. - - name: Install Rust 1.98.0 with the wasm32 target + - name: Install Rust 1.99.1 with the wasm32 target if: matrix.leg == 'tree' shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 - rustup target add wasm32-unknown-unknown --toolchain 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 + rustup target add wasm32-unknown-unknown --toolchain 1.99.1 echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" # Pinned to the wasm-bindgen version in wai-web/Cargo.lock: the CLI and the crate # must match exactly. diff --git a/.github/workflows/wai-web-wasm.yml b/.github/workflows/wai-web-wasm.yml index 913ccc78b..208af83bf 100644 --- a/.github/workflows/wai-web-wasm.yml +++ b/.github/workflows/wai-web-wasm.yml @@ -109,14 +109,14 @@ jobs: steps: - uses: actions/checkout@v5 # The docker runner image ships no Rust. - - name: Install Rust 1.98.0 with the wasm32 target + - name: Install Rust 1.99.1 with the wasm32 target shell: bash run: | export PATH="$HOME/.cargo/bin:$PATH" command -v rustup >/dev/null 2>&1 || \ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 - rustup toolchain install 1.98.0 --profile minimal - rustup default 1.98.0 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.99.1 + rustup toolchain install 1.99.1 --profile minimal + rustup default 1.99.1 rustup target add wasm32-unknown-unknown echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" # Pinned to the wasm-bindgen version in wai-web/Cargo.lock: the CLI and the diff --git a/eoc/eoc-rs/rust-toolchain.toml b/eoc/eoc-rs/rust-toolchain.toml index b2647615d..4fc422dc2 100644 --- a/eoc/eoc-rs/rust-toolchain.toml +++ b/eoc/eoc-rs/rust-toolchain.toml @@ -1,4 +1,4 @@ [toolchain] -channel = "1.98.0" +channel = "1.99.1" components = ["rustc", "cargo", "rust-std", "rustfmt", "clippy"] profile = "default" diff --git a/rust-toolchain.toml b/rust-toolchain.toml index b2647615d..4fc422dc2 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,4 +1,4 @@ [toolchain] -channel = "1.98.0" +channel = "1.99.1" components = ["rustc", "cargo", "rust-std", "rustfmt", "clippy"] profile = "default" -- 2.54.0 (Apple Git-157) From 01c47e269115f750a267dd5366d97faec2a8b089 Mon Sep 17 00:00:00 2001 From: Transaction Science Date: Mon, 2 Nov 2026 07:34:38 -0500 Subject: [PATCH 3/5] clippy 1.99: two findings the comparison missed, and one it could not have seen MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The two commits before this were written against a main 903 commits older than this one, so their comparison of clippy 1.98.0 against 1.99.1 was re-run over every cargo root that has gained Rust code since. It found these. Method, because the first attempt was wrong `rustup run cargo clippy` does NOT select that toolchain's clippy. `cargo` resolves the `clippy` subcommand by searching PATH for `cargo-clippy`, and on this machine Homebrew's (1.99.1) comes first, so both toolchains reported `clippy 0.1.99` and the comparison was of one clippy against itself. The runs behind this commit call each toolchain's own binary by path (`~/.rustup/toolchains//bin/cargo-clippy`, with `RUSTC` set to match and `RUSTUP_TOOLCHAIN` unset), which gives `clippy 0.1.98` and `clippy 0.1.99`. Confirming the delta that way: of the 24 constants `std::f64::consts` has carried, 1.98.0 flags 18 and 1.99.1 flags 20 — the two added are exactly EULER_GAMMA and GOLDEN_RATIO, as the previous commit says. What changed - wai-quantum, engine/synth/kak.rs: `1.618_033_988_749_895` becomes `std::f64::consts::GOLDEN_RATIO`. This is a `clippy::approx_constant`, which is deny-by-default, so it is an error and not a warning. The line arrived on 2026-10-27, two days after the comparison was made, as one of six "mixing weights with nothing in common" that `kak` tries in turn. The literal and the constant are the same f64 — both `0x3ff9e3779b97f4a8` — so no value the decomposition computes changes. The constant is stable well below this tree's 1.97 MSRV (it compiles on 1.96.0). The other five weights are not flagged: 1/sqrt(3) and Feigenbaum's delta are not constants clippy knows. No workflow runs clippy inside wai/wai-quantum, so this was latent in CI and would have met anyone who ran clippy there by hand. - Six `assert!(x.is_empty())` the previous commit missed, five of which were already in the tree when it was written: aac-core (translations, prediction twice, symbols), access-core (scan_order) and openpay's op-connect (account). `clippy::assert_is_empty` is new in 1.99, is allow-by-default, and reaches these crates through their own `#![warn(clippy::pedantic)]`, which `#![deny(warnings)]` then makes an error in the two aac crates. Each gains a message naming the value instead of the array comparison the previous commit used, because none of these six is a Vec or a slice: four are a HashMap, a BTreeSet or `OrderDiff`, which cannot be compared to `[] as [T; 0]` at all, and `Vec` derives Debug but not PartialEq, which `assert_eq!` against an empty array needs. A message is what the lint asks for anyway — it exists so a failure prints the value rather than only "false" — and it is the reason the lint does not fire at the other 147 `assert!(…is_empty())` sites that have arrived since: with a message supplied, it stays quiet. Not changed, with the reason - The 1.97 MSRV. `rust-version` is the floor a consumer of these reference implementations must meet, not the compiler this tree builds with; raising it narrows who can build an open standard and buys nothing, since no code here needs 1.98 or 1.99. `wai-quantum-webgpu.yml` installs 1.97.0 beside 1.99.1 to hold that floor, and that leg is untouched. Co-Authored-By: Claude Opus 5 --- aac/aac-rs/crates/aac-core/src/prediction.rs | 4 ++-- aac/aac-rs/crates/aac-core/src/symbols/mod.rs | 2 +- aac/aac-rs/crates/aac-core/src/translations.rs | 2 +- aac/aac-rs/crates/access-core/src/scan_order.rs | 2 +- openpay/crates/op-connect/src/account.rs | 2 +- wai/wai-quantum/src/engine/synth/kak.rs | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/aac/aac-rs/crates/aac-core/src/prediction.rs b/aac/aac-rs/crates/aac-core/src/prediction.rs index 7bf8fcd8a..d206532b8 100644 --- a/aac/aac-rs/crates/aac-core/src/prediction.rs +++ b/aac/aac-rs/crates/aac-core/src/prediction.rs @@ -1374,7 +1374,7 @@ mod tests { let ctx = CommunicationContext::now(); let preds = engine.predict("I", &ctx, 10); - assert!(!preds.is_empty()); + assert!(!preds.is_empty(), "a pinned phrase matching the partial predicts something"); assert_eq!(preds[0].source, PredictionSource::Pinned); } @@ -1383,7 +1383,7 @@ mod tests { let engine = PredictionEngine::new(); let ctx = CommunicationContext::now(); let preds = engine.predict("hello", &ctx, 10); - assert!(preds.is_empty()); + assert!(preds.is_empty(), "an engine with nothing in it predicts nothing: {preds:?}"); assert_eq!(engine.predict_letters("hel", 5), [] as [LetterCandidate; 0]); } diff --git a/aac/aac-rs/crates/aac-core/src/symbols/mod.rs b/aac/aac-rs/crates/aac-core/src/symbols/mod.rs index cfe187c50..44f7de8bd 100644 --- a/aac/aac-rs/crates/aac-core/src/symbols/mod.rs +++ b/aac/aac-rs/crates/aac-core/src/symbols/mod.rs @@ -485,7 +485,7 @@ mod tests { let mut count = 0; for (concept, sets) in concepts() { assert_eq!(normalize_concept(concept), concept, "index key {concept:?} is not normalised"); - assert!(!sets.is_empty()); + assert!(!sets.is_empty(), "index key {concept:?} maps to no set"); for (&set, id) in sets { let found = lookup(concept, set).unwrap(); assert_eq!((found.set, found.id, found.fallback), (set, id.as_str(), false)); diff --git a/aac/aac-rs/crates/aac-core/src/translations.rs b/aac/aac-rs/crates/aac-core/src/translations.rs index 96921be76..9dfb52957 100644 --- a/aac/aac-rs/crates/aac-core/src/translations.rs +++ b/aac/aac-rs/crates/aac-core/src/translations.rs @@ -208,7 +208,7 @@ mod tests { #[test] fn missing_word_returns_empty() { let missing = translations_for("xyznonexistent"); - assert!(missing.is_empty()); + assert!(missing.is_empty(), "an unknown word has no translations: {missing:?}"); } #[test] diff --git a/aac/aac-rs/crates/access-core/src/scan_order.rs b/aac/aac-rs/crates/access-core/src/scan_order.rs index b8099f5e8..5f6e87cf7 100644 --- a/aac/aac-rs/crates/access-core/src/scan_order.rs +++ b/aac/aac-rs/crates/access-core/src/scan_order.rs @@ -373,7 +373,7 @@ mod tests { } let o = ScanOrder::from_weights(mode, 4, 5, &w); assert!(o.is_fixed(), "{mode:?}"); - assert!(o.diff_from_fixed().is_empty()); + assert!(o.diff_from_fixed().is_empty(), "{mode:?} differs from fixed: {:?}", o.diff_from_fixed()); assert!(ScanOrder::from_weights(mode, 4, 5, &CellWeights::new()).is_fixed()); } // Blocks: on 4 × 4 all blocks are full, so a uniform prior is fixed; diff --git a/openpay/crates/op-connect/src/account.rs b/openpay/crates/op-connect/src/account.rs index 405d07412..ecfa02863 100644 --- a/openpay/crates/op-connect/src/account.rs +++ b/openpay/crates/op-connect/src/account.rs @@ -217,6 +217,6 @@ mod tests { // currently-due yet either) so `is_active()` is true only when // requirements have been computed; on the bare struct it is true. assert!(a.is_active()); - assert!(a.capabilities.is_empty()); + assert!(a.capabilities.is_empty(), "a fresh account has no capabilities: {:?}", a.capabilities); } } diff --git a/wai/wai-quantum/src/engine/synth/kak.rs b/wai/wai-quantum/src/engine/synth/kak.rs index 1778f20d4..ec8b9744d 100644 --- a/wai/wai-quantum/src/engine/synth/kak.rs +++ b/wai/wai-quantum/src/engine/synth/kak.rs @@ -210,7 +210,7 @@ pub fn kak(u: &M4) -> Result { let off = |m: &[[f64; 4]; 4]| (0..4).flat_map(|r| (0..4).map(move |c| (r, c))).filter(|(r, c)| r != c).map(|(r, c)| m[r][c].abs()).fold(0.0, f64::max); let mut chosen = None; // Mixing weights with nothing in common, tried in turn. - for c in [0.577_350_269_189_625_8, 1.618_033_988_749_895, 0.317, 2.5, 0.123_456_789, 4.669_201_609] { + for c in [0.577_350_269_189_625_8, std::f64::consts::GOLDEN_RATIO, 0.317, 2.5, 0.123_456_789, 4.669_201_609] { let s: [[f64; 4]; 4] = std::array::from_fn(|r| std::array::from_fn(|k| re[r][k] + c * im[r][k])); let p = jacobi(s); let (dr, di) = (similar(&re, &p), similar(&im, &p)); -- 2.54.0 (Apple Git-157) From e7c1a1079c9a2798167c007bcc9531865976a04c Mon Sep 17 00:00:00 2001 From: Transaction Science Date: Mon, 2 Nov 2026 07:56:37 -0500 Subject: [PATCH 4/5] standards-build: the proof gate read `echo | grep -q` under pipefail, a 1-in-20 flake MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The `joulespec-proofs` leg failed on this branch with Kani's own output saying the opposite of the gate's verdict: ** 0 of 336 failed (1 unreachable) ** 4 of 4 cover properties satisfied VERIFICATION:- SUCCESSFUL widening_a_set_can_only_lower_its_cap did not verify The step runs under `set -euo pipefail` and asked `echo "$out" | grep -q '^VERIFICATION:- SUCCESSFUL'`. `grep -q` exits at its first match; `echo` is then still writing, takes SIGPIPE and exits 141; and `pipefail` makes the pipeline return 141, so a match that was found reads as not found. The failure message is printed by the `||` branch of a grep that in fact matched. Measured on the build host against this harness's real output rather than assumed: the output is 191,128 bytes, its one `VERIFICATION:- SUCCESSFUL` line is line 1839 and four lines follow it, so `grep -q` always exits with the writer mid-stream. Twenty trials of each form on that exact string: the piped form failed 1, the here-string 0. So this is a standing ~5% flake in the gate, not something the toolchain change introduced — `cargo kani` compiles with its own pinned compiler and does not read `rust-toolchain.toml`, so the pin cannot alter the property count. #570 passed this leg for the same reason a coin comes up heads. Both `grep -q` reads in the two proof steps now take a here-string, which has no writer to kill. The two that capture into a variable already end in `|| true` and are unaffected. This is the fourth place this pattern has been found in the repo (see the here-string fixes in `check-lockfiles.sh`, `check-tests-in-ci-selftest.sh` and `standards-touched-selftest.sh`), and the first in a workflow rather than a script. Co-Authored-By: Claude Opus 5 --- .github/workflows/standards-build.yml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/.github/workflows/standards-build.yml b/.github/workflows/standards-build.yml index 771cbf05b..4d3b8eef1 100644 --- a/.github/workflows/standards-build.yml +++ b/.github/workflows/standards-build.yml @@ -406,7 +406,12 @@ jobs: echo "== $h ==" out="$(cargo kani -p joulespec-core --harness "$h" 2>&1)" echo "$out" | grep -E '^ \*\* |^VERIFICATION' - echo "$out" | grep -q '^VERIFICATION:- SUCCESSFUL' \ + # A here-string, not `echo | grep -q`: grep -q exits at the first + # match, echo then dies of SIGPIPE (141), and `set -o pipefail` + # turns a match into a failure. It is a race on how much of $out + # fits the pipe buffer, so it passed while this harness reported 15 + # properties and failed at 336. + grep -q '^VERIFICATION:- SUCCESSFUL' <<<"$out" \ || { echo "$h did not verify"; exit 1; } # "N of M cover properties satisfied". Both numbers are read with # their own expression rather than by splitting one capture, so @@ -434,7 +439,7 @@ jobs: echo "mutation applied: the scale is now computed in 64 bits" out="$(cargo kani -p joulespec-core --harness the_ratio_rule_is_total_over_every_input 2>&1 || true)" echo "$out" | grep -E '^ \*\* |^VERIFICATION' - echo "$out" | grep -q '^VERIFICATION:- FAILED' \ + grep -q '^VERIFICATION:- FAILED' <<<"$out" \ || { echo "the prover did not refute an overflowing ratio rule"; exit 1; } # The NVML backends sit behind features no workspace member enables -- 2.54.0 (Apple Git-157) From 7ef71919502ecd200ff8cf8eae13ecb31dfb2104 Mon Sep 17 00:00:00 2001 From: Transaction Science Date: Mon, 2 Nov 2026 12:45:23 -0500 Subject: [PATCH 5/5] CI: two macOS legs depended on runner state the pin change cleared or never had Both failed on this branch for reasons that are about how the `macos` label is provisioned, not about the code. That label is served by four hosts, which are not identically set up: tx-dev-mac Mac Studio M3 Ultra full Xcode tx-mbp-m5max-48 MacBook Pro M5 Max 48 full Xcode tx-mbp-m4max-128 MacBook Pro M4 Max 128 full Xcode tx-imac-pro-macos iMac Pro (x86_64) Command Line Tools only Which host takes a job is not predictable, so a leg that needs more than the base install passes or fails by where it lands. wai-examples, the apple-app step `rustup target add` had never named the apple slices' targets; the job ran on targets some earlier toolchain happened to have left on the runner. A target's std belongs to one toolchain, so moving the pin to 1.99.1 left the job with none of them and the macos slice failed at x86_64-apple-darwin with E0463, "can't find crate for `core`". The five targets are now added by name, the same set and the same line as wai-sink-swift.yml, which has always done this. The tvos slices' nightly is a separate toolchain and keeps its own targets, so it is not re-added. jouleclaw-fabrics, the Metal shader step Xcode ships the Metal compiler as a downloadable component, and an Xcode or macOS upgrade uninstalls it. Three of the four hosts reported `Status: uninstalled` (Xcode 27B47), and on those every `xcrun metal` fails with "missing Metal Toolchain" -- which check-metal-shaders.py reports as all 44 shaders failing to compile, so a provisioning gap reads as a code failure. The job now installs the component if it is absent. It is idempotent and persists on the host, so the download happens once per host per Xcode version, and it makes the job correct wherever it lands instead of only on the host that was provisioned by hand. Where there is no full Xcode -- the iMac Pro -- it now fails with that as the stated reason rather than as 44 broken shaders. Verified on two real hosts rather than reasoned about: the absent branch takes the download path on a host reporting `uninstalled`, and the present branch short-circuits on the Studio, printing `Apple metal version 32023.922`. The component was installed on the Studio by hand first and `scripts/check-metal-shaders.py` then reported 44 compiled, 0 failed, 0 skipped, which is what confirmed the shaders themselves are fine. Neither leg's workflow had said what it needed; both read it off a host. That is the class of fault a toolchain change exposes, because it clears per-toolchain state while leaving the host otherwise untouched. Co-Authored-By: Claude Opus 5 --- .github/workflows/jouleclaw-fabrics.yml | 31 ++++++++++++++++++++++++- .github/workflows/wai-examples.yml | 14 +++++++++++ 2 files changed, 44 insertions(+), 1 deletion(-) diff --git a/.github/workflows/jouleclaw-fabrics.yml b/.github/workflows/jouleclaw-fabrics.yml index 88403456c..f0a8f3281 100644 --- a/.github/workflows/jouleclaw-fabrics.yml +++ b/.github/workflows/jouleclaw-fabrics.yml @@ -39,7 +39,9 @@ on: jobs: metal: name: metal (macOS, Apple GPU) - # Metal is macOS-only, so this is the one runner that can build it. + # Metal is macOS-only, so this needs the `macos` label. That label is served + # by several hosts, not one, and they are not identically provisioned -- see + # the Metal toolchain step below. runs-on: macos timeout-minutes: 60 steps: @@ -51,6 +53,33 @@ jobs: - name: metal's error count may fall, never rise shell: bash run: python3 scripts/check-fabric-errors.py metal + # Xcode ships the Metal compiler as a separately downloadable component, + # and a macOS or Xcode upgrade uninstalls it: `xcodebuild -showComponent + # MetalToolchain` then reports `Status: uninstalled` and every `xcrun + # metal` fails with "missing Metal Toolchain". The step below would not + # merely be skipped -- check-metal-shaders.py reports every shader as not + # compiling, which reads as a code failure. + # + # Several hosts answer the `macos` label, so provisioning them by hand + # leaves whichever host was missed failing this job, and which host runs + # it is not predictable. Installing it here is idempotent and persists on + # the host, so the download happens once per host per Xcode version. + - name: Xcode's Metal toolchain component + shell: bash + run: | + set -euo pipefail + command -v xcodebuild >/dev/null 2>&1 || { + echo "::error::this runner has no full Xcode (xcode-select -p: $(xcode-select -p 2>&1)); the Metal compiler is not in the Command Line Tools" + exit 1 + } + export DEVELOPER_DIR="${DEVELOPER_DIR:-$(xcode-select -p)}" + if xcrun -sdk macosx metal --version >/dev/null 2>&1; then + echo "present on $(hostname -s): $(xcrun -sdk macosx metal --version 2>&1 | head -1)" + else + echo "absent on $(hostname -s); downloading it once for this Xcode" + xcodebuild -downloadComponent MetalToolchain + xcrun -sdk macosx metal --version + fi # compile_pipeline builds every shader at runtime, so an MSL error is # invisible to cargo. xcrun is the same frontend the runtime uses. - name: every Metal shader source must compile diff --git a/.github/workflows/wai-examples.yml b/.github/workflows/wai-examples.yml index 2d3f48ba0..b08a76614 100644 --- a/.github/workflows/wai-examples.yml +++ b/.github/workflows/wai-examples.yml @@ -147,6 +147,20 @@ jobs: set -euo pipefail test -x "$BROWSER_BIN" || { echo "::error::this runner has no browser at $BROWSER_BIN"; exit 1; } nice -n 10 bash wai/quickstart/test/run-examples.sh browser + # The apple example builds WaiFFI.xcframework, which cross-compiles each + # slice (wai-sink-swift/scripts/build-xcframework.sh names the set in its + # header). A target's std belongs to one toolchain, so the pin moving to + # 1.99.1 left this job with none of them, and the macos slice failed at + # x86_64-apple-darwin with E0463 "can't find crate for `core`". The step + # had been passing on targets a previous toolchain happened to have + # installed on the runner; naming them here is what makes it reproducible + # on a host that has never built this. The tvos slices' nightly is a + # separate toolchain and keeps its own targets, so it is not re-added. + - name: The targets the apple slices need + shell: bash + run: | + set -euo pipefail + rustup target add aarch64-apple-darwin x86_64-apple-darwin aarch64-apple-ios aarch64-apple-ios-sim x86_64-apple-ios - name: apple-app shell: bash run: nice -n 10 bash wai/quickstart/test/run-examples.sh apple -- 2.54.0 (Apple Git-157)