Daily edition

Sep 15, 2026

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

Sep 16, 20265 reads · 170 merged PRs screened

core implementation

huggingface/transformers · #48660

Files changed →View PR ↗

Qwen3.8 GGUFPython · 610 + / 43

Introduces 21 new declarations in src/transformers/integrations/gguf/dequant.py.

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

src/transformers/integrations/gguf/dequant.py · 2 files

@@ -48,76 +88,603 @@ def dequantize(data: torch.Tensor, ggml_type: int, dtype: torch.dtype = torch.fl     return values.reshape(-1)[: blocks.shape[0] * block_elems]  -def _half(blocks: torch.Tensor, start: int) -> torch.Tensor:-    """Read one fp16 scalar per block, as (nb, 1) float32."""-    return blocks[:, start : start + 2].contiguous().view(torch.float16).float()+def _half(blocks: torch.Tensor, start: int, dtype: torch.dtype = torch.float32) -> torch.Tensor:+    """Read one fp16 scalar per block, as `(nb, 1)` of `dtype`."""+    return blocks[:, start : start + 2].view(torch.float16).to(dtype)   def _k_scales(scales: torch.Tensor) -> tuple[torch.Tensor, torch.Tensor]:     """Unpack the 12 bytes of 6-bit scales/mins shared by Q4_K and Q5_K (ggml's get_scale_min_k4)."""-    q = scales.int()-    scale = torch.cat([q[:, :4] & 63, (q[:, 8:12] & 0xF) | ((q[:, 0:4] >> 6) << 4)], dim=1)-    minimum = torch.cat([q[:, 4:8] & 63, (q[:, 8:12] >> 4) | ((q[:, 4:8] >> 6) << 4)], dim=1)+    # stays in `uint8`: the six-bit fields never overflow it, and promoting first costs a copy+    scale = torch.cat([scales[:, :4] & 63, (scales[:, 8:12] & 0xF) | ((scales[:, 0:4] >> 6) << 4)], dim=1)+    minimum = torch.cat([scales[:, 4:8] & 63, (scales[:, 8:12] >> 4) | ((scales[:, 4:8] >> 6) << 4)], dim=1)     return scale.float(), minimum.float()  -def _interleave_nibbles(qs: torch.Tensor) -> tuple[torch.Tensor, torch.Tensor]:-    """(nb, 128) nibble bytes -> low/high nibbles as (nb, 4, 32) each, still `uint8`."""-    q = qs.reshape(-1, 4, 32)-    return q & 0xF, q >> 4+def _shifted(data: torch.Tensor, shifts: tuple[int, ...], width: int) -> torch.Tensor:+    """`data` read as fields of `len(shifts)` per byte: (nb, n, 1, width) >> shifts -> (nb, -1, width)."""+    shift = torch.tensor(shifts, device=data.device, dtype=torch.uint8).reshape(1, 1, -1, 1)+    return (data.reshape(data.shape[0], -1, 1, width) >> shift).reshape(data.shape[0], -1, width)+++def _iq4_levels(nibbles: torch.Tensor, dtype: torch.dtype) -> torch.Tensor:

framework internals

vercel/next.js · #98661

Files changed →View PR ↗

fix(turbopack): trace cyclic modules to explicit entriesRust · 224 + / 19

Introduces 10 new declarations in turbopack/crates/turbopack-core/src/module_graph/mod.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/module_graph/mod.rs · 6 files

@@ -1995,12 +2052,160 @@ pub mod tests {     use crate::{         asset::{Asset, AssetContent},         ident::AssetIdent,+        issue::{CollectibleIssuesExt, IssueSeverity},         module::{Module, ModuleSideEffects},         module_graph::chunk_group_info::EntryHeuristics,         reference::{ModuleReference, ModuleReferences},         resolve::ModuleResolveResult,     }; +    #[turbo_tasks::value(shared)]+    struct ImportTraceTestResult {+        has_entry: bool,+        traces: Vec<Vec<RcStr>>,+        missing_traces: Vec<Vec<RcStr>>,+    }++    #[turbo_tasks::function(operation, root)]+    async fn import_trace_test_operation(rootless: bool) -> Result<Vc<ImportTraceTestResult>> {+        let fs = VirtualFileSystem::new_with_name(rcstr!("test"));+        let root = fs.root().await?;+        let repo = TestRepo::new(+            &root,+            [+                ("entry.js", vec!["dependency.js"]),+                ("dependency.js", vec!["entry.js"]),+            ],+        );+        let entry = Vc::upcast::<Box<dyn Module>>(MockModule::new(root.join("entry.js")?, repo))+            .to_resolved()+            .await?;+        let graph = SingleModuleGraph::new_with_entries(+            GraphEntries::resolved_cell(GraphEntries::new(

framework internals

holoviz/panel · #8762

Files changed →View PR ↗

fix: Fix notebook resource loading with RequireJS and add a Jupyter extension endpointJavaScript · 481 + / 64

Introduces 17 new declarations in panel/_templates/autoload_panel_js.js.

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

panel/_templates/autoload_panel_js.js · 18 files

@@ -71,25 +102,99 @@ calls it with the rendered model.     }     window._bokeh_on_load = on_load -    function on_error(e) {-      const src_el = e.srcElement-      console.error("failed to load " + (src_el.href || src_el.src));+    function on_error(url) {+      console.error("failed to load " + url);+      if (url.includes(JUPYTER_EXTENSION_PATH)) {+        show_jupyter_extension_error();+      }+    }++    function fallback_to_cdn(element, url, attribute, parent) {+      const index = url.indexOf(JUPYTER_EXTENSION_PATH);+      if (index === -1 || element.dataset.panelCdnFallback != null) {+        return false;+      }+      element.dataset.panelCdnFallback = "";+      element.remove();+      element[attribute] = CDN_DIST + url.slice(index + JUPYTER_EXTENSION_PATH.length);+      parent.appendChild(element);+      return true;+    }++    function inject_script_tag(url) {+      const element = document.createElement('script');+      element.onload = on_load;+      element.onerror = () => {+        if (!fallback_to_cdn(element, url, "src", document.head)) {+          on_error(url);+        }+      };

core implementation

microsoft/vscode · #336340

Files changed →View PR ↗

sessions: keep Codicon confetti behind conversationsTypeScript · 75 + / 63

Reworks 133 lines of existing logic in src/vs/sessions/services/chatBackground/browser/chatBackgroundRenderer.ts.

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

src/vs/sessions/services/chatBackground/browser/chatBackgroundRenderer.ts · 3 files

@@ -338,64 +349,64 @@ export class SessionsChatBackgroundRenderer extends Disposable { 		return { element, icon: element }; 	} -	private createCodiconButton(cell: string, icon: ThemeIcon): ICodiconCell {-		const disposables = new DisposableStore();-		const button = disposables.add(new Button(this.codiconLayer, {}));-		button.element.classList.add('sessions-chat-codicon-cell');-		button.element.style.width = `${codiconButtonSize}px`;-		button.element.style.height = `${codiconButtonSize}px`;+	private createInteractiveCodicon(icon: ThemeIcon): ICodiconCell {+		const element = $('.sessions-chat-codicon-cell');+		element.ariaHidden = 'true'; 		const animationElement = $('.sessions-chat-codicon-button-animation');-		const buttonIcon = renderIcon(icon);-		buttonIcon.ariaHidden = 'true';-		animationElement.appendChild(buttonIcon);-		button.element.appendChild(animationElement);-		disposables.add(button.onDidClick(event => {-			if (this.confettiCell !== cell) {-				return;-			}+		const iconElement = renderIcon(icon);+		iconElement.ariaHidden = 'true';+		animationElement.appendChild(iconElement);+		element.appendChild(animationElement);+		return { element, icon: iconElement, animationElement };+	} -			this._onDidActivateCodicon.fire(animationElement);-			this.selectNextConfettiCell(cell, event.type === EventType.KEY_DOWN);-		}));-		return { element: button.element, icon: buttonIcon, animationElement, disposable: disposables };+	private activateConfettiCell(): void {

core implementation

TheAlgorithms/Python · #11263

Files changed →View PR ↗

Add Gaussian negative log likelihood loss algorithmPython · 56 + / 0

Introduces 1 new declaration in machine_learning/loss_functions.py.

Adds new core implementation rather than adjusting what was there. Read the linked PR for the surrounding test context.

machine_learning/loss_functions.py · 1 files

@@ -302,6 +304,60 @@ def categorical_focal_cross_entropy(     return np.mean(cfce_loss)  +def gaussian_negative_log_likelihood_loss(+    y_true: np.ndarray,+    expectation_pred: np.ndarray,+    var_pred: np.ndarray,+    eps: float = 1e-6,+) -> float:+    """+    Calculate the negative log likelihood (NLL) loss between true labels and predicted+    Gaussian distributions.++    NLL = -Σ(ln(1/(σ√(2π))) - 0.5 * ((y_true - μ)/σ)^2)++    Reference: https://pytorch.org/docs/stable/generated/torch.nn.GaussianNLLLoss.html++    Parameters:+    - y_true: True labels+    - expectation_pred: Predicted expectation (μ) of the Gaussian distribution+    - var_pred: Predicted variance (σ^2) of the Gaussian distribution+    - eps: Small constant to avoid numerical instability++    Examples:+    >>> true_labels = np.array([1.0, 2.0, 3.0, 4.0, 5.0])+    >>> expectation = np.array([0.8, 2.1, 2.9, 4.2, 5.2])+    >>> variance = np.array([0.1, 0.2, 0.3, 0.4, 0.5])+    >>> loss = gaussian_negative_log_likelihood_loss(true_labels, expectation, variance)+    >>> bool(np.isclose(loss, -0.60621))+    True++    >>> true_labels = np.array([1.0, 2.0, 3.0, 4.0, 5.0])+    >>> expectation = np.array([0.8, 2.1, 2.9, 4.2, 5.2])

Read today’s edition →