Deno 2.9 cuts cold start to 17ms and ships a one-binary desktop builder

Deno's runtime now boots in 17.3 ms, half of 2.8's time, and a new experimental `deno desktop` turns a Next.js or Astro app into a single cross-platform binary. A former Deno engineer used the release to argue the project is quietly pulling ahead of Bun.

In brief

Deno 2.9 halves cold start to 17.3 ms, pushes one realworld HTTP benchmark to 72.4k req/s, and adds `deno desktop` — point it at a web app and it auto-detects the framework, then cross-compiles to Windows, macOS and Linux from one machine.

A former Deno engineer says abundant AI access let the team finally crack Node's event-loop ordering, while it 'sent Bun off the rails.' A longtime supporter disagrees: he hit Node-compat regressions between minor releases and blames Claude-coauthored PRs.

Deno 2.9 wants you to forget it was ever just a CLI

Deno 2.9 release cover
Deno 2.9 release cover

The headline of Deno 2.9 is not a runtime tweak — it's a category move. The new experimental deno desktop takes an existing web app, auto-detects the framework (Next.js, Astro, Fresh, Remix, Nuxt, SvelteKit and more), and compiles it into a single native binary. Two rendering backends ship: a native system webview by default, or a bundled Chromium (CEF) when you need it. From one machine you cross-compile to Windows, macOS and Linux.

Under that, the runtime got materially faster. Cold start dropped from 34.2 ms in 2.8 to 17.3 ms — a 1.98x cut. One realworld HTTP benchmark went from 56.8k to 72.4k req/s, and the same workload now uses 2.2x less memory (3.1x less on 1 MiB body transfers). Node compatibility advanced to target Node.js 26.3.0, and bare builtins like import "fs" finally resolve with no configuration flag.

The rest reads like a backlog being cleared at once. deno install now reads lockfiles straight from npm, pnpm, yarn and Bun, seeding a deno.lock with exact versions so switching managers stops re-resolving everything. deno compile --bundle --minify tree-shakes a lodash hello-world from 11.6 MB down to 1.5 MB. Supply-chain defaults tightened: min-release-age now blocks freshly published npm versions for 24 hours by default, a guard against compromised packages. The Web Crypto API gained post-quantum algorithms (ML-KEM, ML-DSA, SLH-DSA), and crypto.subtle was rewritten from JavaScript into Rust.

The thread isn't arguing about features — it's arguing about who's winning

The sharpest defense came from someone with skin in the game. Matt Mastracci, who notes he is a former Deno engineer, framed the release as a story about what AI does to a company's existing character:

"Deno has always been more methodical, more focused… on standards. But now the Deno team is on the right track: using Claude extensively to improve the node.js compat which was absolutely herculean if not impossible before AI… On the other hand, Bun has always played a bit fast and loose, chasing metrics at the cost of stability. Access to abundant AI has sent that project off the rails." — a former Deno engineer

He added that maybe a dozen people in the world understand how subtle the timing and ordering in the JS event loop is — the exact thing Node-compat hinges on.

The most cited counter came from a long-term user pointing the same AI argument the other way. He listed two GitHub issues that broke his projects and traced them to a Claude-coauthored PR:

"I'm disappointed in their lackluster approach to stability and testing… I recently hit multiple Node compatibility regressions in Deno that were hard to debug, and it doesn't help that they use Claude for everything now, from actual fixes to writing blog posts (even this one)." — a developer who hit the regressions in his own projects

He still credited Deno's built-in type checking, LSP and formatter — his complaint was focus drifting off the core runtime, and he said he'd go back to Node for stability.

Migration friction showed up as lived experience. One developer tried the deno install → deno task dev path and got a Vite/Node-version error, calling it the same "edge case, simple fix" pattern that stops him every time he tries to move off Bun. He later edited his comment to admit his machine hadn't taken the update — a clean reinstall ran both projects fine, and he apologized for the misinformation. The reversal is its own data point: half of Deno's reputation problem is upgrade fragility, real or perceived.

Not everyone is skeptical. A game developer described shipping his city builder Microlandia on Deno — the simulation core is a deno compile TypeScript executable running as a sidecar to a Three.js/React front end:

"I know I could switch to Bun with small changes in code but Deno has never got in my way." — a developer who builds a commercial game on Deno

And a recurring undertone was simple surprise the project is alive at all — one commenter thought Deno "died in times of covid", another asked for a TLDR of what it even is. For a runtime shipping cross-platform desktop binaries and post-quantum crypto in the same release, the bigger threat in this thread isn't Bun — it's being forgotten.

Get breakdowns like this every day

The top Hacker News stories, unpacked — by email, Telegram, or RSS.

Next story · 24 of 27 Read more
🌍Other

GTA 6's physical edition is a $100 box with a download code and no disc

Rockstar's boxed GTA 6 ships a slip of paper with a redemption code. The pre-order bonus is promised only "while supplies last" — for a thing made of bytes.

★ 51 · 💬 76 · ign.com · 4 min