Daily edition

Oct 24, 2026

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

Oct 25, 20265 reads · 67 merged PRs screened

language design

rust-lang/rust · #164474

Files changed →View PR ↗

core: implement `char::is_xid_{start|continue}`Rust · 305 + / 1 −

Introduces 6 new declarations in library/core/src/unicode/unicode_data.rs.

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

library/core/src/unicode/unicode_data.rs ↗ · 7 files

@@ -943,6 +945,232 @@ pub mod white_space {     } } +#[rustfmt::skip]+pub mod xid_continue {+    use super::ShortOffsetRunHeader;++    static SHORT_OFFSET_RUNS: [ShortOffsetRunHeader; 56] = [+        ShortOffsetRunHeader::new(0, 706), ShortOffsetRunHeader::new(14, 4681),+        ShortOffsetRunHeader::new(420, 5741), ShortOffsetRunHeader::new(462, 7958),+        ShortOffsetRunHeader::new(558, 11264), ShortOffsetRunHeader::new(639, 12293),+        ShortOffsetRunHeader::new(673, 13312), ShortOffsetRunHeader::new(697, 19904),+        ShortOffsetRunHeader::new(698, 42125), ShortOffsetRunHeader::new(700, 42509),+        ShortOffsetRunHeader::new(704, 55204), ShortOffsetRunHeader::new(786, 63744),+        ShortOffsetRunHeader::new(791, 64110), ShortOffsetRunHeader::new(792, 67383),+        ShortOffsetRunHeader::new(932, 74650), ShortOffsetRunHeader::new(1286, 75399),+        ShortOffsetRunHeader::new(1292, 77712), ShortOffsetRunHeader::new(1293, 78896),+        ShortOffsetRunHeader::new(1296, 82939), ShortOffsetRunHeader::new(1300, 83527),+        ShortOffsetRunHeader::new(1302, 90368), ShortOffsetRunHeader::new(1303, 92160),+        ShortOffsetRunHeader::new(1305, 92729), ShortOffsetRunHeader::new(1306, 93504),+        ShortOffsetRunHeader::new(1329, 101595), ShortOffsetRunHeader::new(1352, 102802),+        ShortOffsetRunHeader::new(1358, 110576), ShortOffsetRunHeader::new(1361, 110889),+        ShortOffsetRunHeader::new(1368, 111356), ShortOffsetRunHeader::new(1378, 113664),+        ShortOffsetRunHeader::new(1379, 118000), ShortOffsetRunHeader::new(1389, 118528),+        ShortOffsetRunHeader::new(1391, 119079), ShortOffsetRunHeader::new(1395, 119808),+        ShortOffsetRunHeader::new(1417, 120487), ShortOffsetRunHeader::new(1454, 121344),+        ShortOffsetRunHeader::new(1479, 122624), ShortOffsetRunHeader::new(1491, 123536),+        ShortOffsetRunHeader::new(1517, 124112), ShortOffsetRunHeader::new(1521, 126464),+        ShortOffsetRunHeader::new(1547, 130032), ShortOffsetRunHeader::new(1613, 131072),+        ShortOffsetRunHeader::new(1615, 173792), ShortOffsetRunHeader::new(1616, 178207),+        ShortOffsetRunHeader::new(1618, 183982), ShortOffsetRunHeader::new(1620, 191457),+        ShortOffsetRunHeader::new(1622, 192094), ShortOffsetRunHeader::new(1624, 194560),+        ShortOffsetRunHeader::new(1625, 195102), ShortOffsetRunHeader::new(1626, 196608),

language design

pandas-dev/pandas · #71076

Files changed →View PR ↗

BUG: ArrowExtensionArray silently truncated fractional values set from a list into an integer dtypePython · 60 + / 3 −

Introduces 2 new declarations in pandas/core/arrays/arrow/array.py.

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

pandas/core/arrays/arrow/array.py ↗ · 3 files

@@ -4844,6 +4846,61 @@ def _truncates_to_integer(value) -> bool:     return False  +def _may_truncate_to_integer(values) -> bool:+    """+    Whether ``values`` could hold anything an integer-typed pyarrow column would+    truncate. Cheaper than inspecting the entries. See GH#71076.+    """+    return lib.infer_dtype(values, skipna=True) not in (+        "integer",+        "boolean",+        "string",+        "empty",+    )+++def _first_truncated_to_integer(value):+    """+    The first entry of ``value`` an integer-typed pyarrow column would truncate,+    or None if there is none. See GH#71076.+    """+    if not is_list_like(value) or isinstance(value, (pa.Array, pa.ChunkedArray)):+        # a pyarrow container is cast, not converted, so pyarrow rejects a lossy+        #  value itself; see test_setitem_lossy_float_pyarrow_container_raises+        return value if _truncates_to_integer(value) else None++    dtype = getattr(value, "dtype", None)+    if getattr(dtype, "kind", None) in ("i", "u", "b"):+        # skip materializing a container whose own dtype has nothing to drop+        return None+    if isinstance(value, (list, tuple)) and not _may_truncate_to_integer(value):+        # same, for a container that has no dtype to ask+        return None

framework internals

vercel/next.js · #98734

Files changed →View PR ↗

Turbopack: consume graph-derived chunk groupsRust · 449 + / 150 −

Introduces 13 new declarations in crates/next-core/src/next_app/app_client_references_chunks.rs.

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

