Daily edition

Sep 2, 2026

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

Sep 3, 20265 reads · 146 merged PRs screened

systems design

kubernetes/kubernetes · #141524

Files changed →View PR ↗

cri-streaming: define exit error contractGo · 56 + / 11

Introduces 3 new declarations in staging/src/k8s.io/cri-streaming/pkg/streaming/remotecommand/exec.go.

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

staging/src/k8s.io/cri-streaming/pkg/streaming/remotecommand/exec.go · 4 files

@@ -18,22 +18,61 @@ package remotecommand  import ( 	"context"+	"errors" 	"fmt" 	"io" 	"net/http"+	"strconv" 	"time"  	"k8s.io/streaming/pkg/runtime"-	utilexec "k8s.io/utils/exec" ) +// ExitError is returned by [Executor.ExecInContainer] when the command+// terminates with a non-zero exit code.+//+// ExitCode returns the command's exit code, or -1 if no exit code is+// available, for example if the process was terminated by a signal.+//+// [*os/exec.ExitError] satisfies this interface.+type ExitError interface {+	error+	ExitCode() int+}+ // Executor knows how to execute a command in a container in a pod. type Executor interface { 	// ExecInContainer executes a command in a container in the pod, copying data 	// between in/out/err and the container's stdin/stdout/stderr.+	//+	// If the command terminates with a non-zero exit code,+	// ExecInContainer should return an [ExitError].

language design

rust-lang/rust · #162047

Files changed →View PR ↗

Optimize empty token streamsRust · 25 + / 5

Introduces 3 new declarations in compiler/rustc_ast/src/tokenstream.rs.

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

compiler/rustc_ast/src/tokenstream.rs · 1 files

