Skip to content

chore: upgrade deno to 2.7.14#14504

Open
cderv wants to merge 6 commits into
mainfrom
fix/issue-14291
Open

chore: upgrade deno to 2.7.14#14504
cderv wants to merge 6 commits into
mainfrom
fix/issue-14291

Conversation

@cderv
Copy link
Copy Markdown
Member

@cderv cderv commented May 11, 2026

Summary

Bumps bundled Deno from v2.4.5 to v2.7.14, fixing #14291 (silent crash on Windows builds older than 16299).

Why

Deno v2.4.5 transitively depends on quinn-udp 0.5.8, which calls the Windows API IsWow64Process2. That API is absent on Windows builds older than 16299 (Windows Server 2016 = build 14393, early Windows 10). On those systems Quarto exits silently before any code runs.

quinn-udp 0.5.9 (shipped in Deno v2.6.9 onward, per the denoland/deno Cargo.lock) removed the call. v2.7.14 is the latest stable as of this PR.

Verification

Deno tag quinn-udp
v2.4.5 (current) 0.5.8 (broken)
v2.6.9 0.5.9 (fixed)
v2.7.14 (target) 0.5.9 (fixed)

Verified via gh api repos/denoland/deno/contents/Cargo.lock?ref=<tag>.

Cannot be reproduced locally (no Server 2016 / pre-16299 Windows hardware on hand). Reporter to confirm against the prerelease build.

Notable changes beyond the version bump

  • TypeScript typing fallout from Deno 2.5–2.7: TS 5.9 tightened Uint8Array<ArrayBuffer> vs <ArrayBufferLike> and Deno resolves the bare path specifier's types via node:path compat instead of the import map. Fixed in src/deno_ral/path.ts (new @std/path alias for named imports of SEPARATOR/fromFileUrl/etc.) and src/core/{deno-dom,hash,http,path}.ts (targeted casts at Response/crypto.subtle.digest call sites).
  • conda-forge hash in .github/workflows/create-release.yml updated to h6046fbb_0 (linux-64 build for 2.7.14). The make-tarball-rhel job stays if: false per existing project decision; hash updated for forward consistency.
  • dev-docs/upgrade-dependencies.md had several stale instructions (S3-upload step that no longer applies, deno.land/std@x example that predated the JSR migration, missing check.ts sync step). Fixed in this PR alongside the actual upgrade.

.bat/.cmd spawn audit

Audited Deno.Command call sites under src/ for direct .bat/.cmd invocation (Deno 2.5.2 briefly rejected these; 2.5.6+ re-allowed). Findings:

  • safeWindowsExec — routes via cmd /c
  • devconfig.ts — explicit ["cmd", "/c", ...] wrapper ✓
  • dart-sass.ts — bypasses sass.bat, invokes dart.exe + sass.snapshot directly ✓
  • texlive.ts tlmgrCommand — routes via safeWindowsExec on Windows ✓
  • verapdf.ts — string references for path-building only; no direct spawn ✓
  • serve.ts/preview-server.ts (npm.cmd for external preview): verified direct Deno.Command("npm.cmd", ...) works under Deno 2.7.14 — no wrapper needed.

Test plan

  • configure.cmd succeeds against new binary (verified locally on Windows)
  • quarto check reports Deno 2.7.14 with no version mismatch and clean TS typecheck
  • Local smokes pass on Windows: unit/preview-initial-path.test.ts, smoke/render/render-html|reveal|pdf|docx|typst-package-staging.test.ts, smoke/engine/* (29/0/0)
  • CI matrix green (Linux + macOS + Windows)

cderv added 6 commits May 11, 2026 19:02
Deno 2.7.14 bundles TypeScript 5.9.2 with tightened generics
(Uint8Array<ArrayBuffer> vs <ArrayBufferLike>) and resolves the bare
'path' specifier's types via node:path compat instead of the import-map
target. Add a non-colliding '@std/path' alias for named imports of
SEPARATOR/fromFileUrl/etc., and cast Uint8Array at Response/digest call
sites where the new BufferSource/BodyInit signatures require an
ArrayBuffer-backed view.
Prose said the hash appears in three places (echo, curl, tar) but the
example block only showed it on curl + tar, contradicting the prose.
@posit-snyk-bot
Copy link
Copy Markdown
Collaborator

posit-snyk-bot commented May 11, 2026

Snyk checks have passed. No issues have been found so far.

Status Scan Engine Critical High Medium Low Total (0)
Open Source Security 0 0 0 0 0 issues
Licenses 0 0 0 0 0 issues

💻 Catch issues earlier using the plugins for VS Code, JetBrains IDEs, Visual Studio, and Eclipse.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants