7-day edition

Sep 23, 2026 – Sep 29, 2026

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

Sep 30, 202612 reads · 914 merged PRs screened

core implementation

TheAlgorithms/Python · #12056

Files changed →View PR ↗

Added edmonds_blossom_algorithm.py. For maximum matching in the graph. #12043Python · 267 + / 0 −

Introduces 9 new declarations in graphs/edmonds_blossom_algorithm.py.

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

graphs/edmonds_blossom_algorithm.py ↗ · 3 files

@@ -0,0 +1,267 @@+from collections import deque+++class BlossomAuxData:+    """Class to hold auxiliary data during the blossom algorithm's execution."""++    def __init__(+        self,+        queue: deque,+        parent: list[int],+        base: list[int],+        in_blossom: list[bool],+        match: list[int],+        in_queue: list[bool],+    ) -> None:+        """+        Initializes the BlossomAuxData instance.++        Args:+            queue: A deque for BFS processing.+            parent: List of parent vertices in the augmenting path.+            base: List of base vertices for each vertex.+            in_blossom: Boolean list indicating if a vertex is in a blossom.+            match: List of matched vertices.+            in_queue: Boolean list indicating if a vertex is in the queue.+        """+        self.queue = queue+        self.parent = parent+        self.base = base+        self.in_blossom = in_blossom+        self.match = match+        self.in_queue = in_queue+

core implementation

huggingface/transformers · #48910

Files changed →View PR ↗

[Executorch] Add MLX recipePython · 46 + / 5 −

Introduces 3 new declarations in src/transformers/exporters/exporter_executorch.py.

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

src/transformers/exporters/exporter_executorch.py ↗ · 4 files

@@ -258,9 +273,33 @@ def prepare_for_cuda(model: PreTrainedModel, sample_inputs: dict[str, Any]):     return model, _make_contiguous(sample_inputs), partitioner  +def prepare_for_mlx(model: PreTrainedModel, sample_inputs: dict[str, Any]):+    """Apple Silicon GPU inference via the ExecuTorch MLX backend."""+    for value in sample_inputs.values():+        caches = [value]+        if isinstance(value, EncoderDecoderCache):+            caches = [value.self_attention_cache, value.cross_attention_cache]+        if any(isinstance(cache, StaticCache) for cache in caches):+            raise ValueError(+                "StaticCache is not supported by the ExecuTorch MLX backend. "+                "Use DynamicCache or set cache_implementation='dynamic' in GenerationConfig."+            )++    from executorch.backends.mlx import MLXPartitioner++    model.requires_grad_(False)+    model = model.to(device="cpu")+    # MLX does not support grouped MoE kernels.+    if isinstance(model, PreTrainedModel) and model._can_set_experts_implementation():+        model.set_experts_implementation("batched_mm")+    partitioner = [MLXPartitioner()]+    return model, _make_contiguous(sample_inputs), partitioner++ _BACKEND_PREPARE = {     "xnnpack": prepare_for_xnnpack,     "cuda": prepare_for_cuda,+    "mlx": prepare_for_mlx, }  

systems design

kubernetes/kubernetes · #142381

Files changed →View PR ↗

Add watch validationGo · 220 + / 2 −

Introduces 15 new declarations in staging/src/k8s.io/apiserver/pkg/storage/testing/correctness/watch.go.

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

staging/src/k8s.io/apiserver/pkg/storage/testing/correctness/watch.go ↗ · 6 files

@@ -0,0 +1,203 @@+/*+Copyright The Kubernetes Authors.++Licensed under the Apache License, Version 2.0 (the "License");+you may not use this file except in compliance with the License.+You may obtain a copy of the License at++    http://www.apache.org/licenses/LICENSE-2.0++Unless required by applicable law or agreed to in writing, software+distributed under the License is distributed on an "AS IS" BASIS,+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.+See the License for the specific language governing permissions and+limitations under the License.+*/++package correctness++import (+	"fmt"+	"math"+	"reflect"++	"github.com/google/go-cmp/cmp"++	"k8s.io/apimachinery/pkg/api/meta"+	"k8s.io/apimachinery/pkg/runtime"+	"k8s.io/apimachinery/pkg/watch"+	"k8s.io/apiserver/pkg/storage"+)++// WatchValidator checks watch streams against the event history the model+// derived from the recorded operations.

language design

rust-lang/rust · #161386

Files changed →View PR ↗

Don't merge distinct impl candidatesRust · 89 + / 30 −

Introduces 5 new declarations in compiler/rustc_next_trait_solver/src/solve/trait_goals.rs.

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

