Selected changesmerged Sep 2, 2026
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].
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
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)
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);
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