Skip to content

Releases: denoland/deno

v2.7.4

05 Mar 14:21
Immutable release. Only release title and notes can be modified.
8274bf7

Choose a tag to compare

2.7.4 / 2026.03.05

  • fix(core): uv_compat cleanup and fixes (#32458)
  • fix(deploy): correctly handle version lookup (#32489)
  • fix(ext/node): deep assert compatibility (#32434)
  • fix(ext/node): use sync writes for TTY stdout/stderr WriteStream (#32488)
  • fix(test): restart all tests on env file change (#32461)
  • perf(npm): actually improve npm install -g deno binary startup performance
    (#32467)

v2.7.3

04 Mar 16:21
Immutable release. Only release title and notes can be modified.
e78a7fa

Choose a tag to compare

2.7.3 / 2026.03.04

  • fix(deploy): dont use jsr api for deploy subcommand (#32441)
  • fix(ext/node): handle partial writes to process.stdout/stderr (#32433)
  • fix(ext/node): make UDP socket ops synchronous, implement missing dgram
    methods (#32381)
  • fix(ext/node): support HTTP over Windows named pipes in node:http (#32414)
  • fix(npm): don't panic when peer dep is not in snapshot (#32454)
  • fix(npm): regression where resolution was missing dependencies (#32453)
  • perf(npm): improve npm install deno binary startup performance (#32439)

v2.7.2

03 Mar 16:06
Immutable release. Only release title and notes can be modified.
83e3746

Choose a tag to compare

2.7.2 / 2026.03.03

  • feat: v8 14.6, fix require(esm), libuv compat (#32347)
  • fix(ci): fix ordering of platforms in ecosystem_compat_slack (#32393)
  • fix(cli): load multiple env files in the correct order (#32354)
  • fix(compile): store self extracting dir in hidden dir beside executable
    (#32329)
  • fix(core): store Global ptr for libuv-compat callbacks (#32361)
  • fix(coverage): correct line and branch counts in coverage reports (#32312)
  • fix(coverage): warn instead of erroring when source files are missing (#32398)
  • fix(ext/console): support iterators in console.table (#32379)
  • fix(ext/crypto): fix P-521 EC key export for all formats (#32412)
  • fix(ext/crypto): handle wrong algorithm in subtle.importKey without panicking
    (#32410)
  • fix(ext/node): CBC decipher setAutoPadding(false) incorrectly strips bytes
    (#32403)
  • fix(ext/node): gracefully exit on invalid NODE_CHANNEL_FD instead of panicking
    (#32421)
  • fix(ext/node): handle emoji width correctly in readline (#32383)
  • fix(ext/node): implement KeyObject.equals, fix createCipheriv with
    KeyObject/null IV (#32409)
  • fix(ext/node): implement missing X509Certificate methods (#32270)
  • fix(ext/node): make execPath named export a real string (#32396)
  • fix(ext/node): make setAutoPadding(false) a no-op for GCM ciphers (#32290)
  • fix(ext/node): make fsPromises.watch() a proper AsyncIterable with close()
    (#32378)
  • fix(ext/node): provide CJS globals in worker_threads eval mode (#32266)
  • fix(ext/node): rename conflict callback field typo (#32306)
  • fix(ext/node): return first created path from recursive "node:fs" mkdir call
    (#32300)
  • fix(ext/node): support DER-encoded keys in publicEncrypt/privateDecrypt
    (#32291)
  • fix(ext/node): support Ed25519, X25519, and P-521 keys in
    X509Certificate.publicKey (#32267)
  • fix(ext/node): support RSA PSS padding option in crypto sign/verify (#32269)
  • fix(ext/node): support SEC1 EC private key import/export in node:crypto
    (#32401)
  • fix(ext/node): support process.stdout resize events (#32343)
  • fix(ext/node): use internal compileFunction binding in CJS wrap (#32373)
  • fix(install): do not panic if lockfile incorrectly says package has a bin
    (#32345)
  • fix(install): global install should not warn about using node_modules dir for
    npm specifiers (#32341)
  • fix(jupyter): handle shutdown and interrupt requests per protocol (#32359)
  • fix(node): implement resolveObjectURL for node:buffer (#32382)
  • fix(node): implement process.umask properly (#32385)
  • fix(node): preserve AsyncLocalStorage context in stream.finished callback
    (#32389)
  • fix(node): support ECDSA with secp256k1 in node:crypto (#32390)
  • fix(node/buffer): fix base64 decoding for strings with hyphens (#32298)
  • fix(node/crypto): handle empty input in decipher final with auto_pad=false
    (#31958)
  • fix(node/vm): support vm.constants.DONT_CONTEXTIFY in createContext (#32337)
  • fix(npm): NPM_CONFIG_REGISTRY correctly overrides .npmrc (#32394)
  • fix(npm): peerDependency resolution leading to multiple versions being
    installed + hanging (#32358)
  • fix(test): dedupe discovered workspace test modules (#32380)
  • fix: fix some stack frame dimming, and make the console log more aligned with
    cli formatting (#32399)
  • fix: process level environment variables should take precedence over env files
    (#32407)
  • fix: validate cron schedule when using cron socket (#32406)
  • fix:(ext/node): escape simple quotes in node:child_process (#32336)
  • perf(install): improve parallelism of fetches during npm resolution (#32416)
  • perf(install): move HTTP decompression for registry requests off the async
    event loop (#32400)
  • perf(install): request abbreviated packuments from npm registry (#32364)
  • perf(install): split tarball extraction into decompress + write, limit write
    concurrency (#32408)
  • perf(install): use aws-lc-rs for tarball integrity hashing (#32365)

v2.7.1

25 Feb 17:04
Immutable release. Only release title and notes can be modified.
1df618d

Choose a tag to compare

2.7.1 / 2026.02.25

This is a maintenance release to fix wrong output of deno --version in v2.7.0.

v2.7.0

25 Feb 10:39
Immutable release. Only release title and notes can be modified.
fb4db33

Choose a tag to compare

2.7.0 / 2026.02.25

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

  • feat(audit): add --ignore flag to filter advisories by CVE ID (#32221)
  • feat(check): add --check-js flag (#32235)
  • feat(cli): add --save-exact/--exact flag to deno add and install
    (#31977)
  • feat(cli): add deno create command (#32225)
  • feat(compile): add --self-extracting flag (#32227)
  • feat(config): support include and exclude in deploy config (#32254)
  • feat(ext/bundle): Add --keep-names flag (#32285)
  • feat(ext/web): add brotli support to CompressionStream and
    DecompressionStream (#32028)
  • feat(fmt): add --fail-fast flag to deno fmt --check (#31438)
  • feat(fs): add tryLock(exclusive?: boolean): Promise to FsFile
    (#31848)
  • feat(install): support --node-modules-dir for -g and use a manual
    node_modules dir for installing npm: specifiers (#32302)
  • feat(task): turn off failglob by default (#32223)
  • feat(unstable): add Deno.spawn(), Deno.spawnAndWait{Sync}() (#32238)
  • feat(upgrade): cache downloaded binaries (#32187)
  • feat: deno create jsr:<package> and deno init --jsr <package> (#32229)
  • feat: add navigator.platform (#30795)
  • feat: npm overrides (#32073)
  • feat: stabilize Temporal API (#31928)
  • fix(audit): gracefully handle malformed response (#32234)
  • fix(audit): properly handle npm registries in subpaths (#32164)
  • fix(bundle): let esbuild handle data urls (#32213)
  • fix(ci): use noble apt repo for LLVM 21 packages (#32241)
  • fix(ext/node): createServer().listen().address() returns port 0 (#32248)
  • fix(ext/node): util.parseEnv and process.loadEnvFile compatibility
    (#32183)
  • fix(ext/node): add host_arch to process.config.variables (#32265)
  • fix(ext/node): add openAsBlob export to node:fs (#32261)
  • fix(ext/node): add missing process.constrainedMemory() API (#32209)
  • fix(ext/node): enable test-stdio-closed tests (#32237)
  • fix(ext/node): enable test-zlib-invalid-input-memory and test-zlib-un…
    (#32284)
  • fix(ext/node): handle shell redirections in child_process exec (#32087)
  • fix(ext/node): implement timeout and killSignal for spawn() (#32283)
  • fix(ext/node): improve process event handling and add missing APIs (#32200)
  • fix(ext/node): preserve streaming body on stale keepalive retry (#32215)
  • fix(ext/node): remove fs.promises.fstat, not a public Node.js API (#32289)
  • fix(ext/node): support URL in child_process.fork modulePath (#32268)
  • fix(ext/node): support ipv6 host in node:http (#32258)
  • fix(install): support --allow-scripts with deno install -g --compile ...
    (#32249)
  • fix(lsp): implement remaining tsgo resolver callbacks (#32303)
  • fix(lsp): qualify diagnostic source and message from tsgo (#32251)
  • fix(lsp): typescript-go basic resolution (#32016)
  • fix(node): preserve AsyncLocalStorage context in unhandledRejection handlers
    (#32264)
  • fix(node/buffer): fix latin1Slice and hexSlice returning wrong results
    (#32277)
  • fix(permissions): allow /proc/pressure/* files with --allow-read (#30780)
  • fix: deno install --force --compile (#32242)
  • fix: detect bound require reexports in cjs analysis (#32163)
  • fix: format wasm stack traces correctly, preserve context in unhandled
    rejection, improve cppgc inheritance perf (#32293)
  • fix: format wasm stack traces per W3C spec (#32246)

v2.6.10

17 Feb 16:05
Immutable release. Only release title and notes can be modified.
8871ade

Choose a tag to compare

2.6.10 / 2026.02.17

  • feat(ext/tls): add SSLKEYLOGFILE support for TLS key logging (#31867)
  • feat(publish): support more license file types (#32133)
  • feat: add deno install --compile (#32046)
  • fix(compile): remove data.is_empty() check (#32125)
  • fix(deploy): bypass minimumDependencyAge (#32136)
  • fix(ext/napi): don't mark accessor properties as read-only in
    napi_define_class (#32105)
  • fix(ext/node): assert.ok compatibility (#32173)
  • fix(ext/node): fs.rmdir compatibility (#32144)
  • fix(ext/node): add parentPath to Dirent from fs.opendir and support Buffer
    paths in lstat (#32178)
  • fix(ext/node): add worker_threads stdin support (#32165)
  • fix(ext/node): export File class from node:buffer module (#32182)
  • fix(ext/node): fix test-worker-process-argv.js test (#32074)
  • fix(ext/node): fix worker exit code propagation in worker_threads (#32124)
  • fix(ext/node): fix worker.terminate() return value and exit code (#32168)
  • fix(ext/node): forward stdout from worker_threads to parent (#32160)
  • fix(ext/node): make worker_threads ref/unref idempotent like Node.js (#32161)
  • fix(ext/node): normalize trailing dot in TLS servername (#32166)
  • fix(ext/node): process.exit() in worker immediately halts execution (#32169)
  • fix(ext/node): support O_RDONLY | O_CREAT in fs.openSync (#32152)
  • fix(ext/node): use primordials in ext/node/polyfills/_fs/_fs_lchown.ts
    (#32195)
  • fix(ext/node): validate execArgv flags in worker_threads instead of rejecting
    all (#32145)
  • fix(ext/web): prevent GC of AbortSignal.any() (#32118)
  • fix(ext/web): recheck state after signaling abort on writable stream (#32129)
  • fix(install): cleanup node_modules folder on install (#32058)
  • fix(lsp): replace lsp-types with tower-lsp-community/ls-types (#32138)
  • fix(node): unconditionally call Module.prototype._compile with the file
    content in loadMaybeCjs (#32131)
  • fix(node/ext): make zlib write callback async to match node behavior (#32130)
  • fix(node/http): preserve request body on stale keepalive retry (#32148)
  • fix(test): throw when Deno.test() is called during test execution (#32184)

v2.6.9

10 Feb 17:22
Immutable release. Only release title and notes can be modified.
7a98888

Choose a tag to compare

2.6.9 / 2026.02.10

  • feat(doc): support markdown files (#32024)
  • feat(upgrade): ability to verify zip archive against checksum (#31804)
  • feat(upgrade): add context to error messages for better troubleshooting
    (#32018)
  • feat: Send reject-ack message through cron socket (#32035)
  • fix(audit): make 'Path' property more readable (#32049)
  • fix(cli): pull in tunnel fix for windows (#32033)
  • fix(compile): use a temporary directory with a node_modules folder when
    compiling npm specifiers (#32084)
  • fix(ext/node): Fix .only tests compatibilty (#32043)
  • fix(ext/node): fs.writeFile and FileHandle.writeFile compatibility
    (#32077)
  • fix(ext/node): add threadName to worker_threads module (#32072)
  • fix(ext/node): add worker.cpuUsage([prev]) API (#32050)
  • fix(ext/node): add hasColors() to process.stdout and process.stderr (#31985)
  • fix(ext/node): add stub for ServerResponse.writeEarlyHints (#32029)
  • fix(ext/node): add zstd compression support to node:zlib (#32025)
  • fix(ext/node): emit close on both paired MessagePorts (#32092)
  • fix(ext/node): emit error event for worker with missing main module (#32062)
  • fix(ext/node): emit error event for worker_threads terminal errors (#32052)
  • fix(ext/node): fix 'test-worker-process-{argv,env}.js' tests (#32065)
  • fix(ext/node): fix multiple node:zlib compatibility issues (#32039)
  • fix(ext/node): handle raw fd instead rid in isatty (#31912)
  • fix(ext/node): implement Node worker BroadcastChannel ref/unref (#32036)
  • fix(ext/node): implement Symbol.asyncDispose for node Worker (#32051)
  • fix(ext/node): implement DatabaseSync.setAuthorizer() (#32009)
  • fix(ext/node): make child_process stdio streams Socket instances (#31975)
  • fix(ext/node): propagate worker exit code from process.exit() (#32061)
  • fix(ext/node): read from stdin when spawns node with no args (#32088)
  • fix(ext/node): serialize workerData before resolving worker filename (#32091)
  • fix(ext/node): set exitCode/signalCode correctly for killed child processes
    (#32081)
  • fix(ext/node): unref child_process stdio streams by default (#32071)
  • fix(ext/node): unref stdin on pause to allow process exit (#32086)
  • fix(ext/node): validate execArgv and NODE_OPTIONS in worker_threads (#32066)
  • fix(ext/otel): use correct severity for console.trace (#32068)
  • fix(ext/webgpu): GPUQuene writeBuffer size given in elements of TA (#32031)
  • fix(flags): extra trailing space in zsh directory completions (#32042)
  • fix(node/crypto): randomBytes returns buffer with dedicated ArrayBuffer
    (#32048)
  • fix(repl): handle EOF gracefully in JSON REPL mode (#32108)
  • fix(test): user input clearing test runner output (#32082)
  • fix: deno info npm subpath import (#32056)
  • fix: add raw.esm.sh to default --allow-import list (#32030)
  • fix: flaky cron socket tests (#32023)
  • fix: run on pre-Windows 10 version 1709 (#32002)
  • fix: support DENO_SERVE_ADDRESS not being applied to the first server (#31982)
  • fix: support loading npm: and jsr: specifiers in required ES modules
    (#31974)
  • fix: unstable_cron_socket_serve_reject flakiness caused by control socket
    coordination (#32053)

v2.6.8

02 Feb 18:00
Immutable release. Only release title and notes can be modified.
7ab62a7

Choose a tag to compare

2.6.8 / 2026.02.02

  • feat(npm): support jsr: scheme in package.json (#31938)
  • feat: Windows on ARM builds (#31917)
  • fix(ext/node): enable defensive option on DatabaseSync (#32004)
  • fix(ext/node): error formatting compatibility (#31970)
  • fix(ext/node): implement sqlite' SQLTagStore (#31945)
  • fix(ext/node): use primordials in _fs_fchown.ts (#32007)
  • fix(flags): correct zsh completions for script arg (#31994)
  • fix(install): clean up associated config and lock files during uninstall
    (#31984)
  • fix(types): correct types for Worker events (#31981)
  • fix: Reload the CronHandlerImpl if necessary when the control socket
    receives new envs (#31996)
  • fix: upgrade deno_core to 0.383.0 (#32014)

v2.6.7

29 Jan 14:12
Immutable release. Only release title and notes can be modified.
d155af6

Choose a tag to compare

2.6.7 / 2026.01.29

  • feat(ext/node): implement mock API for node:test module (#31954)
  • feat(node): implement FileHandle.readv() method (#31943)
  • feat(npm): use JSR for @jsr scope (#31925)
  • feat: External Socket-Based Cron Implementation (#31952)
  • feat: V8 14.5 (#31873)
  • feat: add --inspect-publish-uid flag for VSCode debugging (#31927)
  • fix(ext/http): use serve address override only once (#31935)
  • fix(ext/net): remove socket file when dropping unix listener (#31947)
  • fix(ext/node): sqlite's StatementSync compatibility (#31941)
  • fix(ext/node): align assert throws/rejects signatures (#31934)
  • fix(ext/node): fix usage of new V8 string APIs (#31963)
  • fix(ext/node): implement sqlite's missing options (#31919)
  • fix(ext/node): pass test-child-process-bad-stdio node compat test (#31851)
  • fix(ext/node): read NODE_OPTIONS for --require and --inspect-publish-uid
    (#31949)
  • fix(ext/node): retry stale keepAlive connections in http client (#31932)
  • fix(ext/node): support setImmediate promisify.custom (#31920)
  • fix(ext/node): use primordials in _fs_ftruncate.ts (#31944)
  • fix(ext/node): use primordials in ext/node/polyfills/tls.ts (#31816)
  • fix(ext/web): support object in DOMException second argument for Node.js
    compat (#31939)
  • fix(node): throw ERR_INVALID_ARG_TYPE for invalid fs.readFile path (#31918)
  • fix(unstable): lint ast comments from first file showing in others (#31956)
  • fix(x): use local npm package even if npm specifier is used, forward unstable
    flags (#31942)
  • fix: allow reading /dev/tty without requiring --allow-all (#31105)
  • fix: enable edns for Deno.resolveDns (#31951)
  • fix: graceful server shutdown with open, un-upgraded connections (#31959)
  • fix: use locked-tripwire to prevent unlocked cargo installs (#31973)

v2.5.7

27 Jan 22:42
Immutable release. Only release title and notes can be modified.
8533c16

Choose a tag to compare

2.5.7 / 2026.01.27

  • fix: deno cross compile for intel mac target (#31714)
  • fix: fetch fd leak (#31375)
  • fix(bundle): avoid name clash in hack (#31409)
  • fix(bundle): do not error on failing to clean up esbuild dir (#31408)
  • fix(bundle): fix import.meta.main transform with jsr entrypoint (#31415)
  • fix(bundle): treat bun specifiers as external by default (#31411)
  • fix(check): fix nil deref with --unstable-tsgo (#31416)
  • fix(compile): ensure temp dir exists during x64 codesign (#31672)
  • fix(compile): intel mac compile fix (#31575)
  • fix(compile): sentinal conflict with strtab on intel mac (#31587)
  • fix(ext/node): autopadding behavior on crypto.Cipheriv (#31389)
  • fix(ext/node): prevent cipher operations after finalize (#31533)
  • fix(ext/node): truncate first non-hex value on Buffer.from (#31227)
  • fix(node): ensure process.argv is an array of strings (#31322)
  • fix(node): stub missing process.sourceMapsEnabled (#31358)
  • fix(node/crypto): respect authTagLength in createCipheriv for GCM cip… (#31253)
  • fix(node/process): make process.stdin.isTTY writable (#31464)