Selected changesmerged Aug 23, 2026 – Aug 29, 2026
Unify code for PodGroups and CompositePodGroups in workloadForestGo · 383 + / 709 −
Introduces 32 new declarations in pkg/scheduler/framework/types.go.
Adds new systems design rather than adjusting what was there. Tests changed with it, with code of their own.
pkg/scheduler/framework/types.go ↗ · 24 files
@@ -1161,73 +1064,129 @@ func findNodeAndParent(curr, parent *PodGroupInfo, name string) (*PodGroupInfo, // It returns a flat slice of all QueuedPodInfo elements that were successfully removed. func (pgqi *QueuedPodGroupInfo) deleteSubtreePods(curr *PodGroupInfo) []*QueuedPodInfo { removedPods := make([]*QueuedPodInfo, 0)- if curr.GetPodGroup() != nil {- key := fwk.PodGroupKey(curr.Namespace, curr.Name)+ if curr.GetType() == fwk.PodGroupKeyType {+ key := fwk.PodGroupKey(curr.GetNamespace(), curr.GetName()) if pods, ok := pgqi.QueuedPodInfos[key]; ok { removedPods = append(removedPods, pods...) delete(pgqi.QueuedPodInfos, key) }+ return removedPods } for _, child := range curr.Children { removedPods = append(removedPods, pgqi.deleteSubtreePods(child)...) } return removedPods } -func newQueuedPodGroupInfo(pg *schedulingv1beta1.PodGroup) *QueuedPodGroupInfo {- return &QueuedPodGroupInfo{- PodGroupInfo: &PodGroupInfo{- Namespace: pg.Namespace,- Name: pg.Name,- Type: fwk.PodGroupKeyType,- PodGroup: pg,- Children: make([]*PodGroupInfo, 0),- },- QueuedPodInfos: make(map[fwk.EntityKey][]*QueuedPodInfo),- }-}--// PodGroupInfo is a wrapper around the PodGroup API object together with a list of pods that belong to the pod group.
Add an opt-in per-frame pixel cap (cap_pixels_per_frame) to the Qwen3-VL video processorPython · 381 + / 63 −
Introduces 8 new declarations in src/transformers/models/cohere_compass/video_processing_cohere_compass.py.
Adds new core implementation rather than adjusting what was there. Tests changed with it, with code of their own.
src/transformers/models/cohere_compass/video_processing_cohere_compass.py ↗ · 8 files
@@ -296,12 +331,55 @@ def _preprocess( processed_grids = reorder_videos(processed_grids, grouped_videos_index) pixel_values_videos = torch.cat(processed_videos, dim=0) video_grid_thw = torch.tensor(processed_grids)- data = {- "pixel_values_videos": pixel_values_videos,- "video_grid_thw": video_grid_thw,- } - return BatchFeature(data=data, tensor_type=return_tensors)+ return BatchFeature(+ data={"pixel_values_videos": pixel_values_videos, "video_grid_thw": video_grid_thw},+ tensor_type=return_tensors,+ )++ def get_num_of_video_patches(self, num_frames: int, height: int, width: int, videos_kwargs=None):+ """+ A utility that returns number of video patches a given video size.++ Args:+ num_frames (`int`):+ Number of frames in the input video.+ height (`int`):+ Height of the input video.+ width (`int`):+ Width of the input video.+ videos_kwargs (`dict`, *optional*)+ Any kwargs to override defaults of the video processor.+ Returns:+ `Tuple(int, int)`: Number of placeholder tokens required and number of patches per image.+ """+ videos_kwargs = videos_kwargs if videos_kwargs is not None else {}+ min_pixels = videos_kwargs.get("min_pixels", None) or self.size["shortest_edge"]+ max_pixels = videos_kwargs.get("max_pixels", None) or self.size["longest_edge"]
fix(cli): don't duplicate passthrough args for deno deploy/sandboxRust · 79 + / 5 −
Introduces 4 new declarations in libs/cli_parser/src/tests_full.rs.
Adds new language design rather than adjusting what was there. Read the linked PR for the surrounding test context.
libs/cli_parser/src/tests_full.rs ↗ · 2 files
@@ -9767,6 +9767,79 @@ fn use_env_proxy_flags() { assert!(r.is_err()); } +#[test]+fn deploy_subcommand() {+ let r = flags_from_vec(svec!["deno", "deploy"]);+ assert_eq!(+ r.unwrap(),+ Flags {+ subcommand: DenoSubcommand::Deploy(DeployFlags { sandbox: false }),+ ..Flags::default()+ }+ );++ // `deploy` is a passthrough subcommand: every arg after it is forwarded+ // verbatim, exactly once. Regression test for a duplication bug where the+ // args were written to `argv` both by `deploy_parse` and by the generic+ // trailing-arg handling, turning `--prod` into `--prod --prod`.+ let r = flags_from_vec(svec!["deno", "deploy", "--prod"]);+ assert_eq!(+ r.unwrap(),+ Flags {+ subcommand: DenoSubcommand::Deploy(DeployFlags { sandbox: false }),+ argv: svec!["--prod"],+ ..Flags::default()+ }+ );++ let r =+ flags_from_vec(svec!["deno", "deploy", "--project=myapp", "--prod", "-y"]);+ assert_eq!(+ r.unwrap(),+ Flags {
feat(desktop): clipboard apiRust · 332 + / 3 −
Introduces 12 new declarations in cli/rt/desktop.rs.
Adds new language design rather than adjusting what was there. Read the linked PR for the surrounding test context.
cli/rt/desktop.rs ↗ · 7 files
@@ -696,6 +698,75 @@ pub const DESKTOP_JS: &str = r#" console.error("[deno desktop] failed to install navigator.permissions:", e); } + // --- navigator.clipboard (text only) ---+ //+ // Spec surface: `navigator.clipboard` is a `Clipboard` (extends EventTarget)+ // exposing async `readText()` / `writeText()`. The ops behind them are+ // genuinely async: laufey's clipboard calls block their calling thread, and+ // on X11/Wayland a read is serviced by whichever app owns the selection, so+ // an unresponsive owner would otherwise freeze the whole runtime behind a+ // Promise that looks like it couldn't. They reject rather than resolve if+ // that owner never answers — `""` is indistinguishable from an empty+ // clipboard, and a resolved `writeText()` has to mean the write happened.+ //+ // The richer `read()` / `write()` (`ClipboardItem` / arbitrary MIME types)+ // aren't backed by laufey, so they're omitted rather than stubbed. Per spec+ // the read/write are gated on the `clipboard-read` / `clipboard-write`+ // permissions, but laufey has no clipboard permission model, so access+ // isn't gated here (mirroring how the desktop Notification surface+ // degrades).+ const webidl = internals.webidl;+ class Clipboard extends EventTarget {+ constructor() {+ super();+ webidl.illegalConstructor();+ }++ async readText() {+ webidl.assertBranded(this, ClipboardPrototype);+ return (await op_desktop_read_clipboard_text()) ?? "";+ }++ async writeText(data) {
sessions: Improve GitHub context attachmentsTypeScript · 63 + / 27 −
Introduces 1 new declaration in src/vs/sessions/contrib/chat/browser/newChatContextAttachments.ts.
Adds new core implementation rather than adjusting what was there. Tests changed with it, with code of their own.
src/vs/sessions/contrib/chat/browser/newChatContextAttachments.ts ↗ · 7 files
@@ -132,26 +134,41 @@ export class NewChatContextAttachments extends Disposable implements INewChatAtt for (const entry of visibleAttachments) { const pill = dom.append(this._container, dom.$('.sessions-chat-attachment-pill')); const resource = URI.isUri(entry.value) ? entry.value : isLocation(entry.value) ? entry.value.uri : undefined;+ const githubContextResource = entry.id.startsWith(GITHUB_CONTEXT_ID_PREFIX)+ ? URI.parse(entry.id.slice(GITHUB_CONTEXT_ID_PREFIX.length))+ : undefined;+ const openResource = resource ?? githubContextResource;+ const imageData = entry.kind === 'image' ? coerceImageBuffer(entry.value) : undefined;+ const canOpen = Boolean(imageData || openResource || isPastedTextArtifact(entry));+ let content: HTMLElement;+ if (canOpen) {+ const openButton = dom.append(pill, dom.$<HTMLButtonElement>('button.sessions-chat-attachment-open'));+ openButton.type = 'button';+ openButton.setAttribute('aria-label', localize('openNamedAttachment', "Open {0}", entry.name));+ content = openButton;+ pill.classList.add('openable');+ } else {+ content = dom.append(pill, dom.$('span.sessions-chat-attachment-content'));+ } if (entry.kind === 'image') {- const icon = dom.append(pill, renderIcon(Codicon.fileMedia));- dom.append(pill, dom.$('span.sessions-chat-attachment-name', undefined, entry.name));- const buffer = coerceImageBuffer(entry.value);- if (buffer) {+ const icon = dom.append(content, renderIcon(Codicon.fileMedia));+ dom.append(content, dom.$('span.sessions-chat-attachment-name', undefined, entry.name));+ if (imageData) { // Swap the generic icon for a thumbnail once the shared helper // has decoded one, matching the workbench attachment pill.- const preview = createImageHoverContent(resource, entry.name, buffer, entry.id, undefined, undefined, (url, isThumbnail) => {+ const preview = createImageHoverContent(resource, entry.name, imageData, entry.id, undefined, undefined, (url, isThumbnail) => { if (isThumbnail) { icon.replaceWith(dom.$('img.sessions-chat-attachment-image', { src: url, alt: '' }));
model: qwen4exp: reduce number of graph splitsC++ · 27 + / 10 −
Reworks 28 lines of existing logic in src/models/qwen4exp.cpp.
Changes how existing runtime behaves. Read the linked PR for the surrounding test context.
src/models/qwen4exp.cpp ↗ · 2 files
@@ -1111,7 +1114,18 @@ ggml_tensor * llama_model_qwen4exp::graph::build_ple( // gather then flatten the heads: get_rows lays the head dimension out slowest, as the reference does ggml_tensor * emb = ggml_get_rows(ctx0, model.per_layer_tok_embd, rows); emb = ggml_reshape_2d(ctx0, emb, hparams.ple_head_dim * n_heads, n_tokens);- cb(emb, "ple_embd", il);+ cb(emb, "ple_embd", -1);++ return emb;+}++ggml_tensor * llama_model_qwen4exp::graph::build_ple(+ llm_graph_input_rs * inp,+ ggml_tensor * emb,+ ggml_tensor * hidden,+ int il) {+ const int64_t hc = hparams.dsv4_hc_mult;+ const int64_t hc_dim = hc * n_embd; ggml_tensor * key = build_lora_mm(model.layers[il].ple_key, emb); ggml_tensor * value = build_lora_mm(model.layers[il].ple_value, emb);
apiextensions: report why the test server's healthz wait failedGo · 21 + / 7 −
Reworks 22 lines of existing logic in staging/src/k8s.io/apiextensions-apiserver/pkg/cmd/server/testing/testserver.go.
Changes how existing runtime behaves. Read the linked PR for the surrounding test context.
staging/src/k8s.io/apiextensions-apiserver/pkg/cmd/server/testing/testserver.go ↗ · 1 files
@@ -216,23 +216,37 @@ func StartTestServer(t Logger, _ *TestServerInstanceOptions, customFlags []strin if err != nil { return result, fmt.Errorf("failed to create a client: %v", err) }- err = wait.Poll(100*time.Millisecond, time.Minute, func() (bool, error) {+ // Keep the outcome of the last probe around: on timeout it is the only+ // clue about what the server was still waiting for, and /healthz names+ // the checks that did not pass in its body.+ var lastStatus int+ var lastBody []byte+ var lastErr error+ err = wait.PollUntilContextTimeout(ctx, 100*time.Millisecond, time.Minute, false, func(ctx context.Context) (bool, error) { select { case err := <-errCh: return false, err default: } - result := client.CoreV1().RESTClient().Get().AbsPath("/healthz").Do(context.TODO())+ res := client.CoreV1().RESTClient().Get().AbsPath("/healthz").Do(ctx) status := 0- result.StatusCode(&status)- if status == 200 {- return true, nil+ res.StatusCode(&status)+ body, rerr := res.Raw()+ // The probe that runs into the poll deadline is aborted mid-flight and+ // carries no useful outcome; keep the last one that actually completed.+ if ctx.Err() == nil {+ lastStatus, lastBody, lastErr = status, body, rerr }- return false, nil+ return status == 200, nil })
sqlite: keep sessions alive across SQLite callbacksC++ · 26 + / 2 −
Reworks 10 lines of existing logic in src/node_sqlite.cc.
Changes how existing runtime behaves. Tests changed with it, with code of their own.
src/node_sqlite.cc ↗ · 3 files
@@ -1024,6 +1024,15 @@ void DatabaseSync::RemoveBackup(BackupJob* job) { backups_.erase(job); } +std::vector<BaseObjectPtr<Session>> DatabaseSync::PinSessions() const {+ std::vector<BaseObjectPtr<Session>> pinned;+ pinned.reserve(sessions_.size());+ for (Session* session : sessions_) {+ pinned.emplace_back(session);+ }+ return pinned;+}+ void DatabaseSync::DeleteSessions() { // all attached sessions need to be deleted before the database is closed // https://www.sqlite.org/session/sqlite3session_create.html
Revert "[rust-compiler] Bail out on nested TypeScript `this` parameters (#37232)"Rust · 4 + / 12 −
Reworks 16 lines of existing logic in compiler/crates/react_compiler_lowering/src/build_hir.rs.
Changes how existing language design behaves. Read the linked PR for the surrounding test context.
compiler/crates/react_compiler_lowering/src/build_hir.rs ↗ · 1 files
@@ -2589,25 +2589,17 @@ fn lower_block_statement( block: &react_compiler_ast::statements::BlockStatement, parent_scope: Option<react_compiler_ast::scope::ScopeId>, ) -> Result<(), CompilerError> {- Ok(lower_block_statement_inner(- builder,- block,- None,- parent_scope,- )?)+ let _ = lower_block_statement_inner(builder, block, None, parent_scope);+ Ok(()) } fn lower_block_statement_with_scope( builder: &mut HirBuilder, block: &react_compiler_ast::statements::BlockStatement, scope_override: react_compiler_ast::scope::ScopeId, ) -> Result<(), CompilerError> {- Ok(lower_block_statement_inner(- builder,- block,- Some(scope_override),- None,- )?)+ let _ = lower_block_statement_inner(builder, block, Some(scope_override), None);+ Ok(()) } fn lower_block_statement_inner(