Selected changesmerged Aug 29, 2026 – Sep 4, 2026
[generate] stop synchronizing the accelerator on every decode stepPython · 185 + / 3 −
Introduces 13 new declarations in src/transformers/generation/utils.py.
Adds new core implementation rather than adjusting what was there. Tests changed with it, with code of their own.
src/transformers/generation/utils.py ↗ · 5 files
@@ -356,6 +357,127 @@ class GenerateBeamEncoderDecoderOutput(ModelOutput): GenerateOutput = GenerateNonBeamOutput | GenerateBeamOutput +def _undo_generation_steps(num_steps: int, input_ids: torch.LongTensor, *recorded: "tuple | None") -> tuple:+ """+ Undo the last `num_steps` decoding steps, so that they leave no trace in what `generate` returns.+ Note that the cache entries those steps wrote are dropped by `DeferredStopCheck.finish` instead.+ """+ # `[:-0]` is `[:0]`, which would empty everything rather than leave it alone+ if num_steps == 0:+ return (input_ids, *recorded)+ return (input_ids[..., :-num_steps], *(record[:-num_steps] if record else record for record in recorded))+++class StopCheck:+ """+ Decides when the decoding loop should stop, and hands each new token to a streamer.+ """++ def __init__(self, streamer: "BaseStreamer | None" = None):+ self.streamer = streamer++ def __call__(self, unfinished_sequences: torch.Tensor, tokens: torch.Tensor, length: int) -> bool:+ if self.streamer is not None:+ self.streamer.put(tokens.cpu())+ return bool(unfinished_sequences.max() == 0)++ def finish(self) -> int:+ """Flush whatever is still held back, and report how many decoding steps have to be undone."""+ return 0+++class DeferredStopCheck(StopCheck):
fix(npm): correct the pnpm lockfile import against real-world lockfilesRust · 848 + / 20 −
Introduces 19 new declarations in libs/resolver/pnpm_lockfile_import.rs.
Adds new language design rather than adjusting what was there. Read the linked PR for the surrounding test context.
libs/resolver/pnpm_lockfile_import.rs ↗ · 1 files
@@ -756,6 +972,618 @@ snapshots: assert_eq!(v["npm"]["lodash@4.17.21"]["integrity"], "sha512-AAA"); } + #[test]+ fn aliased_snapshot_dependency() {+ // `string-width-cjs: string-width@4.2.3` names a package, not a version,+ // so it must not collapse into `string-width-cjs@string-width@4.2.3`.+ let input = r#"+lockfileVersion: '9.0'++importers:+ .:+ dependencies:+ wrap-ansi:+ specifier: ^8.1.0+ version: 8.1.0++packages:+ wrap-ansi@8.1.0:+ resolution: {integrity: sha512-WRAP}+ ansi-styles@6.2.1:+ resolution: {integrity: sha512-ANSI}+ string-width@4.2.3:+ resolution: {integrity: sha512-WIDTH}+ '@scope/pkg@1.0.0':+ resolution: {integrity: sha512-SCOPED}++snapshots:+ wrap-ansi@8.1.0:+ dependencies:+ ansi-styles: 6.2.1+ string-width-cjs: string-width@4.2.3+ scoped-alias: '@scope/pkg@1.0.0'
sessions: move unified workspace picker settingTypeScript · 51 + / 20 −
Introduces 2 new declarations in src/vs/sessions/contrib/chat/browser/chat.contribution.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/chat.contribution.ts ↗ · 11 files
@@ -368,6 +371,20 @@ AccessibleViewRegistry.register(new SessionsChatAccessibilityHelp()); // register configuration Registry.as<IConfigurationRegistry>(ConfigurationExtensions.Configuration).registerConfiguration({ properties: {+ [LEGACY_UNIFIED_WORKSPACE_PICKER_SETTING]: {+ type: 'boolean',+ default: product.quality !== 'stable',+ scope: ConfigurationScope.APPLICATION,+ deprecationMessage: localize('chat.agentSessions.consolidatedRemoteWorkspaces.deprecated', "Deprecated. Use the unified workspace picker setting instead."),+ },+ [UNIFIED_WORKSPACE_PICKER_SETTING]: {+ type: 'boolean',+ default: product.quality !== 'stable',+ scope: ConfigurationScope.APPLICATION,+ description: localize('sessions.chat.unifiedWorkspacePicker.enabled', "Controls whether the Agents Window uses the unified workspace picker, which combines GitHub and remote workspaces, provides search, and, when supported, allows creating sessions with no workspace."),+ tags: ['experimental'],+ experiment: { mode: 'auto' },+ }, [AGENT_HOST_RUN_WORKTREE_CREATED_TASKS_SETTING]: { type: 'boolean', default: true,
Show binary files in multi-diff editorsTypeScript · 157 + / 34 −
Introduces 2 new declarations in src/vs/editor/browser/widget/multiDiffEditor/diffEditorItemTemplate.ts.
Adds new core implementation rather than adjusting what was there. Tests changed with it, with code of their own.
src/vs/editor/browser/widget/multiDiffEditor/diffEditorItemTemplate.ts ↗ · 15 files
@@ -125,7 +138,28 @@ export class DiffEditorItemTemplate extends VirtualizedItemTemplate<DocumentDiff })); this.isModifedFocused = observableCodeEditor(this.editor.getModifiedEditor()).isFocused; this.isOriginalFocused = observableCodeEditor(this.editor.getOriginalEditor()).isFocused;- this.isFocused = derived(this, reader => this.isModifedFocused.read(reader) || this.isOriginalFocused.read(reader));+ this.isBinaryFilePlaceholderFocused = observableValue(this, false);+ const binaryFilePlaceholderFocus = this._register(trackFocus(this._elements.binaryFilePlaceholder));+ this._register(binaryFilePlaceholderFocus.onDidFocus(() => this.isBinaryFilePlaceholderFocused.set(true, undefined)));+ this._register(binaryFilePlaceholderFocus.onDidBlur(() => this.isBinaryFilePlaceholderFocused.set(false, undefined)));+ this.isFocused = derived(this, reader =>+ this.isModifedFocused.read(reader)+ || this.isOriginalFocused.read(reader)+ || this.isBinaryFilePlaceholderFocused.read(reader)+ );+ this._elements.binaryFilePlaceholder.tabIndex = 0;+ if (this._workbenchUIElementFactory.openDiffEditor) {+ this._openBinaryDiffButton = this._register(new Button(this._elements.binaryFilePlaceholderActions, { ...defaultButtonStyles, secondary: true }));+ this._openBinaryDiffButton.label = localize('openBinaryDiff', "Open Diff");+ this._register(this._openBinaryDiffButton.onDidClick(() => {+ const item = this._viewModel.get();+ if (item?.originalUri && item.modifiedUri) {+ this._workbenchUIElementFactory.openDiffEditor?.(item.originalUri, item.modifiedUri);+ }+ }));+ } else {+ this._openBinaryDiffButton = undefined;+ } this._resourceLabel = this._workbenchUIElementFactory.createResourceLabel ? this._register(this._workbenchUIElementFactory.createResourceLabel(this._elements.primaryPath, MultiDiffEditorItemLabelKind.Primary)) : undefined;
volatile: allow accesses to non-AM memory to trapRust · 62 + / 46 −
Introduces 2 new declarations in compiler/rustc_codegen_llvm/src/intrinsic.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/intrinsic.rs ↗ · 7 files
@@ -138,6 +138,42 @@ fn call_simple_intrinsic<'ll, 'tcx>( )) } +impl<'ll, 'tcx> Builder<'_, 'll, 'tcx> {+ fn black_box(&mut self, result: PlaceRef<'tcx, &'ll Value>, span: Span) {+ let result_val_span = [result.val.llval];+ // We need to "use" the argument in some way LLVM can't introspect, and on+ // targets that support it we can typically leverage inline assembly to do+ // this. LLVM's interpretation of inline assembly is that it's, well, a black+ // box. This isn't the greatest implementation since it probably deoptimizes+ // more than we want, but it's so far good enough.+ //+ // For zero-sized types, the location pointed to by the result may be+ // uninitialized. Do not "use" the result in this case; instead just clobber+ // the memory.+ let (constraint, inputs): (&str, &[_]) = if result.layout.is_zst() {+ ("~{memory}", &[])+ } else {+ ("r,~{memory}", &result_val_span)+ };+ crate::asm::inline_asm_call(+ self,+ "",+ constraint,+ inputs,+ self.type_void(),+ &[],+ true,+ false,+ llvm::AsmDialect::Att,+ &[span],+ false,+ None,
fix: track dynamic accesses in final runtime prerendersTypeScript · 35 + / 19 −
Introduces 1 new declaration in packages/next/src/server/request/search-params.ts.
Adds new framework internals rather than adjusting what was there. Tests changed with it, with code of their own.
packages/next/src/server/request/search-params.ts ↗ · 6 files
@@ -255,20 +253,23 @@ function createRuntimePrerenderSearchParams( if (workUnitStore.finalStage < searchParamsStage) { return makeHangingSearchParams(workStore, workUnitStore) } else {- return result+ return makeUntrackedSearchParams(userspaceSearchParams) } } - // Unlike `createRuntimePrerenderParams`, which uses `delayUntilStage`, we- // resolve with `waitForStage(...).then(...)` here. Switching search params to- // `delayUntilStage` drops the source code frame from the instant-validation- // "URL data outside of Suspense" error when a page awaits `searchParams` at- // the top level (params, read via a nested component, is unaffected). See the- // `missing suspense around search params` cases in the instant-validation- // `suspense-boundaries` tests. The underlying reason in React's async I/O- // await tracking isn't understood yet. TODO: align search params with params- // on `delayUntilStage` once resolved.- return stagedRendering.waitForStage(searchParamsStage).then(() => result)+ // If search params don't resolve in this prerender, caches need to treat them as a hanging input.+ if (+ stagedRendering.finalStage &&+ stagedRendering.finalStage < searchParamsStage+ ) {+ return makeHangingSearchParams(workStore, workUnitStore)+ } else {+ return stagedRendering.delayUntilStage(+ searchParamsStage,+ 'searchParams',+ userspaceSearchParams+ )+ } }
Clean up the AST visitorRust · 189 + / 230 −
Introduces 14 new declarations in compiler/rustc_ast/src/visit.rs.
Adds new language design rather than adjusting what was there. Read the linked PR for the surrounding test context.
compiler/rustc_ast/src/visit.rs ↗ · 2 files
@@ -929,98 +916,110 @@ macro_rules! common_visitor_and_walkers { ) -> V::Result { match self { ForeignItemKind::Static(item) =>- visit_visitable!($($mut)? vis, item),+ visit_visitable!(vis, item), ForeignItemKind::Fn(func) => {- let kind = FnKind::Fn(FnCtxt::Foreign, visibility, &$($mut)?*func);+ let kind = FnKind::Fn(FnCtxt::Foreign, visibility, &$($mut)? *func); try_visit!(vis.visit_fn(kind, attrs, span, id)) } ForeignItemKind::TyAlias(alias) =>- visit_visitable!($($mut)? vis, alias),+ visit_visitable!(vis, alias), ForeignItemKind::MacCall(mac) =>- visit_visitable!($($mut)? vis, mac),+ visit_visitable!(vis, mac), } V::Result::output() } } - pub fn walk_fn<$($lt,)? V: $Visitor$(<$lt>)?>(vis: &mut V, kind: FnKind<$($lt)? $(${ignore($mut)} '_)?>) -> V::Result {+ pub fn walk_fn<$($lt,)? V: $Visitor$(<$lt>)?>(+ vis: &mut V,+ kind: FnKind<$($lt)? $(${ignore($mut)} '_)?>,+ ) -> V::Result { match kind { FnKind::Fn( _ctxt, // Visibility is visited as a part of the item. _vis,- Fn { defaultness, ident, sig, generics, contract, body, define_opaque, eii_impl },+ Fn {
Add layout density options for modern UI in `Customize Layout` menuTypeScript · 28 + / 2 −
Introduces 1 new declaration in src/vs/workbench/browser/actions/layoutActions.ts.
Adds new framework internals rather than adjusting what was there. Read the linked PR for the surrounding test context.
src/vs/workbench/browser/actions/layoutActions.ts ↗ · 1 files
@@ -1385,18 +1388,28 @@ const QuickInputActions: CustomizeLayoutItem[] = [ CreateOptionLayoutItem('workbench.action.alignQuickInputCenter', QuickInputAlignmentContextKey.isEqualTo('center'), localize('center', "Center"), quickInputAlignmentCenterIcon), ]; +const ModernUIEnabledContext = ContextKeyExpr.equals(`config.${LayoutSettings.MODERN_UI}`, true);++const LayoutDensityActions: CustomizeLayoutItem[] = [+ CreateOptionLayoutItem(`workbench.action.setLayoutDensity.${ModernUIDensity.Default}`, ContextKeyExpr.equals(`config.${LayoutSettings.MODERN_UI_DENSITY}`, ModernUIDensity.Default), localize('layoutDensityDefault', "Default"), layoutDensityDefaultIcon),+ CreateOptionLayoutItem(`workbench.action.setLayoutDensity.${ModernUIDensity.Compact}`, ContextKeyExpr.equals(`config.${LayoutSettings.MODERN_UI_DENSITY}`, ModernUIDensity.Compact), localize('layoutDensityCompact', "Compact"), layoutDensityCompactIcon),+];+ const MiscLayoutOptions: CustomizeLayoutItem[] = [ CreateOptionLayoutItem('workbench.action.toggleFullScreen', IsMainWindowFullscreenContext, localize('fullscreen', "Full Screen"), fullscreenIcon), CreateOptionLayoutItem('workbench.action.toggleZenMode', InEditorZenModeContext, localize('zenMode', "Zen Mode"), zenModeIcon), CreateOptionLayoutItem('workbench.action.toggleCenteredLayout', IsMainEditorCenteredLayoutContext, localize('centeredLayout', "Centered Layout"), centerLayoutIcon), ]; const LayoutContextKeySet = new Set<string>();-for (const { active } of [...ToggleVisibilityActions, ...MoveSideBarActions, ...AlignPanelActions, ...QuickInputActions, ...MiscLayoutOptions]) {+for (const { active } of [...ToggleVisibilityActions, ...MoveSideBarActions, ...AlignPanelActions, ...QuickInputActions, ...LayoutDensityActions, ...MiscLayoutOptions]) { for (const key of active.keys()) { LayoutContextKeySet.add(key); } }+for (const key of ModernUIEnabledContext.keys()) {+ LayoutContextKeySet.add(key);+} /** * Matches the title bar's `editorActionsEnabled` getter: true when editor
[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(