Daily edition

Oct 8, 2026

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

Oct 9, 20265 reads · 148 merged PRs screened

systems design

kubernetes/kubernetes · #142654

Files changed →View PR ↗

kubelet: run the node admission checks without the scheduler's plugin registryGo · 298 + / 293 −

Introduces 10 new declarations in pkg/scheduler/framework/plugins/helper/resource_fit.go.

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

pkg/scheduler/framework/plugins/helper/resource_fit.go ↗ · 8 files

@@ -0,0 +1,258 @@+/*+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 helper++import (+	"fmt"+	"strings"++	v1 "k8s.io/api/core/v1"+	"k8s.io/apimachinery/pkg/util/sets"+	"k8s.io/component-helpers/resource"+	fwk "k8s.io/kube-scheduler/framework"+	v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper"+	"k8s.io/kubernetes/pkg/scheduler/framework"+)++// ResourceRequestsOptions contains feature gate flags for resource request computation.+type ResourceRequestsOptions struct {+	EnablePodLevelResources                            bool

language design

rust-lang/rust · #163538

Files changed →View PR ↗

Add `rustc::missing_generic_type_visitable` lintRust · 126 + / 57 −

Introduces 5 new declarations in compiler/rustc_lint/src/internal.rs.

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

compiler/rustc_lint/src/internal.rs ↗ · 11 files

@@ -873,3 +876,63 @@ impl<'tcx> LateLintPass<'tcx> for RustcMustMatchExhaustively {         }     } }++declare_tool_lint! {+    /// The `missing_generic_type_visitable_derive` lint detects types implementing `TypeVisitable`+    /// but not deriving `GenericTypeVisitable`.+    ///+    /// `GenericTypeVisitable` is the analog of `TypeVisitable` used by rust-analyzer, and needs to+    /// be implemented whenever `TypeVisitable` is. See [`rustc_type_ir::generic_visit`] for more+    /// information.+    pub rustc::MISSING_GENERIC_TYPE_VISITABLE_DERIVE,+    // This lint is meant to be manually enabled in selected crates (currently only `rustc_type_ir`)+    Allow,+    "Forbid implementing `TypeVisitable` without deriving `GenericTypeVisitable`",+    report_in_external_macro: true+}++declare_lint_pass!(MissingGenericTypeVisitableDerive => [MISSING_GENERIC_TYPE_VISITABLE_DERIVE]);++impl<'tcx> LateLintPass<'tcx> for MissingGenericTypeVisitableDerive {+    fn check_item(&mut self, cx: &LateContext<'tcx>, item: &'tcx hir::Item<'tcx>) {+        // lint ADTs except unions, as neither trait can be implemented on the latter+        if matches!(item.kind, hir::ItemKind::Struct(..) | hir::ItemKind::Enum(..))+            && let Some(regular_id) = cx.tcx.get_diagnostic_item(sym::TypeVisitable)+            && let Some(generic_id) = cx.tcx.get_diagnostic_item(sym::GenericTypeVisitable)+            && let (infcx, param_env) = cx.tcx.infer_ctxt().build_with_typing_env(cx.typing_env())+            && let self_ty = {+                let self_id = item.owner_id.to_def_id();+                let args = infcx.fresh_args_for_item(DUMMY_SP, self_id);+                cx.tcx.type_of(self_id).instantiate(cx.tcx, args).skip_norm_wip()+            }+            // check whether `Self: TypeVisitable<I>` holds for some `I`..

core implementation

huggingface/transformers · #49269

Files changed →View PR ↗

🚨 Generation cleanup in pipelinesPython · 138 + / 140 −

Introduces 2 new declarations in src/transformers/pipelines/base.py.

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

src/transformers/pipelines/base.py ↗ · 12 files

@@ -877,61 +883,22 @@ def __init__(             self.model.to(self.device)          # If it's a generation pipeline and the model can generate:-        # 1 - create a local generation config. This is done to avoid side-effects on the model as we apply local-        # tweaks to the generation config.+        # 1 - set aside the generation parameters, which apply to every call (see `_prepare_generate_kwargs`).         # 2 - load the assistant model if it is passed.         if self._pipeline_calls_generate and self.model.can_generate():             self.assistant_model, self.assistant_tokenizer = load_assistant_model(                 self.model, kwargs.pop("assistant_model", None), kwargs.pop("assistant_tokenizer", None)             )             self.prefix = self.model.config.prefix if hasattr(self.model.config, "prefix") else None-            # Priority order: kwargs > user_generation_config > model.generation_config > default_pipeline_generation_config-            default_pipeline_generation_config = getattr(self, "_default_generation_config", None)-            user_generation_config = kwargs.pop("generation_config", None)-            if hasattr(self.model, "_prepare_generation_config"):-                base_config = user_generation_config or copy.deepcopy(self.model.generation_config)-                if default_pipeline_generation_config is not None:-                    base_config.update(-                        **default_pipeline_generation_config.to_dict(),-                        defaults_only=True,-                        allow_custom_entries=True,-                    )-                prepared_generation_config, kwargs = self.model._prepare_generation_config(-                    generation_config=base_config, **kwargs-                )-                self.generation_config = prepared_generation_config-                # if the `max_new_tokens` is set to the pipeline default, but `max_length` is set to a non-default-                # value: let's honor `max_length`. E.g. we want Whisper's default `max_length=448` take precedence-                # over over the pipeline's length default.-                if (-                    default_pipeline_generation_config is not None-                    and default_pipeline_generation_config.max_new_tokens is not None  # there's a pipeline default

framework internals

pandas-dev/pandas · #68933

Files changed →View PR ↗

BUG: DataFrame.agg with a list of funcs casts uint64 and bool results (GH#65031)Python · 29 + / 5 −

Introduces 1 new declaration in pandas/core/apply.py.

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

pandas/core/apply.py ↗ · 2 files

@@ -1172,9 +1188,17 @@ def _agg_list_like_frame_reductions(self) -> DataFrame | None:                     # by the columns; anything else would silently misalign                     # in the concat below.                     return None-                # to_frame().T avoids the slow DataFrame(list-of-Series) path-                group_pieces.append(row.to_frame(func_name).T)-            pieces.append(concat(group_pieces))+                rows.append(row)++            # to_frame().T avoids the slow DataFrame(list-of-Series) path+            frames = [+                row.to_frame(name).T for name, row in zip(func_names, rows, strict=True)+            ]+            if _stack_as_object([row.dtype for row in rows]):+                # GH#65031 see test_agg_list_like_unsigned_and_signed_is_object+                # and test_agg_list_like_bool_with_numeric_is_object+                frames = [frame.astype(object) for frame in frames]+            pieces.append(concat(frames))          result = concat(pieces, axis=1)         result = result.reindex(columns=obj.columns)

framework internals

ggml-org/llama.cpp · #30114

Files changed →View PR ↗

model : add LiquidAI/d1-omni-600M decision modelC++ · 647 + / 27 −

Introduces 4 new declarations in src/models/lfm2.cpp.

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

src/models/lfm2.cpp ↗ · 21 files

@@ -294,6 +345,242 @@ llama_model_lfm2::graph<iswa>::graph(const llama_model & model, const llm_graph_     ggml_build_forward_expand(gf, cur); } +// media entries (an image or audio prefix) are embeddings, text entries are tokens+static bool lfm2_is_media(const llama_ubatch & ubatch, int64_t i) {+    return ubatch.is_mixed() ? ubatch.type[i] != 0 : ubatch.token == nullptr;+}++// non-causal within a sequence, the media never reads the text, so it is a function of the media alone+// in the head, the text and the media only read their own kind+class llm_graph_input_attn_media : public llm_graph_input_attn_no_cache {+public:+    llm_graph_input_attn_media(const llama_hparams & hparams, const llama_cparams & cparams, bool is_head) :+        llm_graph_input_attn_no_cache(hparams, cparams), is_head(is_head) {}++    void set_input(const llama_ubatch * ubatch) override {+        const int64_t n_tokens = ubatch->n_tokens;++        std::vector<bool> is_media(n_tokens);+        for (int64_t i = 0; i < n_tokens; ++i) {+            is_media[i] = lfm2_is_media(*ubatch, i);+        }++        const auto fill_mask = [&](auto * data, auto zero, auto ninf) {+            for (int64_t i1 = 0; i1 < n_tokens; ++i1) {+                for (int64_t i0 = 0; i0 < n_tokens; ++i0) {+                    bool visible = ubatch->seq_id[i0][0] == ubatch->seq_id[i1][0];+                    if (is_head) {+                        visible = visible && is_media[i0] == is_media[i1];+                    } else {+                        visible = visible && !(is_media[i1] && !is_media[i0]);+                    }+                    data[i1 * n_tokens + i0] = visible ? zero : ninf;

Read today’s edition →