7-day edition

Aug 21, 2026 – Aug 27, 2026

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

Aug 28, 202611 reads · 357 merged PRs screened

framework internals

kubernetes/kubernetes · #141110

Files changed →View PR ↗

DRA: Fix ExtendedResourceCache handling of DeviceClass collisionsGo · 170 + / 78

Introduces 7 new declarations in staging/src/k8s.io/dynamic-resource-allocation/deviceclass/extendedresourcecache/extendedresourcecache.go.

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

staging/src/k8s.io/dynamic-resource-allocation/deviceclass/extendedresourcecache/extendedresourcecache.go · 2 files

@@ -134,86 +150,150 @@ func (c *ExtendedResourceCache) OnUpdate(oldObj, newObj interface{}) {  // OnDelete handles deletion of a device class. func (c *ExtendedResourceCache) OnDelete(obj interface{}) {-	if tombstone, ok := obj.(cache.DeletedFinalStateUnknown); ok {-		obj = tombstone.Obj-	}-	deviceClass, ok := obj.(*resourceapi.DeviceClass)-	if !ok {+	// DeltaFIFO.Replace can emit a key-only tombstone with a nil Obj when+	// the key is no longer available from knownObjects.+	// DeletionHandlingObjectToName falls back to the tombstone key in that+	// case, which is enough because DeviceClass is cluster-scoped and all+	// mappings are keyed by class name.+	objName, err := cache.DeletionHandlingObjectToName(obj)+	if err != nil { 		utilruntime.HandleErrorWithLogger(c.logger, nil, "Expected DeviceClass", "actual", fmt.Sprintf("%T", obj)) 		return 	}-	c.logger.V(5).Info("DeviceClass deleted", "deviceClass", klog.KObj(deviceClass))-	c.removeResourceName2class(deviceClass)-	c.removeClass2ResourceName(deviceClass)+	className := objName.Name+	c.logger.V(5).Info("DeviceClass deleted", "deviceClass", className)+	c.removeMappings(className)  	for _, handler := range c.handlers { 		handler.OnDelete(obj) 	} } -// updateResourceName2class updates the cache with the device class mapping.-// It first removes any existing mappings for this device class to handle-// ExtendedResourceName changes, then adds the new mappings.

language design

denoland/deno · #36592

Files changed →View PR ↗

fix(ext/node): do not resume client TLS sessions unless requestedRust · 150 + / 31

Introduces 10 new declarations in ext/node/ops/tls_wrap.rs.

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

ext/node/ops/tls_wrap.rs · 4 files

@@ -4053,11 +4067,80 @@ fn normalize_pem_headers(pem: &[u8]) -> std::borrow::Cow<'_, [u8]> {   std::borrow::Cow::Owned(s.into_bytes()) } +#[derive(Debug)]+struct NodeClientSessionStoreWrapper {+  inner: Arc<dyn rustls::client::ClientSessionStore>,+  allow_resumption: Arc<AtomicBool>,+}++impl rustls::client::ClientSessionStore for NodeClientSessionStoreWrapper {+  fn set_kx_hint(+    &self,+    server_name: rustls::pki_types::ServerName<'static>,+    group: rustls::NamedGroup,+  ) {+    self.inner.set_kx_hint(server_name, group);+  }++  fn kx_hint(+    &self,+    server_name: &rustls::pki_types::ServerName<'_>,+  ) -> Option<rustls::NamedGroup> {+    self.inner.kx_hint(server_name)+  }++  fn set_tls12_session(+    &self,+    server_name: rustls::pki_types::ServerName<'static>,+    value: rustls::client::Tls12ClientSessionValue,+  ) {+    self.inner.set_tls12_session(server_name, value);+  }+

systems design

kubernetes/kubernetes · #141383

Files changed →View PR ↗

validation-gen: Support maps of pointersGo · 726 + / 22

Introduces 49 new declarations in staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/eachval/map_of_pointers/zz_generated.validations.go.

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

staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/eachval/map_of_pointers/zz_generated.validations.go · 19 files

@@ -0,0 +1,156 @@+//go:build !ignore_autogenerated+// +build !ignore_autogenerated++/*+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.+*/++// Code generated by validation-gen. DO NOT EDIT.++package mapofpointers++import (+	context "context"+	fmt "fmt"++	equality "k8s.io/apimachinery/pkg/api/equality"+	operation "k8s.io/apimachinery/pkg/api/operation"+	safe "k8s.io/apimachinery/pkg/api/safe"+	validate "k8s.io/apimachinery/pkg/api/validate"+	field "k8s.io/apimachinery/pkg/util/validation/field"+	testscheme "k8s.io/code-generator/cmd/validation-gen/testscheme"

