Daily edition

Sep 22, 2026

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

Sep 23, 20265 reads · 179 merged PRs screened

runtime

nodejs/node · #65787

Files changed →View PR ↗

sqlite: add virtual table support via createModule()C++ · 826 + / 0 −

Introduces 7 new declarations in src/node_sqlite.cc.

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

src/node_sqlite.cc ↗ · 5 files

@@ -1012,6 +1015,483 @@ BaseObjectPtr<DatabaseSyncLimits> DatabaseSyncLimits::Create(   return MakeBaseObject<DatabaseSyncLimits>(env, obj, std::move(database)); } +// ---------------------------------------------------------------------------+// VirtualTableModule+// ---------------------------------------------------------------------------++VirtualTableModule::VirtualTableModule(Environment* env,+                                       BaseObjectWeakPtr<DatabaseSync> db,+                                       Local<Function> rows_fn,+                                       std::string&& schema_sql,+                                       int num_columns,+                                       std::vector<int>&& hidden_col_indices,+                                       bool use_bigint_args,+                                       bool direct_only)+    : env_(env),+      db_(std::move(db)),+      rows_fn_(env->isolate(), rows_fn),+      schema_sql_(std::move(schema_sql)),+      num_columns_(num_columns),+      hidden_col_indices_(std::move(hidden_col_indices)),+      use_bigint_args_(use_bigint_args),+      direct_only_(direct_only),+      module_def_({}) {+  // Initialize the sqlite3_module definition. Each VirtualTableModule instance+  // gets its own copy to avoid thread-safety issues with worker threads.+  module_def_.iVersion = 1;+  module_def_.xCreate = VirtualTableModule::xCreate;+  module_def_.xConnect = VirtualTableModule::xCreate;+  module_def_.xBestIndex = VirtualTableModule::xBestIndex;+  module_def_.xDisconnect = VirtualTableModule::xDisconnect;+  module_def_.xDestroy = VirtualTableModule::xDestroy;+  module_def_.xOpen = VirtualTableModule::xOpen;

framework internals

vercel/next.js · #98426

Files changed →View PR ↗

Fix startTime and shutdown delivery of forwarded Turbopack trace spansRust · 154 + / 33 −

Introduces 5 new declarations in turbopack/crates/turbo-tasks/src/message_queue.rs.

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

turbopack/crates/turbo-tasks/src/message_queue.rs ↗ · 5 files