compiler/rustc_next_trait_solver/src/solve/trait_goals.rs ↗ · 10 files

@@ -1493,19 +1493,77 @@ where         }     } +    /// Like `try_merge_candidates`, but returns `None` if there are multiple user-written+    /// impls, or a user-written impl and a builtin impl, in which case we bail with ambiguity.+    ///+    /// Candidates with equal responses can still come from conflicting impls, ex - two+    /// overlapping impls which both apply due to impossible where-clauses. We don't want+    /// to merge these. Multiple builtin impls are still merged as usual. This is not+    /// done for marker traits, as their impls are allowed to overlap.+    #[instrument(level = "trace", skip(self), ret)]+    fn try_merge_impl_candidates(+        &mut self,+        trait_def_id: I::TraitId,+        candidates: &[Candidate<I>],+    ) -> Option<CanonicalResponse<I>> {+        let is_marker = self.cx().trait_is_marker(trait_def_id);+        let all_builtin = candidates+            .iter()+            .all(|candidate| matches!(candidate.source, CandidateSource::BuiltinImpl(_)));++        if is_marker || all_builtin {+            self.try_merge_candidates(candidates).map(|(response, _)| response)+        } else if candidates.len() > 1 {+            None+        } else {+            candidates.first().map(|candidate| candidate.result)+        }+    }++    fn merge_candidates_or_bail_with_ambiguity(+        &mut self,+        candidates: &[Candidate<I>],

framework internals

vercel/next.js · #98997

Files changed →View PR ↗

Add some more verification and safety rules around custom `distDir`TypeScript · 62 + / 0 −

Introduces 3 new declarations in packages/next/src/lib/dist-dir.ts.

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

packages/next/src/lib/dist-dir.ts ↗ · 8 files

@@ -0,0 +1,59 @@+import * as path from 'node:path'++export class InvalidDistDirError extends Error {+  constructor(distDir: string, appDir: string, workspaceRoot: string) {+    super(+      `The configured distDir should be inside of the application directory ` ++        `or the workspace containing it, and must not contain the application ` ++        `directory itself:\n\n` ++        `  distDir:        ${distDir}\n` ++        `  application:    ${appDir}\n` ++        `  workspace root: ${workspaceRoot}\n\n` ++        `Read more: https://nextjs.org/docs/messages/invalid-dist-dir`+    )+    this.name = 'InvalidDistDirError'+  }+}++/** Whether `descendant` is strictly inside `ancestor`. */+// TODO: Account for symlinks when validating containment.+function isStrictlyInside(ancestor: string, descendant: string): boolean {+  const relative = path.relative(path.resolve(ancestor), descendant)+  return (+    relative !== '' &&+    relative !== '..' &&+    !relative.startsWith('..' + path.sep) &&+    !path.isAbsolute(relative)+  )+}++/**+ * Throws unless `distDir` is inside the application or workspace, without+ * containing the application itself.+ */

systems design

kubernetes/kubernetes · #141644

Files changed →View PR ↗

DRA ResourceSlice + ResourceClaim[Template]: reject qualified names with more than one slashGo · 72 + / 83 −

Introduces 8 new declarations in pkg/apis/resource/validation/validation.go.

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

pkg/apis/resource/validation/validation.go ↗ · 5 files

@@ -1074,31 +1069,33 @@ func validateDevice(device resource.Device, oldDevice *resource.Device, fldPath 	}  	allErrs = append(allErrs, validateMap(device.Attributes, -1, attributeAndCapacityMaxKeyLength, validateQualifiedName, validateDeviceAttribute, fldPath.Child("attributes"))...)-	// If the entire capacity is the same as before then validation can be skipped.-	// We could also do the DeepEqual on the entire spec, but here it is a bit cheaper.-	if oldDevice == nil || !apiequality.Semantic.DeepEqual(oldDevice.Capacity, device.Capacity) {-		if allowMultipleAllocations {-			allErrs = append(allErrs, validateMap(device.Capacity, -1, attributeAndCapacityMaxKeyLength, validateQualifiedName, validateMultiAllocatableDeviceCapacity, fldPath.Child("capacity"))...)-		} else {-			allErrs = append(allErrs, validateMap(device.Capacity, -1, attributeAndCapacityMaxKeyLength, validateQualifiedName, validateSingleAllocatableDeviceCapacity, fldPath.Child("capacity"))...)-		}-	}-	// If the entire set is the same as before then validation can be skipped.-	// We could also do the DeepEqual on the entire spec, but here it is a bit cheaper.-	if oldDevice == nil || !apiequality.Semantic.DeepEqual(oldDevice.Taints, device.Taints) {-		allErrs = append(allErrs, validateSlice(device.Taints, resource.DeviceTaintsMaxLength,-			func(taint resource.DeviceTaint, fldPath *field.Path) field.ErrorList {-				return validateDeviceTaint(taint, nil, fldPath)-			},-			fldPath.Child("taints"))...)+	if allowMultipleAllocations {+		allErrs = append(allErrs, validateMap(device.Capacity, -1, attributeAndCapacityMaxKeyLength, validateQualifiedName, validateMultiAllocatableDeviceCapacity, fldPath.Child("capacity"))...)+	} else {+		allErrs = append(allErrs, validateMap(device.Capacity, -1, attributeAndCapacityMaxKeyLength, validateQualifiedName, validateSingleAllocatableDeviceCapacity, fldPath.Child("capacity"))...) 	}+	allErrs = append(allErrs, validateSlice(device.Taints, resource.DeviceTaintsMaxLength,+		func(taint resource.DeviceTaint, fldPath *field.Path) field.ErrorList {+			return validateDeviceTaint(taint, nil, fldPath)+		},+		fldPath.Child("taints"))...)  	allErrs = append(allErrs, validateSet(device.ConsumesCounters, resource.ResourceSliceMaxDeviceCounterConsumptionsPerDevice, 		validateDeviceCounterConsumption,

