1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-11-28 16:20:57 -05:00
denoland-deno/runtime/js
Matt Mastracci 4380a09a05
feat(ext/node): eagerly bootstrap node (#20153)
To fix bugs around detection of when node emulation is required, we will
just eagerly initialize it. The improvements we make to reduce the
impact of the startup time:

 - [x] Process stdin/stdout/stderr are lazily created
 - [x] node.js global proxy no longer allocates on each access check
- [x] Process checks for `beforeExit` listeners before doing expensive
shutdown work
- [x] Process should avoid adding global event handlers until listeners
are added

Benchmarking this PR (`89de7e1ff`) vs main (`41cad2179`)

```
12:36 $ third_party/prebuilt/mac/hyperfine --warmup 100 -S none './deno-41cad2179 run ./empty.js' './deno-89de7e1ff run ./empty.js'
Benchmark 1: ./deno-41cad2179 run ./empty.js
  Time (mean ± σ):      24.3 ms ±   1.6 ms    [User: 16.2 ms, System: 6.0 ms]
  Range (min … max):    21.1 ms …  29.1 ms    115 runs
 
Benchmark 2: ./deno-89de7e1ff run ./empty.js
  Time (mean ± σ):      24.0 ms ±   1.4 ms    [User: 16.3 ms, System: 5.6 ms]
  Range (min … max):    21.3 ms …  28.6 ms    126 runs
```

Fixes https://github.com/denoland/deno/issues/20142
Fixes https://github.com/denoland/deno/issues/15826
Fixes https://github.com/denoland/deno/issues/20028
2023-08-16 04:36:36 +09: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 feat(permissions): add "--deny-*" flags (#19070) 2023-08-03 13:19:19 +02:00
11_workers.js fix: call setIsTrusted for generated events (MessageEvent) (#19919) 2023-07-31 23:22:07 +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 fix(runtime): navigator.userAgent in web worker (#20129) 2023-08-15 17:04:36 +02:00
99_main.js feat(ext/node): eagerly bootstrap node (#20153) 2023-08-16 04:36:36 +09: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