@@ -59,58 +88,93 @@ impl CompilationEventQueue {                 history.pop_front();             }             history.push_back(message_clone.clone());+            drop(history);++            if deliver {+                // Send to all active receivers of the same message type+                if let Some(mut type_subscribers) = subscribers.get_mut(&EventChannelType::Type(+                    message_clone.type_name().to_owned(),+                )) {+                    let mut removal_indices = Vec::new();+                    for (ix, sender) in type_subscribers.iter().enumerate() {+                        if sender.send(message_clone.clone()).await.is_err() {+                            removal_indices.push(ix);+                        }+                    } -            // Send to all active receivers of the same message type-            if let Some(mut type_subscribers) = subscribers.get_mut(&EventChannelType::Type(-                message_clone.type_name().to_owned(),-            )) {-                let mut removal_indices = Vec::new();-                for (ix, sender) in type_subscribers.iter().enumerate() {-                    if sender.send(message_clone.clone()).await.is_err() {-                        removal_indices.push(ix);+                    for ix in removal_indices.iter().rev() {+                        type_subscribers.remove(*ix);                     }                 } -                for ix in removal_indices.iter().rev() {-                    type_subscribers.remove(*ix);-                }

framework internals

kubernetes/kubernetes · #141580

Files changed →View PR ↗

scheduler: refine SchedulingAlgorithm surface and decouple cache vs snapshot placementGo · 338 + / 192 −

Introduces 16 new declarations in pkg/scheduler/algorithm.go.

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

pkg/scheduler/algorithm.go ↗ · 9 files

@@ -447,126 +557,148 @@ func (a *SchedulingAlgorithm) assume(logger klog.Logger, schedFramework framewor 		// Any potential NodeAllocatableResourceClaimStatuses from a previously failed scheduling attempt is overwritten. 		// This field is not explicitly cleared as the Pod object is reconstructed in handleSchedulingFailure() 		// before re-queueing.-		assumedPodInfo.Pod.Status.NodeAllocatableResourceClaimStatuses = dynamicresources.ExtractPodNodeAllocatableResourceClaimStatus(logger, state, host)+		assumedPodInfo.Pod.Status.NodeAllocatableResourceClaimStatuses =+			dynamicresources.ExtractPodNodeAllocatableResourceClaimStatus(logger, state, host) 	}+	return assumedPodInfo+} -	if state.IsPodGroupSchedulingCycle() {-		err := a.nodeInfoSnapshot.AssumePod(assumedPodInfo.PodInfo)-		if err != nil {-			logger.Error(err, "Scheduler snapshot AssumePod failed")-			return err+// reserve runs Reserve plugins for the assumed pod and converts plugin rejections+// into a single-node FitError.+func (a *SchedulingAlgorithm) reserve(ctx context.Context, state fwk.CycleState,+	schedFramework framework.Framework, assumedPodInfo *framework.QueuedPodInfo,+	origPod *v1.Pod, host string) *fwk.Status {+	if status := schedFramework.RunReservePluginsReserve(ctx, state, assumedPodInfo.Pod, host); !status.IsSuccess() {+		if status.IsRejected() {+			fitErr := &framework.FitError{+				NumAllNodes: 1,+				Pod:         origPod,+				Diagnosis: framework.Diagnosis{+					NodeToStatus: framework.NewDefaultNodeToStatus(),+				},+			}+			fitErr.Diagnosis.NodeToStatus.Set(host, status)+			fitErr.Diagnosis.AddPluginStatus(status)+			return fwk.NewStatus(status.Code()).WithError(fitErr) 		}

core implementation

huggingface/transformers · #48656

Files changed →View PR ↗

Update tokenizer gguf support Python · 291 + / 559 −

Introduces 11 new declarations in src/transformers/integrations/ggml.py.

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

src/transformers/integrations/ggml.py ↗ · 8 files

@@ -401,449 +370,3 @@ def _gguf_parse_value(_value, data_type):     elif data_type == 9:         _value = _gguf_parse_value(_value, array_data_type)     return _value---class GGUFTokenizerSkeleton:-    def __init__(self, dict_):-        for k, v in dict_.items():-            setattr(self, k, v)--        if not hasattr(self, "merges"):-            if not hasattr(self, "tokens") or not hasattr(self, "scores"):-                raise ValueError(-                    "tokens and scores need to be passed for a LLaMa tokenizer without merges to be instantiated."-                )-            tokens = self.tokens-            scores = self.scores-            vocab = {t: scores[i] for i, t in enumerate(tokens)}--            logger.warning("Merges were not in checkpoint, building merges on the fly.")-            merges = []-            for merge, piece_score in tqdm(vocab.items()):-                local = []-                for index in range(1, len(merge)):-                    piece_l, piece_r = merge[:index], merge[index:]-                    if piece_l in tokens and piece_r in tokens:-                        local.append((piece_l, piece_r, piece_score))-                local = sorted(local, key=lambda x: (vocab[x[0]], vocab[x[1]]), reverse=True)-                merges.extend(local)-            merges = sorted(merges, key=lambda val: val[2], reverse=True)-            merges = [(val[0], val[1]) for val in merges]-            self.merges = merges-        else:

language design

react/react · #36734

Files changed →View PR ↗

[compiler] Allow setState after await in effect functionsRust · 151 + / 0 −

Introduces 3 new declarations in compiler/crates/react_compiler_validation/src/validate_no_set_state_in_effects.rs.

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

compiler/crates/react_compiler_validation/src/validate_no_set_state_in_effects.rs ↗ · 8 files

@@ -577,3 +594,62 @@ fn get_set_state_call(     }     Ok(None) }++/// Computes the set of blocks which begin after an `await` has executed on+/// *every* control flow path from the function entry. Instructions in such+/// blocks (and instructions following an Await within any block) are+/// guaranteed to run asynchronously, in a microtask after the synchronous+/// portion of the function has returned.+///+/// This is a forward must-dataflow: a block starts after an await iff all of+/// its predecessors end after an await. Suppression based on this analysis is+/// sound in the presence of try/catch because HirBuilder::push terminates the+/// current block after every instruction within a try region: a MaybeThrow+/// block can therefore only throw from its single instruction, and when that+/// instruction is an Await the rejection also resumes in a microtask.+///+/// Port of computeBlocksStartingAfterAwait in ValidateNoSetStateInEffects.ts.+fn compute_blocks_starting_after_await(func: &HirFunction) -> FxHashSet<BlockId> {+    let mut blocks_with_await: FxHashSet<BlockId> = FxHashSet::default();+    for (block_id, block) in &func.body.blocks {+        let has_await = block.instructions.iter().any(|&instr_id| {+            matches!(+                func.instructions[instr_id.0 as usize].value,+                InstructionValue::Await { .. }+            )+        });+        if has_await {+            blocks_with_await.insert(*block_id);+        }+    }+    // Initialize non-entry blocks optimistically so that loop back-edges do+    // not pessimize the meet; the fixpoint then lowers any block reachable

Read today’s edition →