Daily edition

Oct 23, 2026

The edition exactly as it was published. Nothing here is re-selected on a later reading.

Oct 24, 20265 reads · 116 merged PRs screened

language design

rust-lang/rust · #163684

Files changed →View PR ↗

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) => {

systems design

kubernetes/kubernetes · #143325

Files changed →View PR ↗

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),+					},+				}+			},+		},+		{

framework internals

vercel/next.js · #100475

Files changed →View PR ↗

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 {

runtime

NVIDIA-NeMo/Speech · #15940

Files changed →View PR ↗

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:

core implementation

pandas-dev/pandas · #71457

Files changed →View PR ↗

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,

Read today’s edition →