Changelog

denoland/deno · · 45 commits

Deno hardens LSP, compile, and Node compat

Big day for Deno: LSP crash fixes, compile bundling improvements, Node compat upgrades, plus a pure-JS Jupyter kernel rewrite.

Rewrite Jupyter kernel in JS and drop ZMQ deps (lunadogbotb46f9dd)

Deno replaces the Rust-based Jupyter kernel stack with a pure-JS implementation on top of Deno.listen(), removing zeromq, runtimelib, and jupyter-protocol from the production dependency graph. That’s a major architecture shift that simplifies maintenance and trims native dependency surface while preserving kernel functionality.

deno compile --bundle now handles workers and npm reachability correctly (bartlomieju2329258, bartlomieju61f96bf, bartlomieju152d722, bartlomieju61f96bf)

deno compile --bundle now bundles worker entrypoints separately, rewrites the generated bundle’s absolute CJS paths to runtime-relative ones, and only embeds the npm packages actually reached instead of shipping the entire tree. This also keeps native addons working in bundled binaries and avoids the previous “bundle works on disk but fails in the compiled VFS” class of bugs.

LSP becomes more resilient and completion quality improves (divybotf9d0128, divybot5185f18, divybot708106f, divybot19e4288, divybot4218623, divybotc193664, divybot7b230ea, divybot0525668, divybotbe62645)

The language server now survives parser panics in malformed files, surfaces uncaught test-module errors, and fixes several completion/import cases: empty import clauses, duplicate completion imports, dotted string-union literals, bundler-mode npm directory imports, duplicate test names, and same-directory import-map aliases. These are the kinds of fixes that directly improve editor stability and correctness for real projects.

Node compatibility gets a cluster of important fixes (divybot453eaf6, bartlomieju7ab8ca9, divybot472d006, divybot95209b3, divybot49a1c40, divybot697bdb1, divybota65194c, nathanwhitbotcd67180, nathanwhitbot351d8fb, nathanwhitbot9c1a256, divybot81b0b58, divybot19da4cb)

Node-facing behavior tightened up across require() classification, node:http server binding overrides, child-process IPC, Buffer decoding, non-UTF-8 directory entries, BroadcastChannel delivery ordering, node:v8 flag handling, empty HTTP response framing, JSON import diagnostics, and native-addon error hints. Several of these are compatibility fixes for ecosystem edge cases that would otherwise break real packages.

Fetch Request now implements missing standard properties (divybotd98660c)

Request gained the missing Fetch-standard fields like cache, credentials, integrity, keepalive, mode, referrer, and referrerPolicy, plus the corresponding init handling and validation. This closes a spec gap that previously made these properties read as undefined and diverge from browser behavior.

deno remove cleans up node_modules properly (fibibot81cdb68)

The npm installer cleanup path now reconciles managed node_modules directories even when the resulting resolution is empty, including scoped packages and hoisted layouts. That fixes leftover dependency junk after removing the last npm package.

deno task gains --env-file (bartlomieju04dc1ec)

Task execution now accepts --env-file directly, so dotenv-driven task workflows no longer need to thread the flag through each nested command. It’s a small but useful ergonomics win for task authors.

ImageData is ported to Rust with CPPGC/objectwrap (crowlbot3b2cbfe)

ImageData moved from a JS IIFE into a Rust-backed object implementation. That’s a significant internal refactor that aligns it with other Web platform objects and should improve consistency going forward.

Other misc changes

  • Dependency bumps: deno_task_shell to 0.33.0, tar to 0.4.46, notify refresh, assorted lockfile updates.
  • Small refactors and cleanup in LSP, CLI, and runtime internals.
  • Test and CI-only adjustments, plus deflake work for watcher tests and minor regression coverage additions.