Selected changesmerged Oct 23, 2026
suggest named lifetimes instead of `'_` in `use<...>` for E0700Rust · 247 + / 69 −
Introduces 13 new declarations in compiler/rustc_trait_selection/src/error_reporting/infer/region.rs.
Adds new language design rather than adjusting what was there. Tests changed with it, with code of their own.
compiler/rustc_trait_selection/src/error_reporting/infer/region.rs ↗ · 8 files
@@ -1169,6 +1110,101 @@ pub(super) fn note_and_explain_region<'tcx>( emit_msg_span(err, prefix, description, span, suffix); } +fn suggest_name_regions<'tcx>(+ tcx: TyCtxt<'tcx>,+ generic_param_scope: LocalDefId,+ lifetimes: &[Region<'tcx>],+ add_lt_suggs: &mut Vec<(Span, String)>,+) -> Option<Vec<String>> {+ struct LifetimeReplaceVisitor<'a> {+ new_lts: &'a [(LocalDefId, String)],+ add_lt_suggs: &'a mut Vec<(Span, String)>,+ }++ impl<'hir> hir::intravisit::Visitor<'hir> for LifetimeReplaceVisitor<'_> {+ fn visit_lifetime(&mut self, lt: &'hir hir::Lifetime) {+ if let hir::LifetimeKind::Param(def_id) = lt.kind+ && let Some((_, new_lt)) = self.new_lts.iter().find(|(id, _)| *id == def_id)+ {+ self.add_lt_suggs.push(lt.suggestion(new_lt));+ }+ }+ }++ let mut lifetime_scope = None;+ let mut used_names = vec![];+ let mut new_lts: Vec<(LocalDefId, String)> = vec![];+ let names: Vec<_> = lifetimes+ .iter()+ .map(|&lifetime| {+ let (lifetime_def_id, scope) =+ match tcx.is_suitable_region(generic_param_scope, lifetime) {+ Some(info) if !lifetime.is_named(tcx) => {
Track compaction RV in snapshotter and keep last snapshot behind compaction windowGo · 140 + / 51 −
Introduces 4 new declarations in staging/src/k8s.io/apiserver/pkg/storage/testing/store_tests.go.
Adds new systems design rather than adjusting what was there. Tests changed with it, with code of their own.
staging/src/k8s.io/apiserver/pkg/storage/testing/store_tests.go ↗ · 6 files
@@ -1609,21 +1609,54 @@ func RunTestList(ctx context.Context, t *testing.T, store storage.Interface, com expectRVTooOld: true, }, {- name: "test List with resource version of first write, match=Exact",+ name: "test List with compacted resource version of first write, match=Exact",+ prefix: "/pods/",+ pred: storage.Everything,+ rv: createdPods[0].ResourceVersion,+ rvMatch: metav1.ResourceVersionMatchExact,+ expectRVTooOld: true,+ },+ {+ name: "test List with compacted resource version between first and second write, match=Exact", prefix: "/pods/", pred: storage.Everything, expectedOut: []example.Pod{*createdPods[0]},- rv: createdPods[0].ResourceVersion,+ rv: compactRV,+ rvMatch: metav1.ResourceVersionMatchExact,+ expectRV: compactRV,+ expectCacherRequestsToEtcd: func() []RecordedList {+ if utilfeature.DefaultFeatureGate.Enabled(features.ListFromCacheSnapshot) {+ return nil+ }+ return []RecordedList{+ {+ Key: "/registry/pods/",+ Revision: mustParseResourceVersion(t, compactRV),+ },+ }+ },+ },+ {
Cache bundle analysis per output fileRust · 217 + / 126 −
Introduces 12 new declarations in crates/next-api/src/analyze.rs.
Adds new framework internals rather than adjusting what was there. Tests changed with it, with code of their own.
crates/next-api/src/analyze.rs ↗ · 5 files
@@ -696,78 +695,63 @@ pub async fn analyze_output_assets( let mut candidates = Vec::new(); let mut browser_chunks = FxHashSet::default(); - let prefix = format!("{SOURCE_URL_PROTOCOL}///");-- // Process the output assets and extract chunk parts.- // Also creates sources for the chunk parts.- for asset in output_assets- .await?+ let output_assets = output_assets.await?;+ let traced_files = traced_files.await?;+ // One call per file: per-route fan-out over shared assets dominates analysis+ // through task-graph bookkeeping, not the work behind each call.+ let files = output_assets .iter()- .copied()- .map(Either::Left)- .chain(traced_files.await?.iter().cloned().map(Either::Right))- {- let file_system_path = match &asset {- Either::Left(asset) => Either::Left(asset.path().await?),- Either::Right(path) => Either::Right(path),- };- let path = match &file_system_path {- Either::Left(path) => &path.path,- Either::Right(path) => &path.path,- };- if path.ends_with(".map") || path.ends_with(".nft.json") {- // Skip source maps.- continue;- }-- let filename = match &file_system_path {
Add inference support for the Unified multilingual RNNT model with lang promptPython · 443 + / 204 −
Introduces 13 new declarations in nemo/collections/asr/models/hybrid_rnnt_ctc_bpe_models_prompt.py.
Adds new runtime rather than adjusting what was there. Tests changed with it, with code of their own.
nemo/collections/asr/models/hybrid_rnnt_ctc_bpe_models_prompt.py ↗ · 18 files
@@ -315,35 +333,26 @@ def _transcribe_forward(self, batch: tuple[torch.Tensor, ...], trcfg: HybridRNNT The model's outputs that are processed by `_transcribe_output_processing()`. """ audio, audio_lens = batch[0], batch[1]- prompt, prompt_indices = None, None+ language_prompt_features, language_prompt_indices = None, None if len(batch) >= 5: prompt_or_indices = batch[4] if prompt_or_indices.dim() == 1:- prompt_indices = prompt_or_indices+ language_prompt_indices = prompt_or_indices else:- prompt = prompt_or_indices+ language_prompt_features = prompt_or_indices batch_size = audio.shape[0] - if prompt is None and prompt_indices is None:- target_lang = trcfg.target_lang- prompt_dict = self.cfg.model_defaults.get('prompt_dictionary')-- if not prompt_dict:- raise ValueError("Prompt dictionary is empty. Cannot create dynamic prompts.")-- if target_lang not in prompt_dict:- available_keys = list(prompt_dict.keys())- raise ValueError(- f"Unknown target language: '{target_lang}'. Available languages: {available_keys[:10]}{'...' if len(available_keys) > 10 else ''}"- )-- prompt_id = prompt_dict[target_lang]- prompt_indices = torch.full((batch_size,), prompt_id, dtype=torch.long, device=audio.device)+ if language_prompt_features is None and language_prompt_indices is None:
BUG: interval_range loses precision for large integer endpointsPython · 43 + / 4 −
Introduces 1 new declaration in pandas/core/indexes/interval.py.
Adds new core implementation rather than adjusting what was there. Tests changed with it, with code of their own.
pandas/core/indexes/interval.py ↗ · 3 files
@@ -1670,6 +1670,28 @@ def _is_type_compatible(a, b) -> bool: ) +def _integer_breaks(start, end, freq, dtype: np.dtype) -> np.ndarray | None:+ """+ Helper for interval_range to generate integer breaks with exact arithmetic.++ np.arange with a float ``stop`` and np.linspace both compute in float64, which+ can't represent every integer above 2**53, and the float nudge used to include+ ``end`` is lost for large ``end``. Returns None if the inputs aren't all integers+ or don't fit in ``dtype``, so the caller can fall back to the float path.+ """+ if not all(is_integer(x) for x in (start, end, freq)) or dtype.kind not in "iu":+ return None+ start, end, freq = int(start), int(end), int(freq)+ info = np.iinfo(dtype)+ if freq <= 0 or start < info.min or end > info.max:+ return None+ # count the breaks with Python ints; numpy's own length computation for+ # arange is a float division, so give it a stop that's an exact multiple+ # of freq away from start+ periods = max((end - start) // freq + 1, 0)+ return np.arange(start, start + periods * freq, freq, dtype=dtype)++ @set_module("pandas") def interval_range( start=None,