Execution ABI and targets
Every dk build runs under an execution ABI that names the host it runs on, and
resolves objects for a target ABI. Because dkjs always runs on Node.js, its
execution ABI is always js_nodejs, with an operating-system value of JS and an
OS family of js. dkjs does not probe the machine underneath Node: it never
resolves native per-ABI artifacts, so the host CPU and operating system do not
change how it runs.
A build targets js_nodejs by default, or js_web (set with --target-abi) to
produce web-bundler output. Native target ABIs are not available yet (see
Scope).
A build targeting js_web runs with a target ABI other than its js_nodejs
execution ABI, which makes it a cross run for publishing purposes. A
dkjs distribute from such a build publishes the objects whose slot a literal
execution_slot named, and withholds the objects whose slot came from the
execution_abi wildcard, since those are js_nodejs slots that a build
targeting js_nodejs publishes. See
Object Slots for the rule.