summaryrefslogtreecommitdiff
path: root/cli
diff options
context:
space:
mode:
authorBartek Iwańczuk <biwanczuk@gmail.com>2023-06-14 00:36:16 +0200
committerGitHub <noreply@github.com>2023-06-13 22:36:16 +0000
commit60bf79c18410fd332b6b9b7c222e6d3d62bfe3f8 (patch)
tree070934eb82d906ee341d1ad4d1390f0b75860529 /cli
parent82dd90f98d6817caadcb9b6bd81aba80b2ee848d (diff)
Revert "refactor(core): cleanup feature flags for js source inclusion… (#19490)
… (#19463)" This reverts commit ceb03cfb037cf7024a5048b17b508ddda59cfa05. This is being reverted because it causes 3.5Mb increase in the binary size, due to runtime JS code being included in the binary, even though it's already snapshotted. CC @nayeemrmn
Diffstat (limited to 'cli')
-rw-r--r--cli/Cargo.toml8
-rw-r--r--cli/build.rs64
-rw-r--r--cli/lsp/tsc.rs2
-rw-r--r--cli/ops/mod.rs2
-rw-r--r--cli/tools/bench.rs2
-rw-r--r--cli/tools/test.rs2
-rw-r--r--cli/tsc/mod.rs4
7 files changed, 49 insertions, 35 deletions
diff --git a/cli/Cargo.toml b/cli/Cargo.toml
index 41194bfcd..fe9f35844 100644
--- a/cli/Cargo.toml
+++ b/cli/Cargo.toml
@@ -27,8 +27,8 @@ harness = false
path = "./bench/lsp_bench_standalone.rs"
[build-dependencies]
-deno_runtime = { workspace = true, features = ["exclude_js_main_from_snapshot"] }
-deno_core.workspace = true
+deno_runtime = { workspace = true, features = ["snapshot_from_snapshot", "include_js_files_for_snapshotting"] }
+deno_core = { workspace = true, features = ["include_js_files_for_snapshotting"] }
lazy-regex.workspace = true
serde.workspace = true
serde_json.workspace = true
@@ -41,14 +41,14 @@ winres.workspace = true
[dependencies]
deno_ast = { workspace = true, features = ["bundler", "cjs", "codegen", "dep_graph", "module_specifier", "proposal", "react", "sourcemap", "transforms", "typescript", "view", "visit"] }
-deno_core = { workspace = true, features = ["exclude_js_sources"] }
+deno_core = { workspace = true, features = ["include_js_files_for_snapshotting"] }
deno_doc = "=0.63.1"
deno_emit = "=0.24.0"
deno_graph = "=0.49.0"
deno_lint = { version = "=0.47.0", features = ["docs"] }
deno_lockfile.workspace = true
deno_npm.workspace = true
-deno_runtime = { workspace = true, features = ["dont_create_runtime_snapshot"] }
+deno_runtime = { workspace = true, features = ["dont_create_runtime_snapshot", "include_js_files_for_snapshotting"] }
deno_semver.workspace = true
deno_task_shell = "=0.12.0"
eszip = "=0.44.0"
diff --git a/cli/build.rs b/cli/build.rs
index 77e0ee1de..5ff86fa20 100644
--- a/cli/build.rs
+++ b/cli/build.rs
@@ -7,6 +7,7 @@ use std::sync::Arc;
use deno_core::snapshot_util::*;
use deno_core::Extension;
use deno_core::ExtensionFileSource;
+use deno_core::ExtensionFileSourceCode;
use deno_runtime::deno_cache::SqliteBackedCache;
use deno_runtime::deno_http::DefaultHttpPropertyExtractor;
use deno_runtime::deno_kv::sqlite::SqliteDbHandler;
@@ -261,11 +262,15 @@ mod ts {
)
.unwrap();
- create_snapshot(CreateSnapshotOptions {
+ let output = create_snapshot(CreateSnapshotOptions {
cargo_manifest_dir: env!("CARGO_MANIFEST_DIR"),
snapshot_path,
startup_snapshot: None,
- extensions: vec![deno_tsc::init(op_crate_libs, build_libs, path_dts)],
+ extensions: vec![deno_tsc::init_ops_and_esm(
+ op_crate_libs,
+ build_libs,
+ path_dts,
+ )],
// NOTE(bartlomieju): Compressing the TSC snapshot in debug build took
// ~45s on M1 MacBook Pro; without compression it took ~1s.
@@ -284,6 +289,9 @@ mod ts {
})),
snapshot_module_load_cb: None,
});
+ for path in output.files_loaded_during_snapshot {
+ println!("cargo:rerun-if-changed={}", path.display());
+ }
}
pub(crate) fn version() -> String {
@@ -314,52 +322,55 @@ deno_core::extension!(
customizer = |ext: &mut deno_core::ExtensionBuilder| {
ext.esm(vec![ExtensionFileSource {
specifier: "ext:cli/runtime/js/99_main.js",
- code: include_str!("../runtime/js/99_main.js"),
+ code: ExtensionFileSourceCode::LoadedFromFsDuringSnapshot(
+ std::path::PathBuf::from(deno_runtime::js::PATH_FOR_99_MAIN_JS),
+ ),
}]);
}
);
-fn create_cli_snapshot(snapshot_path: PathBuf) {
+#[must_use = "The files listed by create_cli_snapshot should be printed as 'cargo:rerun-if-changed' lines"]
+fn create_cli_snapshot(snapshot_path: PathBuf) -> CreateSnapshotOutput {
// NOTE(bartlomieju): ordering is important here, keep it in sync with
// `runtime/worker.rs`, `runtime/web_worker.rs` and `runtime/build.rs`!
let fs = Arc::new(deno_fs::RealFs);
let extensions: Vec<Extension> = vec![
- deno_webidl::deno_webidl::init(),
- deno_console::deno_console::init(),
- deno_url::deno_url::init(),
- deno_web::deno_web::init::<PermissionsContainer>(
+ deno_webidl::deno_webidl::init_ops(),
+ deno_console::deno_console::init_ops(),
+ deno_url::deno_url::init_ops(),
+ deno_web::deno_web::init_ops::<PermissionsContainer>(
deno_web::BlobStore::default(),
Default::default(),
),
- deno_fetch::deno_fetch::init::<PermissionsContainer>(Default::default()),
- deno_cache::deno_cache::init::<SqliteBackedCache>(None),
- deno_websocket::deno_websocket::init::<PermissionsContainer>(
+ deno_fetch::deno_fetch::init_ops::<PermissionsContainer>(Default::default()),
+ deno_cache::deno_cache::init_ops::<SqliteBackedCache>(None),
+ deno_websocket::deno_websocket::init_ops::<PermissionsContainer>(
"".to_owned(),
None,
None,
),
- deno_webstorage::deno_webstorage::init(None),
- deno_crypto::deno_crypto::init(None),
- deno_broadcast_channel::deno_broadcast_channel::init(
+ deno_webstorage::deno_webstorage::init_ops(None),
+ deno_crypto::deno_crypto::init_ops(None),
+ deno_broadcast_channel::deno_broadcast_channel::init_ops(
deno_broadcast_channel::InMemoryBroadcastChannel::default(),
false, // No --unstable.
),
- deno_ffi::deno_ffi::init::<PermissionsContainer>(false),
- deno_net::deno_net::init::<PermissionsContainer>(
+ deno_ffi::deno_ffi::init_ops::<PermissionsContainer>(false),
+ deno_net::deno_net::init_ops::<PermissionsContainer>(
None, false, // No --unstable.
None,
),
- deno_tls::deno_tls::init(),
- deno_kv::deno_kv::init(
+ deno_tls::deno_tls::init_ops(),
+ deno_kv::deno_kv::init_ops(
SqliteDbHandler::<PermissionsContainer>::new(None),
false, // No --unstable.
),
- deno_napi::deno_napi::init::<PermissionsContainer>(),
- deno_http::deno_http::init::<DefaultHttpPropertyExtractor>(),
- deno_io::deno_io::init(Default::default()),
- deno_fs::deno_fs::init::<PermissionsContainer>(false, fs.clone()),
- deno_node::deno_node::init::<PermissionsContainer>(None, fs),
- cli::init(),
+ deno_napi::deno_napi::init_ops::<PermissionsContainer>(),
+ deno_http::deno_http::init_ops::<DefaultHttpPropertyExtractor>(),
+ deno_io::deno_io::init_ops(Default::default()),
+ deno_fs::deno_fs::init_ops::<PermissionsContainer>(false, fs.clone()),
+ deno_node::deno_node::init_ops::<PermissionsContainer>(None, fs),
+ cli::init_ops_and_esm(), // NOTE: This needs to be init_ops_and_esm!
];
create_snapshot(CreateSnapshotOptions {
@@ -474,7 +485,10 @@ fn main() {
ts::create_compiler_snapshot(compiler_snapshot_path, &c);
let cli_snapshot_path = o.join("CLI_SNAPSHOT.bin");
- create_cli_snapshot(cli_snapshot_path);
+ let output = create_cli_snapshot(cli_snapshot_path);
+ for path in output.files_loaded_during_snapshot {
+ println!("cargo:rerun-if-changed={}", path.display())
+ }
#[cfg(target_os = "windows")]
{
diff --git a/cli/lsp/tsc.rs b/cli/lsp/tsc.rs
index 4c26abdc1..66687789b 100644
--- a/cli/lsp/tsc.rs
+++ b/cli/lsp/tsc.rs
@@ -3236,7 +3236,7 @@ fn op_script_version(
/// server.
fn js_runtime(performance: Arc<Performance>) -> JsRuntime {
JsRuntime::new(RuntimeOptions {
- extensions: vec![deno_tsc::init(performance)],
+ extensions: vec![deno_tsc::init_ops(performance)],
startup_snapshot: Some(tsc::compiler_snapshot()),
..Default::default()
})
diff --git a/cli/ops/mod.rs b/cli/ops/mod.rs
index d0d668bfb..5066c44b9 100644
--- a/cli/ops/mod.rs
+++ b/cli/ops/mod.rs
@@ -12,7 +12,7 @@ pub mod bench;
pub mod testing;
pub fn cli_exts(npm_resolver: Arc<CliNpmResolver>) -> Vec<Extension> {
- vec![deno_cli::init(npm_resolver)]
+ vec![deno_cli::init_ops(npm_resolver)]
}
deno_core::extension!(deno_cli,
diff --git a/cli/tools/bench.rs b/cli/tools/bench.rs
index 4e7e90ba7..a7b75d8be 100644
--- a/cli/tools/bench.rs
+++ b/cli/tools/bench.rs
@@ -447,7 +447,7 @@ async fn bench_specifier(
.create_custom_worker(
specifier.clone(),
PermissionsContainer::new(permissions),
- vec![ops::bench::deno_bench::init(sender.clone())],
+ vec![ops::bench::deno_bench::init_ops(sender.clone())],
Default::default(),
)
.await?;
diff --git a/cli/tools/test.rs b/cli/tools/test.rs
index 6181ebac0..6f32d69e4 100644
--- a/cli/tools/test.rs
+++ b/cli/tools/test.rs
@@ -935,7 +935,7 @@ pub async fn test_specifier(
.create_custom_worker(
specifier.clone(),
PermissionsContainer::new(permissions),
- vec![ops::testing::deno_test::init(sender.clone())],
+ vec![ops::testing::deno_test::init_ops(sender.clone())],
Stdio {
stdin: StdioPipe::Inherit,
stdout,
diff --git a/cli/tsc/mod.rs b/cli/tsc/mod.rs
index edc64e8ef..a4d6640f7 100644
--- a/cli/tsc/mod.rs
+++ b/cli/tsc/mod.rs
@@ -122,7 +122,7 @@ fn get_asset_texts_from_new_runtime() -> Result<Vec<AssetText>, AnyError> {
// the assets are stored within the typescript isolate, so take them out of there
let mut runtime = JsRuntime::new(RuntimeOptions {
startup_snapshot: Some(compiler_snapshot()),
- extensions: vec![deno_cli_tsc::init()],
+ extensions: vec![deno_cli_tsc::init_ops()],
..Default::default()
});
let global = runtime
@@ -787,7 +787,7 @@ pub fn exec(request: Request) -> Result<Response, AnyError> {
let mut runtime = JsRuntime::new(RuntimeOptions {
startup_snapshot: Some(compiler_snapshot()),
- extensions: vec![deno_cli_tsc::init(
+ extensions: vec![deno_cli_tsc::init_ops(
request,
root_map,
remapped_specifiers,