framework internals

vercel/next.js · #97825

Files changed →View PR ↗

Fix Turbopack resolution through chained symlinksRust · 135 + / 13

Introduces 4 new declarations in turbopack/crates/turbo-tasks-fs/src/disk.rs.

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

turbopack/crates/turbo-tasks-fs/src/disk.rs · 8 files

@@ -1958,6 +1958,67 @@ mod tests {             tt.stop_and_wait().await;         } +        #[cfg(unix)]+        #[tokio::test(flavor = "multi_thread", worker_threads = 2)]+        async fn test_link_target_resolved_type_through_chain() {+            use std::os::unix::fs::symlink;++            let scratch = tempfile::tempdir().unwrap();+            let path = scratch.path().to_owned();+            create_dir_all(path.join("target-dir")).unwrap();+            File::create_new(path.join("target-file")).unwrap();+            symlink("target-dir", path.join("dir-inner")).unwrap();+            symlink("dir-inner", path.join("dir-outer")).unwrap();+            symlink("target-file", path.join("file-inner")).unwrap();+            symlink("file-inner", path.join("file-outer")).unwrap();+            symlink("../outside", path.join("invalid-inner")).unwrap();+            symlink("invalid-inner", path.join("invalid-outer")).unwrap();++            let root = canonicalize_to_rcstr(&path).unwrap();++            #[turbo_tasks::function(operation, root)]+            async fn assert_operation(+                fs: ResolvedVc<DiskFileSystem>,+                root_path: FileSystemPath,+            ) -> anyhow::Result<()> {+                for (input_path, expected_output) in [+                    ("dir-outer", FileSystemEntryType::Directory),+                    ("file-outer", FileSystemEntryType::File),+                    ("invalid-outer", FileSystemEntryType::Error),+                ] {+                    let link = fs.read_link(root_path.join(input_path)?).await?;+                    let LinkContent::Link { target } = &*link else {

framework internals

vercel/next.js · #97808

Files changed →View PR ↗

Upgrade Turbopack to hashbrown 0.15Rust · 268 + / 324

Introduces 8 new declarations in turbopack/crates/turbo-tasks-backend/src/backend/mod.rs.

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

turbopack/crates/turbo-tasks-backend/src/backend/mod.rs · 11 files

@@ -1569,76 +1570,88 @@ impl TurboTasksBackend {             self.track_cache_hit_by_fn(native_fn);             // Step 3a: Insert into in-memory cache using the pre-located shard.             // Use the existing Arc from storage to avoid a duplicate allocation.-            match raw_entry_in_shard(shard, self.storage.task_cache.hasher(), hash, |k| {-                k.eq_components(native_fn, this, arg_ref)-            }) {-                RawEntry::Occupied(_) => {}-                RawEntry::Vacant(e) => {-                    e.insert(stored_type, task_id);-                }-            };+            with_entry_in_shard(+                shard,+                self.storage.task_cache.hasher(),+                hash,+                arg,+                |k, arg| k.eq_components(native_fn, this, arg.as_ref()),+                |entry, _arg| {+                    if let Entry::Vacant(entry) = entry {+                        entry.insert((stored_type, task_id));+                    }+                },+            );             task_id         } else {-            match raw_entry_in_shard(shard, self.storage.task_cache.hasher(), hash, |k| {-                k.eq_components(native_fn, this, arg_ref)-            }) {-                RawEntry::Occupied(e) => {-                    // Another thread beat us to creating this task — use their task_id.-                    // They will handle logging the new task as modified.-                    let task_id = *e.get();-                    drop(e);

language design

denoland/deno · #36649

Files changed →View PR ↗

feat(desktop): support checked, icon, and tooltip on menu itemsRust · 87 + / 5

Introduces 1 new declaration in runtime/ops/desktop.rs.

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

runtime/ops/desktop.rs · 7 files

@@ -1821,6 +1831,53 @@ mod tests {     }   } +  #[test]+  fn menu_item_wire_shape_new_fields_are_optional() {+    // Pre-existing callers only pass label/enabled (+ optional id and+    // accelerator); checked/icon/tooltip must default rather than error.+    let item: MenuItem = serde_json::from_value(json!({+      "item": { "label": "Save", "enabled": true }+    }))+    .unwrap();+    match item {+      MenuItem::Item {+        checked,+        icon,+        tooltip,+        ..+      } => {+        assert!(!checked);+        assert!(icon.is_none());+        assert!(tooltip.is_none());+      }+      _ => panic!("expected Item"),+    }++    let item: MenuItem = serde_json::from_value(json!({+      "item": {+        "label": "Mute",+        "enabled": true,+        "checked": true,+        "icon": [0x89, 0x50, 0x4E, 0x47],+        "tooltip": "Silence notifications",+      }

