Selected changesmerged Sep 28, 2026
[ai-upgrade] Ask user whether to start upgrade in worktreeTypeScript · 47 + / 9 −
Introduces 3 new declarations in packages/next/src/lib/upgrade/harness.ts.
Adds new framework internals rather than adjusting what was there. Tests changed with it, with code of their own.
packages/next/src/lib/upgrade/harness.ts ↗ · 5 files
@@ -21,6 +21,27 @@ type UpgradeHarness = { path: string } +type UpgradePrompt = string | ((useWorktree: boolean | null) => string)++function resolvePrompt(+ prompt: UpgradePrompt,+ useWorktree: boolean | null+): string {+ return typeof prompt === 'string' ? prompt : prompt(useWorktree)+}++async function chooseWorktree(): Promise<boolean> {+ Log.bootstrap(' Open the upgrade in a separate Git worktree?')+ const { id } = await cliSelect({+ values: { yes: 'Yes', no: 'No' },+ defaultValue: 0,+ selected: cyan('❯'),+ unselected: ' ',+ indentation: 2,+ })+ return id === 'yes'+}+ function getHarnessDisplayName(name: UpgradeHarness['name']): string { return name === 'codex' ? 'Codex' : 'Claude Code' }
Use attribute parser for `#[inline()]` attribute checkRust · 262 + / 58 −
Introduces 16 new declarations in compiler/rustc_attr_ir/src/encode_cross_crate.rs.
Adds new language design rather than adjusting what was there. Tests changed with it, with code of their own.
compiler/rustc_attr_ir/src/encode_cross_crate.rs ↗ · 17 files
@@ -212,4 +212,219 @@ impl AttributeKind { // tidy-alphabetical-end } }++ /// Whether this attribute is an extern indicator.+ ///+ /// Must stay in sync with [`CodegenFnAttrs::contains_extern_indicator`].+ ///+ /// [`CodegenFnAttrs::contains_extern_indicator`]: ../rustc_middle/middle/codegen_fn_attrs/struct.CodegenFnAttrs.html#method.contains_extern_indicator+ pub fn is_extern_indicator(&self) -> bool {+ use AttributeKind::*;++ match self {+ // tidy-alphabetical-start+ AllowInternalUnsafe(..) => false,+ AllowInternalUnstable(..) => false,+ AlwaysGca => false,+ AutomaticallyDerived => false,+ CfgAttrTrace(..) => false,+ CfgTrace(..) => false,+ CfiEncoding { .. } => false,+ Cold => false,+ CollapseDebugInfo(..) => false,+ CompilerBuiltins => false,+ ConstContinue(..) => false,+ Coroutine => false,+ Coverage(..) => false,+ CrateName { .. } => false,+ CrateType(_) => false,+ CustomMir(_, _) => false,+ DebuggerVisualizer(..) => false,+ DefaultLibAllocator => false,+ Deprecated { .. } => false,
Make all mutations to WatchCacheStore via UpdateStoreGo · 20 + / 65 −
Introduces 4 new declarations in staging/src/k8s.io/apiserver/pkg/storage/cacher/store/watch_cache_storage.go.
Adds new framework internals rather than adjusting what was there. Tests changed with it, with code of their own.
staging/src/k8s.io/apiserver/pkg/storage/cacher/store/watch_cache_storage.go ↗ · 10 files
@@ -291,53 +291,24 @@ func (w *WatchCacheStorage) ByIndex(indexName, indexValue string) ([]interface{} return w.indexer.ByIndex(indexName, indexValue) } -func (w *WatchCacheStorage) Add(elem *Element) (*Element, error) {- w.lock.Lock()- defer w.lock.Unlock()- return w.addOrUpdateLocked(elem)-}--func (w *WatchCacheStorage) Update(elem *Element) (*Element, error) {- w.lock.Lock()- defer w.lock.Unlock()- return w.addOrUpdateLocked(elem)-}--func (w *WatchCacheStorage) addOrUpdateLocked(newElem *Element) (*Element, error) {- if newElem == nil {- return nil, fmt.Errorf("elem cannot be nil")- }- oldElem := w.store.addOrUpdateElem(newElem)- return oldElem, w.indexer.updateElem(newElem.Key, oldElem, newElem)-}--func (w *WatchCacheStorage) Delete(elem *Element) (*Element, error) {- w.lock.Lock()- defer w.lock.Unlock()- return w.deleteLocked(elem)-}--func (w *WatchCacheStorage) deleteLocked(elem *Element) (*Element, error) {+// UpdateStore executes a mutation (Add, Update, Delete) on the underlying store.+// It returns the element that was previously stored under the same key, if any.+func (w *WatchCacheStorage) UpdateStore(eventType watch.EventType, elem *Element, resourceVersion uint64) (prev *Element, err error) {
fix: inverted loop condition in chaos_machine.py prevents executionPython · 42 + / 4 −
Introduces 3 new declarations in hashes/chaos_machine.py.
Adds new core implementation rather than adjusting what was there. Read the linked PR for the surrounding test context.
hashes/chaos_machine.py ↗ · 1 files
@@ -39,9 +56,29 @@ def push(seed) -> None: machine_time += 1 -def pull():+def pull() -> int:+ """Pull a pseudo-random number from the chaos machine.++ Uses a Xorshift PRNG seeded by the current chaotic state.++ Returns:+ A 32-bit unsigned integer.++ >>> reset()+ >>> isinstance(pull(), int)+ True+ >>> 0 <= pull() <= 0xFFFFFFFF+ True+ """ global buffer_space, params_space, machine_time + # PRNG (Xorshift by George Marsaglia)+ def xorshift(x: int, y: int) -> int:+ x ^= y >> 13+ y ^= x << 17+ x ^= y >> 5+ return x+ # Choosing Dynamical Systems (Increment) key = machine_time % m
BUG: agg with an empty list or dict raises "No objects to concatenate" (GH#39609)Python · 45 + / 2 −
Introduces 1 new declaration in pandas/core/apply.py.
Adds new core implementation rather than adjusting what was there. Tests changed with it, with code of their own.
pandas/core/apply.py ↗ · 7 files
@@ -654,9 +667,25 @@ def wrap_results_dict_like( result_data: list, ): from pandas import Index+ from pandas.core.groupby.groupby import BaseGroupBy obj = self.obj + if not result_data:+ # GH#39609+ if isinstance(obj, ABCSeries):+ return obj._constructor(index=Index([]), name=obj.name)+ elif isinstance(obj, ABCDataFrame):+ return obj._constructor(index=Index([]), columns=obj.columns[:0])+ elif isinstance(obj, BaseGroupBy):+ index = _groupby_result_index(obj)+ if selected_obj.ndim == 2:+ frame = cast("DataFrame", selected_obj)+ return frame._constructor(index=index, columns=frame.columns[:0])+ return selected_obj._constructor_expanddim(+ index=index, columns=Index([])+ )+ # Avoid making two isinstance calls in all and any below is_ndframe = [isinstance(r, ABCNDFrame) for r in result_data]