chore: upgrade deno to 2.7.14#14504
Conversation
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.
✅ Snyk checks have passed. No issues have been found so far.
💻 Catch issues earlier using the plugins for VS Code, JetBrains IDEs, Visual Studio, and Eclipse. |
|
Some notes from a follow-up investigation on the What changed in DenoThe trigger is denoland/deno#31502 (commit a49fdb5), shipped in Deno 2.6.0: feat: include At type-check time, that ambient declaration shadows anything the import map says for the bare specifier The TS bundle bump (5.9.2 via #30601, Deno 2.5.0) is incidental — the proximate cause is the ambient Two documented opt-outs exist:
This PR takes route (2), scoped to the minimum required. Why our import map uses bare specifiers in the first placeThe bare-specifier convention ( The pattern is also load-bearing in two adjacent places that should not be churned without thought:
The release-time bundling ( Why the fix is minimal here
Other collisions to watchThe same Deno-side mechanism (ambient Suggested follow-up (separate PR)Migrate How to reproduce locallyWith Deno 2.7.14 cached under $deno = "package/dist/bin/tools/x86_64/deno.exe"
$env:DENO_DIR = "$PWD/package/dist/bin/deno_cache"
& $deno check --unstable-kv --unstable-ffi --no-config --no-lock `
--allow-import --importmap="src/import_map.json" src/quarto.tsRevert just |
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 APIIsWow64Process2. 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 thedenoland/denoCargo.lock) removed the call. v2.7.14 is the latest stable as of this PR.Verification
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
Uint8Array<ArrayBuffer>vs<ArrayBufferLike>and Deno resolves the barepathspecifier's types vianode:pathcompat instead of the import map. Fixed insrc/deno_ral/path.ts(new@std/pathalias for named imports ofSEPARATOR/fromFileUrl/etc.) andsrc/core/{deno-dom,hash,http,path}.ts(targeted casts atResponse/crypto.subtle.digestcall sites)..github/workflows/create-release.ymlupdated toh6046fbb_0(linux-64 build for 2.7.14). Themake-tarball-rheljob staysif: falseper existing project decision; hash updated for forward consistency.deno.land/std@xexample that predated the JSR migration, missingcheck.tssync step). Fixed in this PR alongside the actual upgrade..bat/.cmd spawn audit
Audited
Deno.Commandcall sites undersrc/for direct.bat/.cmdinvocation (Deno 2.5.2 briefly rejected these; 2.5.6+ re-allowed). Findings:safeWindowsExec— routes viacmd /c✓devconfig.ts— explicit["cmd", "/c", ...]wrapper ✓dart-sass.ts— bypassessass.bat, invokesdart.exe+sass.snapshotdirectly ✓texlive.tstlmgrCommand— routes viasafeWindowsExecon Windows ✓verapdf.ts— string references for path-building only; no direct spawn ✓serve.ts/preview-server.ts(npm.cmdfor external preview): verified directDeno.Command("npm.cmd", ...)works under Deno 2.7.14 — no wrapper needed.Test plan
configure.cmdsucceeds against new binary (verified locally on Windows)quarto checkreports Deno 2.7.14 with no version mismatch and clean TS typecheckunit/preview-initial-path.test.ts,smoke/render/render-html|reveal|pdf|docx|typst-package-staging.test.ts,smoke/engine/*(29/0/0)