runtime

ggml-org/llama.cpp · #27804

Files changed →View PR ↗

model: add DSpark support for Nemotron3.5C++ · 52 + / 25

Introduces 1 new declaration in src/models/dflash.cpp.

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

src/models/dflash.cpp · 6 files

@@ -354,17 +360,21 @@ static void build_dspark_markov_head(llm_graph_context & g, const llama_model &          cat = cat ? ggml_concat(ctx0, cat, col, 1) : col; -        // conf(i) = sigmoid(conf_proj . [conf_inp(i); markov_w1[prev(i)]] + b)  -- [1, n_blocks]-        ggml_tensor * conf_inp_i = ggml_view_2d(ctx0, conf_inp, conf_inp->ne[0], n_blocks,-                                                (size_t) block_drafts * conf_inp->nb[1], i*conf_inp->nb[1]);-        ggml_tensor * feat = ggml_concat(ctx0, ggml_cont(ctx0, conf_inp_i), w1_prev, 0);-        ggml_tensor * conf = ggml_mul_mat(ctx0, model.dspark_conf_proj, feat);-        if (model.dspark_conf_proj_b) {-            conf = ggml_add(ctx0, conf, model.dspark_conf_proj_b);-        }-        conf = ggml_sigmoid(ctx0, conf);+        if (has_conf) {+            // confidence head input: predicts per-position acceptance+            ggml_tensor * conf_inp   = res->t_embd; // [n_embd, n_tok]+            // conf(i) = sigmoid(conf_proj . [conf_inp(i); markov_w1[prev(i)]] + b)  -- [1, n_blocks]+            ggml_tensor * conf_inp_i = ggml_view_2d(ctx0, conf_inp, conf_inp->ne[0], n_blocks,+                                                    (size_t) block_drafts * conf_inp->nb[1], i*conf_inp->nb[1]);+            ggml_tensor * feat = ggml_concat(ctx0, ggml_cont(ctx0, conf_inp_i), w1_prev, 0);+            ggml_tensor * conf = ggml_mul_mat(ctx0, model.dspark_conf_proj, feat);+            if (model.dspark_conf_proj_b) {+                conf = ggml_add(ctx0, conf, model.dspark_conf_proj_b);+            }+            conf = ggml_sigmoid(ctx0, conf); -        cat_conf = cat_conf ? ggml_concat(ctx0, cat_conf, conf, 1) : conf;+            cat_conf = cat_conf ? ggml_concat(ctx0, cat_conf, conf, 1) : conf;+        }          if (i + 1 < block_drafts) {             prev = ggml_argmax(ctx0, col);

runtime

ggml-org/llama.cpp · #27762

Files changed →View PR ↗

llama: add token ID tracking to KV cellC++ · 133 + / 14

Reworks 75 lines of existing logic in src/llama-kv-cache.cpp.

Changes how existing runtime behaves. Read the linked PR for the surrounding test context.

src/llama-kv-cache.cpp · 4 files

@@ -1805,6 +1813,69 @@ void llama_kv_cache::set_input_v_rot(ggml_tensor * dst) const {     memcpy(dst->data, attn_rot_hadamard.at(n_rot).data(), ggml_nbytes(dst)); } +bool llama_kv_cache::has_cell_ext() const {+    return hparams.n_pos_per_embd() > 1;+}++void llama_kv_cache::get_prev_tokens(const llama_ubatch & ubatch, uint32_t n, std::vector<llama_token> & res) const {+    const uint32_t n_tokens = ubatch.n_tokens;++    res.clear();+    res.resize(n_tokens*n, LLAMA_TOKEN_NULL);++    if (n == 0) {+        return;+    }++    // note: apply_ubatch() has already stored the current ubatch+    //       the window below thus covers tokens of this very ubatch as well, which is what we want+    llama_pos p_min = std::numeric_limits<llama_pos>::max();+    llama_pos p_max = std::numeric_limits<llama_pos>::min();++    std::bitset<LLAMA_MAX_SEQ> seqs;++    for (uint32_t i = 0; i < n_tokens; ++i) {+        p_min = std::min(p_min, ubatch.pos[i]);+        p_max = std::max(p_max, ubatch.pos[i]);+    }++    for (uint32_t s = 0; s < ubatch.n_seqs_unq; ++s) {+        seqs.set(ubatch.seq_id_unq[s]);+    }+

core implementation

microsoft/vscode · #333043

Files changed →View PR ↗

Add spelling suggestions to the Integrated Browser context menuTypeScript · 24 + / 0

Reworks 23 lines of existing logic in src/vs/platform/browserView/electron-main/browserViewMainService.ts.

Changes how existing core implementation behaves. Read the linked PR for the surrounding test context.

src/vs/platform/browserView/electron-main/browserViewMainService.ts · 1 files

@@ -564,6 +564,30 @@ export class BrowserViewMainService extends Disposable implements IBrowserViewMa 			})); 		} +		const spellingSuggestions = params.dictionarySuggestions ?? [];+		const canAddToDictionary = !!params.misspelledWord && webContents.session.isPersistent();+		if (params.misspelledWord && (spellingSuggestions.length > 0 || canAddToDictionary)) {+			if (menu.items.length > 0) {+				menu.append(new MenuItem({ type: 'separator' }));+			}+			for (const suggestion of spellingSuggestions) {+				menu.append(new MenuItem({+					label: suggestion,+					click: () => webContents.replaceMisspelling(suggestion)+				}));+			}+			if (canAddToDictionary) {+				if (spellingSuggestions.length > 0) {+					menu.append(new MenuItem({ type: 'separator' }));+				}+				menu.append(new MenuItem({+					label: localize('browser.contextMenu.addToDictionary', 'Add to Dictionary'),+					click: () => webContents.session.addWordToSpellCheckerDictionary(params.misspelledWord)+				}));+			}+			menu.append(new MenuItem({ type: 'separator' }));+		}+ 		if (params.isEditable) { 			menu.append(new MenuItem({ role: 'cut', enabled: params.editFlags.canCut })); 			menu.append(new MenuItem({ role: 'copy', enabled: params.editFlags.canCopy }));

language design

react/react · #37363

Files changed →View PR ↗

Revert "[rust-compiler] Bail out on nested TypeScript `this` parameters (#37232)"Rust · 4 + / 12

Reworks 16 lines of existing logic in compiler/crates/react_compiler_lowering/src/build_hir.rs.

Changes how existing language design behaves. Read the linked PR for the surrounding test context.

compiler/crates/react_compiler_lowering/src/build_hir.rs · 1 files

@@ -2589,25 +2589,17 @@ fn lower_block_statement(     block: &react_compiler_ast::statements::BlockStatement,     parent_scope: Option<react_compiler_ast::scope::ScopeId>, ) -> Result<(), CompilerError> {-    Ok(lower_block_statement_inner(-        builder,-        block,-        None,-        parent_scope,-    )?)+    let _ = lower_block_statement_inner(builder, block, None, parent_scope);+    Ok(()) }  fn lower_block_statement_with_scope(     builder: &mut HirBuilder,     block: &react_compiler_ast::statements::BlockStatement,     scope_override: react_compiler_ast::scope::ScopeId, ) -> Result<(), CompilerError> {-    Ok(lower_block_statement_inner(-        builder,-        block,-        Some(scope_override),-        None,-    )?)+    let _ = lower_block_statement_inner(builder, block, Some(scope_override), None);+    Ok(()) }  fn lower_block_statement_inner(

runtime

nodejs/node · #62248

Files changed →View PR ↗

src: use simdutf for two-byte string utf8 conversion in utf8 valueC++ · 12 + / 5

Reworks 16 lines of existing logic in src/util.cc.

Changes how existing runtime behaves. Read the linked PR for the surrounding test context.

src/util.cc · 2 files

@@ -121,13 +121,20 @@ static void MakeUtf8String(Isolate* isolate,     return;   } -  // Add +1 for null termination.-  size_t storage = (3 * value_length) + 1;+  auto const_char16 = reinterpret_cast<const char16_t*>(value_view.data16());+  size_t storage = static_cast<size_t>(value_length) * 3 + 1;   target->AllocateSufficientStorage(storage); -  size_t length = string->WriteUtf8V2(-      isolate, target->out(), storage, String::WriteFlags::kReplaceInvalidUtf8);-  target->SetLengthAndZeroTerminate(length);+  size_t actual_length =+      simdutf::convert_utf16_to_utf8(const_char16, value_length, target->out());+  if (actual_length == 0) {+    actual_length =+        string->WriteUtf8V2(isolate,+                            target->out(),+                            storage,+                            String::WriteFlags::kReplaceInvalidUtf8);+  }+  target->SetLengthAndZeroTerminate(actual_length); }  Utf8Value::Utf8Value(Isolate* isolate, Local<Value> value) {

Read today’s edition →