Selected changesmerged Oct 6, 2026 – Oct 12, 2026
component-base/metrics/testutil: compute quantiles from native histogramsGo · 163 + / 0 −
Introduces 4 new declarations in staging/src/k8s.io/component-base/metrics/testutil/metrics.go.
Adds new systems design rather than adjusting what was there. Tests changed with it, with code of their own.
staging/src/k8s.io/component-base/metrics/testutil/metrics.go ↗ · 2 files
@@ -383,6 +413,139 @@ func (hist *Histogram) Quantile(q float64) float64 { return bucketQuantile(q, buckets) } +// nativeBuckets decodes the sparse, exponentially sized buckets of a native+// histogram (https://www.kubernetes.dev/resources/keps/5808/)+// into a list of non-cumulative buckets covering the real number line,+// sorted by ascending upper bound. It returns nil if hist doesn't carry any+// native histogram data (e.g. because native histograms are disabled or the+// histogram has no observations).+func (hist *Histogram) nativeBuckets() []bucket {+ h := hist.Histogram+ if len(h.GetPositiveSpan()) == 0 && len(h.GetNegativeSpan()) == 0 &&+ h.GetZeroCount() == 0 && h.GetZeroCountFloat() == 0 {+ return nil+ }++ schema := h.GetSchema()+ var buckets []bucket++ for idx, count := range decodeNativeHistogramSpans(h.GetPositiveSpan(), h.GetPositiveDelta(), h.GetPositiveCount()) {+ if count <= 0 {+ continue+ }+ lower, upper := nativeHistogramBucketBounds(schema, idx)+ buckets = append(buckets, bucket{lowerBound: lower, upperBound: upper, count: count})+ }+ for idx, count := range decodeNativeHistogramSpans(h.GetNegativeSpan(), h.GetNegativeDelta(), h.GetNegativeCount()) {+ if count <= 0 {+ continue+ }+ lower, upper := nativeHistogramBucketBounds(schema, idx)+ buckets = append(buckets, bucket{lowerBound: -upper, upperBound: -lower, count: count})+ }
kubectl: separate `attach` flags from runtime optionsGo · 75 + / 48 −
Introduces 5 new declarations in staging/src/k8s.io/kubectl/pkg/cmd/attach/attach.go.
Adds new runtime rather than adjusting what was there. Tests changed with it, with code of their own.
staging/src/k8s.io/kubectl/pkg/cmd/attach/attach.go ↗ · 2 files
@@ -94,20 +113,62 @@ type AttachOptions struct { Config *restclient.Config } -// NewAttachOptions creates the options for attach-func NewAttachOptions(streams genericiooptions.IOStreams) *AttachOptions {- return &AttachOptions{- StreamOptions: exec.StreamOptions{- IOStreams: streams,- },- Attach: &DefaultRemoteAttach{},- AttachFunc: DefaultAttachFunc,+// ToOptions converts from CLI inputs to runtime inputs.+func (flags *AttachFlags) ToOptions(f cmdutil.Factory, cmd *cobra.Command, args []string) (*AttachOptions, error) {+ namespace, _, err := f.ToRawKubeConfigLoader().Namespace()+ if err != nil {+ return nil, err+ }++ getPodTimeout, err := cmdutil.GetPodRunningTimeoutFlag(cmd)+ if err != nil {+ return nil, err }++ config, err := f.ToRESTConfig()+ if err != nil {+ return nil, err+ }++ o := &AttachOptions{+ Namespace: namespace,+ ContainerName: flags.ContainerName,+ Stdin: flags.Stdin,+ TTY: flags.TTY,
test_runner: add mock call assertions to t.assertJavaScript · 106 + / 0 −
Introduces 6 new declarations in lib/internal/test_runner/assert.js.
Adds new runtime rather than adjusting what was there. Tests changed with it, with code of their own.
lib/internal/test_runner/assert.js ↗ · 4 files
@@ -28,13 +36,110 @@ const methodsToCopy = [ ]; let assertMap; +function getMockContext(fn) {+ const { MockFunctionContext } = require('internal/test_runner/mock/mock');+ const ctx = fn?.mock;++ if (!(ctx instanceof MockFunctionContext)) {+ throw new ERR_INVALID_ARG_TYPE('fn', 'mock function', fn);+ }++ return ctx;+}++function called(fn, message) {+ const count = getMockContext(fn).callCount();++ if (count === 0) {+ throw new AssertionError({+ __proto__: null,+ message: message ?? 'Expected mock function to have been called',+ actual: count,+ operator: 'called',+ stackStartFn: called,+ });+ }+}++function callCount(fn, times, message) {+ validateInteger(times, 'times', 0);+ const count = getMockContext(fn).callCount();++ if (count !== times) {
ENH: sniff sep=None with the C engine in read_csv (GH#9645)Python · 105 + / 9 −
Introduces 5 new declarations in pandas/io/parsers/readers.py.
Adds new core implementation rather than adjusting what was there. Tests changed with it, with code of their own.
pandas/io/parsers/readers.py ↗ · 7 files
@@ -3643,3 +3689,53 @@ def _validate_skipfooter(kwds: dict[str, Any]) -> None: raise ValueError("'skipfooter' not supported for iteration") if kwds.get("nrows"): raise ValueError("'skipfooter' not supported with 'nrows'")+++def _iter_physical_lines(+ handle: IO[Any], chunks: list[bytes | str], lineterminator: str | None+) -> Iterator[bytes | str]:+ """+ Yield each line of ``handle`` without its terminator, appending every chunk+ read to ``chunks``.+ """+ eol: re.Pattern[Any] | None = None+ partial: list[Any] = []+ skip_lf = False+ while True:+ chunk = handle.read(_SNIFF_CHUNK_SIZE)+ if not chunk:+ tail = partial[0][:0].join(partial) if partial else ""+ if tail:+ yield tail+ return+ chunks.append(chunk)+ if eol is None:+ pattern = re.escape(lineterminator) if lineterminator else r"\r\n|\r|\n"+ eol = re.compile(pattern.encode() if isinstance(chunk, bytes) else pattern)+ start = 0+ if skip_lf and chunk[:1] in (b"\n", "\n"):+ # the second half of a "\r\n" split across chunks+ start = 1+ for match in eol.finditer(chunk, start):+ partial.append(chunk[start : match.start()])+ yield chunk[:0].join(partial)
v1/systemone endpoint Python · 444 + / 0 −
Introduces 28 new declarations in src/transformers/cli/serving/systemone.py.
Adds new core implementation rather than adjusting what was there. Tests changed with it, with code of their own.
src/transformers/cli/serving/systemone.py ↗ · 5 files
@@ -0,0 +1,423 @@+# Copyright 2026 The HuggingFace Team. All rights reserved.+#+# 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.+"""+Handler for the /v1/systemone endpoint (System One typed decisions, in Jev's request and answer shapes).++Answers typed questions (`choice`, `score`, `noul`) about a `state` with a probability for every allowed answer. No+text is generated: each allowed answer gets a single-token label, and its probability is read from the model's logits+in one forward pass.+"""++import json+import string+from dataclasses import dataclass+from pathlib import Path+from typing import TYPE_CHECKING, Annotated, Any, Literal++from ...utils import logging+from ...utils.import_utils import is_serve_available+++if is_serve_available():+ from fastapi import HTTPException
MIR move elimination [3/6]: PreciseLivenessRust · 646 + / 1 −
Introduces 41 new declarations in compiler/rustc_mir_dataflow/src/impls/precise_liveness.rs.
Adds new language design rather than adjusting what was there. Tests changed with it, with code of their own.
compiler/rustc_mir_dataflow/src/impls/precise_liveness.rs ↗ · 21 files
@@ -0,0 +1,596 @@+//! Computes the points where each local must have a distinct allocation.+//!+//! The result is a [`SparseIntervalMatrix`] with one row per local. Two locals+//! may share the same address only if their rows are disjoint. To model MIR+//! statements where a source operand and destination place may share an+//! address, each statement and terminator is split into an early point, where+//! operands are read, and a late point, where destinations are written.+//!+//! A local live range starts at the late point of any statement or terminator+//! that writes to it without a `Deref` projection. It ends at `StorageLive` or+//! `StorageDead`, or at the early point of a whole-local move operand or the+//! last use of that local on a control-flow path (only for locals whose address+//! is never observed). This happens at `StorageLive` because it resets a local+//! to an uninitialized state.+//!+//! `Call` terminators are handled specially: move operands are kept live+//! through the late point of the terminator so they conflict with each other+//! and with the destination place. This matches the runtime behavior where the+//! place is donated to the callee for the duration of the call.+//!+//! The analysis consists of three passes:+//!+//! 1. A backward value-liveness analysis which identifies the last point at+//! which each local is directly used in each control flow path. This is used+//! to shorten the lifetime of unborrowed locals to their last use.+//! 2. A forward allocation-liveness analysis which uses that information+//! together with writes, moves, and storage markers to compute which+//! allocations may be live on entry to each block.+//! 3. A final walk using those entry states which constructs the matrix and+//! distinguishes whether each effect happens at the early or late point of a+//! statement or terminator.++use rustc_index::IndexVec;
Report periodic progress during index builds and idxpack conversionPython · 278 + / 205 −
Introduces 4 new declarations in scripts/dataloading/convert_indexes_to_idxpack.py.
Adds new framework internals rather than adjusting what was there. Tests changed with it, with code of their own.
scripts/dataloading/convert_indexes_to_idxpack.py ↗ · 4 files
@@ -1202,144 +1247,152 @@ def _build_native_tar_ordinal_array_specs( map_summaries: list[list[NativeTarOrdinalMapBuildSummary | None]] = [] tasks = [] manifest_keys = []- for map_index, spec in enumerate(maps):- manifest_index_paths = tuple(- _resolve_local_sidecar(manifest_path, indexes_root) for manifest_path in spec.manifest_paths- )- if spec.aggregate_manifest:- aggregate_arrays, snapshot, summary = _build_aggregate_native_tar_array_specs(- spec,- map_index,- temporary_directory,- manifest_index_paths[0],- indexes_root=indexes_root,- index_path_overrides=index_path_overrides,- source_size_overrides=source_size_overrides,- include_member_ordinals=include_member_ordinals,+ with _log_progress("Preparing native-tar routes"):+ for map_index, spec in enumerate(maps):+ manifest_index_paths = tuple(+ _resolve_local_sidecar(manifest_path, indexes_root) for manifest_path in spec.manifest_paths )- arrays.extend(aggregate_arrays)- map_snapshots.append(snapshot)- map_summaries.append([summary])- else:- assert include_member_ordinals- tar_index_paths = tuple(- (- index_path_overrides[tar_path]- if tar_path in index_path_overrides- else _resolve_local_sidecar(tar_path, indexes_root)+ if spec.aggregate_manifest:
SpeechLM vLLM: serve FP8 and NVFP4 ModelOpt checkpoints (quantized decoder + prequantized FP8 audio encoder)Python · 306 + / 6 −
Introduces 12 new declarations in nemo/collections/speechlm2/vllm/salm/fp8_encoder.py.
Adds new core implementation rather than adjusting what was there. Tests changed with it, with code of their own.
nemo/collections/speechlm2/vllm/salm/fp8_encoder.py ↗ · 8 files
@@ -0,0 +1,270 @@+# Copyright (c) 2026, NVIDIA CORPORATION. All rights reserved.+#+# 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.++"""FP8 audio encoder for SpeechLM checkpoints quantized with ModelOpt FP8.++A checkpoint describes its audio encoder's quantization the way it describes its+decoder's, in the ModelOpt ``quantization_config`` of ``config.json``+(``quant_algo: FP8``): every Linear of the perception module that no ``ignore``+entry matches is quantized. Such a layer stores an FP8 E4M3 ``weight``, a float32+scalar ``weight_scale`` and a float32 scalar ``input_scale``, the static per-tensor+activation scale, both in the divisor convention ``x_fp8 = x / scale``. A+speaker-aware checkpoint keeps its diarizer, the ASR encoder's input projection and+the connector unquantized by listing them::++ "ignore": [..., "perception.encoder.diarization_model*",+ "perception.encoder.asr_encoder.pre_encode*", "perception.proj"]++The audio encoder runs as plain PyTorch inside the plugin rather than through vLLM's+quantized layers, so ``build_fp8_encoder`` applies vLLM's exclusion rule to the+perception Linears itself and builds ``FP8Linear`` layers for the quantized ones+when the model is constructed; the checkpoint then loads into them directly.+
turbopack: report an actionable error when Node.js child processes cannot connectRust · 168 + / 6 −
Introduces 18 new declarations in turbopack/crates/turbopack-node/src/evaluate.rs.
Adds new framework internals rather than adjusting what was there. Tests changed with it, with code of their own.
turbopack/crates/turbopack-node/src/evaluate.rs ↗ · 11 files
@@ -769,3 +826,76 @@ impl Issue for EvaluationIssue { Some(self.source) } }++/// Node.js child processes could not connect back to the parent process, which+/// makes it impossible to run any Node.js code (webpack loaders, PostCSS, ...).+#[turbo_tasks::value(shared)]+pub struct NodeJsConnectIssue {+ /// The source being transformed when the connection failed. The failure is+ /// unrelated to its contents, but this tells the user which transform hit it.+ pub source: IssueSource,+ /// What was being evaluated, e.g. the loader chain.+ pub crash_context: Option<RcStr>,+ /// Error output of the child process, describing why the connection failed.+ pub stderr: RcStr,+}++#[async_trait]+#[turbo_tasks::value_impl]+impl Issue for NodeJsConnectIssue {+ fn severity(&self) -> IssueSeverity {+ IssueSeverity::Error+ }++ async fn title(&self) -> Result<StyledString> {+ Ok(StyledString::Text(rcstr!(+ "Node.js worker processes could not connect to Turbopack"+ )))+ }++ fn stage(&self) -> IssueStage {+ IssueStage::Transform+ }
Helpful suggestions for incorrect address-of mutability (2)Rust · 74 + / 11 −
Introduces 3 new declarations in compiler/rustc_hir_typeck/src/fn_ctxt/checks.rs.
Adds new language design rather than adjusting what was there. Tests changed with it, with code of their own.
compiler/rustc_hir_typeck/src/fn_ctxt/checks.rs ↗ · 4 files
@@ -982,23 +982,62 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { err.emit() } - fn suggest_ptr_null_mut(+ fn suggest_mut_addr( &self, expected_ty: Ty<'tcx>, provided_ty: Ty<'tcx>, arg: &hir::Expr<'tcx>, err: &mut Diag<'_>, ) {- if let ty::RawPtr(_, hir::Mutability::Mut) = expected_ty.kind()- && let ty::RawPtr(_, hir::Mutability::Not) = provided_ty.kind()- && let hir::ExprKind::Call(callee, _) = arg.kind- && let hir::ExprKind::Path(hir::QPath::Resolved(_, path)) = callee.kind- && let Res::Def(_, def_id) = path.res- && self.tcx.get_diagnostic_item(sym::ptr_null) == Some(def_id)- {+ match (expected_ty.kind(), provided_ty.kind(), arg.kind) { // The user provided `ptr::null()`, but the function expects // `ptr::null_mut()`.- err.subdiagnostic(SuggestPtrNullMut { span: arg.span });+ (+ ty::RawPtr(_, hir::Mutability::Mut),+ ty::RawPtr(_, hir::Mutability::Not),+ hir::ExprKind::Call(callee, _),+ ) if let hir::ExprKind::Path(hir::QPath::Resolved(_, path)) = callee.kind+ && let Res::Def(_, def_id) = path.res+ && self.tcx.get_diagnostic_item(sym::ptr_null) == Some(def_id) =>+ {+ err.subdiagnostic(SuggestPtrNullMut { span: arg.span });+ }+ // &mut T expected, &T or *const/mut T found
llama : add a GPU cache for MoE experts kept in host memoryC++ · 739 + / 13 −
Introduces 14 new declarations in src/llama-moe-cache.cpp.
Adds new framework internals rather than adjusting what was there. Tests changed with it, with code of their own.
src/llama-moe-cache.cpp ↗ · 14 files
@@ -0,0 +1,550 @@+#include "llama-moe-cache.h"++#include "llama-impl.h"+#include "llama-model.h"++#include "ggml-cpp.h"++#include <algorithm>+#include <stdexcept>+#include <unordered_map>+#include <vector>++namespace {++// LRU of the experts of a group of layers, the slot of each expert is kept in the slot map of its layer+struct moe_cache_lru {+ int32_t n_expert = 0;+ int32_t n_slots = 0;++ std::vector<int32_t *> slot_map; // [n_layer] data of the slot maps, -1 if the expert is not cached+ std::vector<int32_t> key_of; // [n_slots] il*n_expert + expert, -1 if empty++ // doubly linked list of the slots, head is the least recently used+ std::vector<int32_t> prev;+ std::vector<int32_t> next;+ int32_t head = -1;+ int32_t tail = -1;++ std::vector<uint32_t> seen; // [n_expert]+ uint32_t seen_gen = 0;+ std::vector<int32_t> uniq;++ void init(int32_t n_layer, int32_t n_expert, int32_t n_slots) {
vectorized vec::dedup pre-scanRust · 302 + / 108 −
Introduces 14 new declarations in library/alloctests/benches/vec.rs.
Adds new language design rather than adjusting what was there. Tests changed with it, with code of their own.
library/alloctests/benches/vec.rs ↗ · 3 files
@@ -688,137 +688,176 @@ fn bench_dedup_slice_truncate(b: &mut Bencher, sz: usize) { }); } -// Measures performance of Vec::dedup on random data.-fn bench_vec_dedup_random(b: &mut Bencher, sz: usize) {- let mut template = vec![0u32; sz];- b.bytes = size_of_val(template.as_slice()) as u64;- random_sorted_fill(0x43, &mut template);-- let mut vec = template.clone();- b.iter(|| {- let vec = black_box(&mut vec);- vec.dedup();- black_box(vec.first());- let vec = black_box(vec);- vec.clear();- vec.extend_from_slice(&template);- });-}--// Measures performance of Vec::dedup when there is no items removed-fn bench_vec_dedup_none(b: &mut Bencher, sz: usize) {- let mut template = vec![0u32; sz];- b.bytes = size_of_val(template.as_slice()) as u64;- template.chunks_exact_mut(2).for_each(|w| {- w[0] = black_box(0);- w[1] = black_box(5);- });-- let mut vec = template.clone();- b.iter(|| {- let vec = black_box(&mut vec);- vec.dedup();