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
deno auditdeno checkdeno bump-versiondeno whydeno adddeno installdeno compileDeno.core.loadExtScriptModuleResolveResponseDeno.testMath.sumPreciseIntl.Locale.prototype.variantsOffscreenCanvasdeno packdeno transpileDeno.upgradeWebSocketcrypto.subtle.digestDeno.corenode:perf_hooksnode:httpnode:urlnode:utilnode:zlibnode:worker_threadsprocess.binding('inspector')NodeRuntime.notifyWhenWaitingForDisconnectmodule.registerHooks()node:modulenode:wasiMessagePortNODE_EXTRA_CA_CERTSdgram.SocketBlobFiledeno cideno audit --fix