7-day edition

Aug 27, 2026 – Sep 2, 2026

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

Sep 3, 20269 reads · 374 merged PRs screened

language design

denoland/deno · #36644

Files changed →View PR ↗

fix(ext/node): allow repeated child process signalsTypeScript · 68 + / 27

Introduces 3 new declarations in ext/node/polyfills/internal/child_process.ts.

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

ext/node/polyfills/internal/child_process.ts · 2 files

@@ -873,20 +890,19 @@ class ChildProcess extends EventEmitter {       }     } -    /* Cancel any pending IPC I/O */-    if (this[kCanDisconnect]) {-      this.disconnect?.();+    if (isWindows) {+      // See the `#windowsSignalFallback` use in the status handler above.+      this.#windowsSignalFallback = signalName;+    }+    if (signalName === "SIGKILL") {+      this[kSigkillIssued] = true;     }-     this.killed = true;-    this.signalCode = signalName;     return true;   }    [SymbolDispose]() {-    if (!this.killed) {-      this.kill();-    }+    this.kill();   }    ref() {

core implementation

huggingface/transformers · #48446

Files changed →View PR ↗

[Fix] Sparse TikToken tokenizers silently failPython · 113 + / 70

Introduces 4 new declarations in src/transformers/tokenization_utils_tokenizers.py.

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

src/transformers/tokenization_utils_tokenizers.py · 3 files

@@ -325,6 +269,102 @@ def _iter_special_tokens(values: Iterable[Any]) -> list[str]:             local_kwargs["merges"] = merges         return local_kwargs +    @classmethod+    def _convert_from_tiktoken(cls, vocab_file: str, local_kwargs: dict[str, Any]) -> dict[str, Any]:+        """Path to a vocab file and a list of extra special tokens."""+        from .convert_slow_tokenizer import TikTokenConverter++        # `added_tokens_decoder` is a (token_id -> token) dict of tokens that may not be contiguous+        added_tokens_decoder: dict[int, str] = {+            int(token_id): token["content"] if isinstance(token, dict) else str(token)+            for token_id, token in (local_kwargs.get("added_tokens_decoder") or {}).items()+        }+        # `extra_special_tokens` is a list of tokens to append to the base vocabulary+        extra_special_tokens: list[str] = local_kwargs.get("extra_special_tokens") or []+        if isinstance(extra_special_tokens, dict):+            extra_special_tokens = list(extra_special_tokens.keys())++        # Retrieve the vocab size from the vocab file+        base_vocab_size = len(TikTokenConverter.load_tiktoken_bpe(vocab_file))++        # If any of the tokens in `added_tokens_decoder` are not in the base vocabulary, they need to be added. To do so+        # we bake them in the `extra_special_tokens` list, with placeholder if `added_tokens_decoder` is not contiguous+        max_added_token_id = max(added_tokens_decoder.keys()) if added_tokens_decoder else 0+        if max_added_token_id >= base_vocab_size:+            new_extras = [+                added_tokens_decoder.get(index, f"<|reserved_token_{index}|>")+                for index in range(base_vocab_size, max_added_token_id + 1)+            ]+            set_new_extras = set(new_extras)+            for special_token in extra_special_tokens:+                if special_token not in set_new_extras:+                    new_extras.append(special_token)

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].

core implementation

microsoft/vscode · #332799

Files changed →View PR ↗

POC: Chat session state framesTypeScript · 86 + / 1

Introduces 2 new declarations in src/vs/workbench/contrib/chat/browser/widget/chatWidget.ts.

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

src/vs/workbench/contrib/chat/browser/widget/chatWidget.ts · 7 files

@@ -947,13 +974,52 @@ export class ChatWidget extends Disposable implements IChatWidget { 		} 		const enabled = this.configurationService.getValue<boolean>(ChatConfiguration.ProgressBorder) === true 			&& !this.accessibilityService.isMotionReduced()-			&& !isInlineChat(this);+			&& !isInlineChat(this)+			&& !this.isSessionStateIndicatorEnabled(); 		const inProgress = !!this.viewModel?.model.requestInProgress.get(); 		const working = enabled && inProgress; 		inputContainer.classList.toggle('working', working); 		setChatInputStackInputWorking(inputContainer, working); 	} +	private isSessionStateIndicatorEnabled(): boolean {+		if (isInlineChat(this) || isQuickChat(this) || this.viewOptions.enableSessionStateIndicator !== true) {+			return false;+		}++		return this.configurationService.getValue<boolean>(ChatConfiguration.SessionStateIndicatorEnabled) === true;+	}++	/** Updates the whole-widget session state indicator. */+	private updateSessionStateIndicator(): void {+		if (!this.container) {+			return;+		}++		const enabled = this.isSessionStateIndicatorEnabled();+		const modelNeedsInput = !!this.viewModel?.model.requestNeedsInput.get();+		const indicatorState = computeChatSessionStateIndicatorState({+			requestNeedsInput: modelNeedsInput,+			requestInProgress: !!this.viewModel?.model.requestInProgress.get(),+			containsFocus: dom.isAncestorOfActiveElement(this.container),+			requestWasActive: this._requestActiveForStateIndicator,

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

language design

react/react · #37364

Files changed →View PR ↗

[rust-compiler] Propagate block lowering errorsRust · 38 + / 27

Introduces 1 new declaration in compiler/crates/react_compiler_lowering/src/build_hir.rs.

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

compiler/crates/react_compiler_lowering/src/build_hir.rs · 2 files

@@ -2589,17 +2588,25 @@ fn lower_block_statement(     block: &react_compiler_ast::statements::BlockStatement,     parent_scope: Option<react_compiler_ast::scope::ScopeId>, ) -> Result<(), CompilerError> {-    let _ = lower_block_statement_inner(builder, block, None, parent_scope);-    Ok(())+    Ok(lower_block_statement_inner(+        builder,+        block,+        None,+        parent_scope,+    )?) }  fn lower_block_statement_with_scope(     builder: &mut HirBuilder,     block: &react_compiler_ast::statements::BlockStatement,     scope_override: react_compiler_ast::scope::ScopeId, ) -> Result<(), CompilerError> {-    let _ = lower_block_statement_inner(builder, block, Some(scope_override), None);-    Ok(())+    Ok(lower_block_statement_inner(+        builder,+        block,+        Some(scope_override),+        None,+    )?) }  fn lower_block_statement_inner(

language design

rust-lang/rust · #162034

Files changed →View PR ↗

Make the LLVM version mismatch ICE a fatal errorRust · 19 + / 9

Introduces 1 new declaration in compiler/rustc_codegen_llvm/src/diagnostics.rs.

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

compiler/rustc_codegen_llvm/src/diagnostics.rs · 3 files

@@ -265,3 +265,15 @@ pub(crate) struct IntrinsicWrongArch<'a> { pub(crate) struct UnknownLlvmTargetFeaturePrefix<'a> {     pub feature: &'a str, }++#[derive(Diagnostic)]+#[diag(+    "LLVM version mismatch: this compiler was built for LLVM {$expected_version}, but LLVM {$llvm_major}.{$llvm_minor}.{$llvm_patch} was found{$dll_loc}"+)]+pub(crate) struct LlvmVersionMismatch<'a> {+    pub expected_version: c_uint,+    pub llvm_major: c_uint,+    pub llvm_minor: c_uint,+    pub llvm_patch: c_uint,+    pub dll_loc: &'a str,+}

Read today’s edition →