Daily edition

Sep 29, 2026

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

Sep 30, 20265 reads · 174 merged PRs screened

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,

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 · #99322

Files changed →View PR ↗

Scope client component loading metrics to HTML rendersTypeScript · 361 + / 173 −

Introduces 4 new declarations in packages/next/src/server/app-render/app-render.tsx.

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

packages/next/src/server/app-render/app-render.tsx ↗ · 21 files

@@ -3202,66 +3241,76 @@ async function renderAppPage(     contentType: HTML_CONTENT_TYPE_HEADER,   } -  const stream = await renderToStream(-    // NOTE: in Cache Components (dev), if the render is restarted, it will use a different requestStore-    // than the one that we're passing in here.-    requestStore,-    req,-    res,-    ctx,-    loaderTree,-    formState,-    postponedState,-    metadata,-    // If we're rendering HTML after an action, we don't want restartable-render behavior-    // because the result should be dynamic, like it is in prod.-    // Also, the request store might have been mutated by the action (e.g. enabling draftMode)-    // and we currently we don't copy changes over when creating a new store,-    // so the restarted render wouldn't be correct.-    didExecuteServerAction ? undefined : createRequestStore,-    stagedFallbackParams-  )--  // Forward an invalid-dynamic-usage error recorded by `'use cache'` only-  // when userland caught it (try/catch around the cache call). If userland-  // didn't catch, the rejection propagated into the React render, and React's-  // `serverComponentsErrorHandler` already stamped a digest on the error and-  // emitted it as a Flight error chunk — surfacing it again here would-  // duplicate the entry in the dev overlay.-  //-  // The cacheComponents paths forward this themselves via-  // `runValidationInDev` and the validation-skipped fallback in-  // `generateDynamicFlightRenderResultWithStagesInDev`. Here we cover the

core implementation

pandas-dev/pandas · #69805

Files changed →View PR ↗

TYP: define DatetimeIndex attributes explicitly instead of via inherit_names (GH#32100)Python · 599 + / 33 −

Introduces 14 new declarations in pandas/core/indexes/datetimes.py.

Adds new core implementation rather than adjusting what was there. Read the linked PR for the surrounding test context.

pandas/core/indexes/datetimes.py ↗ · 1 files

@@ -466,6 +665,373 @@ def strftime(self, date_format) -> Index:         arr = self._data.strftime(date_format)         return Index(arr, name=self.name, dtype=arr.dtype, copy=False) +    def month_name(self, locale=None) -> Index:+        """+        Return the month names with specified locale.++        This method returns the full name of the month (e.g., "January", "February")+        for each datetime value in the Series/Index. The names can be localized+        to different languages using the locale parameter.++        Parameters+        ----------+        locale : str, optional+            Locale determining the language in which to return the month name.+            Default is English locale (``'en_US.utf8'``). Use the command+            ``locale -a`` on your terminal on Unix systems to find your locale+            language code.++        Returns+        -------+        Index+            Index of month names.++        See Also+        --------+        DatetimeIndex.day_name : Return the day names with specified locale.++        Examples+        --------+        >>> idx = pd.date_range(start="2018-01", freq="ME", periods=3)+        >>> idx+        DatetimeIndex(['2018-01-31', '2018-02-28', '2018-03-31'],

core implementation

numpy/numpy · #32701

Files changed →View PR ↗

BUG: convert to plain ndarray in `np.histogramdd`Python · 20 + / 12 −

Introduces 2 new declarations in numpy/lib/_histograms_impl.py.

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

numpy/lib/_histograms_impl.py ↗ · 5 files

@@ -275,9 +275,23 @@ def _hist_bin_auto(x, range):                        'sturges': _hist_bin_sturges}  -def _ravel_and_check_weights(a, weights):-    """ Check a and weights have matching shapes, and ravel both """+def _asarray_and_check_weights(a, weights, weights_shape=None):+    """ Convert a and weights to base ndarrays and check weights shape """     a = np.asarray(a)+    if weights is not None:+        weights = np.asarray(weights)+        if weights_shape is None:+            weights_shape = a.shape+        if weights.shape != weights_shape:+            raise ValueError(+                'weights should have the same shape as the sample points, '+                f'expected {weights_shape} but got {weights.shape}.')+    return a, weights+++def _asarray_and_ravel(a, weights):+    """ Convert and check a and weights, and ravel both """+    a, weights = _asarray_and_check_weights(a, weights)      # Ensure that the array is a "subtractable" dtype     if a.dtype == np.bool:

Read today’s edition →