diff options
author | Matt Mastracci <matthew@mastracci.com> | 2023-08-15 13:36:36 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-08-16 04:36:36 +0900 |
commit | 4380a09a0598c73aa434e2f0f3a34555e0bd55cb (patch) | |
tree | 671bba82325653ed188efb49e099c4d61ec318cc /runtime/worker.rs | |
parent | 41cad2179fb36c2371ab84ce587d3460af64b5fb (diff) |
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
Diffstat (limited to 'runtime/worker.rs')
-rw-r--r-- | runtime/worker.rs | 14 |
1 files changed, 1 insertions, 13 deletions
diff --git a/runtime/worker.rs b/runtime/worker.rs index 060f5537b..5eefd5fa8 100644 --- a/runtime/worker.rs +++ b/runtime/worker.rs @@ -178,8 +178,6 @@ pub struct WorkerOptions { pub npm_resolver: Option<Arc<dyn deno_node::NpmResolver>>, // Callbacks invoked when creating new instance of WebWorker pub create_web_worker_cb: Arc<ops::worker_host::CreateWebWorkerCb>, - pub web_worker_preload_module_cb: Arc<ops::worker_host::WorkerEventCb>, - pub web_worker_pre_execute_module_cb: Arc<ops::worker_host::WorkerEventCb>, pub format_js_error_fn: Option<Arc<FormatJsErrorFn>>, /// Source map reference for errors. @@ -221,12 +219,6 @@ pub struct WorkerOptions { impl Default for WorkerOptions { fn default() -> Self { Self { - web_worker_preload_module_cb: Arc::new(|_| { - unimplemented!("web workers are not supported") - }), - web_worker_pre_execute_module_cb: Arc::new(|_| { - unimplemented!("web workers are not supported") - }), create_web_worker_cb: Arc::new(|_| { unimplemented!("web workers are not supported") }), @@ -362,8 +354,6 @@ impl MainWorker { ops::runtime::deno_runtime::init_ops_and_esm(main_module.clone()), ops::worker_host::deno_worker_host::init_ops_and_esm( options.create_web_worker_cb.clone(), - options.web_worker_preload_module_cb.clone(), - options.web_worker_pre_execute_module_cb.clone(), options.format_js_error_fn.clone(), ), ops::fs_events::deno_fs_events::init_ops_and_esm(), @@ -478,9 +468,7 @@ impl MainWorker { let bootstrap_fn = self.bootstrap_fn_global.take().unwrap(); let bootstrap_fn = v8::Local::new(scope, bootstrap_fn); let undefined = v8::undefined(scope); - bootstrap_fn - .call(scope, undefined.into(), &[args.into()]) - .unwrap(); + bootstrap_fn.call(scope, undefined.into(), &[args]).unwrap(); } /// See [JsRuntime::execute_script](deno_core::JsRuntime::execute_script) |