d8 (source code)

= d8
{c}

<d8> is <V8>'s developer shell for running <JavaScript> programs and investigating engine behavior. It supplies a small host environment around the engine, with facilities for output, loading files and passing arguments.<Using d8 in the V8 documentation>[Opening description; Print to the command line; Pass flags into JavaScript]{ref}

For example, a file named `sum.js` can contain `console.log([1, 2, 3].reduce((a, b) => a + b, 0));`. Running `d8 sum.js` prints `6`. The array reduction and addition follow <ECMAScript> semantics, while `console.log` is an output facility supplied by the environment.

The distinction also appears in arguments. The documentation places arguments after `--` and exposes them through a top-level `arguments` array. A script that prints `arguments[0]` can therefore inspect a supplied value. This is a shell convention, not a rule that every <JavaScript> host passes arguments through that same global object.<Using d8 in the V8 documentation>[Pass flags into JavaScript, argument separator and arguments object]{ref}

<d8> also documents `read` for reading file content and `load` for executing another script in the current context. Those host operations are different from merely evaluating an arithmetic expression, even though both are invoked with JavaScript syntax.<Using d8 in the V8 documentation>[Read input; Load external scripts]{ref}

A developer shell is useful for separating an engine computation from a larger application. A <web browser> additionally supplies document and interaction machinery; the presence of V8 alone does not imply a <Document Object Model>. When using shell observations as performance evidence, record the engine version, flags, workload and measurement method rather than treating one printed result as a benchmark.