Changelog

denoland/deno · · 15 commits

Deno speeds up core loaders and npm workflows

Major performance work plus new catalog support and npm defaulting for add/install, alongside several Node parity fixes.

Core module loading gets async resolution support (bartlomieju950ca9b) Deno’s module loader API now returns a ModuleResolveResponse that can be either synchronous or asynchronous, unlocking loaders that need to consult registries or JS hooks during resolution. The runtime and core recursive loader were updated to handle both paths cleanly, which is a foundational change for more flexible loading.

Workspace catalog: dependencies land for npm packages (bartlomieju96e539a) Workspaces can now centralize package versions with a catalog: protocol in member package.json files, with support for both default and named catalogs. This is a meaningful monorepo workflow improvement that also touches resolution, standalone binaries, the LSP, and config/schema handling.

deno add / deno install now default unprefixed deps to npm (bartlomieju0a8ade2) Unprefixed package names like express are now treated as npm dependencies by default, removing the need for npm: or --npm in the common case. This is a user-facing behavior change that makes dependency installation materially smoother.

Web and fetch hot paths get direct performance wins (bartlomiejuec58158, crowlbotd6bcc79, crowlbotf96c625, Hajime-san7d75e0c, bartlomieju545e31e) A broad loader conversion moved all ext/web JS sources, plus ext/io, ext/os, and ext/net, to lazy-loaded scripts to cut ESM resolution overhead. Separate fast paths also reduce overhead in fetch body conversion, TextDecoder.decode, and DOMMatrix/WebIDL sequence handling, improving common runtime and web API performance.

Node compatibility improves across crypto, fs, and process behavior (nathanwhitbot50a1af4, nathanwhitbot37ebc9a, divybot0689fbb, divybot3da98e6, divybot64ba898, divybot0049368) Several Node-facing fixes tighten parity: process.chdir() errors now include richer context, fs.watch accepts an encoding option, server close events are drained on the next tick, and crypto APIs now match Node’s scrypt, Diffie-Hellman, and hash-finalization behavior more closely. These changes unblock or enable multiple Node compatibility tests.

Other misc changes

  • Node compat tests enabled for several crypto/http cases.
  • Bench and test harness updates to match the new lazy-loaded script model.
  • Minor docs, schema, and internal resolver plumbing updates.