Skip to content

Releases: denoland/deno

v2.3.3

16 May 13:19
395878c
Compare
Choose a tag to compare

Upgrade to 2.3.3:

deno upgrade

Or install for the first time

curl -fsSL https://deno.land/install.sh | sh

[This is a patch release on top of 2.3.2 with contained the majority of the changes.]

2.3.3 / 2025.05.16
fix(check): ignore errors on ambient modules (#29135)
Revert "fix(fmt): upgrade markup_fmt and malva" (#29325)

2.3.2 / 2025.05.15
feat(coverage): add dark-mode to HTML coverage report (#29267)
feat(ext/fetch): add support for fetch on unix sockets (#29154)
feat(ext/fetch): support custom DNS resolver (#27740)
feat(jupyter): allow to install and maintain multiple kernels (#29249)
feat(lsp): add description in TaskDefinition (#29244)
feat(otel): add events for boot failure and uncaught error (#29287)
feat(unstable): notify control sock on serving (#29173)
feat(unstable): support comments in lint plugin (#29189)
feat: Add support for DENO_TRUST_PROXY_HEADERS env var (#29296)
feat: DENO_SERVE_ADDRESS duplicate option (#29109)
feat: support unconfigured runtime in serve subcommand (#29172)
fix(cache): added support for the --env-file flag (#29160)
fix(check): do not add @types/node@* to lockfile if a @types/node req already exists (#29270)
fix(check): don't assert unique normalized specifiers (#29274)
fix(check): write lockfile after type checking (#29265)
fix(cli): configure v8 isolate with cgroups-constrained memory limit (#29078)
fix(cli/hmr): print compile error with exception details (#27597)
fix(coverage): don't panic if all covered files are ignored via directive (#29250)
fix(dts): add Atomics.pause, Promise.try and RegExp.escape (#29186)
fix(ext/canvas): createImageBitmap must ignore the Blob.type value (#28741)
fix(ext/node): Fix dns.lookup when promisified with options.all (#29167)
fix(ext/node): Fix export loadEnvFile from node:process (#29237)
fix(ext/node): Fix fast method proto unwraps in AsyncWrap (#29117)
fix(ext/node): Support mTLS connections node compatibility (#28937)
fix(ext/node): TLS server unref (#29279)
fix(ext/node): arrayBufferViewHasBuffer internal util (#28827)
fix(ext/node): getColorDepth for writable stdio streams (#29176)
fix(ext/node): add AES CTR to supported ciphers list (#29273)
fix(ext/node): add assert.CallTracker (#29226)
fix(ext/node): align input validation of Buffer.compare (#29275)
fix(ext/node): allow rejectUnauthorized: false in node:tls (#29245)
fix(ext/node): dgram multicast group membership (#29207)
fix(ext/node): don't use user manipulated Response objects, use correct rawHeaders structure (#29105)
fix(ext/node): export CallTracker as named export (#29271)
fix(ext/node): hold weak reference to sqlite database in instances (#29210)
fix(ext/node): implement dgram setBroadcast (#29195)
fix(ext/node): implement dgram setMulticastLoopback (#29241)
fix(ext/node): implement dgram socket setMulticastTTL (#29232)
fix(ext/node): support http over unix sockets (#29182)
fix(ext/node): use "localhost" as default tls hostname (#29231)
fix(ext/node): use primordials in ext/node/polyfills/internal/async_hooks.ts (#29191)
fix(ext/node): use primordials in ext/node/polyfills/internal/cli_table.ts (#29257)
fix(ext/node): use primordials in ext/node/polyfills/internal/dgram.ts (#29204)
fix(ext/node): use primordials in ext/node/polyfills/internal/fs/handle.ts (#29239)
fix(ext/node): use primordials in ext/node/polyfills/internal/idna.ts (#29085)
fix(ext/node): use primordials in ext/node/polyfills/internal/net.ts (#29297)
fix(ext/node): use primordials in ext/node/polyfills/internal/normalize_encoding.mjs (#29283)
fix(ext/node): use primordials in ext/node/polyfills/internal/options.ts (#29119)
fix(ext/node): use primordials in ext/node/polyfills/internal/querystring.ts (#29264)
fix(ext/node): use primordials in ext/node/polyfills/internal/stream_base_commons.ts (#29290)
fix(ext/node): use primordials in ext/node/polyfills/internal/timers.mjs (#29269)
fix(ext/node): use primordials in ext/node/polyfills/internal/url.ts (#29146)
fix(ext/node): use primordials in ext/node/polyfills/internal/validators.mjs (#29302)
fix(ext/node): use primordials in ext/node/polyfills/_fs/_fs_mkdtemp.ts (#29072)
fix(ext/os): Fix duplicate 'openbsd' cfg attribute (#28607)
fix(ext/process): suppress child process kill errors in onAbort handler (#29193)
fix(flags): do not panic parsing invalid --allow-import flag (#29118)
fix(fmt): fail command when embedded language has syntax error (#29259)
fix(fmt): indent width should be ignored when formatting with use tabs set to true (#29205)
fix(fmt): upgrade markup_fmt and malva (#29168)
fix(lsp): discard quick fixes importing /node_modules/ paths (#29194)
fix(lsp): ignore 'for await' diagnostics in jupyter cells (#29114)
fix(lsp): use correct resolution kind when checking for no-export-npm (#29180)
fix(node/test): basic support for t.skip and t.todo (#29222)
fix(node:http): ServerResponse.req not set (#29211)
fix(npm): add some context to errors on tarball extraction failure (#29145)
fix(npm): handle global cache missing version in pkg info of pkg existing in npm snapshot (#29131)
fix(npm): respect etag for npm packument caching (#29130)
fix(otel): don't panic when using worker threads (#29248)
fix(precompile): escape string literal jsx children (#29200)
fix(repl): use object_id for repl internal (#29163)
fix(types): Change ffi native type from Uint8Array -> Uint8Array (#29127)
fix(upgrade): skip version comparison when upgrading (#29112)
fix(vendor): strip jsr version meta module graph data (#29120)
fix: allow specifying otel config in --env-file (#29240)
fix: bump default @types/node version range to 22.15.14 (#28407)
fix: handling of contradictory global permission flags (#29213)
fix: inspector rewrite resource name to url (#29216)
fix: terminate control sock event with newline (#29184)
fix: update deno_core (#29166)
fix: use v8 instead of swc for explicit resource management (#29282)
perf(lsp): don't diff 10,000+ line files for formatting (#29162)
perf(lsp): truncate json files larger than 10mb (#29192)
perf(npm): deserialize cached npm packuments on blocking task (#29137)
perf(publish): fetch all missing package status in parallel (#27935)

v2.3.2

16 May 01:03
7b74f38
Compare
Choose a tag to compare

2.3.2 / 2025.05.15

Deno v2.3.2 contains a regression with respect to CSS formatting. Users are encouraged to upgrade to Deno v2.3.3 to avoid the problem.

v2.2.13

13 May 22:15
0117f27
Compare
Choose a tag to compare

2.2.13 (LTS) / 2025.05.13

  • fix: handling of contradictory global permission flags (#29213)
  • fix: make --allow-env stronger that --deny-env (#29079)

v2.1.13

13 May 22:15
5b85bda
Compare
Choose a tag to compare

2.1.13 / 2025.05.13

  • fix: handling of contradictory global permission flags (#29213)
  • fix: make --allow-env stronger that --deny-env (#29079)

v2.3.1

30 Apr 13:16
8773b5f
Compare
Choose a tag to compare

2.3.1 / 2025.04.30

Due to an error during the release process, Deno v2.3.0 shows and incorrect version.

Please upgrade to Deno v2.3.1:

deno upgrade 2.3.1

v2.3.0

30 Apr 09:43
61574bb
Compare
Choose a tag to compare

2.3.0 / 2025.04.30

Due to an error during the release process, Deno v2.3.0 shows and incorrect version.

Please upgrade to Deno v2.3.1:

deno upgrade 2.3.1

  • feat(add/install): --npm and --jsr flags for deno add/install (#28666)
  • feat(cache): add DENO_EMIT_CACHE_MODE (#29025)
  • feat(check): detect tsconfig.json at workspace root (#29092)
  • feat(check): support erasableSyntaxOnly for type checking (#29097)
  • feat(clean): deno clean --except <paths>, remove all cache data except
    what's needed to run paths (#28424)
  • feat(cli): deno check maps to deno check . (#28655)
  • feat(cli): support --single-threaded v8 flag (#29066)
  • feat(compile): ability to exclude embedded files (#28805)
  • feat(compile): support for ffi and node native addons (#28934)
  • feat(coverage): add coverage ignore comments (#26590)
  • feat(doc): add darkmode for HTML output (#28989)
  • feat(ext/fetch): support localAddress option in custom HTTP client (#28781)
  • feat(ext/http): Show that is also listening on localhost (#28171)
  • feat(ext/net): add signal option to Deno.connect() (#27113)
  • feat(fmt): add fmt options (#28946)
  • feat(fmt): support formatting of embedded css, html, and sql (#29014)
  • feat(fmt/lint): add --permit-no-files (#28753)
  • feat(info): include deno version (#29080)
  • feat(lockfile): default to lockfile v5 (#28950)
  • feat(lsp): jupyter cell continuity using classic scripts (#28769)
  • feat(otel): basic event recording (#28552)
  • feat(otel): span context propagators (#28460)
  • feat(runtime): add Deno.build.standalone for telling if running in
    self-contained executable (#28750)
  • feat(serve): env var DENO_SERVE_ADDRESS for configuring default listen address
    (#28877)
  • feat(test): create coverage reports when --coverage specified in deno test
    (#28260)
  • feat(test): support DENO_COVERAGE_DIR env var (#28291)
  • feat(unstable): lint plugins support field selectors (#28324)
  • feat(unstable): support using a local copy of npm packages (#28512)
  • feat(unstable/otel): add otel tracing to node:http.request (#28463)
  • feat(unstable/run): ability to lazily load statically analyzable dynamic
    imports (#28593)
  • feat(unstable/webgpu): add deviceStartCapture and deviceStopCapture
    (#28192)
  • feat: Allow access to NO_COLOR env var without --allow-env (#29090)
  • feat: Codegen feature flags (#28920)
  • feat: TypeScript 5.8 (#29041)
  • feat: add --open to deno serve to open server in browser (#25340)
  • feat: allow forcing in-memory SQLite dbs (#29026)
  • feat: code sign deno.exe (#28963)
  • feat: deno_core 0.344.0 (#29089)
  • feat: enable explicit resource management for JavaScript (#28119)
  • feat: support FORCE_COLOR (#28490)
  • feat: support linux vsock (#28725)
  • feat: upgrade deno_core and V8 (#28562)
  • feat: use new feature checker (#29091)
  • feat: v8js metrics (#28592)
  • fix(add): better help text for --dev arg (#28304)
  • fix(bench): lower bench time budget when n is specified (#28454)
  • fix(build): upgrade libffi to 4.0.0 (#28816)
  • fix(check): regression - implicit jsxImportSource was not resolving (#28228)
  • fix(check): support types@ export conditions (#28450)
  • fix(check): support typesVersions in npm dependencies (#28468)
  • fix(check/npm): move not found errors inside npm packages to tsc diagnostics
    (#28337)
  • fix(ci): missing release symcache (#28774)
  • fix(cli): Display error on invalid OTEL_EXPORTER_OTLP_PROTOCOL value (#28796)
  • fix(cli): add compilerOptions.lib examples to config-file.v1.json (#28226)
  • fix(cli): warn when an otel env var has an invalid value (#28394)
  • fix(compile): do not panic including node_modules directory (#28782)
  • fix(compile): don't rebuild resource table on Windows (#29010)
  • fix(compile): downgrade editpe to 0.1.0 (#29011)
  • fix(compile): ensure atime/birthtime/mtime/ctime is set in vfs (#28731)
  • fix(compile): error when cannot extract binary section (#28986)
  • fix(compile): multi icon ordering on windows (#28771)
  • fix(compile): panic when compiled with --no-terminal flag (#28823)
  • fix(compile): pass default v8 args during compile (#29084)
  • fix(compile): read resource name in executable as uppercase on Windows
    (#29005)
  • fix(compile): revert multi-icon support in compile (#28997)
  • fix(compile): temporarily fallback to reading resource data from file on
    windows (#29024)
  • fix(compile): use a memory mapped file for fallback (#29039)
  • fix(config): allow specifying absolute path for patch and fix panic with
    exports in package.json (#28279)
  • fix(coverage): improve responsiveness of HTML reporter on small screens
    (#28993)
  • fix(deno_os): allow running WebWorker without snapshots (#28975)
  • fix(doc): do not stack overflow for namespace that exports self or ancestor
    (#28533)
  • fix(ext/canvas): handle integer overflow in createImageBitmap (#28764)
  • fix(ext/crypto): support cross-curve ECDSA sign and verify (#28574)
  • fix(ext/ffi): unexport brand from dts (#28503)
  • fix(ext/node): Fix Writable.toWeb() (#28914)
  • fix(ext/node): SQLite reset guards to prevent database locks (#28298)
  • fix(ext/node): mkdir() parse file mode (#28609)
  • fix(ext/node): add assert property to test context object (#28904)
  • fix(ext/node): add basic support of suite/describe in node:test (#28847)
  • fix(ext/node): add createReadStream & createWriteStream methods to the
    FileHandle class (#28700)
  • fix(ext/node): add support for --no- prefix (allowNegative option) in
    parseArgs() (#28811)
  • fix(ext/node): add util.getCallSites (#28546)
  • fix(ext/node): alias shake-128 and shake-256 hash algorithms (#28451)
  • fix(ext/node): better dns.lookup compatibility (#27936)
  • fix(ext/node): correct STATUS_CODES strings (#28489)
  • fix(ext/node): decipherIv() range error on invalid final block length (#28215)
  • fix(ext/node): descriptive sqlite error messages (#28272)
  • fix(ext/node): emit 'close' event on ServerResponse object when client aborted
    the request (#28601)
  • fix(ext/node): export test as property of default export (#28881)
  • fix(ext/node): fix deepStrictEqual(-0, 0) (#29060)
  • fix(ext/node): fix handling of abort signal in readFile (#29028)
  • fix(ext/node): handle "ttl" option in "dns" module (#27676)
  • fix(ext/node): honor flags with respect to reuseAddress when binding to a UDP
    socket (#28156)
  • fix(ext/node): implement DatabaseSync#loadExtension (#29050)
  • fix(ext/node): implement Buffer.copyBytesFrom (#28829)
  • fix(ext/node): implement process.loadEnvFile (#28824)
  • fix(ext/node): implement finished() for web streams (#28600)
  • fix(ext/node): node compatibility issue missing fd in createServer callback
    socket object (#27789)
  • fix(ext/node): propagate 'close' event of IncomingMessage to Socket (#28582)
  • fix(ext/node): querystring fallback to default decoder (#28838)
  • fix(ext/node): reset statement immidiately in run() (#28506)
  • fix(ext/node): restrict ATTACH DATABASE statement (#28513)
  • fix(ext/node): return Buffer from crypto cipher APIs (#28826)
  • fix(ext/node): sqlite error details (#28431)
  • fix(ext/node): sqlite handle empty blob being NULL (#28674)
  • fix(ext/node): support input option in spawnSync (#28792)
  • fix(ext/node): support the optional previousValue parameter for
    process.cpuUsage() (#28550)
  • fix(ext/node): throw NotCapable on process.env accessor (#28280)
  • fix(ext/node): update node version in process object (#27044)
  • fix(ext/node): upgrade node:stream (#28855)
  • fix(ext/node): use primordials in ext/node/polyfills/_fs/_fs_lstat.ts
    (#28644)
  • fix(ext/node): use primordials in ext/node/polyfills/_fs/_fs_readv.ts
    (#28645)
  • fix(ext/node): use primordials in ext/node/polyfills/_fs/_fs_realpath.ts
    (#28652)
  • fix(ext/node): use primordials in
    ext/node/polyfills/internal/hide_stack_frames.ts (#29067)
  • fix(ext/node): use primordials in ext/node/polyfills/internal/http.ts
    (#29082)
  • fix(ext/node): use primordials in ext/node/polyfills/path/_posix.ts (#28665)
  • fix(ext/node): use primordials in ext/node/polyfills/path/_util.ts (#28432)
  • fix(ext/node): use primordials in ext/node/polyfills/path/_win32.ts (#28668)
  • fix(ext/node): use primordials in ext/node/polyfills/path/separator.ts
    (#28669)
  • fix(ext/node): use primordials in ext/node/polyfills/_fs/_fs_opendir.ts
    (#29063)
  • fix(ext/node): verbose zlib error messages (#28831)
  • fix(ext/node): work correctly with wrapper Response objects, use correct
    rawHeaders structure (#29056)
  • fix(ext/os): explicitly enable sysinfoapi feature on winapi dependency
    (#28568)
  • fix(ext/webgpu): fix incorrect description of UnsafeWindowSurface (#28976)
  • fix(ext/webgpu): release current texture of surface after present (#28691)
  • fix(ext/websocket): cancel in-flight handshake on close() (#28598)
  • fix(fmt): support "--ext vto" and "--ext njk" (#28262)
  • fix(fmt): upgrade malva to 0.11.2 (#28871)
  • fix(fmt): use non-zero exit code when formatting fails (#28523)
  • fix(fmt/md): handle callout followed by non-text (#28333)
  • fix(http): generate OtelInfo only when otel metrics are enabled (#28286)
  • fix(install): don't error on unknown media types in install (#28234)
  • fix(install): error gracefully if user passes --no-config to
    deno install <package> (#28965)
  • fix(install): exclude npm workspace packages from graph roots in install
    (#28401)
  • fix(install): handle when bin entry info isn't present in package.json but is
    in registry (#28822)
  • fix(install): read extra package info from node_modules and fallback to
    registry (#28893)
  • fix(install): regression where Deno not used when postinstall script ran
    script without file extension (#28786)
  • fix(install): remove duplicate deprecated messages (#28738)
  • fix(install): support "file:" dependencies in local package.json (#28396)
  • fix(install/global): do not append bin to `DENO...
Read more

v2.2.12

25 Apr 00:22
81da813
Compare
Choose a tag to compare

2.2.12 / 2025.04.24

v2.2.11

18 Apr 15:20
225fbd5
Compare
Choose a tag to compare

2.2.11 / 2025.04.18

  • fix(ext/node): Fix Writable.toWeb() (#28914)
  • fix(ext/node): add assert property to test context object (#28904)
  • fix(install/global): do not append bin to DENO_INSTALL_ROOT when ends with
    bin (#26446)
  • fix(npm): panic when using tag with patched package (#28900)
  • fix(task): document source of tasks, fix punctuation (#28413)
  • fix: better cjs vs esm module detection and upgrade swc (#28810)
  • fix: remove unnecessary whitespace in prompt function (#28868)
  • fix: resolve shebang parse error in deno doc --test (#26079)
  • perf(npm): don't try to cache npm packages we've already cached (#28938)

v2.2.10

14 Apr 22:59
adc34a6
Compare
Choose a tag to compare

Upgrade

deno upgrade

Or install for the first time

curl -fsSL https://deno.land/install.sh | sh

fix: enable explicit resource management for JavaScript (#28119)
feat(unstable): support linux vsock (#28725)
fix(ext/node): add basic support of suite/describe in node:test (#28847)
fix(ext/node): export test as property of default export (#28881)
fix(ext/node): querystring fallback to default decoder (#28838)
fix(ext/node): upgrade node:stream (#28855)
fix(fmt): upgrade malva to 0.11.2 (#28871)
fix(install): read extra package info from node_modules and fallback to registry (#28893)
fix(unstable): vsock nits (#28851)

v2.2.9

11 Apr 21:13
25defa7
Compare
Choose a tag to compare

Upgrade

deno upgrade

Or install for the first time

curl -fsSL https://deno.land/install.sh | sh

deno compile fixes

Two fixes make the deno compile tool more robust. First, a bug causing a panic when a node_modules directory was included during compilation was fixed (#28782). Previously, running deno compile in a project with a node_modules folder could crash the compiler; now it handles such folders gracefully without errors. Second, on Windows, executable icons are embedded correctly when using the --icon option (#28771). Deno now preserves the proper resource ordering for multi-resolution .ico files, so compiled .exe files will display their icon in all sizes as expected. Together, these improvements make Deno’s single-binary compilation more reliable across different project structures and platforms.

Node.js Compatibility Enhancements

This release brings a host of improvements to Deno’s Node compatibility layer, implementing missing APIs and fixing inconsistencies:

  • File System Streams: The fs/promises FileHandle class now supports the .createReadStream() and .createWriteStream() methods (#28700).
  • Command-Line Parsing: The experimental util.parseArgs() API now correctly supports negated flags (the --no- prefix) via its allowNegative option (#28811).
  • Buffer APIs: Deno implements the new Buffer.copyBytesFrom() static method (#28829) and ensures that cipher methods return a Node Buffer object (#28826).
  • Crypto Algorithms: SHAKE-128 and SHAKE-256 algorithm names are now aliased with hyphenated forms (#28451).
  • Process and OS: Implements process.loadEnvFile(path) (#28824) and a working .reset() on the event loop delay histogram (#2888).
  • Streams and Zlib: stream.finished() now supports Web Streams (#28600); zlib errors are more descriptive (#28831).
  • Child Processes: spawnSync now accepts the input option (#28792).

npm and Package Management Fixes

  • Handle missing "bin" in package.json by using registry metadata (#28822).
  • Fix regression where postinstall scripts without extensions were skipped (#28786).
  • Unstable ability to load npm resolution snapshot directly from lockfile for faster startup (#28647).

Task Runner Shell Features

deno task now supports backticks and tilde (~) expansion (#28832). For example:

{
  "tasks": {
    // outputs to a file with a path like: /home/user/logs/2025-04-12T01:38-04:00.log
    "build": "deno job.ts > ~/logs/`date -Im`.log"
  }
}

Developer Tools (LSP & Linting)

  • Filter out unmapped npm cache paths from auto-imports (#28841).
  • Add decorators to the lint AST (#28834), fix parent types (#28802), and group traversal (#28803).

Crash Reporting & Symbolication Bug Fixes

This patch release includes fixes for issues introduced by the new panic.deno.com crash reporting system added in recent versions. On macOS, the Deno binary now preserves Node API (N-API) symbols that were previously stripped out as part of the size reduction effort (#28800). This resolves a regression where native Node addons loaded via process.dlopen() could fail to load. It also ensures that native panics involving these symbols can still be properly symbolicated.

In addition, canary panic URLs now include the full Git commit SHA (#28819), improving reliability of remote symbolication for nightly builds. These changes fix rough edges in the new crash reporting pipeline and restore compatibility with common use cases.

Other Notable Fixes

  • Fix integer overflow in createImageBitmap() (#28764).
  • Upgrade embedded libffi to 4.0.0 (#28816).