Open-Source Wikis

/

Deno

/

Deno

denoland/deno

Deno

Deno is a JavaScript, TypeScript, and WebAssembly runtime built on V8, Rust, and Tokio. Compared to Node.js, it ships secure-by-default permissions, native TypeScript support, a built-in standard tool belt (formatter, linter, test runner, LSP), and direct support for both npm: and jsr: module specifiers.

This wiki documents the contents of the denoland/deno repository: the deno CLI binary, the deno_runtime crate that assembles the JavaScript runtime, the 30+ extension crates that expose native capabilities to JS, and the surrounding library crates and test infrastructure.

What is in this repo

The repository is a Cargo workspace with roughly 70 member crates plus a large amount of JavaScript/TypeScript that is bundled into the binary as snapshots. The high-level layout is:

Path Purpose
cli/ The deno binary: flag parsing, subcommands, LSP, module loading, type checking, npm/jsr integration
runtime/ The deno_runtime crate: assembles the JS runtime, registers extensions, drives main and web workers
ext/ 30+ extension crates that expose native functionality to JS (fs, net, web, node, webgpu, etc.)
libs/ Reusable Rust crates published independently (deno_core, deno_resolver, deno_npm, eszip, deno_lockfile, …)
tests/ Integration ("spec") tests, unit tests, Node compatibility tests, WPT, fixtures
tools/ JS-based developer tools: format.js, lint.js, custom lint plugins, release helpers

A more detailed map of which directory does what lives in Architecture, and the Glossary defines project-specific terms (ops, extensions, workers, etc.).

Where to start

  • I just want to run Deno — see the README or the official docs.deno.com.
  • I want to build from source — read Getting started. Deno requires Rust, cmake, protobuf, and a recursive submodule clone.
  • I want to contribute code — read How to contribute. The ./x developer CLI wraps the common build/test/lint flows.
  • I want to understand the architecture — read Architecture, then drill into Systems, Extensions, and Packages.
  • I want to know how a specific feature works — start with Features, which covers npm support, JSR support, Node compatibility, the permission model, single-file deno compile, and more.

Project facts

  • Language mix. ~504K lines of Rust, ~268K lines of JavaScript (extension code and Node polyfills), ~188K lines of TypeScript (LSP server code, type definitions, and tests). See By the numbers for the full breakdown.
  • History. First commit May 2018, v1.0 May 2020, v2.0 October 2024, currently on the v2.7.x line. Roughly 16,000 commits total. See Lore.
  • Top-level binary. The CLI entry point is cli/main.rs, which calls deno::main() in cli/lib.rs:1. Subcommand routing is in run_subcommand in the same file.
  • Permission model. All filesystem, network, environment, and FFI access goes through deno_permissions (runtime/permissions/lib.rs). The default is no permissions; callers must opt in via --allow-* flags or explicit prompts.
  • Module resolution. Both cli/module_loader.rs (1,668 lines) and libs/resolver participate. npm: specifiers go through libs/npm + libs/npm_installer; jsr: specifiers go through cli/jsr.rs.

Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.

Deno – Deno wiki | Factory