Deno v1.46.0stable Released Aug 22, 2024
โš ๏ธ Breaking Change Impact Score: 7/10

Deno v1.46.0 โ€” Release Notes & Engineering Impact

Source available โ€” automated, not human-reviewed

Component: deno ยท Channel: stable. Automated analysis, not a compatibility certification. How this works.

Analysis updated: 2026-11-01.

Breaking-change evidence from the source

  • - BREAKING(temporal/unstable): Remove obsoleted Temporal APIs (#24836)
  • - BREAKING(webgpu/unstable): Replace async .requestAdapterInfo() with sync .info
Read the original context โ†—
Source flags breaking changes โ€” review applicability
๐Ÿ“„ .MD
โšก Executive Summary (TL;DR)

Deno v1.46.0. Source highlight: BREAKING(temporal/unstable): Remove obsoleted Temporal APIs (#24836)

Who Does This Impact? (Role-Based Analysis)

๐Ÿ’ป Software Engineers & Devs

Check the source notes against the package and APIs you use before upgrading.

๐Ÿ“Š Product & Engineering Leads

Use the documented changes to assess relevance to your product; release frequency alone is not a quality measure.

โš™๏ธ DevOps & Security

Verify the target version, runtime requirements and rollback procedure in the official documentation.

โš ๏ธ Breaking Changes & Deprecations (2)

  • - BREAKING(temporal/unstable): Remove obsoleted Temporal APIs (#24836)
  • - BREAKING(webgpu/unstable): Replace async .requestAdapterInfo() with sync .info

โœจ New Features & Capabilities (6)

  • feat: `deno compile --icon <ico>` (#25039)
  • feat: `deno init --serve` (#24897)
  • feat: `deno upgrade --rc` (#24905)
  • feat: Add Deno.ServeDefaultExport type (#24879)
  • feat: async context (#24402)
  • feat: better help output (#24958)

โšก Performance & Enhancements (6)

  • perf: skip saving to emit cache after first failure (#24896)
  • perf: update deno_ast to 0.41 (#24819)
  • perf: update deno_doc (#24700)
  • perf(ext/crypto): make randomUUID() 5x faster (#24510)
  • perf(ext/fetch): speed up `resp.clone()` (#24812)
  • perf(ext/http): Reduce size of `ResponseBytesInner` (#24840)

๐Ÿ”ง Bug Fixes & Patches (6)

  • feat(urlpattern): add ignoreCase option & hasRegExpGroups property, and fix
  • fix: `node:inspector` not being registered (#25007)
  • fix: `rename` watch event missing (#24893)
  • fix: actually add missing `node:readline/promises` module (#24772)
  • fix: adapt to new jupyter runtime API and include session IDs (#24762)
  • fix: add permission name when accessing a special file errors (#25085)
๐Ÿ“„ View Raw Release Notes (Original Developer Log)
### 1.46.0 / 2024.08.22 - BREAKING(temporal/unstable): Remove obsoleted Temporal APIs (#24836) - BREAKING(webgpu/unstable): Replace async .requestAdapterInfo() with sync .info (#24783) - feat: `deno compile --icon <ico>` (#25039) - feat: `deno init --serve` (#24897) - feat: `deno upgrade --rc` (#24905) - feat: Add Deno.ServeDefaultExport type (#24879) - feat: async context (#24402) - feat: better help output (#24958) - feat: codesign for deno compile binaries (#24604) - feat: deno clean (#24950) - feat: deno remove (#24952) - feat: deno run <task> (#24891) - feat: Deprecate "import assertions" with a warning (#24743) - feat: glob and directory support for `deno check` and `deno cache` cli arg paths (#25001) - feat: Print deprecation message for npm packages (#24992) - feat: refresh "Download" progress bar with a spinner (#24913) - feat: Rename --unstable-hmr to --watch-hmr (#24975) - feat: support short flags for permissions (#24883) - feat: treat bare deno command with run arguments as deno run (#24887) - feat: upgrade deno_core (#24886) - feat: upgrade deno_core (#25042) - feat: upgrade V8 to 12.8 (#24693) - feat: Upgrade V8 to 12.9 (#25138) - feat: vm rewrite (#24596) - feat(clean): add progress bar (#25026) - feat(cli): Add --env-file as alternative to --env (#24555) - feat(cli/tools): add a subcommand `--hide-stacktraces` for test (#24095) - feat(config): Support frozen lockfile config option in deno.json (#25100) - feat(config/jsr): add license field (#25056) - feat(coverage): add breadcrumbs to deno coverage `--html` report (#24860) - feat(ext/node): rewrite crypto keys (#24463) - feat(ext/node): support http2session.socket (#24786) - feat(fetch): accept async iterables for body (#24623) - feat(flags): improve help output and make `deno run` list tasks (#25108) - feat(fmt): support CSS, SCSS, Sass and Less (#24870) - feat(fmt): support HTML, Svelte, Vue, Astro and Angular (#25019) - feat(fmt): support YAML (#24717) - feat(FUTURE): terse lockfile (v4) (#25059) - feat(install): change 'Add ...' message (#24949) - feat(lint): Add lint for usage of node globals (with autofix) (#25048) - feat(lsp): node specifier completions (#24904) - feat(lsp): registry completions for import-mapped specifiers (#24792) - feat(node): support `username` and `_password` in `.npmrc` file (#24793) - feat(permissions): link to docs in permission prompt (#24948) - feat(publish): error on missing license file (#25011) - feat(publish): suggest importing `jsr:@std/` for `deno.land/std` urls (#25046) - feat(serve): Opt-in parallelism for `deno serve` (#24920) - feat(test): rename --allow-none to --permit-no-files (#24809) - feat(unstable): ability to use a local copy of jsr packages (#25068) - feat(unstable/fmt): move yaml formatting behind unstable flag (#24848) - feat(upgrade): refresh output (#24911) - feat(upgrade): support `deno upgrade 1.46.0` (#25096) - feat(urlpattern): add ignoreCase option & hasRegExpGroups property, and fix spec discrepancies (#24741) - feat(watch): add watch paths to test subcommand (#24771) - fix: `node:inspector` not being registered (#25007) - fix: `rename` watch event missing (#24893) - fix: actually add missing `node:readline/promises` module (#24772) - fix: adapt to new jupyter runtime API and include session IDs (#24762) - fix: add permission name when accessing a special file errors (#25085) - fix: adjust suggestion for lockfile regeneration (#25107) - fix: cache bust jsr meta file when version not found in dynamic branches (#24928) - fix: CFunctionInfo and CTypeInfo leaks (#24634) - fix: clean up flag help output (#24686) - fix: correct JSON config schema to show vendor option as stable (#25090) - fix: dd-trace http message compat (#25021) - fix: deserialize lockfile v3 straight (#25121) - fix: Don't panic if fail to handle JS stack frame (#25122) - fix: Don't panic if failed to add system certificate (#24823) - fix: Don't shell out to `unzip` in deno upgrade/compile (#24926) - fix: enable the reporting of parsing related problems when running deno lint (#24332) - fix: errors with CallSite methods (#24907) - fix: include already seen deps in lockfile dep tracking (#24556) - fix: log current version when using deno upgrade (#25079) - fix: make `deno add` output more deterministic (#25083) - fix: make vendor cache manifest more deterministic (#24658) - fix: missing `emitWarning` import (#24587) - fix: regressions around Error.prepareStackTrace (#24839) - fix: stub `node:module.register()` (#24965) - fix: support `npm:bindings` and `npm:callsites` packages (#24727) - fix: unblock fsevents native module (#24542) - fix: update deno_doc (#24972) - fix: update dry run success message (#24885) - fix: update lsp error message of 'relative import path' to 'use deno add' for npm/jsr packages (#24524) - fix: upgrade deno_core to 0.298.0 (#24709) - fix: warn about import assertions when using typescript (#25135) - fix(add): better error message providing scoped pkg missing leading `@` symbol (#24961) - fix(add): Better error message when missing npm specifier (#24970) - fix(add): error when config file contains importMap field (#25115) - fix(add): Handle packages without root exports (#25102) - fix(add): Support dist tags in deno add (#24960) - fix(cli): add NAPI support in standalone mode (#24642) - fix(cli): Create child node_modules for conflicting dependency versions, respect aliases in package.json (#24609) - fix(cli): Respect implied BYONM from DENO_FUTURE in `deno task` (#24652) - fix(cli): shorten examples in help text (#24374) - fix(cli): support --watch when running cjs npm packages (#25038) - fix(cli): Unhide publish subcommand help string (#24787) - fix(cli): update permission prompt message for compiled binaries (#24081) - fix(cli/init): broken link in deno init sample template (#24545) - fix(compile): adhoc codesign mach-o by default (#24824) - fix(compile): make output more deterministic (#25092) - fix(compile): support workspace members importing other members (#24909) - fix(compile/windows): handle cjs re-export of relative path with parent component (#24795) - fix(config): regression - should not discover npm workspace for nested deno.json not in workspace (#24559) - fix(cron): improve error message for invalid cron names (#24644) - fix(docs): fix some deno.land/manual broken urls (#24557) - fix(ext/console): Error Cause Not Inspect-Formatted when printed (#24526) - fix(ext/console): render properties of Intl.Locale (#24827) - fix(ext/crypto): respect offsets when writing into ab views in randomFillSync (#24816) - fix(ext/fetch): include TCP src/dst socket info in error messages (#24939) - fix(ext/fetch): include URL and error details on fetch failures (#24910) - fix(ext/fetch): respect authority from URL (#24705) - fix(ext/fetch): use correct ALPN to proxies (#24696) - fix(ext/fetch): use correct ALPN to socks5 proxies (#24817) - fix(ext/http): correctly consume response body in `Deno.serve` (#24811) - fix(ext/net): validate port in Deno.{connect,serve,listen} (#24399) - fix(ext/node): add `CipherIv.setAutoPadding()` (#24940) - fix(ext/node): add crypto.diffieHellman (#24938) - fix(ext/node): client closing streaming request shouldn't terminate http server (#24946) - fix(ext/node): createBrotliCompress params (#24984) - fix(ext/node): do not expose `self` global in node (#24637) - fix(ext/node): don't concat set-cookie in ServerResponse.appendHeader (#25000) - fix(ext/node): don't throw when calling PerformanceObserver.observe (#25036) - fix(ext/node): ed25519 signing and cipheriv autopadding fixes (#24957) - fix(ext/node): fix prismjs compatibiliy in Web Worker (#25062) - fix(ext/node): handle node child_process with --v8-options flag (#24804) - fix(ext/node): handle prefix mapping for IPv4-mapped IPv6 addresses (#24546) - fix(ext/node): http request uploads of subarray of buffer should work (#24603) - fix(ext/node): improve shelljs compat with managed npm execution (#24912) - fix(ext/node): node:zlib coerces quality 10 to 9.5 (#24850) - fix(ext/node): pass content-disposition header as string instead of bytes (#25128) - fix(ext/node): prevent panic in http2.connect with uppercase header names (#24780) - fix(ext/node): read correct CPU usage stats on Linux (#24732) - fix(ext/node): rewrite X509Certificate resource and add `publicKey()` (#24988) - fix(ext/node): stat.mode on windows (#24434) - fix(ext/node): support ieee-p1363 ECDSA signatures and pss salt len (#24981) - fix(ext/node): use pem private keys in createPublicKey (#24969) - fix(ext/node/net): emit `error` before `close` when connection is refused (#24656) - fix(ext/web): make CompressionResource garbage collectable (#24884) - fix(ext/web): make TextDecoderResource use cppgc (#24888) - fix(ext/webgpu): assign missing `constants` property of shader about `GPUDevice.createRenderPipeline[Async]` (#24803) - fix(ext/webgpu): don't crash while constructing GPUOutOfMemoryError (#24807) - fix(ext/webgpu): GPUDevice.createRenderPipelineAsync should return a Promise (#24349) - fix(ext/websocket): unhandled close rejection in WebsocketStream (#25125) - fix(fmt): handle using stmt in for of stmt (#24834) - fix(fmt): regression with pipe in code blocks in tables (#25098) - fix(fmt): upgrade to dprint-plugin-markdown 0.17.4 (#25075) - fix(fmt): was sometimes putting comments in front of commas in parameter lists (#24650) - fix(future): Emit `deno install` warning less often, suggest `deno install` in error message (#24706) - fix(http): Adjust hostname display for Windows when using 0.0.0.0 (#24698) - fix(init): use bare specifier for `jsr:@std/assert` (#24581) - fix(install): Properly handle dist tags when setting up node_modules (#24968) - fix(lint): support linting tsx/jsx from stdin (#24955) - fix(lsp): directly use file referrer when loading document (#24997) - fix(lsp): don't always use byonm resolver when DENO_FUTURE=1 (#24865) - fix(lsp): hang when caching failed (#24651) - fix(lsp): import map lookup for jsr subpath auto import (#25025) - fix(lsp): include scoped import map keys in completions (#25047) - fix(lsp): resolve jsx import source with types mode (#25064) - fix(lsp): rewrite import for 'infer return type' action (#24685) - fix(lsp): scope attribution for asset documents (#24663) - fix(lsp): support npm workspaces and fix some resolution issues (#24627) - fix(node): better detection for when to surface node resolution errors (#24653) - fix(node): cjs pkg dynamically importing esm-only pkg fails (#24730) - fix(node): Create additional pipes for child processes (#25016) - fix(node): Fix `--allow-scripts` with no `deno.json` (#24533) - fix(node): Fix node IPC serialization for objects with undefined values (#24894) - fix(node): revert invalid package target change (#24539) - fix(node): Rework node:child_process IPC (#24763) - fix(node): Run node compat tests listed in the `ignore` field (and fix the ones that fail) (#24631) - fix(node): support `tty.hasColors()` and `tty.getColorDepth()` (#24619) - fix(node): support wildcards in package.json imports (#24794) - fix(node/crypto): Assign publicKey and privateKey with let instead of const (#24943) - fix(node/fs): node:fs.read and write should accept typed arrays other than Uint8Array (#25030) - fix(node/fs): Use correct offset and length in node:fs.read and write (#25049) - fix(node/fs/promises): watch should be async iterable (#24805) - fix(node/http): wrong `req.url` value (#25081) - fix(node/inspector): Session constructor should not throw (#25041) - fix(node/timers/promises): add scheduler APIs (#24802) - fix(node/tty): fix `tty.WriteStream.hasColor` with different args (#25094) - fix(node/util): add missing `debug` alias of `debuglog` (#24944) - fix(node/worker_threads): support `port.once()` (#24725) - fix(npm): handle packages with only pre-released 0.0.0 versions (#24563) - fix(npm): use start directory deno.json as "root deno.json config" in npm workspace (#24538) - fix(npmrc): skip loading .npmrc in home dir on permission error (#24758) - fix(publish): show dirty files on dirty check failure (#24541) - fix(publish): surface syntax errors when using --no-check (#24620) - fix(publish): warn about missing license file (#24677) - fix(publish): workspace included license file had incorrect path (#24747) - fix(repl): Prevent panic on broken pipe (#21945) - fix(runtime/windows): fix calculation of console size (#23873) - fix(std/http2): release window capacity back to remote stream (#24576) - fix(tls): print a warning if a system certificate can't be loaded (#25023) - fix(types): Conform lib.deno_web.d.ts to lib.dom.d.ts and lib.webworker.d.ts (#24599) - fix(types): fix streams types (#24770) - fix(unstable): move sloppy-import warnings to lint rule (#24710) - fix(unstable): panic when running deno install with DENO_FUTURE=1 (#24866) - fix(unstable/compile): handle byonm import in sub dir (#24755) - fix(upgrade): better error message when check_exe fails (#25133) - fix(upgrade): correctly compute latest version based on current release channel (#25087) - fix(upgrade): do not error if config in cwd invalid (#24689) - fix(upgrade): fallback to Content-Length header for progress bar (#24923) - fix(upgrade): return no RC versions if fetching fails (#25013) - fix(upgrade): support RC release with --version flag (#25091) - fix(upgrade): use proper version display (#25029) - fix(urlpattern): correct typings for added APIs (#24881) - fix(webgpu): Fix `GPUAdapter#isFallbackAdapter` and `GPUAdapter#info` properties (#24914) - fix(workspace): do not resolve to self for npm pkg depending on matching req (#24591) - fix(workspace): support resolving bare specifiers to npm pkgs within a workspace (#24611) - fix(workspaces/publish): include the license file from the workspace root if not in pkg (#24714) - perf: skip saving to emit cache after first failure (#24896) - perf: update deno_ast to 0.41 (#24819) - perf: update deno_doc (#24700) - perf(ext/crypto): make randomUUID() 5x faster (#24510) - perf(ext/fetch): speed up `resp.clone()` (#24812) - perf(ext/http): Reduce size of `ResponseBytesInner` (#24840) - perf(ext/node): improve `Buffer` from string performance (#24567) - perf(ext/node): optimize fs.exists[Sync] (#24613) - perf(lsp): remove fallback config scopes for workspace folders (#24868) - refactor: `version` module exports a single const struct (#25014) - refactor: decouple node resolution from deno_core (#24724) - refactor: move importMap with imports/scopes diagnostic to deno_config (#24553) - refactor: remove version::is_canary(), use ReleaseChannel instead (#25053) - refactor: show release channel in `deno --version` (#25061) - refactor: update to deno_config 0.25 (#24645) - refactor: update to use deno_package_json (#24688) - refactor(ext/node): create separate ops for node:http module (#24788) - refactor(fetch): reimplement fetch with hyper instead of reqwest (#24237) - refactor(lint): move reporters to separate module (#24757) - refactor(node): internally add `.code()` to node resolution errors (#24610) - refactor(upgrade): cleanup pass (#24954) - refactor(upgrade): make fetching latest version async (#24919) - Reland "fix: CFunctionInfo and CTypeInfo leaks (#24634)" (#24692) - Reland "refactor(fetch): reimplement fetch with hyper instead of reqwest" (#24593)