A modern runtime for JavaScript and TypeScript. https://deno.com
  • Rust 59%
  • TypeScript 28.1%
  • JavaScript 11.4%
  • C 1.4%
Find a file
Bartek Iwańczuk 4aeb5bde0e
fix(ext/node): skip ESM load hook bridge for CJS modules (#33861)
## Summary

When `module.registerHooks()` registers load hooks, CJS modules imported
via `import()` would get their hooks called twice — once through the ESM
load hook bridge (Rust side) and once through the sync CJS load hook chain in
`Module._load`. This caused `mustCall(fn, 1)` assertions to fail.

Fix: skip the ESM load hook bridge for CJS modules (detected via file
extension and `cjs_tracker`). CJS modules go through the default loader which
already invokes the sync load hook chain with proper CJS globals (`exports`,
`require`, `module`, `__filename`, `__dirname`).

Also:
- Pass `format` from JS load loop to Rust via
`op_module_hooks_respond_load`
- Add load request deduplication in `LoaderHookRegistry` (same pattern
as resolve dedup)
2026-05-06 08:31:25 +02:00
.cargo ci: fix Windows build (#30816) 2025-09-23 00:31:14 +00:00
.devcontainer feat(ext/fetch): add support for fetch on unix sockets (#29154) 2025-05-13 18:06:17 +02:00
.github ci: run Node compat tests everyday (#33771) 2026-05-01 19:29:04 +00:00
cli fix(ext/node): skip ESM load hook bridge for CJS modules (#33861) 2026-05-06 08:31:25 +02:00
ext fix(ext/node): skip ESM load hook bridge for CJS modules (#33861) 2026-05-06 08:31:25 +02:00
libs perf(libs/core): drop libuv-style partial-read break to fix node:http p99 (#33860) 2026-05-06 00:09:01 +00:00
runtime perf(ext): convert ext/kv and ext/webgpu JS sources to lazy-loaded scripts (#33818) 2026-05-04 12:23:49 +02:00
tests fix(ext/node): skip ESM load hook bridge for CJS modules (#33861) 2026-05-06 08:31:25 +02:00
tools feat: update TypeScript to 6.0.3 (#32944) 2026-05-05 09:40:23 +02:00
.dlint.json chore: enable no-console dlint rule (#25113) 2024-08-20 15:14:37 -04:00
.dprint.json chore: bump dprint-plugin-typescript to 0.96.0, remove deno-fmt-ignore-file (#33839) 2026-05-05 05:34:32 +00:00
.editorconfig chore(tests): Remove vestiges of cli/tests folder (#22712) 2024-03-05 13:49:21 -07:00
.gitattributes chore: move cli/tests/ -> tests/ (#22369) 2024-02-10 20:22:13 +00:00
.gitignore fix(ext/node): implement ECDH validation and DH verifyError (#33751) 2026-05-03 09:13:57 +05:30
.gitmodules ci: add build, test, wpt, and bench jobs (#32158) 2026-02-14 12:31:53 +01:00
.rustfmt.toml chore: update to edition 2024 (#29923) 2025-07-02 17:59:39 -07:00
Cargo.lock perf: monch 0.6 (#33643) 2026-05-03 09:03:29 +00:00
Cargo.toml perf: monch 0.6 (#33643) 2026-05-03 09:03:29 +00:00
CLAUDE.md docs: update Claude instructions (#32818) 2026-03-24 07:31:15 +00:00
flake.lock chore: nix flake for development (#31980) 2026-01-29 23:13:07 +05:30
flake.nix chore: update rusty_v8 hashes in nix flake (#32471) 2026-03-05 10:11:42 +01:00
import_map.json chore: update submodule std version (#30676) 2025-09-11 17:48:32 +09:00
LICENSE.md chore: Happy New Year 2026 (#31748) 2026-01-08 16:28:43 +01:00
README.md docs: Added Scoop to Installation section (#31817) 2026-01-19 18:43:55 +00:00
Releases.md 2.7.14 (#33639) 2026-04-28 14:41:38 +02:00
rust-toolchain.toml chore: upgrade Rust to 1.92 (#31592) 2025-12-17 17:06:52 +01:00
x chore(x): improve developer CLI with help, structure, and test filters (#32665) 2026-03-12 17:16:59 +01:00

Deno

Twitter badge Bluesky badge Discord badge YouTube badge

the deno mascot dinosaur standing in the rain

Deno (/ˈdiːnoʊ/, pronounced dee-no) is a JavaScript, TypeScript, and WebAssembly runtime with secure defaults and a great developer experience. It's built on V8, Rust, and Tokio.

Learn more about the Deno runtime in the documentation.

Installation

Install the Deno runtime on your system using one of the commands below. Note that there are a number of ways to install Deno - a comprehensive list of installation options can be found here.

Shell (Mac, Linux):

curl -fsSL https://deno.land/install.sh | sh

PowerShell (Windows):

irm https://deno.land/install.ps1 | iex

Homebrew (Mac):

brew install deno

Chocolatey (Windows):

choco install deno

WinGet (Windows):

winget install --id=DenoLand.Deno

Scoop (Windows):

scoop install main/deno

Build and install from source

Complete instructions for building Deno from source can be found here.

Your first Deno program

Deno can be used for many different applications, but is most commonly used to build web servers. Create a file called server.ts and include the following TypeScript code:

Deno.serve((_req: Request) => {
  return new Response("Hello, world!");
});

Run your server with the following command:

deno run --allow-net server.ts

This should start a local web server on http://localhost:8000.

Learn more about writing and running Deno programs in the docs.

Additional resources

  • Deno Docs: official guides and reference docs for the Deno runtime, Deno Deploy, and beyond.
  • Deno Standard Library: officially supported common utilities for Deno programs.
  • JSR: The open-source package registry for modern JavaScript and TypeScript
  • Developer Blog: Product updates, tutorials, and more from the Deno team.

Contributing

We appreciate your help! To contribute, please read our contributing instructions.