Changelog

denoland/deno · · 79 commits

Deno adds HTTP/1, crypto, and LSP upgrades

Major runtime work landed: a Deno-owned HTTP/1.1 serve path, crypto/WebCrypto modern-algorithms support, and substantial LSP improvements.

Deno takes ownership of HTTP/1.1 serving (nathanwhit92a7dae)

Deno now routes Deno.serve() HTTP/1 traffic through a new runtime-owned libs/http_h1 path by default, keeping Hyper for HTTP/2. The change is aimed at tighter integration and lower overhead, with broad plumbing updates across fetch, HTTP handling, and response/request behavior.

WebCrypto gets a big modern-algorithms expansion (divybotc0dfd6a, divybotb04ec7f, divybotd8991fc, divybot6f16d40, divybot987d01d, divybot93d6277, divybot3a9c991, divybotf93c548)

Crypto support was extended in several directions: SubtleCrypto.supports() landed, ML-KEM/ML-DSA gained missing JWK and seed/raw-public/raw-seed handling, ChaCha20-Poly1305 was brought in line with the modern spec, and key storage moved into Rust-backed handles. This is a major compatibility and API surface update for WebCrypto users, especially for newer post-quantum algorithms.

Fetch behavior and decompression were overhauled (nathanwhitbot6475783, divybotb7cf076, divybotfec485c, fallintoplace82cc57b, magurotuna0816e0d)

The fetch stack dropped tower-http decompression in favor of a local service, added bad-port blocking per the Fetch Standard, fixed empty gzip/br responses, tightened multipart parsing, and corrected forwarding of partially buffered request bodies. These changes improve standards compliance and remove a class of fetch/runtime failures.

The LSP got significantly more capable and faster (divybot82514b5, divybot4a4983b, divybot2aa45eb, divybot60b484b, divybot7e29bed, divybot7fc6ca5, divybot1d51877, divybot438666d, divybot281be3e, c16d80b)

The language server now diagnoses import maps, surfaces remap info in hovers, offers test ignore/only code actions, reports JSR fast-check diagnostics, caches lint/doc diagnostics per document, and fixes stale on-disk document handling. It also improves import-map remap suggestions and cache graph behavior, making editor feedback more accurate and responsive.

Compile and bundle workflows gained important fixes and features (divybot7b251d9, divybot599007c, divybot1472e69, divybot9d177ea, divybot1ded28f, bartlomiejudc2d779)

deno compile now supports watch mode and can prune unused npm packages from embedded snapshots, while bundling now properly instantiates .wasm imports and handles HTML sourcemap naming correctly. The compiler also fixes fs.fstatSync on virtual files and avoids panicking when esbuild is busy or unavailable.

Node/runtime compatibility improved in several edge cases (bartlomieju2a930df, divybot9656486, divybot4f54897, divybot9d8e531, divybotf9078c9, bartlomieju3859156, bartlomiejubb80cf8, divybot4e53408, divybot42d7ef0)

Several compatibility fixes landed for Node-facing APIs: HTTP servers now notify the control socket when serving starts, workers stay alive with refed MessagePorts, TCP keepalive works again on native TCPWrap, scoped IPv6 multicast interfaces are accepted, and a few Node inspection/feature-probe behaviors were aligned. There are also fixes for DNS lookup, websocket auth headers, and Windows process-kill semantics.

Other misc changes

  • Cron parser dependency removed in favor of an internal implementation.
  • deno x gained --ignore-scripts support.
  • deno clean --dry-run now works without --except.
  • --env-file support expanded to more dependency/registry subcommands.
  • Various smaller fixes: dotenv underscores, special-file permission guards, coverage exclusions, watcher updates, and docs/test-only changes.