JavaScript is portable; runtimes are not. What ties a runtime to its engine is everything it asks for beyond the language: who owns a value and for how long, how native code gets called, what a module is, what a snapshot captures. deno_core asks for all of it through rusty_v8, and v8x answers with a different engine underneath. One page per obligation:
The pages read best in order. Each one links to the next.