## denoland/deno — v2.9.1…v2.9.2

_101 commits._

### Features
- **feat(desktop): enable `--hmr` for Vite and Nuxt (#35851)** (115114f)
- **feat(desktop): run HMR by framework dev server (#35722)** (370e587)
- **feat: support wildcard patterns in minimumDependencyAge.exclude (#35746)** (6aa63cc)
- **feat(desktop): autodetect React Router framework (#35557)** (f6c7bba)
- **feat(ext/telemetry): honor OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT (#35068)** (d6f01cf)
- **feat(desktop): wire --exclude-unused-npm through to compile (#35740)** (56891e1)
- **feat(ext/node): implement v8.setHeapSnapshotNearHeapLimit (#35694)** (da1897d)
- **feat(inspector): start inspector server on SIGUSR1 (#35738)** (c29f8e1)
- **feat(desktop): window opacity and transparency APIs (#35646)** (3551015)
- **feat(node): implement getTestContext() in node:test (#35678)** (dddb255)

### Fixes
- **fix(npm): don't re-fetch packuments on every run when registry has no time data (#35834)** (7d0a481)
- **fix(coverage): count a branch-junction line as covered when either arm runs (#35858)** (95407f0)
- **fix(ext/node): require --allow-net=unix for node:net unix sockets (#35835)** (f323745)
- **fix(fmt): format Astro inline scripts as TypeScript (#35852)** (6724cc7)
- **fix(desktop): attribute bind calls to the registering window id (#35654)** (50118c2)
- **fix(desktop): surface compiled-app startup errors instead of exiting silently (#35567)** (dc6a95f)
- **fix(install): make setup cache packages hash deterministic (#35825)** (3d52c77)
- **perf(ext/web): synchronous transform fast path for TransformStream (#35844)** (83c50b1)
- **perf(ext/web): sync fast path for ReadableStream async iterator next() (#35842)** (800d6c9)
- **fix(ext/net): abort pending Deno.connect during DNS resolution (#35729)** (77880a8)
- **fix(ext/signals): unregister handler when SignalStream is dropped (#35832)** (7064c6b)
- **fix(ext/node): don't schedule a pause in inspector.waitForDebugger() (#35796)** (7128952)
- **perf(ext/web): persistent pump for the generic pipeTo loop (#35813)** (a79612e)
- **fix(watch): terminate on Ctrl+C while blocked in synchronous code (#35826)** (a19662e)
- **fix(inspector): close WebSocket connections when the runtime is torn down (#35791)** (8dcdd72)
- **fix(desktop): honor desktop.backend from deno.json (#35815** (7afce23)
- **fix(ext/web): resolve pending BYOB read when teeing a byte stream that closes (#35828)** (a67ef47)
- **fix(ext/node): allow adopting inherited extra stdio TCP fds (#35805)** (b7d5a7d)
- **fix(npm): widen node_modules lock staleness margin to avoid false preemption (#35806)** (186f17a)
- **fix(desktop): pin @std/http in generated Vite SPA entrypoint + add hermetic compile test (#35676)** (816fda3)
- **fix(watch): execute preload modules under --watch (#35792)** (46e0955)
- **fix(ext/http): error non-Uint8Array response streams (#35783)** (01d29aa)
- **perf(ext/node): remove per-chunk copying on TLSWrap data paths (#35705)** (90760e7)
- **perf(ext/node): zero-copy async Buffer writes on the stream_wrap path (#35780)** (aa1380b)
- **perf(ext/web): shared underlying-source algorithms, hoist resource-bridge read request (#35810)** (02b41b4)
- **fix(ext/cache): implement Cache.keys() (#35455)** (ed8c592)
- **perf(ext/web): identity pipeThrough writable bypass (#35799)** (f8f5443)
- **fix(lsp): fix CPU busy loop by creating tokio runtime before JsRuntime in TSC thread (#35595)** (ac8677d)
- **perf: use V8 native queueMicrotask instead of op (#35787)** (242ca14)
- **perf(ext/web): reduce per-chunk overhead in Web Streams (#35773)** (80934b3)
- **fix(fs): support pre-1970 (negative) timestamps in FsStat (#35517)** (9a466c7)
- **fix(ext/http): honor explicit content-length header on HEAD responses (#35728)** (2e68b96)
- **perf(ext/web): pump readableStreamCollectIntoUint8Array with a persistent read request (#35790)** (003c72e)
- **fix(ext/node): support fd 3 pipes in spawned Deno children (#34133)** (4b3cf68)
- **perf(ext/web): run synchronous pull completion without a microtask hop (#35788)** (b37f1be)
- **fix(ext/node): flush StringDecoder in cipher final() for stream ciphers (#35800)** (c1f2ce3)
- **fix(coverage): don't let a trailing comment change a line's hit count (#35741)** (584a182)
- **fix(node/fs): implement followSymlinks option for fs.glob() (#35524)** (2886aec)
- **perf(ext/web): reduce per-chunk allocations on stream read and tee paths (#35786)** (da93007)
- **fix(install): don't write through hardlinks when copying package files (#35735)** (a885095)
- **fix(ext/fetch): reject transport failures with Node's "fetch failed" shape (#35618)** (4a08965)
- **fix(install): resolve lifecycle script dependency bins against the hoisted layout (#35762)** (f1717fc)
- **perf(workers): return raw buffer from receive ops for no-transferable messages (#35756)** (c812bd6)
- **fix(coverage): don't count V8 block-boundary gaps as branches (#35767)** (34e593a)
- **fix(install): don't panic on jsr specifier with a tag like @latest (#35605)** (fe22eef)
- **fix(lint): include config file in workspace member invalid version error (#35759)** (d67bba7)
- **fix(dprint): exclude `tools/lzld` submodule (#35778)** (4a2a688)
- **fix(deploy): disable config discovery and refresh the cached CLI version (#35754)** (ef62439)
- **fix(permissions): split comma-separated paths in --ignore-read (#35661)** (c239456)
- **perf(ext/fetch): stream wasm bytes to the compiler from Rust (#35704)** (e056796)
- **perf(streams): offload resource-backed pipeTo to Rust via op_pipe (#35689)** (9bfbb0d)
- **fix(ext/node): mark TLSWrap dead on teardown before tls_conn check (#35706)** (45f999d)
- **fix(lint): don't error on non-analyzable package exports like CSS files (#35732)** (9834a73)
- **perf(npm): index packuments with SIMD JSON scanner (#35698)** (9ae8fbd)
- **perf(workers): optimize message passing (#35110)** (5a12492)
- **perf(config): literal-suffix reject and prune irrelevant globs per base (#35688)** (a126271)
- **fix(watch): accept watch paths in fmt/lint/bench --watch (#35720)** (1d0ea85)
- **perf(core): defer residual lazy source registration (#35731)** (83198a1)
- **fix(ext/http): point legacy abort warning at docs.deno.com/go link (#35713)** (8d719ba)
- **fix(desktop): rename launcher to <app> so it self-loads the runtime (#35709)** (101ef28)
- **fix(ext/napi): add uv_cond_* polyfills for native addons (#35536)** (5766ec5)
- **fix(core): don't drain microtasks in mod_evaluate_sync mid-evaluation (#35707)** (4b53ac1)
- **fix(compile): bump libsui to 0.16.3 to fix segfault under gVisor/Cloud Run (#35701)** (3fa6cfa)
- **fix(ext/node): don't panic when main module path has invalid percent-encoding (#35534)** (2c4414a)
- **fix(compile): bump libsui to 0.16.1 to survive eu-strip in flatpak (#35699)** (3cfcdcc)
- **fix(ext/node): report all active resources from process.getActiveResourcesInfo (#35532)** (7073436)
- **fix(test): run Node-API finalizers at test worker shutdown (#35695)** (c08eb33)
- **fix(desktop): run framework build step before bundling output (#35603)** (a06305e)
- **fix(install): support uninstalling multiple global packages (#29352)** (028da28)
- **fix(npm): don't retain full npm `exports` value + fix `--watch` memory leak (#35677)** (29496d5)
- **fix(check): don't interleave errors with "Check" lines in a workspace (#35687)** (abc920a)
- **fix(ext): throw DataCloneError when posting non-serializable values (#35604)** (89ab853)
- **fix: enable rusqlite "fallible_uint" feature in workspace deps (#35681)** (550bcc7)

### Backend
- **2.9.2 (#35865)** (356c132)

### Docs
- **docs(desktop): fix stale app:// navigation comment after loopback revert (#35830)** (178fa4a)
- **docs(desktop): document Deno.autoUpdate and AutoUpdateOptions (#35841)** (8949f02)
- **docs: add desktop runtime internals doc (#35652)** (88f2ff6)
- **docs: document that ServeHandlerInfo.completed can reject (#35747)** (1ee336d)

### Chore
- **chore: remove stale malva and markup_fmt workspace dependencies (#35853)** (42a5c83)
- **refactor(node/http2): migrate serde_v8 usage to deno_core::convert (#35454)** (8915825)
- **refactor(node/vm): convert serde_v8 usage to deno_core::convert (#35355)** (08de6f9)
- **refactor(ffi): migrate FfiValue from serde_v8 to deno_core::convert (#35069)** (faf038e)
- **chore: update WPT suite to epochs/daily/2026-07-05 (#35803)** (75d16d0)
- **chore: add deno_print crate with drop_println! macros (#35737)** (c0f2b11)
- **chore: add missing package metadata (#35753)** (d41fcf4)
- **build(deps): bump cmov from 0.5.2 to 0.5.4 (#35749)** (c699e54)
- **chore(release): update versions.json in bucket on release (#35724)** (125c861)
- **refactor: add CLI parser conversion, defs, help, and completions (#35343)** (4e8b2f4)
- **build(deps): upgrade opentelemetry crates to 0.32 (#35563)** (b5bd65d)
- **chore: require a distributed KV database via env var (#35671)** (f4d7aef)
- **chore: report server kind in control-sock Serving event (#35672)** (b3b34cf)

_Recap by [Repo Wrapped](https://repowrapped.com/gh/denoland/deno?utm_source=github-action)._