@@ -431,8 +436,12 @@ pub enum AttrTokenTree { }  impl AttrTokenStream {-    pub fn new(tokens: Vec<AttrTokenTree>) -> AttrTokenStream {-        AttrTokenStream(Arc::new(tokens))+    pub fn new(tts: Vec<AttrTokenTree>) -> AttrTokenStream {+        if tts.is_empty() {+            EMPTY_ATTR_TOKEN_STREAM.clone()+        } else {+            AttrTokenStream(Arc::new(tts))+        }     }      /// Converts this `AttrTokenStream` to a plain `Vec<TokenTree>`. During

framework internals

vercel/next.js · #97714

Files changed →View PR ↗

Reduce Turbopack cache size with per-family compressionRust · 479 + / 135

Introduces 25 new declarations in turbopack/crates/turbo-persistence/src/compression.rs.

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

turbopack/crates/turbo-persistence/src/compression.rs · 19 files

@@ -57,8 +99,62 @@ pub fn checksum_block(data: &[u8]) -> u32 {     crc32fast::hash(data) } -#[tracing::instrument(level = "trace", skip_all)]-pub fn compress_into_buffer(block: &[u8], buffer: &mut Vec<u8>) -> Result<()> {-    lz4::compress_to_vec(block, buffer, lz4::ACC_LEVEL_DEFAULT).context("Compression failed")?;-    Ok(())+/// Reusable compressor for a stream of blocks using the same family configuration.+pub(crate) struct Compressor {+    compression: Compression,+    zstd: Option<zstd::bulk::Compressor<'static>>,+}++impl Compressor {+    pub(crate) fn new(compression: Compression) -> Result<Self> {+        let zstd = match compression {+            Compression::Zstd3 => {+                Some(zstd::bulk::Compressor::new(3).context("Failed to create zstd compressor")?)+            }+            Compression::Lz4 => None,+        };+        Ok(Self { compression, zstd })+    }++    #[tracing::instrument(level = "trace", skip_all)]+    pub(crate) fn compress_into_buffer(+        &mut self,+        block: &[u8],+        buffer: &mut Vec<u8>,+    ) -> Result<()> {+        match self.compression {+            Compression::Lz4 => {+                lz4::compress_to_vec(block, buffer, lz4::ACC_LEVEL_DEFAULT)

runtime

ggml-org/llama.cpp · #28273

Files changed →View PR ↗

mtmd: fix idefics3 preprocC++ · 50 + / 0

Reworks 39 lines of existing logic in tools/mtmd/mtmd-image.cpp.

Changes how existing runtime behaves. Read the linked PR for the surrounding test context.

tools/mtmd/mtmd-image.cpp · 1 files

@@ -980,6 +980,56 @@ mtmd_image_preproc_out mtmd_image_preprocessor_idefics3::preprocess(const clip_i     //     // CITE: https://github.com/huggingface/transformers/blob/main/src/transformers/models/idefics3/image_processing_idefics3.py#L737     const clip_image_size original_size = img.get_size();++    // old gguf files have no preprocessor longest size, custom token limits also need the generic size below+    if (hparams.image_longest_edge > 0 && hparams.image_min_pixels <= 0 && hparams.image_max_pixels <= 0) {+        const int    tile_size    = hparams.image_size;+        const int    longest_edge = hparams.image_longest_edge;+        const double aspect_ratio = (double) original_size.width / original_size.height;++        clip_image_size resized_size;+        if (original_size.width >= original_size.height) {+            resized_size.width   = longest_edge;+            resized_size.height  = (int) (longest_edge / aspect_ratio);+            resized_size.height += resized_size.height % 2;+        } else {+            resized_size.height  = longest_edge;+            resized_size.width   = (int) (longest_edge * aspect_ratio);+            resized_size.width  += resized_size.width % 2;+        }++        const int grid_x = (resized_size.width  + tile_size - 1) / tile_size;+        const int grid_y = (resized_size.height + tile_size - 1) / tile_size;+        const clip_image_size refined_size = clip_image_size{grid_x * tile_size, grid_y * tile_size};++        clip_image_u8 resized_img;+        img_tool::resize(img, resized_img, resized_size, hparams.image_resize_algo, PAD_NONE);++        clip_image_u8 refined_img;+        img_tool::resize(resized_img, refined_img, refined_size, hparams.image_resize_algo, PAD_NONE);++        clip_image_u8 overview;+        img_tool::resize(refined_img, overview, {tile_size, tile_size}, hparams.image_resize_algo, PAD_NONE);

core implementation

microsoft/vscode · #334133

Files changed →View PR ↗

Surface sandbox model fallbacks and honour confirmation editabilityTypeScript · 135 + / 113

Reworks 48 lines of existing logic in src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostLanguageModelProvider.ts.

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

src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostLanguageModelProvider.ts · 11 files

@@ -203,45 +192,17 @@ export class AgentHostLanguageModelProvider extends Disposable implements ILangu 	}  	/**-	 * The distinct context-window sizes a catalogue entry offers, ascending, or `undefined` when it-	 * offers no real choice. Sourced from the numeric `contextSize` picker the Copilot catalogue-	 * synthesizes from CAPI billing, which is the only place these token counts exist.-	 */-	private static _contextWindowTiers(metadata: ILanguageModelChatMetadata | undefined): number[] | undefined {-		const values = metadata?.configurationSchema?.properties?.[CONTEXT_SIZE_CONFIG_KEY]?.enum;-		if (!values?.length) {-			return undefined;-		}-		const sizes = [...new Set(values.filter((value): value is number => typeof value === 'number'))].sort((a, b) => a - b);-		return sizes.length > 1 ? sizes : undefined;-	}--	/**-	 * Labels for a host's `contextTier` enum, as token counts rather than tier names.+	 * Translate a host's model {@link ConfigSchema} into the picker's schema shape. 	 *-	 * The host names the tiers (`default` / `long_context`) because the SDK exposes no per-model-	 * windows, but the picker is far more useful showing "264K" / "1M" — what the GitHub desktop-	 * app displays for the same session. The wire value stays the tier name the host accepts; only-	 * the label changes.+	 * Values and display text belong to the producer; the workbench only picks the group+	 * ({@link _groupForConfigKey}). The one exception is a reasoning-effort enum with no display+	 * text at all, labelled locally rather than rendering raw values like `xhigh`. 	 *-	 * Returns `undefined` when the catalogue offers no distinct long-context tier (or does not know-	 * the model), which drops the property and hides the picker rather than offering a choice that-	 * has no effect — matching how the desktop app suppresses it.+	 * A property is never dropped for want of local enrichment: a host advertises one because it+	 * will honour it, and a new model, a staged rollout and an unresolved catalogue all look

Read today’s edition →