Change8

v2.8.0

📦 denoView on GitHub →
61 features🐛 47 fixes🔧 36 symbols

Summary

Release 2.8.0 introduces numerous features across CLI commands, Node.js compatibility (especially around inspector events and module loading), and core runtime enhancements. Key additions include `deno audit fix`, `--watch` for `deno check`, and extensive stabilization of Node APIs.

✨ New Features

  • Accept `deno audit fix` as an alias for `deno audit --fix`.
  • Add `--watch` flag to `deno check`.
  • Add `deno bump-version` subcommand.
  • Add `deno why` subcommand.
  • Support workspaces in `deno bump-version`.
  • Default to npm registry for unprefixed packages in `deno add`/`install`.
  • Add progress bar for `deno compile`.
  • Support `module.registerHooks()` in compiled binaries.
  • Add `Deno.core.loadExtScript()` for lazy-loaded scripts.
  • Add async module resolution support via `ModuleResolveResponse` in core.
  • Support lazy_loaded_esm modules via import statements in core.
  • Synthetic_esm extension DSL + node:worker_threads canary.
  • Emit Network.* inspector events for `fetch()`.
  • ESM import() support for `module.registerHooks()` in `node:*` modules.
  • Add `createHistogram` to `node:perf_hooks`.
  • Buffer Network.* bodies for inspector body-fetch commands in `node:*` modules.
  • Convert `node:url`/`util`/`zlib` to synthetic_esm.
  • Emit Network.* inspector events for `node:http`.
  • Expose `inspector.isEnabled()` via `process.binding('inspector')`.
  • Implement Network CDP domain for inspector.
  • Implement `NodeRuntime.notifyWhenWaitingForDisconnect`.
  • Implement `module.registerHooks()` API for CommonJS.
  • Implement `node:module` SourceMap API.
  • Implement `node:wasi`.
  • Implement `postMessageToThread` cross-thread messaging.
  • Implement `vm.SourceTextModule` with `microtaskMode afterEvaluate` support.
  • Make Network.* CDP events fire under plain `--inspect`.
  • Restore `module.registerHooks`.
  • Support KeyObject structured clone over MessagePort.
  • Support `NODE_EXTRA_CA_CERTS`.
  • Support sending `dgram.Socket` handles over IPC.
  • Add gRPC protocol support for OTLP exporter in telemetry.
  • Support structured clone for Blob and File.
  • Emit Network.* inspector events for WebSocket.
  • Add `--os` and `--arch` flags for cross-platform npm installs.
  • Add `--prod` to `deno install` to skip dev deps and @types.
  • Default to npm for `deno install -g` unprefixed packages.
  • Add `catalog:` protocol for centralized dependency versions in workspaces.
  • Add hoisted `node_modules` linker mode for npm.
  • Support `min-release-age` in .npmrc.
  • Prefix output lines with task name when running in parallel in tasks.
  • Add timeout option to `Deno.test()`.
  • Add `Math.sumPrecise` and `Intl.Locale.prototype.variants`.
  • Geometry Interfaces Module Level 1 (unstable).
  • Support TC39 import defer proposal (unstable).
  • Add `--package`/`-p` flag for specifying package separately from binary in `deno x`.
  • Implement OffscreenCanvas support.
  • Add `--package-json` flag to `deno add`/`install`/`remove`/`uninstall`.
  • Add `deno ci` subcommand.
  • Add `deno pack` command to create npm tarballs.
  • Add `deno transpile` subcommand.
  • Disable "no-process-global", "no-node-globals" lint rules by default.
  • Disable ops and resources sanitizers by default in `deno test`.
  • Framework detection for `deno compile`.
  • Implement `deno audit --fix`.
  • Include node lib by default and use `NodeJS.Timeout` for timers.
  • Stabilize text imports.
  • Support `Deno.upgradeWebSocket` with `node:http` upgrade events.
  • Update TypeScript to 6.0.3.
  • Use Node.js timers by default and remove global proxy.
  • Update v8 to 14.9.

🐛 Bug Fixes

  • Disable `test-child-process-send-returns-boolean.js` on windows in CI.
  • Make `deno why` work with JSR dependencies.
  • Don't trigger proxy get trap for `nodejs.util.inspect.custom` in console.
  • Disable `include_icu_data` feature in core.
  • Evaluate pre-instantiated module in `lazy_load_esm_module`.
  • Prevent TLA hang when `has_tick_scheduled` is set during async module evaluation.
  • Short-circuit async-resolve when it returns an already-registered module.
  • Resolve npm entrypoints without types in documentation.
  • Add SHA3 support to `crypto.subtle.digest`.
  • Normalize P-521 SPKI exports in crypto.
  • Validate raw key length on X25519/X448/Ed25519 `importKey`.
  • Close `response_rid` when abort races `op_fetch_send` completion.
  • Run `open_async` on the blocking pool so FIFO opens don't stall the runtime.
  • Handle bitmaps in `createImageBitmap` correctly.
  • Run weak-callback finalizers synchronously in second-pass for napi.
  • DSA keygen with arbitrary `modulusLength` in node.
  • MessagePort.on('message') should deduplicate listeners.
  • Node-compatible TAP reporter for `node:test`.
  • TLSSocket.setServername throws typed errors.
  • Worker rejects `--heap-prof` and `--cpu-prof` execArgv flags with wrong error.
  • Accept `ArrayBufferView` in `tls.setDefaultCACertificates`.
  • Accept `CryptoKey` input in `createPublicKey`/`createPrivateKey`.
  • Add `ERR_REQUIRE_ASYNC_MODULE` and `ERR_REQUIRE_CYCLE_MODULE` error codes.
  • Add `limits` property on `node:sqlite` DatabaseSync.
  • Add active process resources APIs for node.
  • Add `emitExperimentalWarning`/`pendingDeprecate` to `internal/util`, support `modifyPrototype` option in `util.deprecate`.
  • Add `http2.performServerHandshake` to polyfill.
  • Add `linkRequests`/`moduleRequests`/`instantiate` to `node:vm`.
  • Add post-resolution deny check in TCPWrap connect.
  • Add `process._debugEnd()` / `process._debugProcess()`.
  • Add `test.expectFailure` to `node:test`.
  • Add `tls.getCaCertificates()`.
  • Add `util.setTraceSigInt` stub.
  • Add `v8.GCProfiler`.
  • Add `v8.queryObjects()` and `util.queryObjects()`.
  • Add `v8.startupSnapshot` API polyfill.
  • Align crypto KeyObject PKCS#8 encryption, JWK input and PSS salt with Node.
  • Align inspector WebSocket URL with Node.js format (`ws://host:port/UUID`).
  • Align `nextTick` ordering in ESM.
  • Align node stream `destroy` named export.
  • Align scrypt behavior and performance with Node.
  • Allow explicit `paramEncoding` for EC key generation.
  • Allow `tls.Server` SecureContext without cert/key for SNICallback.
  • Apply Deno's resolver inside loader-hook `defaultResolve`.
  • Apply encoding to Dirent name/parentPath in `fs.readdir`.
  • Apply `http1Options` to HTTP/2 secure server fallback.
  • Attach `addAbortListener` to Ev...

Affected Symbols