Daily edition

Nov 8, 2026

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

Nov 9, 20265 reads · 85 merged PRs screened

language design

rust-lang/rust · #165573

Files changed →View PR ↗

[tiny] Tweak incorrect `#[default]` errorsRust · 41 + / 8 −

Introduces 5 new declarations in compiler/rustc_builtin_macros/src/deriving/default.rs.

Adds new language design rather than adjusting what was there. Tests changed with it, with code of their own.

compiler/rustc_builtin_macros/src/deriving/default.rs ↗ · 10 files

@@ -298,17 +307,27 @@ struct DetectNonVariantDefaultAttr<'a, 'b> {     cx: &'a ExtCtxt<'b>, } -impl<'a, 'b> rustc_ast::visit::Visitor<'a> for DetectNonVariantDefaultAttr<'a, 'b> {-    fn visit_attribute(&mut self, attr: &'a rustc_ast::Attribute) {+impl<'a, 'b> DetectNonVariantDefaultAttr<'a, 'b> {+    fn deny_default(&mut self, span: Span, attr: &'a rustc_ast::Attribute, is_item: bool) {         if attr.has_name(kw::Default) {-            let post = if self.cx.ecfg.features.default_field_values() {+            let post = if self.cx.ecfg.features.default_field_values() && is_item {                 " or variants where every field has a default value"             } else {                 ""             };-            self.cx.dcx().emit_err(diagnostics::NonUnitDefault { span: attr.span, post });+            self.cx.dcx().emit_err(diagnostics::NonUnitDefault {+                span,+                default_span: attr.span,+                post,+                is_item: if is_item { Some(()) } else { None },+            });         }+    }+} +impl<'a, 'b> rustc_ast::visit::Visitor<'a> for DetectNonVariantDefaultAttr<'a, 'b> {+    fn visit_attribute(&mut self, attr: &'a rustc_ast::Attribute) {+        self.deny_default(attr.span, attr, false);         rustc_ast::visit::walk_attribute(self, attr);     }     fn visit_variant(&mut self, v: &'a rustc_ast::Variant) {

language design

pandas-dev/pandas · #71492

Files changed →View PR ↗

ENH: add axis keyword to ExtensionArray._concat_same_type (GH#47514)Python · 21 + / 14 −

Introduces 4 new declarations in pandas/core/dtypes/concat.py.

Adds new language design rather than adjusting what was there. Tests changed with it, with code of their own.

pandas/core/dtypes/concat.py ↗ · 11 files

@@ -104,12 +104,7 @@ def concat_compat(             # e.g. DatetimeArray             # NB: We are assuming here that ensure_wrapped_if_arraylike has             #  been called where relevant.-            return obj._concat_same_type(-                # error: Unexpected keyword argument "axis" for "_concat_same_type"-                # of "ExtensionArray"-                to_concat_eas,-                axis=axis,  # type: ignore[call-arg]-            )+            return obj._concat_same_type(to_concat_eas, axis=axis)      # If all arrays are empty, there's nothing to convert, just short-cut to     # the concatenation, #3121.

systems design

kubernetes/kubernetes · #143918

Files changed →View PR ↗

Add id to watcher Go · 19 + / 17 −

Introduces 6 new declarations in staging/src/k8s.io/apiserver/pkg/storage/cacher/cacher.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/cacher/cacher.go ↗ · 3 files

@@ -155,30 +155,30 @@ type indexedWatchers struct { 	indexWatchers map[string]watchersMap } -func (i *indexedWatchers) addWatcher(w *cacheWatcher, number int) {+func (i *indexedWatchers) addWatcher(w *cacheWatcher) { 	if w.selector.indexValue != nil { 		if _, ok := i.indexWatchers[*w.selector.indexValue]; !ok { 			i.indexWatchers[*w.selector.indexValue] = watchersMap{} 		}-		i.indexWatchers[*w.selector.indexValue].addWatcher(w, number)+		i.indexWatchers[*w.selector.indexValue].addWatcher(w) 	} else { 		scopedWatchers, ok := i.scopeWatchers[w.selector.scope] 		if !ok { 			scopedWatchers = watchersMap{} 			i.scopeWatchers[w.selector.scope] = scopedWatchers 		}-		scopedWatchers.addWatcher(w, number)+		scopedWatchers.addWatcher(w) 	} } -func (i *indexedWatchers) deleteWatcher(w *cacheWatcher, number int) {+func (i *indexedWatchers) deleteWatcher(w *cacheWatcher) { 	if w.selector.indexValue != nil {-		i.indexWatchers[*w.selector.indexValue].deleteWatcher(number)+		i.indexWatchers[*w.selector.indexValue].deleteWatcher(w) 		if len(i.indexWatchers[*w.selector.indexValue]) == 0 { 			delete(i.indexWatchers, *w.selector.indexValue) 		} 	} else {-		i.scopeWatchers[w.selector.scope].deleteWatcher(number)+		i.scopeWatchers[w.selector.scope].deleteWatcher(w)

framework internals

vercel/next.js · #99965

Files changed →View PR ↗

Turbopack: support turbopackIgnore on new URL()Rust · 73 + / 7 −

Introduces 1 new declaration in turbopack/crates/turbopack-core/src/resolve/error.rs.

Adds new framework internals rather than adjusting what was there. Tests changed with it, with code of their own.

turbopack/crates/turbopack-core/src/resolve/error.rs ↗ · 12 files

@@ -216,12 +217,54 @@ async fn emit_unresolvable_issue(         resolve_options: resolve_options.to_resolved().await?,         error_message: None,         source,+        hint: resolve_hint(&reference_type, request).await?,     }     .resolved_cell()     .emit();     Ok(()) } +/// Suggests a fix for a request that failed because part of it is only known at runtime. Only+/// covers requests that accept a `turbopackIgnore` comment.+async fn resolve_hint(+    reference_type: &ReferenceType,+    request: Vc<Request>,+) -> Result<Option<RcStr>> {+    let example = match reference_type {+        ReferenceType::Url(UrlReferenceSubType::EcmaScriptNewUrl) => {+            "new URL(/* turbopackIgnore: true */ url, import.meta.url)"+        }+        ReferenceType::EcmaScriptModules(+            EcmaScriptModulesReferenceSubType::DynamicImport+            | EcmaScriptModulesReferenceSubType::LazyDynamicImport,+        ) => "import(/* turbopackIgnore: true */ path)",+        ReferenceType::CommonJs(_) => "require(/* turbopackIgnore: true */ path)",+        _ => return Ok(None),+    };+    let pattern = request.request_pattern().await?;+    if !pattern.has_dynamic_parts() {+        return Ok(None);+    }+    // The request failed as a whole, so none of its static alternatives resolved. They are+    // usually values the analyzer couldn't rule out, e.g. `'undefined'` for an unset option.

runtime

ggml-org/llama.cpp · #31851

Files changed →View PR ↗

llama, mtmd: follow the reference precision of ggml_prec_set_acc callsC++ · 15 + / 15 −

Reworks 10 lines of existing logic in src/llama-graph.cpp.

Changes how existing runtime behaves. Tests changed with it, with code of their own.

src/llama-graph.cpp ↗ · 17 files

@@ -2169,8 +2169,8 @@ ggml_tensor * llm_graph_context::build_ffn(     if (down) {         cur = build_lora_mm(down, cur);         if (arch == LLM_ARCH_GLM4 || arch == LLM_ARCH_GLM4_MOE || arch == LLM_ARCH_JAIS2) {-            // GLM4, GLM4_MOE, and JAIS2 seem to have numerical issues with half-precision accumulators-            ggml_prec_set_acc(cur, GGML_PREC_F32);+            // GLM4, GLM4_MOE, and JAIS2 have numerical issues with F16 accumulators+            ggml_prec_set_acc(cur, GGML_PREC_BF16);         }     } 

Read today’s edition →