Impact Score: 5/10
Deno v1.39.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.
β‘ Executive Summary (TL;DR)
Deno v1.39.0. Source highlight: Reland "fix(ext/console): fix inspecting iterators error. (#20720)" (#21370)
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.
β¨ New Features & Capabilities (6)
- feat(compile): support "bring your own node_modules" in deno compile (#21377)
- feat(compile): support discovering modules for more dynamic arguments (#21381)
- feat(coverage): add html reporter (#21495)
- feat(coverage): add summary reporter (#21535)
- feat(cron): added the support for json type schedule to cron api (#21340)
- feat(ext/fetch): allow `Deno.HttpClient` to be declared with `using` (#21453)
β‘ Performance & Enhancements (6)
- perf(ext/ffi): switch from middleware to tasks (#21239)
- perf(ext/napi): port NAPI to v8 tasks (#21406)
- perf(ext/url): improve URLPattern perf (#21488)
- perf(ext/web): Avoid changing prototype by setting hostObjectBrand directly
- perf(lsp): collect counts and durations of all requests (#21540)
- perf(lsp): instrument all ops with performance marks (#21536)
π§ Bug Fixes & Patches (6)
- Reland "fix(ext/console): fix inspecting iterators error. (#20720)" (#21370)
- feat(lsp): debug log file (#21500)
- feat(lsp): provide quick fixes for specifiers that could be resolved sloppily
- fix (doc): Typo in `runtime/README.md` (#20020)
- fix(cli/installer): percent decode name (#21392)
- fix(compile/npm): ignore symlinks to non-existent paths in node_modules
π View Raw Release Notes (Original Developer Log)
### 1.39.0 / 2023.12.13
- Reland "fix(ext/console): fix inspecting iterators error. (#20720)" (#21370)
- Update doc for deno fmt `--no-semicolons` arg. (#21414)
- feat(compile): support "bring your own node_modules" in deno compile (#21377)
- feat(compile): support discovering modules for more dynamic arguments (#21381)
- feat(coverage): add html reporter (#21495)
- feat(coverage): add summary reporter (#21535)
- feat(cron): added the support for json type schedule to cron api (#21340)
- feat(ext/fetch): allow `Deno.HttpClient` to be declared with `using` (#21453)
- feat(ext/kv) add backoffSchedule to enqueue (#21474)
- feat(ext/web): add ImageData Web API (#21183)
- feat(fmt): support formatting code blocks in Jupyter notebooks (#21310)
- feat(lsp): debug log file (#21500)
- feat(lsp): provide quick fixes for specifiers that could be resolved sloppily
(#21506)
- feat(streams): ReadableStream.read min option (#20849)
- feat(test): add default to --coverage option (#21510)
- feat(unstable): --unstable-unsafe-proto (#21313)
- feat(unstable): ability to resolve specifiers with no extension, specifiers
for a directory, and TS files from JS extensions (#21464)
- feat(unstable): append commit versionstamp to key (#21556)
- feat: TypeScript 5.3 (#21480)
- feat: add suggestions to module not found error messages for file urls
(#21498)
- feat: bring back WebGPU (#20812)
- feat: stabilize Deno.HttpServer.shutdown and Unix socket support (#21463)
- fix (doc): Typo in `runtime/README.md` (#20020)
- fix(cli/installer): percent decode name (#21392)
- fix(compile/npm): ignore symlinks to non-existent paths in node_modules
directory (#21479)
- fix(coverage): escape source code in html coverage report (#21531)
- fix(coverage): rename --pretty to --detailed (#21543)
- fix(cron): move deprecated Deno.cron overload (#21407)
- fix(doc): ambient namespaces should have members as exports (#21483)
- fix(dts): `Deno.ChildProcess` actually implements `AsyncDisposable` (#21326)
- fix(ext/kv): throw error if already closed (#21459)
- fix(ext/node): ServerResponse getHeader() return undefined (#21525)
- fix(ext/node): add stubbed process.report (#21373)
- fix(ext/node): add util.parseArgs (#21342)
- fix(ext/node): allow null value for req.setHeader (#21391)
- fix(ext/node): basic vm.runInNewContext implementation (#21527)
- fix(ext/node): fix Buffer.copy when sourceStart > source.length (#21345)
- fix(ext/node): fix duplexify compatibility (#21346)
- fix(ext/node): fix os.freemem (#21347)
- fix(ext/node): include non-enumerable keys in `Reflect.ownKeys(globalThis)`
(#21485)
- fix(ext/node): sign with PEM private keys (#21287)
- fix(ext/node): stub ServerResponse#flushHeaders (#21526)
- fix(ext/node): use primordials in ext/node/polyfills/_util (#21444)
- fix(ext/websocket): don't panic on bad resource id (#21431)
- fix(fmt): `"singleQuote": true` should prefer single quoteβnot always use one
(#21470)
- fix(fmt): remove trailing comma for single type param in default export in jsx
(#21425)
- fix(fmt/jupyter): handle "source" property that's a string (#21361)
- fix(lsp): handle byonm specifiers in jupyter notebooks (#21332)
- fix(node): setting process.exitCode should change exit code of process
(#21429)
- fix(node/tls): fix NotValidForName for host set via socket / servername
(#21441)
- fix(npm): do not create symlink for non-system optional dep in node_modules
directory (#21478)
- fix(perm): allow-net with port 80 (#21221)
- fix(permissions): fix panics when revoking net permission (#21388)
- fix(runtime): Make native modal keyboard interaction consistent with browsers
(#18453)
- fix(task): handle node_modules/.bin directory with byonm (#21386)
- fix(task): use exit code 127 for command not found and parse escaped parens
(#21316)
- fix(unstable): Honor granular unstable flags in js runtime (#21466)
- fix(websockets): server socket field initialization (#21433)
- fix(zlib): handle no flush flag in handle_.write (#21432)
- fix: add more warnings when using sloppy imports (#21503)
- fix: allow reserved word 'mod' in exports (#21537)
- fix: batch upload authentication (#21397)
- fix: correct flag in tar & upload (#21327)
- fix: correct the batch upload length (#21401)
- fix: display unstable flags at bottom of help text (#21468)
- fix: don't error if a version already published (#21455)
- fix: error code used for duplicate version publish (#21457)
- fix: extraneous slash in tar & upload (#21349)
- fix: ignore more paths in dynamic arg module search (#21539)
- fix: implement child_process IPC (#21490)
- fix: use correct import map in tar & upload (#21380)
- perf(ext/ffi): switch from middleware to tasks (#21239)
- perf(ext/napi): port NAPI to v8 tasks (#21406)
- perf(ext/url): improve URLPattern perf (#21488)
- perf(ext/web): Avoid changing prototype by setting hostObjectBrand directly
(#21358)
- perf(lsp): collect counts and durations of all requests (#21540)
- perf(lsp): instrument all ops with performance marks (#21536)
- perf(lsp): simplify some of the startup code (#21538)
- perf(lsp): use null types instead of stub modules (#21541)
- perf(node/fs): faster `existsSync` when not exists (#21458)
- perf: move "cli/js/40_testing.js" out of main snapshot (#21212)