framework internals

vercel/next.js · #99232

Files changed →View PR ↗

[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' }

core implementation

holoviz/panel · #8775

Files changed →View PR ↗

fix: Stop shared ESM watchers when unusedPython · 165 + / 29 −

Introduces 11 new declarations in panel/io/watcher.py.

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

panel/io/watcher.py ↗ · 3 files

@@ -0,0 +1,157 @@+"""+Shared file watching for the autoreload development loop.++Components that render from the same file, e.g. every component compiled+into a shared ESM bundle, would otherwise each start their own watcher+task. This module hands out one watcher per path and notifies all its+subscribers when the file changes.+"""+from __future__ import annotations++import asyncio+import os+import pathlib+import typing as t+import weakref++from .state import state++_watchers: dict[pathlib.Path, PathWatcher] = {}+++class PathWatcher:+    """+    Watches a single path on behalf of any number of subscribers.++    Subscribers are held weakly, so subscribing does not keep a component+    alive; each is notified by calling the method it subscribed with.+    """++    def __init__(self, path: pathlib.Path):+        self.path = path+        self._subscribers: weakref.WeakKeyDictionary[t.Any, set[str]] = weakref.WeakKeyDictionary()+        self._stop_event: asyncio.Event | None = None

systems design

kubernetes/kubernetes · #142387

Files changed →View PR ↗

Refactor PodGroupProtectionController to use namespacedKey and objectOf functionsGo · 32 + / 31 −

Introduces 4 new declarations in pkg/controller/scheduling/podgroupprotection/podgroup_protection_controller.go.

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

pkg/controller/scheduling/podgroupprotection/podgroup_protection_controller.go ↗ · 2 files

@@ -316,27 +314,30 @@ func (c *Controller) enqueuePodGroupForPod(logger klog.Logger, pod *v1.Pod) { 		return 	} -	pgKey := pod.Namespace + "/" + *pod.Spec.SchedulingGroup.PodGroupName+	pgKey := namespacedKey(pod.Namespace, *pod.Spec.SchedulingGroup.PodGroupName) 	logger.V(4).Info("Enqueuing PodGroup for pod event", "pod", klog.KObj(pod), "podGroup", pgKey) 	c.queue.Add(pgKey) } -func getPod(obj interface{}) *v1.Pod {+// objectOf extracts a typed object from an informer event payload or unwraps it+// from a cache.DeletedFinalStateUnknown tombstone.+func objectOf[T any](obj any) T {+	var zero T 	if obj == nil {-		return nil+		return zero+	}+	if t, ok := obj.(T); ok {+		return t+	}+	tombstone, ok := obj.(cache.DeletedFinalStateUnknown)+	if !ok {+		utilruntime.HandleError(fmt.Errorf("expected %T or DeletedFinalStateUnknown, got %T", zero, obj))+		return zero 	}-	pod, ok := obj.(*v1.Pod)+	t, ok := tombstone.Obj.(T) 	if !ok {-		tombstone, ok := obj.(cache.DeletedFinalStateUnknown)-		if !ok {-			utilruntime.HandleError(fmt.Errorf("couldn't get object from tombstone %#v", obj))-			return nil

language design

rust-lang/rust · #162832

Files changed →View PR ↗

add `Div` and `Mul` for `Complex<{float}>`Rust · 74 + / 1 −

Introduces 6 new declarations in library/core/src/num/complex.rs.

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

library/core/src/num/complex.rs ↗ · 4 files

@@ -91,3 +92,54 @@ impl<T: Sub<Output = T>> Sub<T> for Complex<T> {         Complex::new(self.re - rhs, self.im)     } }++macro_rules! impl_complex_mul_div {+    ($ty:ty, $mul:ident, $div:ident) => {+        #[unstable(feature = "complex_numbers", issue = "154023")]+        impl Mul for Complex<$ty> {+            type Output = Self;++            #[inline]+            fn mul(self, rhs: Self) -> Self::Output {+                let Complex { re: a, im: b } = self;+                let Complex { re: c, im: d } = rhs;++                let ac = a * c;+                let bd = b * d;+                let ad = a * d;+                let bc = b * c;++                let z = Complex::new(ac - bd, ad + bc);++                // Only call the libcall when both components are NaN.+                //+                // The naive algorithm would return NaN + NaNi for an input like+                // (1 + 0i) * (inf + infi). The libcall instead returns inf + infi.+                //+                // We duplicate the fast path here so that it can be inlined. We use a libcall+                // for the NaN correction to reduce the size of `core`.+                if z.re.is_nan() && z.im.is_nan() {+                    crate::hint::cold_path();+                    $mul(a, b, c, d)+                } else {

framework internals

vercel/next.js · #99222

Files changed →View PR ↗

Use focused npm advisories and nudge only for ready upgradesTypeScript · 106 + / 350 −

Introduces 4 new declarations in packages/next/src/lib/upgrade/prepare-upgrade.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/prepare-upgrade.ts ↗ · 6 files

@@ -533,136 +426,55 @@ async function readNpmAdvisories(versions: string[]): Promise<Advisory[]> {     throw new Error('Could not check for security updates.')   } -  const advisories: Advisory[] = data.next.map((finding) => {-    if (!finding || typeof finding.vulnerable_versions !== 'string') {+  return data.next.map((finding) => {+    if (+      !finding ||+      typeof finding.vulnerable_versions !== 'string' ||+      !finding.vulnerable_versions.trim()+    ) {       throw new Error('Could not check for security updates.')     }--    return {-      // npm's active advisory feed does not expose withdrawal metadata.-      withdrawn_at: null,-      vulnerabilities: [-        {-          package: { ecosystem: 'npm', name: 'next' },-          vulnerable_version_range: finding.vulnerable_versions,-        },-      ],+    const range = finding.vulnerable_versions.replace(/,\s*/g, ' ')+    if (!semver.validRange(range)) {+      throw new Error('Could not check for security updates.')     }+    return range   })-  return advisories-}--function advisoryVersions(value: unknown, checkedVersion: string): string[] {

core implementation

holoviz/panel · #8777

Files changed →View PR ↗

Drop pyodide-http from converted appsPython · 24 + / 50 −

Introduces 3 new declarations in panel/io/pyodide.py.

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

panel/io/pyodide.py ↗ · 9 files

@@ -101,31 +96,28 @@ def _sampledata_dir(create=None):         return '/drive/assets/sampledata'     bokeh.util.sampledata.external_data_dir = _sampledata_dir -if pyodide_http is None:-    import pandas--    def _read_file(*args, **kwargs):-        if args and isurl(args[0]):-            args = (pyodide.http.open_url(args[0]),)+args[1:]-        elif isurl(kwargs.get('filepath_or_buffer')):-            kwargs['filepath_or_buffer'] = pyodide.http.open_url(kwargs['filepath_or_buffer'])-        return args, kwargs--    # Patch pandas.read_csv-    _read_csv_original = pandas.read_csv-    @functools.wraps(pandas.read_csv)-    def _read_csv(*args, **kwargs):-        args, kwargs = _read_file(*args, **kwargs)-        return _read_csv_original(*args, **kwargs)-    pandas.read_csv = _read_csv  # type: ignore--    # Patch pandas.read_json-    _read_json_original = pandas.read_json-    @functools.wraps(pandas.read_json)-    def _read_json(*args, **kwargs):-        args, kwargs = _read_file(*args, **kwargs)-        return _read_json_original(*args, **kwargs)-    pandas.read_json = _read_json  # type: ignore+def _read_file(*args, **kwargs):+    if args and isurl(args[0]):+        args = (pyodide.http.open_url(args[0]),)+args[1:]+    elif isurl(kwargs.get('filepath_or_buffer')):+        kwargs['filepath_or_buffer'] = pyodide.http.open_url(kwargs['filepath_or_buffer'])

Read today’s edition →