1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-12-22 15:24:46 -05:00
denoland-deno/runtime/js
Luca Casonato e511022c74
feat(ext/node): properly segregate node globals (#19307)
Code run within Deno-mode and Node-mode should have access to a
slightly different set of globals. Previously this was done through a
compile time code-transform for Node-mode, but this is not ideal and has
many edge cases, for example Node's globalThis having a different
identity than Deno's globalThis.

This commit makes the `globalThis` of the entire runtime a semi-proxy.
This proxy returns a different set of globals depending on the caller's
mode. This is not a full proxy, because it is shadowed by "real"
properties on globalThis. This is done to avoid the overhead of a full
proxy for all globalThis operations.

The globals between Deno-mode and Node-mode are now properly segregated.
This means that code running in Deno-mode will not have access to Node's
globals, and vice versa. Deleting a managed global in Deno-mode will
NOT delete the corresponding global in Node-mode, and vice versa.

---------

Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com>
Co-authored-by: Aapo Alasuutari <aapo.alasuutari@gmail.com>
2023-07-19 10:30:04 +02:00
..
01_errors.js feat: add more Deno.errors classes (#19514) 2023-06-29 01:46:16 +02:00
01_version.ts refactor: internal runtime code TS support (#17672) 2023-02-08 22:40:18 +01:00
06_util.js feat(runtime): add WorkerLogLevel (#19316) 2023-05-30 15:34:50 +00:00
10_permissions.js fix(core): Use safe primordials wrappers (#18687) 2023-04-14 22:23:28 +02:00
11_workers.js fix(core): Use primordials for methods (#18839) 2023-05-01 15:30:02 +02:00
13_buffer.js chore: Turn back on dlintPreferPrimordials (#17715) 2023-04-02 19:41:41 +02:00
30_os.js fix(core): Use primordials for methods (#18839) 2023-05-01 15:30:02 +02:00
40_fs_events.js refactor: Use ES modules for internal runtime code (#17648) 2023-02-07 20:22:46 +01:00
40_http.js refactor: rename InternalModuleLoader to ExtModuleLoader, use ext: scheme for snapshotted modules (#18041) 2023-03-08 12:44:54 +01:00
40_process.js fix(runtime): ChildProcess::kill() doesn't require additional perms (#15339) 2023-05-11 14:53:45 +02:00
40_signals.js fix(core): Use safe primordials wrappers (#18687) 2023-04-14 22:23:28 +02:00
40_tty.js refactor: Use ES modules for internal runtime code (#17648) 2023-02-07 20:22:46 +01:00
41_prompt.js chore: restore pty tests and make them run on the Linux CI (#18424) 2023-03-28 21:49:00 +00:00
90_deno_ns.js fix(tsc): more informative diagnostic when Deno does not exist (#19825) 2023-07-13 23:29:51 +00:00
98_global_scope.js refactor: remove ext/console/01_colors.js (#18927) 2023-04-30 09:11:37 +00:00
99_main.js feat(ext/node): properly segregate node globals (#19307) 2023-07-19 10:30:04 +02:00
README.md feat: add --location=<href> and globalThis.location (#7369) 2021-01-07 19:06:08 +01:00

Runtime JavaScript Code

This directory contains Deno runtime code written in plain JavaScript.

Each file is a plain, old script, not ES modules. The reason is that snapshotting ES modules is much harder, especially if one needs to manipulate global scope (like in case of Deno).

Each file is prefixed with a number, telling in which order scripts should be loaded into V8 isolate. This is temporary solution and we're striving not to require specific order (though it's not 100% obvious if that's feasible).

Deno Web APIs

This directory facilities Web APIs that are available in Deno.

Please note, that some implementations might not be completely aligned with specification.

Some Web APIs are using ops under the hood, eg. console, performance.

Implemented Web APIs