Introduction
It’s built on V8, Rust, and Tokio.
- Provides web platform functionality and
adopts web platform standards. For example using ES modules, web workers, and
support
fetch()
. - Secure by default. No file, network, or environment access unless explicitly enabled.
- Supports out of the box.
- Ships a single executable (
deno
). - Has a set of reviewed (audited) standard modules that are guaranteed to work with Deno.
- Can scripts into a single JavaScript file or executable.
Deno will always be distributed as a single executable. Given a URL to a Deno program, it is runnable with nothing more than . Deno explicitly takes on the role of both runtime and package manager. It uses a standard browser-compatible protocol for loading modules: URLs.
- Ship as just a single executable (
deno
). - Provide secure defaults.
- Unless specifically allowed, scripts can’t access files, the environment, or the network.
- Be browser-compatible.
- The subset of Deno programs which are written completely in JavaScript and
do not use the global
Deno
namespace (or feature test for it), ought to also be able to be run in a modern web browser without change.
- The subset of Deno programs which are written completely in JavaScript and
do not use the global
- Provide built-in tooling to improve developer experience.
- E.g. unit testing, code formatting, and linting.
- Serve HTTP efficiently.
- Deno does not use .
- It uses modules referenced as URLs or file paths.
- Deno does not use
package.json
in its module resolution algorithm. - All async actions in Deno return a promise. Thus Deno provides different APIs than Node.
- Deno requires explicit permissions for file, network, and environment access.
- Deno always dies on uncaught errors.
Deno uses “ES Modules” and does not support
require()
. Third party modules are imported via URLs:
- Fetch and cache remote code upon first execution, and never update it until
the code is run with the
--reload
flag. (So, this will still work on an airplane.)