v2.3.0
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 runpaths
(#28424) - feat(cli):
deno check
maps todeno 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
anddeviceStopCapture
(#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
todeno 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
andshake-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 onwinapi
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
toDENO_INSTALL_ROOT
when ends with
bin
(#26446) - fix(lint): don't recurse infinitely for large ASTs (#28265)
- fix(lint): give access to SourceCode in 'deno test' (#28278)
- fix(lint): plugins ignored when no rust rule active (#28269)
- fix(lint): resolve plugin paths from proper config specifier (#28752)
- fix(lint): run with --no-prompt (#28305)
- fix(lint): update deno_lint (#28271)
- fix(lockfile): handling of peer deps when migrating to lockfile v5 (#28844)
- fix(lockfile): omit tarball url from lockfile if it's the default (#28842)
- fix(lockfile): re-fetch packuments if version not found, properly pass patch
packages (#28964) - fix(lsp): add npm reqs to installer on resolution (#29061)
- fix(lsp): auto-import from npm package exports with manual node_modules
(#28414) - fix(lsp): close server on exit notification (#28232)
- fix(lsp): create cacheable
ExportInfoMap
per language service (#28240) - fix(lsp): discard completions from non-exported npm files (#28962)
- fix(lsp): do not show import-map-remap diagnostic when referrer and target are
within the entry base (#28560) - fix(lsp): exclude unmapped npm cache paths from auto-imports (#28841)
- fix(lsp): filter scheme in semantic tokens registration options (#28756)
- fix(lsp): format vscode-userdata schemed documents (#28706)
- fix(lsp): include prefix and suffix for rename edits (#28327)
- fix(lsp): limit languages in semantic tokens provider (#28310)
- fix(lsp): normalize all uris originating from client (#29019)
- fix(lsp): prefer relative auto-import specifier against import map (#29098)
- fix(lsp): preserve notification order after init flag is raised (#28733)
- fix(lsp): remove redirect diagnostic (#28988)
- fix(lsp): show a diagnostic for managed npm non-existent subpaths (#28981)
- fix(lsp): silence errors from "codeAction/resolve" (#28400)
- fix(lsp): url_to_uri() encoding on windows (#28737)
- fix(lsp): use markup content variant for hover response (#28987)
- fix(node): add reset method to event loop delay histogram (#28788)
- fix(node): require esm should prefer
module.exports
export (#28376) - fix(node): support re-exported esm modules in cjs export analysis (#28379)
- fix(npm): further reduce duplicates with optional peers (#28705)
- fix(npm): improve optional peer dep handling (#28651)
- fix(npm): only print deprecation warnings on first install (#28990)
- fix(npm): panic when using tag with patched package (#28900)
- fix(npm): reduce duplicate peers by preferring existing nv if nv anywhere in
ancestor peers (#28663) - fix(npm): reduce occurrences of duplicate packages due to peer dep resolution
(#28586) - fix(npm): resolve non-version matching peer deps and warn instead (#28616)
- fix(npm): set up bin entries for package even if it's already downloaded
(#28626) - fix(npm): support registries that have no shasums or integrity (#29093)
- fix(npm): use Deno instead of Node in more cases for lifecycle scripts
(#28715) - fix(otel): don't print otel warning when variable is not set (#28475)
- fix(otel): don't throw when calling setActiveSpan at root (#28323)
- fix(otel): only start deno_telemetry thread when needed (#29065)
- fix(otel): recording metrics with more than 3 attributes (#28898)
- fix(otel): replace
ArrayPrototypeSplit
withStringPrototypeSplit
(#28538) - fix(otel): support attributes on links and events (#28584)
- fix(otel/unstable): trace error cases of fetch (#28480)
- fix(publish): support
virtual:
andcloudflare:
schemes (#28922) - fix(repl): panic when user
delete globalThis.globalThis
(#28960) - fix(run): skip the cjs suggestion for mjs/mts modules (#26698)
- fix(runtime): fix duplicate unstable ids for no-legacy-abort (#28740)
- fix(task): document source of tasks, fix punctuation (#28413)
- fix(task): filter empty elements in
xargs
(#28714) - fix(task): support backticks and basic tilde expansion (#28832)
- fix(test): ignore write errors in reporter (#28722)
- fix(types): add
Error.isError
type (#28679) - fix(unstable): Missing
PrivateIdentifier
type forPropertyDefinition
key
(#28358) - fix(unstable): add missing decorators nodes in lint ast (#28834)
- fix(unstable): add parent types to lint ast nodes (#28802)
- fix(unstable): lint
.parent
property not traversing over groups (#28803) - fix(unstable): lint plugin
!==
wrongly parsed as!=
(#28403) - fix(unstable): lint plugin
:exit
called at wrong time (#28229) - fix(unstable): lint plugin
ObjectPattern
inconsistencies (#28359) - fix(unstable): lint plugin child combinator not working with groups (#28360)
- fix(unstable): lint plugin fix
:has()
,:is/where/matches
and:not()
selectors (#28348) - fix(unstable): lint plugin regex attribute selector not working (#28340)
- fix(unstable): lint plugin swapped exported and source for
ExportAllDeclaration (#28357) - fix(unstable): wrong node with shorthand ObjectPattern + AssignPattern
(#28402) - fix(unstable/lint): remove duplicated
Fix
vsFixData
interface (#28344) - fix(webgpu): move
isFallbackAdapter
fromGPUAdapter
toGPUAdapterInfo
(#28650) - fix: add "module.exports" export to ESM CJS wrapper module (#28373)
- fix: add info suggestion for
unsafely-ignore-certificate-errors
and add
--help=full
(#28203) - fix: add stackTraceLimit to ErrorConstructor interface and removed
ErrorWithStackTraceLimit interface (#28539) - fix: better cjs vs esm module detection and upgrade swc (#28810)
- fix: better error message for bare run in file-like case (#29055)
- fix: break unstable lockfile v5 to remove "has" from property names (#29095)
- fix: correct reported typescript version (#29053)
- fix: correctly style rust logs with colors (#29040)
- fix: deno_ast 0.46 (#28331)
- fix: don't show panic traces for non-official builds (#28931)
- fix: dont strip n-api symbols in
denort
on mac (#28800) - fix: fix bugs with rendering of authority in serve urls (#29009)
- fix: make --allow-env stronger that --deny-env (#29079)
- fix: move otel logic into otel (#29073)
- fix: only strip local and debug symbols from macOS binary (#28758)
- fix: remove unnecessary whitespace in prompt function (#28868)
- fix: remove warnings for bare node builtins (#29000)
- fix: resolve shebang parse error in deno doc --test (#26079)
- fix: respect lockfile for multiple available jsr versions (#28375)
- fix: show referrer for Wasm module dependency errors (#28653)
- fix: support vsock in DENO_SERVE_ADDRESS (#28941)
- fix: unhandled rejection from quic (#28448)
- fix: use full SHA for canary panic URLs (#28819)
- fix: use proper version for v2.3.0-rc.0 (#28967)
- fix: vsock nits (#28851)
- perf(ext/node): improve node:http createServer performance (#29069)
- perf(ext/node): lazily listen to the abort signal of request object (#29071)
- perf(fs): don't canonicalize path when opening file if
--allow-all
is passed
(#28716) - perf(http): instantiate generic functions in
deno_http
, increase opt-level
for some more hyper deps (#28317) - perf(install): keep parsed npm package info in memory cache (#28636)
- perf(install): only read initialized file if we care about the tags (#28242)
- perf(lockfile): slightly terser lockfile formatting, remove old lockfile code
(#28992) - perf(lsp): don't set resolver npm reqs if unchanged (#28302)
- perf(lsp): lazily start the ts server (#28392)
- perf(lsp): register semantic tokens provider upon opening enabled doc (#28384)
- perf(npm): don't try to cache npm packages we've already cached (#28938)
- perf(npm): load npm resolution snapshot directly from lockfile (#28647)
- perf: remote symbolicate stack traces (#28470)