v2.7.8
📦 denoView on GitHub →
✨ 6 features🐛 52 fixes🔧 21 symbols
Summary
This release introduces significant improvements to Node.js compatibility, including fixes for child_process, fs, and various internal APIs. It also adds new features like P-521 cryptography support and OpenTelemetry console exporting.
✨ New Features
- Implement NodeRuntime CDP domain and fix --inspect-brk blocking.
- Implement P-521 sign, verify, and ECDH derive in crypto extension.
- Add node_api_create_object_with_named_properties in napi extension.
- Add console exporter for OpenTelemetry in telemetry extension.
- Copy relevant span attributes to HTTP metrics in telemetry extension.
- Use lockfile from jsr package for global install.
🐛 Bug Fixes
- Respect package.json overrides in vulnerability checks.
- Fix arrow keys in interactive picker on Windows.
- Parse --frozen flag for deno update and deno outdated.
- Skip Node-to-Deno arg translation in standalone binaries.
- Handle throwing Symbol.toStringTag getter gracefully in console extension.
- Pass valid env to tsfn call_js_cb after close race in napi extension.
- Fix fs.cp across allowed dirs with ignored read permissions in node extension.
- Child_process improvements (internalMessage, argv0, DEP0190) in node extension.
- Close libuv handle on HandleWrap.close() for new-style handles in node extension.
- Defer uv_write callbacks to prevent re-entrancy panic in node extension.
- Do not throw error for readline.createInterface outside TTY in node extension.
- Don't fire upgrade event for h2c requests in node extension.
- Drain all ready connections in poll_tcp_handle to prevent accept starvation in node extension.
- Emit request "close" before socket "free" in keep-alive path in node extension.
- Enable node compat test for v8.getHeapStatistics.
- Enable node:fs compat tests + lchmod fix.
- Fix Buffer.concat truncating buffers larger than 4GB.
- Fix IPC stdio handling in child_process.
- Fix node:domain across async boundaries.
- Freeze os.constants.signals to match Node.js.
- Implement process.threadCpuUsage().
- Improve process.hrtime argument validation.
- Improve readline and EventEmitter compat.
- Pass uid/gid to spawn and implement process.getgroups.
- Preserve TLS upgrade state on reconnect.
- Return all own properties from VM context property enumerator.
- Set fd property on TTY ReadStream and WriteStream.
- Fix sqlite prepare() options, defensive default, iterator invalidation.
- Support http2 createConnection sockets.
- Support numeric FDs in child_process stdio array.
- Update process.versions.napi to 9.
- Fix AbortSignal.any() memory leak with long-lived signals in web extension.
- Handle null options in removeEventListener in web extension.
- Delegate component expression formatting to markup_fmt.
- Update markup_fmt to 0.27.0 and malva to 0.15.2.
- Send executionContextDestroyed on process.exit() in inspector.
- Truncate frozen lockfile error diff to 50 lines.
- Add test coverage and fix escape_handle/throw bugs in napi.
- Stop leaking TCP wrappers on HTTPS upgrade with createConnection TLSSocket.
- "approve-scripts" detects packages when lockfile is disabled.
- Create shims for all bin entries during global npm install.
- Skip `file:` and `link:` dependencies in npm packages.
- Use box-drawing style for deprecated package warnings.
- Fall through to .deno/ when BYONM node_modules version mismatches.
- Prefer exact version match in BYONM npm resolution.
- Handle inner quotes in double-quoted env values in .env file.
- Include Temporal types in deno types output.
- Make flamegraph SVG fill full browser viewport.
- Rewrite approve_scripts_no_lock as PTY tests, skip lockfile test on Windows.
- Skip flaky test-process-threadCpuUsage-worker-threads on Windows.
- Use simdutf for base64 encode/decode in web extension.
- Upgrade to jsonc-parser 0.32.
Affected Symbols
NodeRuntimefs.cpchild_processreadline.createInterfacev8.getHeapStatisticsnode:fsBuffer.concatnode:domainos.constants.signalsprocess.threadCpuUsageprocess.hrtimeprocess.getgroupssqlite prepare()http2 createConnectionAbortSignal.anyremoveEventListenermarkup_fmtprocess.exit()approve-scriptsnpm installdeno types output