Skip to content

Releases: denoland/deno

v2.8.2

03 Jun 13:41
Immutable release. Only release title and notes can be modified.
085be0b

Choose a tag to compare

2.8.2 / 2026.06.03

  • feat(compile): improve --bundle dependency resolution and add --minify
    (#34536)
  • feat(compile): scope --bundle npm embed to packages actually reached (#34532)
  • feat(ext/crypto): add ChaCha20-Poly1305, SHAKE, cSHAKE, TurboSHAKE, SHA-3 HMAC
    (#34417)
  • feat(ext/crypto): add ML-DSA (FIPS 204) post-quantum signatures (#34448)
  • feat(ext/crypto): implement ML-KEM (FIPS 203) post-quantum KEM (#34447)
  • feat(ext/node): env/global proxy support for node:http and node:https (#34257)
  • feat(ext/node): support DENO_SERVE_ADDRESS override in node:http servers
    (#34662)
  • feat(jupyter): rewrite kernel in JS, drop zeromq/runtimelib deps (#34083)
  • feat(lsp): autocomplete jsr:/npm:/node: in deno.json(c) imports (#34724)
  • feat(publish): unfurl import specifiers in Wasm modules (#34549)
  • feat(task): support --env-file flag (#34508)
  • feat(task): support exclusion groups in task name wildcards (#34506)
  • feat(unstable): add --bundle flag to deno compile (#34527)
  • feat: bump deno_task_shell to 0.33.0 (#34642)
  • fix(add): handle version tags like @latest in deno add for JSR packages
    (#32859)
  • fix(add): replace panic with error when deno.json discovery fails (#34517)
  • fix(bundle): skip decorator pass when module has no decorators (#34489)
  • fix(bundle): use node-style CJS interop for the Deno platform (#34533)
  • fix(cache): skip WAL journal mode on WSL-1 (#34499)
  • fix(cache_dir): EnsureCachedStrategy must surface cached redirects (#34563)
  • fix(check): make node:stream/web types alias the globals (#34606)
  • fix(check): resolve npm packages without types when type checking (#34551)
  • fix(cli): suppress bug-report banner on broken pipe print panics (#34552)
  • fix(cli/task): run recursive workspace tasks in parallel (#34512)
  • fix(compile): allow process.chdir() into the VFS (#34610)
  • fix(compile): bundle workers separately under --bundle (#34531)
  • fix(compile): cover CJS-deep imports under --bundle (#34534)
  • fix(compile): create code cache when importing JSON or Wasm modules (#34614)
  • fix(compile): detect svelte-adapter-deno build output (#34535)
  • fix(compile): don't surface graph errors for --include files (#34568)
  • fix(compile): embed workspace package.json files in the VFS (#34530)
  • fix(compile): enable ANSI colors on Windows in compiled binaries (#34701)
  • fix(compile): handle CJS and native addons in --bundle (#34529)
  • fix(compile): respect npm registry sub-paths when flattening node_modules
    (#34575)
  • fix(compile): support workers loaded from blob URLs (#34574)
  • fix(compile): transpile TypeScript imported at runtime (#34616)
  • fix(config): hook up verbatimModuleSyntax for the emit pipeline (#34495)
  • fix(config): make config auto-discovery skip the same errors on every platform
    (#34558)
  • fix(config): surface invalid "exports" map in linked/workspace packages
    (#34473)
  • fix(config): warn instead of erroring when start dir is not a workspace member
    (#34458)
  • fix(config): warn instead of erroring when workspace member dir is missing
    (#34511)
  • fix(core): TLA hang on dyn import when async dep triggers lazy ESM load
    (#34469)
  • fix(core): preserve WebAssembly streaming callback across new contexts
    (#34679)
  • fix(crypto): correct X448 PKCS#8 handling (#34578)
  • fix(doc): don't lint private-type-ref for cross-package types (#34339)
  • fix(doc): handle non-ASCII doc lint diagnostics (#34626)
  • fix(ext/console): degrade gracefully when getKeys throws (#24980) (#34464)
  • fix(ext/fetch): implement missing Request properties (#34607)
  • fix(ext/fetch): preserve static request body length (#34546)
  • fix(ext/ffi): match V8 stack-arg layout in turbocall trampoline on Apple
    silicon (#34561)
  • fix(ext/fs): error when copyFile source and destination are the same file
    (#34718)
  • fix(ext/fs): retry without FILE_FLAG_BACKUP_SEMANTICS on Windows when driver
    rejects it (#34686)
  • fix(ext/fs): surface non-UTF-8 file names from read_dir (#34623)
  • fix(ext/http): reject Response-like return from respondWith (#34589)
  • fix(ext/http): reject Response-like return from serve handler (#34416)
  • fix(ext/io): cancel pending FileResource reads on close (#34544)
  • fix(ext/napi): clear error for Windows addons that link against node.exe
    (#34696)
  • fix(ext/napi): disallow JS execution during napi_new_instance (#34496)
  • fix(ext/napi): polyfill libuv thread + semaphore primitives (#34571)
  • fix(ext/napi): polyfill more libuv symbols from compat layer (#34488)
  • fix(ext/net): re-enable 0-RTT support in QUIC (#34520)
  • fix(ext/node): add module findPackageJSON export (#34597)
  • fix(ext/node): add node:test/reporters builtin (#34595)
  • fix(ext/node): add stripTypeScriptTypes export (#34594)
  • fix(ext/node): capture IPC handle eagerly to fix cluster send deadlock
    (#34661)
  • fix(ext/node): cover node:module SourceMap export (#34591)
  • fix(ext/node): disable repl preview when a custom eval is supplied (#34498)
  • fix(ext/node): drop bogus Buffer.prototype._isBuffer marker (#34502)
  • fix(ext/node): export syncBuiltinESMExports from node:module (#34593)
  • fix(ext/node): expose gc from v8 setFlagsFromString (#34604)
  • fix(ext/node): fix latin1Slice being too slow (#34503)
  • fix(ext/node): honor windowsHide in child_process spawn (#34627)
  • fix(ext/node): prevent buffer decode detach race (#34632)
  • fix(ext/node): re-export inner spec for module.exports = require(X).Y (#34363)
  • fix(ext/node): refuse sqlite close() while a user callback is running (#34515)
  • fix(ext/node): report real error code for failed dns.lookup (#34697)
  • fix(ext/node): resolve global cache packages when require referrer is outside
    DENODIR (#34497)
  • fix(ext/node): route node:fs.statfs through FileSystem trait (#34444)
  • fix(ext/node): support cyclic imports in vm.Module.prototype.link() (#34472)
  • fix(ext/node): support vm dynamic import callback (#34572)
  • fix(ext/node): tolerate unreadable cwd in require._nodeModulePaths (#34542)
  • fix(ext/node): vm dynamic import without callback throws
    ERR_VM_DYNAMIC_IMPORT_CALLBACK_MISSING (#34427)
  • fix(ext/web): forward console.group label to inspector log (#34341)
  • fix(ext/web): honor PerformanceObserver buffered flag (#34748)
  • fix(ext/web): make MessageEvent.ports a frozen array (#34773)
  • fix(fmt): update markup_fmt to fix quadratic inline CSS formatting (#34663)
  • fix(install): allow "minimumDependencyAge" object without "age" (#34523)
  • fix(install): handle pre-existing node_modules symlink on Windows (#34659)
  • fix(install): rewrite relative imports/scopes in copied deno.json (#34562)
  • fix(install): run workspace member dependency lifecycle scripts with member
    INIT_CWD (#34700)
  • fix(install): vendor type-only imports during deno ci (#34459)
  • fix(jupyter): exit kernel process after sending shutdown reply (#34554)
  • fix(jupyter): keep kernel alive across transient peer disconnects (#34550)
  • fix(jupyter): make kernel ZMTP handshake compatible with libzmq (#34755)
  • fix(jupyter): send transient: {} in execute_result so nbclient doesn't crash
    (#34483)
  • fix(jupyter): use stable PATH entry for kernel binary path (#34492)
  • fix(lsp): avoid empty import specifier completions (#34647)
  • fix(lsp): complete npm package exports (#34675)
  • fix(lsp): complete string union literals containing dots (#34664)
  • fix(lsp): discover all tests when names are duplicated (#34624)
  • fix(lsp): handle empty jsx completion ranges (#34651)
  • fix(lsp): handle parser panics while parsing documents (#34640)
  • fix(lsp): honor moduleResolution: "bundler" for npm dir imports (#34643)
  • fix(lsp): include configured deps in auto-imports (#34650)
  • fix(lsp): limit node_modules auto-import aliasing (#34674)
  • fix(lsp): merge duplicate completion imports (#34658)
  • fix(lsp): preserve URL extensions in typeof import(...) hovers (#34565)
  • fix(lsp): recover from TSC isolate OOM instead of crashing the language server
    (#34693)
  • fix(lsp): release idle memory back to the OS (#34727)
  • fix(lsp): skip parent process check when PID isn't visible (#34744)
  • fix(lsp): spurious diagnostics in Jupyter notebook cells (#34734)
  • fix(lsp): support test steps from imported helpers (#34648)
  • fix(lsp): surface CSS imports as .js to TypeScript (#34419)
  • fix(lsp): surface module-level uncaught errors in test runs (#34641)
  • fix(lsp): use cached registry config when offline (#34723)
  • fix(lsp): use file uris for neovim virtual definitions (#34653)
  • fix(lsp): walk to enabled nested workspaces (#34654)
  • fix(napi): report a clear error for legacy V8/nan native addons (#34683)
  • fix(napi): support ZeroMQ libuv addon symbols (#34657)
  • fix(node): avoid spurious ERR_MULTIPLE_CALLBACK on process.stdout/stderr
    (#34728)
  • fix(node): classify required js files as commonjs by default (#34673)
  • fix(node): full re-export fallback for unresolvable member re-exports (#34689)
  • fix(node): resolve CJS requires with multi-level relative specifiers on
    Windows (#34655)
  • fix(node): support module-sync export condition (#34599)
  • fix(node/repl): gate preview through V8 inspector throwOnSideEffect (#34566)
  • fix(npm): apply scoped registry auth to same-origin tarballs (#34698)
  • fix(npm): clean node_modules after deno remove (#34110)
  • fix(npm): downgrade latest tag for release age (#34581)
  • fix(npm): execute native binaries from npm package bin entries (#34375)
  • fix(npm): hoist direct deps over higher transitive versions (#34470)
  • fix(npm): share copy-package variants via symlink for class identity (#34691)
  • fix(resolver): don't resolve linked packages via bare specifier (#34519)
  • fix(rt): support host-FS CJS files in the standalone runtime (#34560)
  • fix(runtime): better error message when Deno.consoleSize() has no tty (#34538)
  • fix(runtime): suggest --allow-scripts for bindings native addon error
    (#34666)
  • fix(runtime): suggest N-API alternatives for le...
Read more

v2.8.1

27 May 12:56
Immutable release. Only release title and notes can be modified.
3e2030b

Choose a tag to compare

2.8.1 / 2026.05.27

  • Revert "fix(ext/node): polyfill module.enableCompileCache and companions"
    (#34190) (#34348)
  • feat(bundle): support browser field map in package.json (#34407)
  • fix(bundle): read package.json sideEffects field (#34406)
  • fix(cli): clearer error when importing .node addon via ESM (#34361)
  • fix(config): don't panic when --config path can't be converted to URL (#34351)
  • fix(core): allow host objects to round-trip through core.deserialize (#34380)
  • fix(core): keep lazy_loaded_esm sources across concurrent loads (#34353)
  • fix(ext/fetch,ext/websocket): check resolved IPs against net deny list
    (#34236)
  • fix(ext/node): TLSSocket.authorized=false when client presents no cert
    (#34381)
  • fix(ext/node): accept array forms of cert/key/pfx in createSecureContext
    (#34379)
  • fix(ext/node): add missing node:util APIs getSystemErrorMap,
    transferableAbortSignal, transferableAbortController (#34372)
  • fix(ext/node): allow omitting arguments in base64Slice (#34318)
  • fix(ext/node): attach register as static on Module (#34305)
  • fix(ext/node): do not throw NotFound for fs.exists (#34244)
  • fix(ext/node): drop extra positional args in promisified fs.promises.*
    (#34347)
  • fix(ext/node): emit 'error' event for fs.watch open failures (#34398)
  • fix(ext/node): enforce minimum Miller-Rabin rounds in checkPrime (#34391)
  • fix(ext/node): extract cert/key from pfx in tls SecureContext (#34383)
  • fix(ext/node): prevent panic on node:sqlite aggregate method (#34385)
  • fix(ext/node): require env permission for process.loadEnvFile (#34350)
  • fix(ext/node): reset req.reusedSocket on transparent retry (#34376)
  • fix(ext/node): support PKCS#12 MACs other than SHA-1 (#34342)
  • fix(ext/node): tolerate non-AsyncWrap handles in _getNewAsyncId (#34413)
  • fix(http): wake runtime after direct serve dispatch (#34387)
  • fix(inspector): emit NodeWorker.attachedToWorker for late workers (#34377)
  • fix(node/util): don't invoke Proxy traps in util.inspect (#34373)
  • fix(pack): remove automatic @deno/shim-deno injection (#34411)
  • fix(runtime): lazy-loaded globals should shadow on inherited [[Set]] (#34405)
  • fix(task): walk ancestor node_modules/.bin in BYONM mode (#34364)
  • fix(transpile): preserve newlines after multi-line block comments (#34357)
  • fix(types): restore brotli in CompressionFormat for dom/webworker libs
    (#34349)
  • fix(upgrade): zstd-compress bsdiff delta patches (#34354)
  • fix: allow --inspect=localhost:0 to resolve hostnames (#34230)
  • fix: panic in deno test --parallel (#34378)
  • fix: support npm: specifiers in --preload and --import (#34346)
  • perf(ext/node): reuse keep-alive timer in node:http server (#34302)

v2.8.0

22 May 10:51
Immutable release. Only release title and notes can be modified.
fbb5be3

Choose a tag to compare

2.8.0 / 2026.05.22

Read more: http://deno.com/blog/v2.8

  • feat: accept deno audit fix as alias for deno audit --fix (#34273)
  • feat: add --watch flag to deno check (#34224)
  • feat: add deno bump-version subcommand (#30562)
  • feat: add deno why subcommand (#32908)
  • feat: support workspaces in deno bump-version (#33689)
  • feat(add/install): default to npm registry for unprefixed packages (#33246)
  • feat(compile): add progress bar for deno compile (#33874)
  • feat(compile): support module.registerHooks() in compiled binaries (#33853)
  • feat(core): add Deno.core.loadExtScript() for lazy-loaded scripts (#33739)
  • feat(core): add async module resolution support via ModuleResolveResponse
    (#32432)
  • feat(core): support lazy_loaded_esm modules via import statements (#33873)
  • feat(core): synthetic_esm extension DSL + node:worker_threads canary (#34038)
  • feat(ext/fetch): emit Network.* inspector events for fetch() (#34220)
  • feat(ext/node): ESM import() support for module.registerHooks() (#33763)
  • feat(ext/node): add createHistogram to node:perf_hooks (#34003)
  • feat(ext/node): buffer Network.* bodies for inspector body-fetch commands
    (#34201)
  • feat(ext/node): convert node:url/util/zlib to synthetic_esm (#34041)
  • feat(ext/node): emit Network.* inspector events for node:http (#34231)
  • feat(ext/node): expose inspector.isEnabled() via process.binding('inspector')
    (#34203)
  • feat(ext/node): implement Network CDP domain for inspector (#32707)
  • feat(ext/node): implement NodeRuntime.notifyWhenWaitingForDisconnect (#34204)
  • feat(ext/node): implement module.registerHooks() API for CommonJS (#33733)
  • feat(ext/node): implement node:module SourceMap API (#32890)
  • feat(ext/node): implement node:wasi (#34089)
  • feat(ext/node): implement postMessageToThread cross-thread messaging (#34015)
  • feat(ext/node): implement vm.SourceTextModule with microtaskMode afterEvaluate
    support (#33603)
  • feat(ext/node): make Network.* CDP events fire under plain --inspect (#34270)
  • feat(ext/node): restore module.registerHooks (#34081)
  • feat(ext/node): support KeyObject structured clone over MessagePort (#34229)
  • feat(ext/node): support NODE_EXTRA_CA_CERTS (#33148)
  • feat(ext/node): support sending dgram.Socket handles over IPC (#33863)
  • feat(ext/telemetry): add gRPC protocol support for OTLP exporter (#30365)
  • feat(ext/web): support structured clone for Blob and File (#33827)
  • feat(ext/websocket): emit Network.* inspector events for WebSocket (#34222)
  • feat(install): add --os and --arch flags for cross-platform npm installs
    (#32785)
  • feat(install): added --prod to skip dev deps and @types (#33248)
  • feat(install): default to npm for deno install -g unprefixed packages
    (#34290)
  • feat(npm): add catalog: protocol for centralized dependency versions in
    workspaces (#32947)
  • feat(npm): add hoisted node_modules linker mode (#32788)
  • feat(npmrc): support min-release-age (#33983)
  • feat(task): prefix output lines with task name when running in parallel
    (#33805)
  • feat(test): add timeout option to Deno.test() (#33815)
  • feat(types): add Math.sumPrecise and Intl.Locale.prototype.variants (#34287)
  • feat(unstable): Geometry Interfaces Module Level 1 (#27527)
  • feat(unstable): support TC39 import defer proposal (#32360)
  • feat(x): add --package/-p flag for specifying package separately from binary
    (#32855)
  • feat: OffscreenCanvas (#29357)
  • feat: add --package-json flag to deno add/install/remove/uninstall (#33199)
  • feat: add deno ci subcommand (#34235)
  • feat: add deno pack command to create npm tarballs (#32139)
  • feat: add deno transpile subcommand (#32691)
  • feat: disable "no-process-global", "no-node-globals" lint rules by default
    (#33247)
  • feat: disable ops and resources sanitizers by default in deno test (#33250)
  • feat: framework detection for deno compile (#33164)
  • feat: implement deno audit --fix (#32909)
  • feat: include node lib by default and use NodeJS.Timeout for timers (#33823)
  • feat: stabilize text imports (#34238)
  • feat: support Deno.upgradeWebSocket with node:http upgrade events (#33342)
  • feat: update TypeScript to 6.0.3 (#32944)
  • feat: use Node.js timers by default and remove global proxy (#33249)
  • feat: v8 14.9 (#34226)
  • fix(ci): disable test-child-process-send-returns-boolean.js on windows
    (#33883)
  • fix(cli): make deno why work with jsr deps (#34227)
  • fix(console): don't trigger proxy get trap for nodejs.util.inspect.custom
    (#33730)
  • fix(core): disable include_icu_data feature (#34279)
  • fix(core): evaluate pre-instantiated module in lazy_load_esm_module (#33973)
  • fix(core): prevent TLA hang when has_tick_scheduled is set during async module
    evaluation (#33278)
  • fix(core): short-circuit async-resolve when it returns an already-registered
    module (#34058)
  • fix(doc): resolve npm entrypoints without types (#34147)
  • fix(ext/crypto): add SHA3 support to crypto.subtle.digest (#32342)
  • fix(ext/crypto): normalize P-521 SPKI exports (#34087)
  • fix(ext/crypto): validate raw key length on X25519/X448/Ed25519 importKey
    (#33944)
  • fix(ext/fetch): close response_rid when abort races op_fetch_send completion
    (#33928)
  • fix(ext/fs): run open_async on the blocking pool so FIFO opens don't stall the
    runtime (#33667)
  • fix(ext/image): handle bitmaps in createImageBitmap correctly (#34285)
  • fix(ext/napi): run weak-callback finalizers synchronously in second-pass
    (#34023)
  • fix(ext/node): DSA keygen with arbitrary modulusLength (#34206)
  • fix(ext/node): MessagePort.on('message') should deduplicate listeners (#33991)
  • fix(ext/node): Node-compatible TAP reporter for node:test (#34255)
  • fix(ext/node): TLSSocket.setServername throws typed errors (#33744)
  • fix(ext/node): Worker rejects --heap-prof and --cpu-prof execArgv flags with
    wrong error (#34011)
  • fix(ext/node): accept ArrayBufferView in tls.setDefaultCACertificates (#33700)
  • fix(ext/node): accept CryptoKey input in createPublicKey/createPrivat…
    (#33750)
  • fix(ext/node): add ERR_REQUIRE_ASYNC_MODULE and ERR_REQUIRE_CYCLE_MODULE error
    codes (#33921)
  • fix(ext/node): add limits property on node:sqlite DatabaseSync (#33106)
  • fix(ext/node): add active process resources APIs (#34101)
  • fix(ext/node): add emitExperimentalWarning/pendingDeprecate to internal/util,
    support modifyPrototype option in util.deprecate (#33660)
  • fix(ext/node): add http2.performServerHandshake to polyfill (#33668)
  • fix(ext/node): add linkRequests/moduleRequests/instantiate to node:vm (#34131)
  • fix(ext/node): add post-resolution deny check in TCPWrap connect (#33880)
  • fix(ext/node): add process._debugEnd() / process._debugProcess() (#34194)
  • fix(ext/node): add test.expectFailure to node:test (#34130)
  • fix(ext/node): add tls.getCaCertificates() (#32032)
  • fix(ext/node): add util.setTraceSigInt stub (#34013)
  • fix(ext/node): add v8.GCProfiler (#34158)
  • fix(ext/node): add v8.queryObjects() and util.queryObjects() (#34159)
  • fix(ext/node): add v8.startupSnapshot API polyfill (#34189)
  • fix(ext/node): align crypto KeyObject PKCS#8 encryption, JWK input and PSS
    salt with Node (#33757)
  • fix(ext/node): align inspector WebSocket URL with Node.js format
    (ws://host:port/UUID) (#33592)
  • fix(ext/node): align nextTick ordering in ESM (#34085)
  • fix(ext/node): align node stream destroy named export (#33573)
  • fix(ext/node): align scrypt behavior and performance with Node (#33773)
  • fix(ext/node): allow explicit paramEncoding for EC key generation (#33807)
  • fix(ext/node): allow tls.Server SecureContext without cert/key for SNICallback
    (#33715)
  • fix(ext/node): apply Deno's resolver inside loader-hook defaultResolve
    (#33964)
  • fix(ext/node): apply encoding to Dirent name/parentPath in fs.readdir (#33972)
  • fix(ext/node): apply http1Options to HTTP/2 secure server fallback (#33678)
  • fix(ext/node): attach addAbortListener to EventEmitter, fix errorMonitor
    (#34262)
  • fix(ext/node): avoid panic in vm.createContext loop at isolate teardown
    (#34195)
  • fix(ext/node): bind setImmediate callback this to the Immediate instance
    (#33716)
  • fix(ext/node): bind to IPv6 wildcard for default Server.listen() to enable
    dual-stack (#33617)
  • fix(ext/node): cancel pending TLS writes when the socket closes (#33690)
  • fix(ext/node): close named-pipe handles after child_process.spawn on Windows
    (#33941)
  • fix(ext/node): complete TLS peer cert chains (#34098)
  • fix(ext/node): decrypt encrypted private keys in publicEncrypt/privateDecrypt
    and ignore passphrase (#33770)
  • fix(ext/node): decrypt legacy Proc-Type/DEK-Info encrypted PEM private keys
    (#33769)
  • fix(ext/node): defer http2 stream window replenishment while paused (#33640)
  • fix(ext/node): detect non-mtime stat changes in StatWatcher (#33950)
  • fix(ext/node): dns resolveAny with real ANY query, retry/maxTimeout support
    (#33577)
  • fix(ext/node): don't emit ServerResponse 'finish' after client abort (#34026)
  • fix(ext/node): drive TLSWrap cycle on JSStream writes to fix deadlock (#33914)
  • fix(ext/node): emit DEP0111/DEP0119 from process.binding under
    --pending-deprecation (#33594)
  • fix(ext/node): emit DEP0192 deprecation warning when _tls_common is required
    (#33819)
  • fix(ext/node): emit ERR_HTTP2_MAX_PENDING_SETTINGS_ACK via session error
    instead of throwing (#33679)
  • fix(ext/node): emit ERR_HTTP2_TOO_MANY_INVALID_FRAMES for empty DATA frames
    without END_STREAM (#33644)
  • fix(ext/node): emit Protocol error when http2 client connects to non-h2 server
    (#33740)
  • fix(ext/node): emit deprecation warnings for legacy stream/_tls_wrap requires
    and module.parent (#34086)
  • fix(ext/node): emit destroy for cleared immediates (#34084)
  • fix(ext/node): emit diagnostics_channel events for HTTP server (#33908)
  • fix(ext/node): emit drained server close on next tick for Node parity (#33672)
  • fix(e...
Read more

v2.7.14

28 Apr 16:49
Immutable release. Only release title and notes can be modified.
2d674b2

Choose a tag to compare

2.7.14 / 2026.04.28

  • feat(ext/node): add fs.Utf8Stream
  • feat(upgrade): delta updates via bsdiff patches (#33274)
  • fix(bundle): treat CSS same-document fragment URLs as external (#33492)
  • fix(cache): add missing CacheStorage.keys() and Cache.keys() methods (#33275)
  • fix(config): don't exclude workspace members from deploy file patterns
    (#33562)
  • fix(coverage): exclude transformer-injected helpers from coverage (#33481)
  • fix(doc): remove background from operators in dark mode code blocks (#33267)
  • fix(ext/bundle): clearer error when Deno.bundle is called in compiled binary
    (#33503)
  • fix(ext/crypto): throw TypeMismatchError for non-TypedArray in getRand
    (#33470)
  • fix(ext/fetch): don't mutate caller's options in Deno.createHttpClient
    (#33497)
  • fix(ext/fetch): use byte ReadableStream for Node Readable request bodies
    (#33432)
  • fix(ext/fs): normalize Deno.watchFs paths so events drop ./ segments (#33490)
  • fix(ext/napi): implement napi_async_init and napi_async_destroy (#33282)
  • fix(ext/net): default Deno.listenDatagram hostname to 0.0.0.0 (#33496)
  • fix(ext/node): accept X.509v1 server certs in tls.createServer (#33505)
  • fix(ext/node): accept string mode in fs.mkdir and fs.mkdirSync (#33409)
  • fix(ext/node): add Server BlockList, asyncDispose, and misc net improvements
    (#33417)
  • fix(ext/node): add _idleStart and _idleTimeout to Timeout (#33604)
  • fix(ext/node): align crypto random* validation with Node (#33456)
  • fix(ext/node): align fs.truncate / ftruncate argument validation with Node
    (#33418)
  • fix(ext/node): align module.builtinModules / getBuiltinModule with Node
    (#33404)
  • fix(ext/node): align node:module behavior with Node (#33482)
  • fix(ext/node): align node:test it/describe with Node, enable passing
    compat tests (#33593)
  • fix(ext/node): align util.styleText with Node (#33547)
  • fix(ext/node): allow https.Agent() without new, enable passing compat
    tests (#33601)
  • fix(ext/node): async fs.stat/lstat throwIfNoEntry + deprecate fs.Stats
    (#33436)
  • fix(ext/node): attach input URL to ERR_INVALID_FILE_URL_PATH (#33398)
  • fix(ext/node): attach path/syscall to fs.lstat / realpath / link errors
    (#33446)
  • fix(ext/node): brand-check SecureContext._external accessor (#33569)
  • fix(ext/node): cache hash digest so it survives stream.pipeline (#33440)
  • fix(ext/node): cancelling Readable.toWeb(req) no longer destroys the socket
    (#33570)
  • fix(ext/node): close fd on error in http2 stream respondWithFile (#33614)
  • fix(ext/node): correct buffer-length check in Readable._fromList decoder
    branch (#33624)
  • fix(ext/node): defer drain in http2 shutdownWritable so pushStream after end()
    works (#33619)
  • fix(ext/node): drain pending TLS cleartext in enc_write_cb (#33378)
  • fix(ext/node): emit Buffer for http2 'goaway' opaqueData (#33502)
  • fix(ext/node): emit DEP0031 deprecation warning for ecdh.setPublicKey(
    (#33468)
  • fix(ext/node): emit DEP0182 deprecation for short AES-GCM auth tag (#33469)
  • fix(ext/node): emit HPE_INVALID_TRANSFER_ENCODING for CL+chunked respo
    (#33488)
  • fix(ext/node): emit StatWatcher 'stop' event asynchronously (#33448)
  • fix(ext/node): emit TimeoutNaNWarning for invalid timer durations (#33472)
  • fix(ext/node): emit http2 frameError on send failure with translated HTTP/2
    error code (#33631)
  • fix(ext/node): emit stream-level PROTOCOL_ERROR in node:http2
  • fix(ext/node): emit tlsClientError instead of crashing on TLS init failure
    (#33429)
  • fix(ext/node): enable test-als-defaultvalue-original (AsyncLocalStorage
    default value) (#33464)
  • fix(ext/node): encode http2 headers as Latin-1 to fix response splitting
    (#33531)
  • fix(ext/node): encode more chars in url.pathToFileURL() (#33397)
  • fix(ext/node): enforce HTTP/2 server header list size limits (#33494)
  • fix(ext/node): enforce http2 maxSessionInvalidFrames limit (#33515)
  • fix(ext/node): expose http2 sensitive headers received with NV_FLAG_NO_INDEX
    flag (#33626)
  • fix(ext/node): fix EEXIST error and data loss in writeFileSync on Windows
    (#33413)
  • fix(ext/node): fix ERR_INVALID_CHAR message & OutgoingMessage.prototype.write
    (#33430)
  • fix(ext/node): fix TLS client certificate authentication verification (#33576)
  • fix(ext/node): fix TLS socket error ordering and app data leak before identity
    verification (#33585)
  • fix(ext/node): fix TLS socket lifecycle and readStop backpressure (#33524)
  • fix(ext/node): fix closeIdleConnections destroying active connections (#33596)
  • fix(ext/node): fix fs.glob skipping siblings with */../ patterns (#33372)
  • fix(ext/node): fix spawnSync internal API for monkey-patching and killSignal
    (#33545)
  • fix(ext/node): flush GOAWAY before destroying http2 socket and expose
    internal/http2/core (#33566)
  • fix(ext/node): flush HTTP/2 client preface after settings submission (#33387)
  • fix(ext/node): forward enableConnectProtocol setting to peer in HTTP/2
    SETTINGS frame (#33616)
  • fix(ext/node): handle undefined http2 ping payload and cancel pending pings on
    destroy (#33561)
  • fix(ext/node): hide aggregateTwoErrors frame in AggregateError stack (#33402)
  • fix(ext/node): honor http2 strictFieldWhitespaceValidation option (#33506)
  • fix(ext/node): honor requestCert/ca on node:tls server, populate
    getPeerCertificate() (#33439)
  • fix(ext/node): honor weight option in http2 client.request and emit DEP0194
    (#33622)
  • fix(ext/node): http2 createConnection support and per-frame socket writes
    (#33520)
  • fix(ext/node): implement BlockList.rules / isBlockList / toJSON / fromJSON
    (#33445)
  • fix(ext/node): implement Socket.resetAndDestroy with TCP RST in node:net
    (#33415)
  • fix(ext/node): implement StatWatcher.ref() / unref() (#33408)
  • fix(ext/node): implement dns Resolver cancel() and timeout support (#33580)
  • fix(ext/node): implement dns.reverse() and fix dns.lookup() family parameter
    (#33579)
  • fix(ext/node): implement fs.mkdtempDisposableSync /
    fsPromises.mkdtempDisposable (#33533)
  • fix(ext/node): implement node:cluster fork/Worker and worker-side detection
    (#33493)
  • fix(ext/node): implement process.debugPort with ToInt32 coercion (#33403)
  • fix(ext/node): import kIncomingMessage/kServerResponse in http2 allowHTTP1
    fallback (#33435)
  • fix(ext/node): improve Node.js timer compatibility (#33479)
  • fix(ext/node): improve perf_hooks timerify and add missing exports (#33581)
  • fix(ext/node): include accepted values in Console colorMode error (#33424)
  • fix(ext/node): isolate parentPort from globalThis in worker_threads (#32596)
  • fix(ext/node): make Buffer.prototype methods generic-callable (#33466)
  • fix(ext/node): make http2 session.origin() round-trip origins and respect TLS
    servername (#33629)
  • fix(ext/node): make process.constructor a proper instanceof check (#33447)
  • fix(ext/node): name custom-promisified functions after their originals
    (#33407)
  • fix(ext/node): null-proto child_process options to block prototype pollution
    (#33555)
  • fix(ext/node): pass reusePort flags in Server.listen() without host (#33530)
  • fix(ext/node): pass signal name to process signal handlers (#33425)
  • fix(ext/node): pass stream fd to child process stdio instead of inheriting
    (#33525)
  • fix(ext/node): plumb llhttp error code, reason, and bytes parsed through
    HTTPParser (#33591)
  • fix(ext/node): prevent duplicate close emit when http2 client socket i
    (#33538)
  • fix(ext/node): re-arm Windows named pipe server after accept (#33369)
  • fix(ext/node): rebind http2 state buffers post-snapshot, enforce
    maxHeaderListPairs (#33495)
  • fix(ext/node): reject non-ArrayBufferView data in fs.writeFileSync (#33406)
  • fix(ext/node): rename _destroySsl to _destroySSL to match Node.js API (#33599)
  • fix(ext/node): replace unwrap with error propagation in parallel cp (#33396)
  • fix(ext/node): return relative path from fs.watch with recursive option
    (#33428)
  • fix(ext/node): strip trailing dot from SRV target in dns.resolveSrv() (#33578)
  • fix(ext/node): submit http2 RST_STREAM before flushing END_STREAM DATA frame
    on respondWithFD read (#33633)
  • fix(ext/node): support ALPNCallback in http2.createSecureServer (#33521)
  • fix(ext/node): support BlockList, AbortSignal, and constructor options in
    node:net Socket (#33414)
  • fix(ext/node): support ignore option in fs.watch and fs.promises.watch
    (#33610)
  • fix(ext/node): support encoding option in fs.readdir; don't double-call glob
    callback (#33501)
  • fix(ext/node): support http2 pushStream and client push events (#33516)
  • fix(ext/node): support reusePort option and fix bind/pipe handling in node:net
    (#33416)
  • fix(ext/node): support util.promisify on http2.connect (#33489)
  • fix(ext/node): support v1 X.509 certs and http2 ALPN fallback (#33510)
  • fix(ext/node): throw ERR_INVALID_ARG_VALUE when rmdir gets options.recursive
    (#33565)
  • fix(ext/node): throw ERR_INVALID_URL from http/https request string URL
    (#33427)
  • fix(ext/node): throw TypeError for Symbol keys/values in process.env (#33399)
  • fix(ext/node): timer _destroyed flag, Symbol.dispose, and setInterval abort
    (#33528)
  • fix(ext/node): track http2 custom settings and SETTINGS ACK callbacks (#33518)
  • fix(ext/node): treat unsolicited HTTP/2 PING ACK as connection-level protocol
    error (#33625)
  • fix(ext/node): use AbortSignal.addEventListener in addAbortListener (#33557)
  • fix(ext/node): use ERR_INVALID_ARG_TYPE for tls.createServer non-object
    options (#33589)
  • fix(ext/node): use ERR_INVALID_ARG_VALUE in module.createRequire (#33449)
  • fix(ext/node): use Node's address-type check in dgram Socket.send (#33420)
  • fix(ext/node): use node:timers for http server connection checks, expo
    (#33483)
  • fix(ext/node): use proper error codes for require() invalid arguments (#33609)
  • fix(ext/node): validate fs.watch boolean options (#33627)
  • fix(ext/node): ...
Read more

v2.7.13

22 Apr 13:26
Immutable release. Only release title and notes can be modified.
eea9126

Choose a tag to compare

2.7.13 / 2026.04.22

  • feat(ext/node): implement node:repl module (#32799)
  • feat(ext/node): rewrite node:http with llhttp and native TCPWrap (#33208)
  • feat(upgrade): support installing from a PR (#33252)
  • fix(audit): migrate to bulk advisory endpoint (#33292)
  • fix(console): find nodejs.util.inspect.custom on Proxy objects via get trap
    (#33265)
  • fix(doc): Add Prism support for JSX/TSX code blocks (#33255)
  • fix(ext/http): treat empty Host header as missing in request URL (#33234)
  • fix(ext/napi): defer GC weak-callback finalizers to the event loop (#33260)
  • fix(ext/napi): implement real V8 handle scopes and callback scopes (#33281)
  • fix(ext/napi): implement zero-copy external Latin-1 strings (#33283)
  • fix(ext/node): ChildProcess.kill() returns false when process already exited
    (#33305)
  • fix(ext/node): address node:http rewrite review comments (#33299)
  • fix(ext/node): auto-start server-side STARTTLS handshake, add TLS upgrade
    tests (#33303)
  • fix(ext/node): defer JS stream encOut to avoid reentrant CppGC borrow (#33304)
  • fix(ext/node): enable HTTP parser consume fast path (#33354)
  • fix(ext/node): enforce maxHeaderSize in HTTP parser (#33306)
  • fix(ext/node): fix EEXIST error and file corruption with writeFileSync on
    Windows (#33253)
  • fix(ext/node): fix Module._resolveLookupPaths and require.resolve compat
    (#33261)
  • fix(ext/node): fix multiple http2 bugs (#33315)
  • fix(ext/node): fix playwright on windows (#33295)
  • fix(ext/node): flush HTTP/2 HEADERS frame after client request (#33300)
  • fix(ext/node): free uv_write and uv_shutdown requests in every exit path
    (#33350)
  • fix(ext/node): http client compat improvements (#33337)
  • fix(ext/node): http2 improvements — constants, error codes, settings,
    validation (#33332)
  • fix(ext/node): improve node:tls compat (validation, pipes, JS streams)
    (#33331)
  • fix(ext/node): support FD-indexed stdio inheritance in spawnSync (#33341)
  • fix(ext/node): support RSA-PSS keys in crypto.verify with null algorithm
    (#33314)
  • fix(runtime): warn on unsupported web Worker options and fix recv panic
    (#33310)
  • fix(test): fix specific_canary upgrade test on Windows (#33286)
  • fix: add note for canary's 30-day retention period (#33271)
  • fix: restore glibc < 2.27 compatibility for Linux release builds (#33259)
  • fix: update v8 crate to 147.2.1 (#33318)
  • perf(ext/node): elide async_hooks emit in timers when no hooks registered
    (#33355)
  • perf(ext/node): flush-free header fast path in HTTP parser (#33351)
  • perf(ext/node): reduce writev op allocations and write copies (#33352)
  • perf(libs/core): poll only ready handles and yield between I/O batches
    (#33349)
  • perf: reduce memory usage of Command.output() (#33335)

v2.7.12

09 Apr 20:35
Immutable release. Only release title and notes can be modified.
825d264

Choose a tag to compare

2.7.12 / 2026.04.09

  • feat(ext/node): add fs.SyncWriteStream (#33226)
  • feat(ext/node): add llhttp-based HTTPParser with native cppgc binding (#33202)
  • feat(ext/node): add native TLSWrap cppgc object (Rust core) (#33183)
  • feat: native uv_pipe_t implementation with NativePipe and FdTable (#33165)
  • fix(core): fix uv_pipe_open handle lifecycle to match libuv (#33225)
  • fix(core): free UvLoopInner on uv_loop_t drop to prevent worker memory leak
    (#33200)
  • fix(core): handle WouldBlock in op_print for non-blocking stdio (#33221)
  • fix(core): use c_char instead of i8 in uv_buf_t base cast (#33179)
  • fix(ext/napi): use per-isolate Private key for napi_wrap/napi_unwrap (#33204)
  • fix(ext/node): add dns.getDefaultResultOrder() API (#33197)
  • fix(ext/node): create net.Socket from file descriptors (#33150)
  • fix(ext/node): implement TCP.open(fd) (#33155)
  • fix(ext/node): implement timeout, killSignal, and pid for child_process
    spawnSync (#32810)
  • fix(ext/node): implement uv_ref for native TCP handles (#33174)
  • fix(ext/node): remove dead legacy TCP server accept path (#33172)
  • fix(ext/node): return real OS file descriptors from node:fs APIs (#33039)
  • fix(ext/node): rewrite Pipe.open(fd) to use raw fd ops (#33136)
  • fix(ext/node): support numeric FDs in child_process stdio array (#33140)
  • fix(ext/node): throw on cipher update with input >= 2^31-1 bytes (#33201)
  • fix(ext/webgpu): accept ArrayBuffer in GPUQueue.writeBuffer() as data
    source (#33152)
  • fix(io): remove global stdio statics, handle non-blocking stdin (#33219)
  • fix(node): validate resolved main path stays within package directory (#33170)
  • fix(otel): add timeout to OTEL HTTP exporter to prevent hangs (#33159)
  • fix(permissions): check deny rules against resolved IPs to prevent numeric
    hostname bypass (#33203)
  • fix(permissions): normalize IPv4-mapped IPv6 addresses in net permission
    checks (#33223)
  • fix(repl): surface CDP protocol errors and fix race in wait_for_response
    (#33190)
  • fix(runtime): cache canonicalized watch paths, fix spurious events (#33123)
  • fix(schema): fix the publish: false of deno.json schema (#33196)
  • fix: linked packages with peer deps failing to cache from lockfile (#33143)
  • fix: update release template workflow URLs to .generated.yml (#33116)
  • perf(ext/node): use aws-lc-sys EVP API for chacha20-poly1305 (#33110)

v2.7.11

01 Apr 12:45
Immutable release. Only release title and notes can be modified.
6ddbb09

Choose a tag to compare

2.7.11 / 2026.04.01

  • feat: add alpha and beta release channel support (#33098)
  • fix(ext/node): fire fs.watch events for immediate writes (#32935) (#32989)
  • fix(watch): reduce graceful shutdown timeout from 5s to 500ms (#33099)

v2.7.10

31 Mar 15:09
Immutable release. Only release title and notes can be modified.
fde6c9c

Choose a tag to compare

2.7.10 / 2026.03.31

  • feat: add include and exclude fields to compile config (#33024)
  • fix(ext/http): gracefully handle consumed external in OTel ops (#33027)
  • fix(ext/node): process.argv[0] is equivalent to execPath (#28915)
  • fix(ext/node): add chacha20-poly1305 cipher support (#33084)
  • fix(ext/node): drain pending messages before emitting worker exit event
    (#32623)
  • fix(ext/node): escape shell metacharacters in child_process args on Windows
    (#33071)
  • fix(ext/node): fix BadResource error in FileHandle.readLines() (#32685)
  • fix(ext/node): improve GCM cipher compat with Node.js (#33079)
  • fix(ext/node): improve sign/verify crypto compat with Node.js (#33083)
  • fix(ext/node): return pid from spawnSync (#33081)
  • fix(ext/web): fix infinite loop in WebTransport datagram overflow handling
    (#33075)
  • fix(install): all package.json aliases should be added to node_modules
    (#33068)
  • fix(lsp): don't double-encode query/fragment in notebook cell URIs (#33070)
  • fix(lsp): suggest import map aliases in auto-imports for local directories
    (#33048)
  • fix(npm): resolve linked packages not published to npm registry (#33021)
  • fix(outdated): use dist-tags.latest for Latest column, matching npm/pnpm/bun
    (#32939)
  • fix(resolver): resolve npm packages that shadow Node built-in names in BYONM
    mode (#32865)
  • fix(serde_v8): use actual bytes written in to_utf8_slow (#33074)
  • fix: use case-insensitive path matching for permissions on Windows (#33073)

v2.7.9

27 Mar 12:54
Immutable release. Only release title and notes can be modified.
f065b07

Choose a tag to compare

2.7.9 / 2026.03.27

  • fix(cli): show clean error instead of panic for invalid
    --unsafely-ignore-certificate-errors value (#32868)
  • fix(compile): strip duplicate exe path from argv when standalone binary
    relaunches (#33016)
  • fix(compile): use execPath for process.argv[1] in standalone binaries (#32990)
  • fix(ext/http): use clone_external in op_http_metric_handle_otel_error (#33005)
  • fix(ext/node): util.stripVTControlCharacters compatibility (#32942)
  • fix(ext/node): add Symbol.dispose and Symbol.asyncDispose to fs.Dir (#33000)
  • fix(ext/node): rewrite Windows TTY reading to match libuv (console mode,
    encoding, raw + line mode) (#32999)
  • fix(ext/node): use constant-time comparison for secret key equality (#32994)
  • fix(publish): vite import.meta.hot not type checking (#32127)
  • perf(ops): replace per-op generated slow metrics wrappers with shared dispatch
    (#32889)

v2.7.8

25 Mar 16:11
Immutable release. Only release title and notes can be modified.
c394911

Choose a tag to compare

2.7.8 / 2026.03.25

  • feat(core): implement NodeRuntime CDP domain and fix --inspect-brk blocking
    (#32714)
  • feat(ext/crypto): implement P-521 sign, verify, and ECDH derive (#32602)
  • feat(ext/napi): add node_api_create_object_with_named_properties (#32906)
  • feat(ext/telemetry): add console exporter for OpenTelemetry (#32717)
  • feat(ext/telemetry): copy relevant span attributes to HTTP metrics (#32720)
  • feat: use lockfile from jsr package for global install (#32490)
  • fix(audit): respect package.json overrides in vulnerability checks (#32878)
  • fix(cli): fix arrow keys in interactive picker on Windows (#32978)
  • fix(cli): parse --frozen flag for deno update and deno outdated (#32975)
  • fix(compile): skip Node-to-Deno arg translation in standalone binaries
    (#32980)
  • fix(ext/console): handle throwing Symbol.toStringTag getter gracefully
    (#32917)
  • fix(ext/napi): pass valid env to tsfn call_js_cb after close race (#32957)
  • fix(ext/node): fs.cp across allowed dirs with ignored read permissions
    (#32927)
  • fix(ext/node): child_process improvements (internalMessage, argv0, DEP0190)
    (#32885)
  • fix(ext/node): close libuv handle on HandleWrap.close() for new-style handles
    (#32958)
  • fix(ext/node): defer uv_write callbacks to prevent re-entrancy panic (#32919)
  • fix(ext/node): do not throw error for readline.createInterface outside TTY
    (#32874)
  • fix(ext/node): don't fire upgrade event for h2c requests (#32866)
  • fix(ext/node): drain all ready connections in poll_tcp_handle to prevent
    accept starvation (#32943)
  • fix(ext/node): emit request "close" before socket "free" in keep-alive path
    (#32811)
  • fix(ext/node): enable node compat test for v8.getHeapStatistics (#32833)
  • fix(ext/node): enable node:fs compat tests + lchmod fix (#32892)
  • fix(ext/node): fix Buffer.concat truncating buffers larger than 4GB (#32913)
  • fix(ext/node): fix IPC stdio handling in child_process (#32920)
  • fix(ext/node): fix node:domain across async boundaries (#32897)
  • fix(ext/node): freeze os.constants.signals to match Node.js (#32836)
  • fix(ext/node): implement process.threadCpuUsage() (#32829)
  • fix(ext/node): improve process.hrtime argument validation (#32837)
  • fix(ext/node): improve readline and EventEmitter compat (#32826)
  • fix(ext/node): pass uid/gid to spawn and implement process.getgroups (#32772)
  • fix(ext/node): preserve TLS upgrade state on reconnect (#32838)
  • fix(ext/node): return all own properties from VM context property enumerator
    (#32911)
  • fix(ext/node): set fd property on TTY ReadStream and WriteStream (#32880)
  • fix(ext/node): sqlite prepare() options, defensive default, iterator
    invalidation (#32756)
  • fix(ext/node): support http2 createConnection sockets (#32733)
  • fix(ext/node): support numeric FDs in child_process stdio array (#32959)
  • fix(ext/node): update process.versions.napi to 9 (#32870)
  • fix(ext/web): AbortSignal.any() memory leak with long-lived signals (#32916)
  • fix(ext/web): handle null options in removeEventListener (#32605)
  • fix(fmt): delegate component expression formatting to markup_fmt (#29763)
  • fix(fmt): update markup_fmt to 0.27.0 and malva to 0.15.2 (#32949)
  • fix(inspector): send executionContextDestroyed on process.exit() (#32934)
  • fix(lockfile): truncate frozen lockfile error diff to 50 lines (#32976)
  • fix(napi): add test coverage and fix escape_handle/throw bugs (#32960)
  • fix(node/http): stop leaking TCP wrappers on HTTPS upgrade with
    createConnection TLSSocket (#32961)
  • fix(npm): approve-scripts detects packages when lockfile is disabled
    (#32842)
  • fix(npm): create shims for all bin entries during global npm install (#32607)
  • fix(npm): skip file: and link: dependencies in npm packages (#32876)
  • fix(npm): use box-drawing style for deprecated package warnings (#32979)
  • fix(resolver): fall through to .deno/ when BYONM node_modules version
    mismatches (#32981)
  • fix(resolver): prefer exact version match in BYONM npm resolution (#32977)
  • fix: handle inner quotes in double-quoted env values in .env file (#32930)
  • fix: include Temporal types in deno types output (#32952)
  • fix: make flamegraph SVG fill full browser viewport (#32727)
  • fix: rewrite approve_scripts_no_lock as PTY tests, skip lockfile test on
    Windows (#32853)
  • fix: skip flaky test-process-threadCpuUsage-worker-threads on Windows (#32886)
  • perf(ext/web): use simdutf for base64 encode/decode (#32743)
  • perf: upgrade to jsonc-parser 0.32 (#32864)