Daily edition

Aug 26, 2026

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

Aug 27, 20263 reads · 113 merged PRs screened

language design

denoland/deno · #35750

Files changed →View PR ↗

feat(desktop): clipboard apiRust · 332 + / 3

335 source lines changed in cli/rt/desktop.rs.

A reviewable change in a preferred language design path. Focused tests changed with it.

cli/rt/desktop.rs · 7 files

@@ -696,6 +698,75 @@ pub const DESKTOP_JS: &str = r#"     console.error("[deno desktop] failed to install navigator.permissions:", e);   } +  // --- navigator.clipboard (text only) ---+  //+  // Spec surface: `navigator.clipboard` is a `Clipboard` (extends EventTarget)+  // exposing async `readText()` / `writeText()`. The ops behind them are+  // genuinely async: laufey's clipboard calls block their calling thread, and+  // on X11/Wayland a read is serviced by whichever app owns the selection, so+  // an unresponsive owner would otherwise freeze the whole runtime behind a+  // Promise that looks like it couldn't. They reject rather than resolve if+  // that owner never answers — `""` is indistinguishable from an empty+  // clipboard, and a resolved `writeText()` has to mean the write happened.+  //+  // The richer `read()` / `write()` (`ClipboardItem` / arbitrary MIME types)+  // aren't backed by laufey, so they're omitted rather than stubbed. Per spec+  // the read/write are gated on the `clipboard-read` / `clipboard-write`+  // permissions, but laufey has no clipboard permission model, so access+  // isn't gated here (mirroring how the desktop Notification surface+  // degrades).+  const webidl = internals.webidl;+  class Clipboard extends EventTarget {+    constructor() {+      super();+      webidl.illegalConstructor();+    }++    async readText() {+      webidl.assertBranded(this, ClipboardPrototype);+      return (await op_desktop_read_clipboard_text()) ?? "";+    }++    async writeText(data) {

framework internals

kubernetes/kubernetes · #141110

Files changed →View PR ↗

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

248 source lines changed in staging/src/k8s.io/dynamic-resource-allocation/deviceclass/extendedresourcecache/extendedresourcecache.go.

A reviewable change in a preferred framework internals path. Focused tests changed with it.

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.

runtime

ggml-org/llama.cpp · #27762

Files changed →View PR ↗

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

147 source lines changed in src/llama-kv-cache.cpp.

A reviewable change in a preferred runtime path. 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]);+    }+

Read today’s edition →