Releases: denoland/deno
v2.4.2
2.4.2 / 2025.07.16
- fix(bundle): default "jsxImportSource" to "react" (#30082)
- fix(check): temporarily ignore ERR_TYPES_NOT_FOUND (#29926)
- fix(ext/node): don't throw error on invalid path input on
exists
and
existsSync
(#29971) - fix(ext/node): validate path parameters on
link
andlinkSync
(#30061) - fix(lint): do not panic for many overlapping lint fixes (#30104)
- fix(lsp): tsconfig features for 'deno check' parity (#30007)
- fix(tsconfig): prioritize deno.json if it has compiler options (#30056)
- fix(tsconfig): use tsc defaults for 'strict' and 'noImplicitOverride' (#30045)
- fix(unstable): support importing files in npm packages as bytes and text
(#30065) - fix:
global
global should be writeable (#30032) - fix: early init logging (#30034)
- fix: new signal handling (#30029)
- fix: upgrade deno_core to 0.352.1 (#30119)
v2.2.14
v2.4.1
2.4.1 / 2025.07.08
- feat(unstable/otel): support vsock transport for telemetry (#30001)
- feat(unstable): tunnelling (#30022)
- fix(bundle): don't use createRequire when targeting browser, make hack not depend on variable names (#30023)
- fix(bundle): make the "dynamic require" hack work on minified output (#29997)
- fix(bundle): resolve "sloppy imports" in npm packages when bundling (#29989)
- fix(ext/http2): fix oob buffer reads in http2 requests (#29969)
- fix(serve): actually wire up resolving main module with import map for deno serve (#29974)
- fix(unstable): bytes and text imports from npm dependencies should require
--allow-read
(#29990) - Revert "fix(ext/napi): ensure the finalizer callback will be called" (#30018)
- Revert "fix(otel): flush data when terminating signal is received" (#30019)
- perf: bust emit cache only on deno_ast version change (#29984)
- perf: skip jsx transpile when disabled (#29995)
v2.4.0
2.4.0 / 2025.07.01
- feat(bundle): support text and bytes imports in bundle (#29908)
- feat(check): tsconfig "references", "extends", "files", "include" and
"exclude" (#29843) - feat(cli): add
--coverage
flag todeno run
command (#29329) - feat(cli): alias --unstable-sloppy-imports to --sloppy-imports (#29780)
- feat(ext/http): support
onListen()
callback indeno serve
(#29449) - feat(fmt): add support for .xml, .svg and .mustache files (#29851)
- feat(fmt): remove UTF-8 BOM instead of maintaining it (#29796)
- feat(node API): add
fs.glob
,fs.globSync
,fs.promises.glob
(#28972) - feat(otel): stabilize OpenTelemetry support (#29822)
- feat(process): add detached option to
Deno.Command
(#29933) - feat(run): resolve main module with workspace resolver (#29928)
- feat(signals): support listening for ctrl+close on Windows (#27880)
- feat(unstable): add DENO_NODE_CONDITIONS env var (#29848)
- feat(unstable): bytes and text imports (#29855)
- feat(unstable): support bytes and text imports in
deno compile
(#29924) - feat: --allow-net supports CIDR ranges (#29704)
- feat: Add --deny-import flag (#29702)
- feat: Deno.execPath() no longer requires --allow-read permission (#29620)
- feat: add 'deno update' subcommand (#29187)
- feat: add
DENO_AUTO_SERVE
env var (#29852) - feat: add
DENO_COMPAT
env var (#29889) - feat: add support for --preload/--import flag (#29626)
- feat: deprecate --unstable-node-globals flag (#29887)
- feat: make 'Buffer' and 'global' available as globals (#29416)
- feat: make
setImmediate
andclearImmediate
as globals (#29877) - feat: rename --unstable-node-conditions to --unstable-conditions (#29885)
- feat: stabilize --allow-net subdomain wildcards (#29902)
- feat: stabilize --node-conditions flag (#29628)
- feat: unflag the deploy subcommand (#29863)
- fix(bench): Make output table markdown compatible (#29532)
- fix(bundle): only replace require shim in js files, spruce up output (#29892)
- fix(check): don't detect tsconfigs with no deno.json/package.json or
--no-config (#29925) - fix(coverage): Make output table markdown compatible (#29533)
- fix(ext/node): add
lchmod
,lchmod
promise,lchmodSync
tonode:fs
(#29833) - fix(ext/node): add type check to LibuvStreamWrap.writeBuffer (#29879)
- fix(ext/node): don't show deprecation warnings for dependencies (#29909)
- fix(ext/node): export promise based
lchown
andlutimes
from
node:fs/promises
(#29870) - fix(ext/node): fix reference error in node:stream (#29894)
- fix(ext/node): improve assert.fail (#29850)
- fix(ext/node): improve input validations of stream/consumers (#29880)
- fix(ext/node): keep BOM in buffer.toString('utf8') (#29896)
- fix(ext/node): remove duplicated stream classes (#29860)
- fix(fmt/css): prefer collapsing font-family values (#29864)
- fix(install): purge more packages from lockfile on config change (#29953)
- fix(install/global): resolve bin name from npm packument (#29884)
- fix(lsp): don't show no-export diagnostics for type-only npm imports (#29888)
- fix(node): use primordials more consistently in
_events.mjs
(#29930) - fix(publish): disallow publishing with bytes or text imports (#29954)
- fix: support
Deno.permissions.query({name:"import"})
(#29610) - perf: skip loading bytes and text imports into memory when already cached and
building module graph (#29931)
v2.3.7
2.3.7 / 2025.06.23
- feat(unstable): add
--platform
flag to deno bundle (#29697) - feat(unstable): add
--sourcemap
flag to deno bundle (#29735) - feat(unstable): add watch mode to deno bundle (#29795)
- feat: allow base64 ca cert in args (#29814)
- fix(bundle): enable sloppy imports by default when bundling (#29731)
- fix(bundle): improve error handling and reporting (#29744)
- fix(bundle): parse the allow-import flag, fix example in help text (#29733)
- fix(bundle): transform import.meta.main (#29830)
- fix(ext/napi): ensure the finalizer callback will be called (#29710)
- fix(ext/node): DiffieHellman constructor behaviors (#29718)
- fix(ext/node): Fix
crypto.pbkdf2
compat (#29738) - fix(ext/node): Module.wrap cleanup for npm:v8-code-cache (#29725)
- fix(ext/node): add
fchmod
andfchmodSync
(#29791) - fix(ext/node): add key length validation in
DiffieHellman.prototype.computeSecret
(#29757) - fix(ext/node): add validation to Cipheriv methods (#29800)
- fix(ext/node): crypto.timingSafeEqual (#29758)
- fix(ext/node): deprecate Hash and Hmac constructors (#29774)
- fix(ext/node): fix assertion error message of assert.ok (#29803)
- fix(ext/node): fix error type in DiffieHellman constructor (#29721)
- fix(ext/node): fix events.once (#29716)
- fix(ext/node): fix input validation of crypto hkdf (#29775)
- fix(ext/node): fix oneshot hash validation (#29661)
- fix(ext/node): implement Certificate API (#29828)
- fix(ext/node): improve assert.ifError (#29846)
- fix(ext/node): improve comparison of faked objects in
deepStrictEqual
(#29819) - fix(ext/node): improve scrypt support (#29773)
- fix(ext/node): support KeyObject in publicEncrypt/privateDecrypt (#29798)
- fix(ext/node): throw invalid state from
getAuthTag
(#29752) - fix(ext/node): use primordials in
ext/node/polyfills/internal/event_target.mjs
(#29772) - fix(ext/node): use primordials in
ext/node/polyfills/internal/fs/utils.mjs
(#29708) - fix(ext/node): validate auth tag for GCM mode cipher (#29739)
- fix(fmt): fix handling of indent inside template language (#29616)
- fix(fmt): handle TS as syntax in Svelte each block (#29789)
- fix(install): ignore unknown JSR export errors on top level install (#29807)
- fix(install): infer name from @scope/cli pattern (#29694)
- fix(install,outdated): try to avoid building graph with incorrect exports
(#29713) - fix(jsr): allow using
import.meta.resolve
to resolve non-jsr remote urls
(#29831) - fix(lsp): respect media type for tsx jupyter cells (#29712)
- fix(npm): support resolving npm specifiers not in graph with
import.meta.resolve
for resolved packages (#29732) - fix:
import.meta.resolve
- do not error for non-existent files in npm
packages (#29741) - fix: do not panic when logging from outside a tokio runtime (#29728)
- fix: move win32job under windows dependencies in tests/util/server (#29745)
- fix: remove
self
from global middleware (#29734)
v2.3.6
2.3.6 / 2025.06.12
Upgrade to 2.3.6:
deno upgrade
Or install for the first time
curl -fsSL https://deno.land/install.sh | sh
- feat(bundle, unstable): bundling backed by esbuild (#29470)
- feat(ext/fetch): add support for fetch on vsock sockets (#29692)
- feat(unstable): add --unstable-node-conditions flag for node resolution
(#29586) - feat(unstable): deploy subcommand (#29407)
- fix(bundle): don't panic on broken pipe (#29706)
- fix(bundle): fix handling of multiple entrypoints (#29651)
- fix(bundle): pass requested module type to load (#29683)
- fix(bundle): rework how patterns for externals are handled (#29680)
- fix(compile): skip over read_dir errors when finding node_modules directories
(#29672) - fix(coverage):
deno test --coverage
fails when importing modules from
data:
urls (#29607) - fix(ext/http): handle vsock streams in
extract_network_stream
(#29518) - fix(ext/node): Buffer.fill compatibility fixes (#29525)
- fix(ext/node): Fix missing core_import_map node internal file path for http2
(#29644) - fix(ext/node):
process.loadEnvFile
returnsundefined
(#29717) - fix(ext/node): add back perf_hooks.markResourceTiming (#29562)
- fix(ext/node): add events
getMaxListeners
(#29636) - fix(ext/node): disable
parallel/test-crypto-secure-heap.js
test (#29658) - fix(ext/node): enable
Buffer
pool for strings (#29592) - fix(ext/node): export StatementSync from
node:sqlite
(#29563) - fix(ext/node): fix
Buffer.inspect
compatiblity (#29617) - fix(ext/node): fix
EventEmitter.on
(#29682) - fix(ext/node): fix addAbortListener (#29634)
- fix(ext/node): fix buffer.includes edge cases (#29591)
- fix(ext/node): fix buffer.indexOf for ucs2 encoding (#29593)
- fix(ext/node): fix events.getEventListeners (#29685)
- fix(ext/node): fix fs.watchFile trigger (#29659)
- fix(ext/node): fix inspect of CustomEvent of Node.js (#29668)
- fix(ext/node): fix prototype of asymmetricKeyDetails of AsymmetricKeyObject
(#29576) - fix(ext/node): fix validation of input in setMaxListeners (#29630)
- fix(ext/node): handle -p flag in spawn, fix "from dependency" check in windows
(#29611) - fix(ext/node): ignore
parallel/test-eventsource-disabled.js
test (#29618) - fix(ext/node): improve getaddrinfo compatibility (#29501)
- fix(ext/node): internal getOpenSSLSecLevel() for tests (#29657)
- fix(ext/node): make Buffer work with resizable ABs (#29578)
- fix(ext/node): make DatabaseSync
readOnly
optional (#29564) - fix(ext/node): make conditional exports work in
require()
(#29640) - fix(ext/node): mark pool
ArrayBuffer
as untransferable (#29612) - fix(ext/node): match WebCrypto tag too small error msg with Node (#29654)
- fix(ext/node): pass node.js specific flags via NODE_OPTIONS env var in spawn
(#29600) - fix(ext/node): print warnings to stderr (#29527)
- fix(ext/node): return
undefined
instead ofnull
in sqlite (#29567) - fix(ext/node): support 2nd arg of
EventEmitter.prototype.listenerCount
(#29664) - fix(ext/node): support DEP0005 deprecation warning (#29530)
- fix(ext/node): update decipherIv error properties (#29652)
- fix(ext/node): update interaction between event emitters and domains (#29632)
- fix(ext/node): update message for
MaxListenersExceededWarning
(#29613) - fix(ext/node): use primordials in
ext/node/polyfills/_fs/_fs_symlink.ts
(#29547) - fix(ext/node): use primordials in
ext/node/polyfills/internal/console/constructor.mjs
(#29605) - fix(ext/node): use primordials in
ext/node/polyfills/internal/fs/streams.mjs
(#29643) - fix(ext/node): use primordials in
ext/node/polyfills/internal/process/per_thread.mjs
(#29550) - fix(ext/node): use primordials in
ext/node/polyfills/internal/util/inspect.mjs
(#29691) - fix(ext/node): use primordials in
ext/node/polyfills/internal_binding/stream_wrap.ts
(#29542) - fix(ext/node): validate prime bigint candidate (#29653)
- fix(ext/node): validate randomUUID() options (#29656)
- fix(ext/node): various
node:sqlite
fixes (#29404) - fix(ext/os): silently ignore invalid utf-8 characters in os vars (#29571)
- fix(ext/web): fix property configuration of event phase fields (#29635)
- fix(fmt): allow omission of semicolon in certain cases in css template
(#29687) - fix(fmt): fix line number in error message when syntax error thrown from
external formatter (#29698) - fix(install): bust packument cache on version not found when loading extra
info from lockfile (#29679) - fix(install): clean-up lock poll file for a more deterministic
node_modules
folder output (#29623) - fix(lsp): use canonicalized fallback filesystem root (#29566)
- fix(node/assert): throw on deepStrictEqual({}, Object.create(null)) (#29428)
- fix(otel): set timestamp on opentelemetry log records (#28625)
- fix(process,node): roll our own process spawning on windows (#29609)
- fix(test): handle snippet containing
Deno.test
in doc test (#29631) - fix(unstable): continue to deserialize patches field from lockfile (#29714)
- fix(unstable): rename "patch" property to "links" (#29677)
- fix(zlib): don't return a smi from crc32 (#29546)
- fix: remove WorkerGlobalScope from global middleware (#29543)
- fix: revert back to prefering highest previously resolved version for a req
(#29642) - fix: support virtio vsock only on systems on which it is available (remainder)
(#29709) - perf(process): make sure we can take process spawning fast path on unix
(#29573)
v2.3.5
2.3.5 / 2025.05.30
Upgrade to 2.3.5:
deno upgrade
Or install for the first time
curl -fsSL https://deno.land/install.sh | sh
- fix(ext/node): Buffer write OOB checks (#29524)
- fix(ext/node): correct
kMaxLength
value ofnode:buffer
(#29504) - fix(ext/node): fix function error message in
invalidArgTypeHelper
(#29526) - fix(ext/node): stub
getFipsCrypto
tofalse
(#29485) - fix(otel): flush data when terminating signal is received (#29515)
- fix(vendor): store remote version metadata checksum in vendor folder to ensure
lockfile uses that (#29433)
v2.3.4
2.3.4 / 2025.05.29
- feat(UNSTABLE/byow): add
resize
method toUnsafeWindowSurface
(#29254) - feat(ext/webgpu): implement GPUQueue.onSubmittedWorkDone (#29255)
- feat(lsp): display JsErrors at their original line (#29221)
- feat(runtime): add SIGUSR2 handler for low memory notifications (#29295)
- feat(unstable): --allow-net subdomain wildcards (#29327)
- feat: use a single 'performance' global (#29323)
- fix(cli): Correct a small typo in help output (#29395)
- fix(compile): init dummy stdin after debug env is initialized (#29144)
- fix(coverage): HTML validation errors in coverage explorer (#29497)
- fix(coverage): pass DENO_COVERAGE_DIR env var correctly (#29363)
- fix(ext/console): console.group indents two spaces (#29486)
- fix(ext/node): Fix
Database#exec
should return undefined (#29368) - fix(ext/node): add "internal/http2/util" module (#29474)
- fix(ext/node): add
fchown
andfchownSync
tonode:fs
(#29408) - fix(ext/node): createInterface doesn't require env permission (#29472)
- fix(ext/node): emit 'worker' event when a new worker thread is created
(#29345) - fix(ext/node): fix
getEventListeners
innode:events
(#29480) - fix(ext/node): handle
null
ssl options innode:https
(#29365) - fix(ext/node): ignore some Node.js specific flags (#29461)
- fix(ext/node): implement
before
andafter
hooks innode:test
(#29367) - fix(ext/node): include
assert.ok
innode:test
(#29383) - fix(ext/node): node:buffer validates INSPECT_MAX_BYTES (#29469)
- fix(ext/node): prevent stdin double read (#29353)
- fix(ext/node): return values in node:domain (#29440)
- fix(ext/node): use primordials in
ext/node/polyfills/_fs/_fs_truncate.ts
(#29422) - fix(ext/node): use primordials in
ext/node/polyfills/internal/errors.ts
(#29382) - fix(ext/node): use primordials in
ext/node/polyfills/internal/util.mjs
(#29430) - fix(fmt): allow expressions used as key-value pair in css template literals
(#29369) - fix(lsp): do not warn about unscoped package name (#29463)
- fix(lsp): don't cache jsxImportSource on lockfile-only changes (#29415)
- fix(lsp): handle 'deno.config' setting outside of workspace (#29420)
- fix(lsp): lookup bare workspace specifiers for auto-import (#29304)
- fix(lsp): lookup mapped npm specifier resolutions for auto-import (#29388)
- fix(lsp): lookup patched jsr packages for auto-import (#29437)
- fix(node): do not look up node_module paths when using global resolver
(#29398) - fix(node): do not require permission checks for require's node_modules stats
(#29397) - fix(node): use
JsErrorClass
forcode
property on node resolver errors
(#29294) - fix(task): wildcard match starts at the beginning (#29343)
- fix: Support virtio vsock only on systems on which it is available (#29268)
(#29354) - fix:
--frozen
flag missing from several subcommands (#29508) - fix:
process.stdin.pause()
(#29330) - fix: don't unwrap in global interceptor (#29484)
- fix: load changed non-remote dynamic imports at runtime (#29413)
- fix: support numerical properties for deno_errors (#29489)
v2.3.3
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
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.