Deno

Deno is a runtime for JavaScript and TypeScript created by Ryan Dahl, who also created Node.js. Its GitHub repository describes it as “a JavaScript, TypeScript, and WebAssembly runtime with secure defaults and a great developer experience,” built “on V8, Rust, and Tokio.” Dahl introduced the project in 2018 in a JSConf EU talk pointedly titled “10 Things I Regret About Node.js,” in which he laid out design decisions in Node he had come to see as mistakes and presented Deno as a fresh attempt to do better. A stable 1.0 release followed in 2020.

The most prominent of Dahl’s regrets concerned security. Node grants any script full access to the file system, the network, and the environment by default. Deno inverts this: a program runs in a sandbox and can touch the disk, the network, or environment variables only when the user grants those permissions explicitly via command-line flags. This secure-by-default posture is the design principle Deno is best known for.

Deno also rethought how code is loaded and dependencies are managed. Where Node grew the large node_modules directory and a central package registry mediated by npm, Deno was designed to import modules directly from URLs and to fetch and cache them on demand, avoiding a heavyweight per-project dependency tree. It also treats TypeScript as a first-class input, able to run TypeScript files directly without a separate compilation step, and ships much of its standard tooling (formatter, linter, test runner) as part of the runtime itself rather than relying on third-party tools.

Architecturally, Deno keeps Node’s foundation of Google’s V8 JavaScript engine but builds the surrounding runtime in Rust rather than C++, using the Tokio asynchronous runtime for its event loop. This choice reflects both Dahl’s stated preference for Rust’s safety guarantees and the decade of language tooling that had matured since Node was first written in 2009.

Deno did not displace Node, whose vast ecosystem gave it enormous inertia, but it served as an influential critique from Node’s own creator. Several of the ideas Deno championed, including built-in tooling, native TypeScript support, and a more cautious permission model, pushed the wider JavaScript runtime landscape to evolve.