crates/next-core/src/next_app/app_client_references_chunks.rs ↗ · 11 files

@@ -1,31 +1,170 @@-use anyhow::Result;-use smallvec::smallvec;+use anyhow::{Result, bail};+use smallvec::SmallVec; use tracing::Instrument;-use turbo_rcstr::rcstr;+use turbo_rcstr::{RcStr, rcstr}; use turbo_tasks::{-    FxIndexMap, FxIndexSet, ResolvedVc, TryFlatJoinIterExt, TryJoinIterExt, ValueToStringRef, Vc,+    FxIndexMap, FxIndexSet, ResolvedVc, TryFlatJoinIterExt, TryJoinIterExt, ValueToString,+    ValueToStringRef, Vc, }; use turbopack_core::{     chunk::{ChunkGroupResult, ChunkingContext, availability_info::AvailabilityInfo},     module::Module,     module_graph::{         ModuleGraph,-        chunk_group_info::{ChunkGroup, ChunkGroupKey},+        chunk_group_info::{ChunkGroup, ChunkGroupInfo},     },     output::{OutputAsset, OutputAssets, OutputAssetsWithReferenced}, };  use crate::{     next_client_reference::{-        ClientReferenceType,-        ecmascript_client_reference::ecmascript_client_reference_module::{-            ecmascript_client_reference_merge_tag, ecmascript_client_reference_merge_tag_ssr,-        },+        CLIENT_MERGE_TAG, ClientReference, ClientReferenceType, SSR_MERGE_TAG,         visit_client_reference::ClientReferenceGraphResult,     },     next_server_component::server_component_module::NextServerComponentModule,

runtime

nodejs/node · #66789

Files changed →View PR ↗

lib: speed up AbortSignalJavaScript · 196 + / 145 −

Introduces 2 new declarations in lib/internal/abort_controller.js.

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

lib/internal/abort_controller.js ↗ · 12 files

@@ -508,36 +562,43 @@ function abortSignal(signal, reason) {   signal[kReason] = reason;    // 3. Let dependentSignalsToAbort be a new list.-  const dependentSignalsToAbort = ObjectSetPrototypeOf([], null);+  // The list is only allocated when there are dependent signals.+  let dependentSignalsToAbort;    // 4. For each dependentSignal of signal's dependent signals:-  signal[kDependantSignals]?.forEach((s) => {-    const dependentSignal = s.deref();-    // 1. If dependentSignal is not aborted, then:-    if (dependentSignal && !dependentSignal[kAborted]) {-      // 1. Set dependentSignal's abort reason to signal's abort reason.-      dependentSignal[kReason] = reason;-      dependentSignal[kAborted] = true;-      // 2. Append dependentSignal to dependentSignalsToAbort.-      ArrayPrototypePush(dependentSignalsToAbort, dependentSignal);-    }-  });+  const dependantSignals = signal[kDependantSignals];+  if (dependantSignals !== undefined && dependantSignals.size > 0) {+    dependentSignalsToAbort = ObjectSetPrototypeOf([], null);+    dependantSignals.forEach((s) => {+      const dependentSignal = s.deref();+      // 1. If dependentSignal is not aborted, then:+      if (dependentSignal && !dependentSignal[kAborted]) {+        // 1. Set dependentSignal's abort reason to signal's abort reason.+        dependentSignal[kReason] = reason;+        dependentSignal[kAborted] = true;+        // 2. Append dependentSignal to dependentSignalsToAbort.+        ArrayPrototypePush(dependentSignalsToAbort, dependentSignal);+      }+    });

runtime

ggml-org/llama.cpp · #31113

Files changed →View PR ↗

server: refactor server entrypointC++ · 635 + / 511 −

Introduces 6 new declarations in tools/server/server.cpp.

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

tools/server/server.cpp ↗ · 7 files

@@ -418,178 +312,457 @@ int llama_server(common_params & params, int argc, char ** argv, server_child &         SRV_WRN("security: %s enabled - do not expose to untrusted environments\n", features.c_str());     } -    //-    // Handle downloading model-    //+    return true;+}++static void server_install_signal_handlers() {+#if defined (__unix__) || (defined (__APPLE__) && defined (__MACH__))+    struct sigaction sigint_action;+    sigint_action.sa_handler = signal_handler;+    sigemptyset (&sigint_action.sa_mask);+    sigint_action.sa_flags = 0;+    sigaction(SIGINT, &sigint_action, NULL);+    sigaction(SIGTERM, &sigint_action, NULL);+#elif defined (_WIN32)+    auto console_ctrl_handler = +[](DWORD ctrl_type) -> BOOL {+        return (ctrl_type == CTRL_C_EVENT) ? (signal_handler(SIGINT), true) : false;+    };+    SetConsoleCtrlHandler(reinterpret_cast<PHANDLER_ROUTINE>(console_ctrl_handler), true);+#endif+}++// once the HTTP server listens: log the addresses and spawn llama-connect if asked, so the port is+// bound and the child startup health check reaches us. the destructor of connect_proc stops it+static bool server_on_listening(server_http_context & ctx_http, const common_params & params, server_connect & connect_proc) {+    for (const auto & address : ctx_http.listening_addresses) {+        SRV_INF("listening on %s\n", address.c_str());+    }++    if (params.server_connect && !connect_proc.start(params, ctx_http.port)) {

Read today’s edition →