Callgraph Analysis Report
Blocking calls detected inside async fn bodies across all crates.
Generated: 2026-05-06 00:38 UTC
Summary: 81 finding(s) across 11 crate(s).
agent_servers — 2 finding(s)
warning[blocking-in-async]: blocking call in async context
┌─ /home/mrg/zed/crates/agent_servers/src/e2e_tests.rs:59:5
│
59 │ std::fs::write(
│ ^^^^^^^^^^^^^^ `std::fs::write` is a blocking filesystem operation
│
= help: use an async fs API or wrap in `smol::unblock`
= context: async fn `test_path_mentions`
warning[blocking-in-async]: blocking call in async context
┌─ /home/mrg/zed/crates/agent_servers/src/e2e_tests.rs:118:5
│
118 │ std::fs::write(&foo_path, "Lorem ipsum dolor").expect("failed to write file");
│ ^^^^^^^^^^^^^^ `std::fs::write` is a blocking filesystem operation
│
= help: use an async fs API or wrap in `smol::unblock`
= context: async fn `test_tool_call`
collab — 2 finding(s)
warning[blocking-in-async]: blocking call in async context
┌─ /home/mrg/zed/crates/collab/src/main.rs:76:28
│
76 │ let listener = TcpListener::bind(format!("0.0.0.0:{}", config.http_port))
│ ^^^^^^^^^^^^^^^^^ `std::net::TcpListener::bind` is a blocking network operation
│
= help: use an async networking library
= context: async fn `main`
warning[blocking-in-async]: blocking call in async context
┌─ /home/mrg/zed/crates/collab/src/seed.rs:94:31
│
94 │ serde_json::from_str(&fs::read_to_string(github_users_filepath)?)?;
│ ^^^^^^^^^^^^^^^^^^ `std::fs::read_to_string` is a blocking filesystem operation
│
= help: use an async fs API or wrap in `smol::unblock`
= context: async fn `seed`
dap_adapters — 3 finding(s)
warning[blocking-in-async]: blocking call in async context
┌─ /home/mrg/zed/crates/dap_adapters/src/python.rs:121:9
│
121 │ std::fs::create_dir_all(&download_dir)?;
│ ^^^^^^^^^^^^^^^^^^^^^^^ `std::fs::create_dir_all` is a blocking filesystem operation
│
= help: use an async fs API or wrap in `smol::unblock`
= context: async fn `fetch_wheel`
warning[blocking-in-async]: blocking call in async context
┌─ /home/mrg/zed/crates/dap_adapters/src/python.rs:143:26
│
143 │ let wheel_path = std::fs::read_dir(&download_dir)?
│ ^^^^^^^^^^^^^^^^^ `std::fs::read_dir` is a blocking filesystem operation
│
= help: use an async fs API or wrap in `smol::unblock`
= context: async fn `fetch_wheel`
warning[blocking-in-async]: blocking call in async context
┌─ /home/mrg/zed/crates/dap_adapters/src/python.rs:180:9
│
180 │ std::fs::create_dir_all(&download_dir)?;
│ ^^^^^^^^^^^^^^^^^^^^^^^ `std::fs::create_dir_all` is a blocking filesystem operation
│
= help: use an async fs API or wrap in `smol::unblock`
= context: async fn `maybe_fetch_new_wheel`
edit_prediction_cli — 18 finding(s)
warning[blocking-in-async]: blocking call in async context
┌─ /home/mrg/zed/crates/edit_prediction_cli/src/synthesize.rs:107:5
│
107 │ std::fs::create_dir_all(&config.output_dir)?;
│ ^^^^^^^^^^^^^^^^^^^^^^^ `std::fs::create_dir_all` is a blocking filesystem operation
│
= help: use an async fs API or wrap in `smol::unblock`
= context: async fn `run_synthesize`
warning[blocking-in-async]: blocking call in async context
┌─ /home/mrg/zed/crates/edit_prediction_cli/src/synthesize.rs:108:5
│
108 │ std::fs::create_dir_all(&*FAILED_EXAMPLES_DIR)?;
│ ^^^^^^^^^^^^^^^^^^^^^^^ `std::fs::create_dir_all` is a blocking filesystem operation
│
= help: use an async fs API or wrap in `smol::unblock`
= context: async fn `run_synthesize`
warning[blocking-in-async]: blocking call in async context
┌─ /home/mrg/zed/crates/edit_prediction_cli/src/synthesize.rs:112:9
│
112 │ std::fs::remove_file(&*LATEST_FAILED_EXAMPLES_DIR)?;
│ ^^^^^^^^^^^^^^^^^^^^ `std::fs::remove_file` is a blocking filesystem operation
│
= help: use an async fs API or wrap in `smol::unblock`
= context: async fn `run_synthesize`
warning[blocking-in-async]: blocking call in async context
┌─ /home/mrg/zed/crates/edit_prediction_cli/src/synthesize.rs:240:21
│
240 │ std::fs::write(&path, spec.to_markdown())?;
│ ^^^^^^^^^^^^^^ `std::fs::write` is a blocking filesystem operation
│
= help: use an async fs API or wrap in `smol::unblock`
= context: async fn `synthesize_repo`
warning[blocking-in-async]: blocking call in async context
┌─ /home/mrg/zed/crates/edit_prediction_cli/src/synthesize.rs:250:37
│
250 │ if let Err(e) = std::fs::write(&path, content) {
│ ^^^^^^^^^^^^^^ `std::fs::write` is a blocking filesystem operation
│
= help: use an async fs API or wrap in `smol::unblock`
= context: async fn `synthesize_repo`
warning[blocking-in-async]: blocking call in async context
┌─ /home/mrg/zed/crates/edit_prediction_cli/src/predict.rs:200:29
│
200 │ fs::write(run_dir.join("prediction_prompt.md"), &prompt)?;
│ ^^^^^^^^^ `std::fs::write` is a blocking filesystem operation
│
= help: use an async fs API or wrap in `smol::unblock`
= context: async fn `run_prediction`
warning[blocking-in-async]: blocking call in async context
┌─ /home/mrg/zed/crates/edit_prediction_cli/src/predict.rs:216:29
│
216 │ fs::write(run_dir.join("prediction_response.md"), &output)?;
│ ^^^^^^^^^ `std::fs::write` is a blocking filesystem operation
│
= help: use an async fs API or wrap in `smol::unblock`
= context: async fn `run_prediction`
warning[blocking-in-async]: blocking call in async context
┌─ /home/mrg/zed/crates/edit_prediction_cli/src/predict.rs:252:9
│
252 │ fs::create_dir_all(&run_dir)?;
│ ^^^^^^^^^^^^^^^^^^ `std::fs::create_dir_all` is a blocking filesystem operation
│
= help: use an async fs API or wrap in `smol::unblock`
= context: async fn `run_prediction`
warning[blocking-in-async]: blocking call in async context
┌─ /home/mrg/zed/crates/edit_prediction_cli/src/predict.rs:254:13
│
254 │ fs::remove_file(&*LATEST_EXAMPLE_RUN_DIR)?;
│ ^^^^^^^^^^^^^^^ `std::fs::remove_file` is a blocking filesystem operation
│
= help: use an async fs API or wrap in `smol::unblock`
= context: async fn `run_prediction`
warning[blocking-in-async]: blocking call in async context
┌─ /home/mrg/zed/crates/edit_prediction_cli/src/predict.rs:761:9
│
761 │ std::thread::sleep(poll_interval);
│ ^^^^^^^^^^^^^^^^^^ `std::thread::sleep` is a blocking thread operation
│
= help: use `cx.background_executor().timer(duration).await`
= context: async fn `wait_for_batches`
warning[blocking-in-async]: blocking call in async context
┌─ /home/mrg/zed/crates/edit_prediction_cli/src/git.rs:80:13
│
80 │ std::fs::remove_dir_all(&repo_path).ok();
│ ^^^^^^^^^^^^^^^^^^^^^^^ `std::fs::remove_dir_all` is a blocking filesystem operation
│
= help: use an async fs API or wrap in `smol::unblock`
= context: async fn `ensure_repo_cloned`
warning[blocking-in-async]: blocking call in async context
┌─ /home/mrg/zed/crates/edit_prediction_cli/src/git.rs:86:9
│
86 │ std::fs::create_dir_all(&repo_path)?;
│ ^^^^^^^^^^^^^^^^^^^^^^^ `std::fs::create_dir_all` is a blocking filesystem operation
│
= help: use an async fs API or wrap in `smol::unblock`
= context: async fn `ensure_repo_cloned`
warning[blocking-in-async]: blocking call in async context
┌─ /home/mrg/zed/crates/edit_prediction_cli/src/load_project.rs:277:13
│
277 │ fs::remove_file(&worktree_lock_path).ok();
│ ^^^^^^^^^^^^^^^ `std::fs::remove_file` is a blocking filesystem operation
│
= help: use an async fs API or wrap in `smol::unblock`
= context: async fn `setup_worktree`
warning[blocking-in-async]: blocking call in async context
┌─ /home/mrg/zed/crates/edit_prediction_cli/src/load_project.rs:280:13
│
280 │ fs::remove_file(&repo_lock_path).ok();
│ ^^^^^^^^^^^^^^^ `std::fs::remove_file` is a blocking filesystem operation
│
= help: use an async fs API or wrap in `smol::unblock`
= context: async fn `setup_worktree`
warning[blocking-in-async]: blocking call in async context
┌─ /home/mrg/zed/crates/edit_prediction_cli/src/load_project.rs:292:13
│
292 │ fs::remove_dir_all(&repo_dir).ok();
│ ^^^^^^^^^^^^^^^^^^ `std::fs::remove_dir_all` is a blocking filesystem operation
│
= help: use an async fs API or wrap in `smol::unblock`
= context: async fn `setup_worktree`
warning[blocking-in-async]: blocking call in async context
┌─ /home/mrg/zed/crates/edit_prediction_cli/src/load_project.rs:298:9
│
298 │ fs::create_dir_all(&repo_dir)?;
│ ^^^^^^^^^^^^^^^^^^ `std::fs::create_dir_all` is a blocking filesystem operation
│
= help: use an async fs API or wrap in `smol::unblock`
= context: async fn `setup_worktree`
warning[blocking-in-async]: blocking call in async context
┌─ /home/mrg/zed/crates/edit_prediction_cli/src/load_project.rs:332:13
│
332 │ fs::remove_dir_all(&worktree_path).ok();
│ ^^^^^^^^^^^^^^^^^^ `std::fs::remove_dir_all` is a blocking filesystem operation
│
= help: use an async fs API or wrap in `smol::unblock`
= context: async fn `setup_worktree`
warning[blocking-in-async]: blocking call in async context
┌─ /home/mrg/zed/crates/edit_prediction_cli/src/repair.rs:510:9
│
510 │ std::thread::sleep(poll_interval);
│ ^^^^^^^^^^^^^^^^^^ `std::thread::sleep` is a blocking thread operation
│
= help: use `cx.background_executor().timer(duration).await`
= context: async fn `wait_for_batches`
eval_cli — 2 finding(s)
warning[blocking-in-async]: blocking call in async context
┌─ /home/mrg/zed/crates/eval_cli/src/main.rs:498:25
│
498 │ if let Err(e) = std::fs::write(dir.join("thread.md"), markdown) {
│ ^^^^^^^^^^^^^^ `std::fs::write` is a blocking filesystem operation
│
= help: use an async fs API or wrap in `smol::unblock`
= context: async fn `run_agent`
warning[blocking-in-async]: blocking call in async context
┌─ /home/mrg/zed/crates/eval_cli/src/main.rs:506:33
│
506 │ if let Err(e) = std::fs::write(dir.join("thread.json"), json) {
│ ^^^^^^^^^^^^^^ `std::fs::write` is a blocking filesystem operation
│
= help: use an async fs API or wrap in `smol::unblock`
= context: async fn `run_agent`
extension — 14 finding(s)
warning[blocking-in-async]: blocking call in async context
┌─ /home/mrg/zed/crates/extension/src/extension_builder.rs:99:9
│
99 │ fs::create_dir_all(&self.cache_dir).context("failed to create cache dir")?;
│ ^^^^^^^^^^^^^^^^^^ `std::fs::create_dir_all` is a blocking filesystem operation
│
= help: use an async fs API or wrap in `smol::unblock`
= context: async fn `compile_extension`
warning[blocking-in-async]: blocking call in async context
┌─ /home/mrg/zed/crates/extension/src/extension_builder.rs:113:40
│
113 │ let debug_adapter_schema = fs::read_to_string(&debug_adapter_schema_path)
│ ^^^^^^^^^^^^^^^^^^ `std::fs::read_to_string` is a blocking filesystem operation
│
= help: use an async fs API or wrap in `smol::unblock`
= context: async fn `compile_extension`
warning[blocking-in-async]: blocking call in async context
┌─ /home/mrg/zed/crates/extension/src/extension_builder.rs:154:34
│
154 │ let cargo_toml_content = fs::read_to_string(extension_dir.join("Cargo.toml"))?;
│ ^^^^^^^^^^^^^^^^^^ `std::fs::read_to_string` is a blocking filesystem operation
│
= help: use an async fs API or wrap in `smol::unblock`
= context: async fn `compile_rust_extension`
warning[blocking-in-async]: blocking call in async context
┌─ /home/mrg/zed/crates/extension/src/extension_builder.rs:202:31
│
202 │ let component_bytes = fs::read(&wasm_path)
│ ^^^^^^^^ `std::fs::read` is a blocking filesystem operation
│
= help: use an async fs API or wrap in `smol::unblock`
= context: async fn `compile_rust_extension`
warning[blocking-in-async]: blocking call in async context
┌─ /home/mrg/zed/crates/extension/src/extension_builder.rs:215:9
│
215 │ fs::write(extension_file.clone(), &component_bytes)
│ ^^^^^^^^^ `std::fs::write` is a blocking filesystem operation
│
= help: use an async fs API or wrap in `smol::unblock`
= context: async fn `compile_rust_extension`
warning[blocking-in-async]: blocking call in async context
┌─ /home/mrg/zed/crates/extension/src/extension_builder.rs:313:13
│
313 │ fs::create_dir_all(directory).with_context(|| {
│ ^^^^^^^^^^^^^^^^^^ `std::fs::create_dir_all` is a blocking filesystem operation
│
= help: use an async fs API or wrap in `smol::unblock`
= context: async fn `checkout_repo`
warning[blocking-in-async]: blocking call in async context
┌─ /home/mrg/zed/crates/extension/src/extension_builder.rs:427:12
│
427 │ if fs::metadata(&clang_path).is_ok_and(|metadata| metadata.is_file()) {
│ ^^^^^^^^^^^^ `std::fs::metadata` is a blocking filesystem operation
│
= help: use an async fs API or wrap in `smol::unblock`
= context: async fn `install_wasi_sdk_if_needed`
warning[blocking-in-async]: blocking call in async context
┌─ /home/mrg/zed/crates/extension/src/extension_builder.rs:433:9
│
433 │ fs::remove_dir_all(&wasi_sdk_dir).ok();
│ ^^^^^^^^^^^^^^^^^^ `std::fs::remove_dir_all` is a blocking filesystem operation
│
= help: use an async fs API or wrap in `smol::unblock`
= context: async fn `install_wasi_sdk_if_needed`
warning[blocking-in-async]: blocking call in async context
┌─ /home/mrg/zed/crates/extension/src/extension_builder.rs:434:9
│
434 │ fs::remove_dir_all(&tar_out_dir).ok();
│ ^^^^^^^^^^^^^^^^^^ `std::fs::remove_dir_all` is a blocking filesystem operation
│
= help: use an async fs API or wrap in `smol::unblock`
= context: async fn `install_wasi_sdk_if_needed`
warning[blocking-in-async]: blocking call in async context
┌─ /home/mrg/zed/crates/extension/src/extension_builder.rs:435:9
│
435 │ fs::create_dir_all(&tar_out_dir).context("failed to create extraction directory")?;
│ ^^^^^^^^^^^^^^^^^^ `std::fs::create_dir_all` is a blocking filesystem operation
│
= help: use an async fs API or wrap in `smol::unblock`
= context: async fn `install_wasi_sdk_if_needed`
warning[blocking-in-async]: blocking call in async context
┌─ /home/mrg/zed/crates/extension/src/extension_builder.rs:473:9
│
473 │ fs::remove_file(&tar_gz_path).ok();
│ ^^^^^^^^^^^^^^^ `std::fs::remove_file` is a blocking filesystem operation
│
= help: use an async fs API or wrap in `smol::unblock`
= context: async fn `install_wasi_sdk_if_needed`
warning[blocking-in-async]: blocking call in async context
┌─ /home/mrg/zed/crates/extension/src/extension_builder.rs:475:25
│
475 │ let inner_dir = fs::read_dir(&tar_out_dir)?
│ ^^^^^^^^^^^^ `std::fs::read_dir` is a blocking filesystem operation
│
= help: use an async fs API or wrap in `smol::unblock`
= context: async fn `install_wasi_sdk_if_needed`
warning[blocking-in-async]: blocking call in async context
┌─ /home/mrg/zed/crates/extension/src/extension_builder.rs:480:9
│
480 │ fs::rename(&inner_dir, &wasi_sdk_dir).context("failed to move extracted wasi dir")?;
│ ^^^^^^^^^^ `std::fs::rename` is a blocking filesystem operation
│
= help: use an async fs API or wrap in `smol::unblock`
= context: async fn `install_wasi_sdk_if_needed`
warning[blocking-in-async]: blocking call in async context
┌─ /home/mrg/zed/crates/extension/src/extension_builder.rs:481:9
│
481 │ fs::remove_dir_all(&tar_out_dir).ok();
│ ^^^^^^^^^^^^^^^^^^ `std::fs::remove_dir_all` is a blocking filesystem operation
│
= help: use an async fs API or wrap in `smol::unblock`
= context: async fn `install_wasi_sdk_if_needed`
extension_cli — 18 finding(s)
warning[blocking-in-async]: blocking call in async context
┌─ /home/mrg/zed/crates/extension_cli/src/main.rs:93:5
│
93 │ fs::remove_dir_all(&archive_dir).ok();
│ ^^^^^^^^^^^^^^^^^^ `std::fs::remove_dir_all` is a blocking filesystem operation
│
= help: use an async fs API or wrap in `smol::unblock`
= context: async fn `main`
warning[blocking-in-async]: blocking call in async context
┌─ /home/mrg/zed/crates/extension_cli/src/main.rs:123:5
│
123 │ fs::remove_dir_all(&archive_dir)?;
│ ^^^^^^^^^^^^^^^^^^ `std::fs::remove_dir_all` is a blocking filesystem operation
│
= help: use an async fs API or wrap in `smol::unblock`
= context: async fn `main`
warning[blocking-in-async]: blocking call in async context
┌─ /home/mrg/zed/crates/extension_cli/src/main.rs:124:5
│
124 │ fs::write(output_dir.join("manifest.json"), manifest_json.as_bytes())?;
│ ^^^^^^^^^ `std::fs::write` is a blocking filesystem operation
│
= help: use an async fs API or wrap in `smol::unblock`
= context: async fn `main`
warning[blocking-in-async]: blocking call in async context
┌─ /home/mrg/zed/crates/extension_cli/src/main.rs:135:5
│
135 │ fs::create_dir_all(output_dir).context("failed to create output dir")?;
│ ^^^^^^^^^^^^^^^^^^ `std::fs::create_dir_all` is a blocking filesystem operation
│
= help: use an async fs API or wrap in `smol::unblock`
= context: async fn `copy_extension_resources`
warning[blocking-in-async]: blocking call in async context
┌─ /home/mrg/zed/crates/extension_cli/src/main.rs:138:5
│
138 │ fs::write(output_dir.join("extension.toml"), &manifest_toml)
│ ^^^^^^^^^ `std::fs::write` is a blocking filesystem operation
│
= help: use an async fs API or wrap in `smol::unblock`
= context: async fn `copy_extension_resources`
warning[blocking-in-async]: blocking call in async context
┌─ /home/mrg/zed/crates/extension_cli/src/main.rs:142:9
│
142 │ fs::copy(
│ ^^^^^^^^ `std::fs::copy` is a blocking filesystem operation
│
= help: use an async fs API or wrap in `smol::unblock`
= context: async fn `copy_extension_resources`
warning[blocking-in-async]: blocking call in async context
┌─ /home/mrg/zed/crates/extension_cli/src/main.rs:152:9
│
152 │ fs::create_dir_all(&output_grammars_dir)?;
│ ^^^^^^^^^^^^^^^^^^ `std::fs::create_dir_all` is a blocking filesystem operation
│
= help: use an async fs API or wrap in `smol::unblock`
= context: async fn `copy_extension_resources`
warning[blocking-in-async]: blocking call in async context
┌─ /home/mrg/zed/crates/extension_cli/src/main.rs:156:13
│
156 │ fs::copy(
│ ^^^^^^^^ `std::fs::copy` is a blocking filesystem operation
│
= help: use an async fs API or wrap in `smol::unblock`
= context: async fn `copy_extension_resources`
warning[blocking-in-async]: blocking call in async context
┌─ /home/mrg/zed/crates/extension_cli/src/main.rs:166:9
│
166 │ fs::create_dir_all(&output_themes_dir)?;
│ ^^^^^^^^^^^^^^^^^^ `std::fs::create_dir_all` is a blocking filesystem operation
│
= help: use an async fs API or wrap in `smol::unblock`
= context: async fn `copy_extension_resources`
warning[blocking-in-async]: blocking call in async context
Lines 1–500 of 805. Load more
# Callgraph Analysis Report Blocking calls detected inside `async fn` bodies across all crates. Generated: 2026-05-06 00:38 UTC --- **Summary**: 81 finding(s) across 11 crate(s). ## `agent_servers` — 2 finding(s) ``` warning[blocking-in-async]: blocking call in async context ┌─ /home/mrg/zed/crates/agent_servers/src/e2e_tests.rs:59:5 │ 59 │ std::fs::write( │ ^^^^^^^^^^^^^^ `std::fs::write` is a blocking filesystem operation │ = help: use an async fs API or wrap in `smol::unblock` = context: async fn `test_path_mentions` warning[blocking-in-async]: blocking call in async context ┌─ /home/mrg/zed/crates/agent_servers/src/e2e_tests.rs:118:5 │ 118 │ std::fs::write(&foo_path, "Lorem ipsum dolor").expect("failed to write file"); │ ^^^^^^^^^^^^^^ `std::fs::write` is a blocking filesystem operation │ = help: use an async fs API or wrap in `smol::unblock` = context: async fn `test_tool_call` ``` ## `collab` — 2 finding(s) ``` warning[blocking-in-async]: blocking call in async context ┌─ /home/mrg/zed/crates/collab/src/main.rs:76:28 │ 76 │ let listener = TcpListener::bind(format!("0.0.0.0:{}", config.http_port)) │ ^^^^^^^^^^^^^^^^^ `std::net::TcpListener::bind` is a blocking network operation │ = help: use an async networking library = context: async fn `main` warning[blocking-in-async]: blocking call in async context ┌─ /home/mrg/zed/crates/collab/src/seed.rs:94:31 │ 94 │ serde_json::from_str(&fs::read_to_string(github_users_filepath)?)?; │ ^^^^^^^^^^^^^^^^^^ `std::fs::read_to_string` is a blocking filesystem operation │ = help: use an async fs API or wrap in `smol::unblock` = context: async fn `seed` ``` ## `dap_adapters` — 3 finding(s) ``` warning[blocking-in-async]: blocking call in async context ┌─ /home/mrg/zed/crates/dap_adapters/src/python.rs:121:9 │ 121 │ std::fs::create_dir_all(&download_dir)?; │ ^^^^^^^^^^^^^^^^^^^^^^^ `std::fs::create_dir_all` is a blocking filesystem operation │ = help: use an async fs API or wrap in `smol::unblock` = context: async fn `fetch_wheel` warning[blocking-in-async]: blocking call in async context ┌─ /home/mrg/zed/crates/dap_adapters/src/python.rs:143:26 │ 143 │ let wheel_path = std::fs::read_dir(&download_dir)? │ ^^^^^^^^^^^^^^^^^ `std::fs::read_dir` is a blocking filesystem operation │ = help: use an async fs API or wrap in `smol::unblock` = context: async fn `fetch_wheel` warning[blocking-in-async]: blocking call in async context ┌─ /home/mrg/zed/crates/dap_adapters/src/python.rs:180:9 │ 180 │ std::fs::create_dir_all(&download_dir)?; │ ^^^^^^^^^^^^^^^^^^^^^^^ `std::fs::create_dir_all` is a blocking filesystem operation │ = help: use an async fs API or wrap in `smol::unblock` = context: async fn `maybe_fetch_new_wheel` ``` ## `edit_prediction_cli` — 18 finding(s) ``` warning[blocking-in-async]: blocking call in async context ┌─ /home/mrg/zed/crates/edit_prediction_cli/src/synthesize.rs:107:5 │ 107 │ std::fs::create_dir_all(&config.output_dir)?; │ ^^^^^^^^^^^^^^^^^^^^^^^ `std::fs::create_dir_all` is a blocking filesystem operation │ = help: use an async fs API or wrap in `smol::unblock` = context: async fn `run_synthesize` warning[blocking-in-async]: blocking call in async context ┌─ /home/mrg/zed/crates/edit_prediction_cli/src/synthesize.rs:108:5 │ 108 │ std::fs::create_dir_all(&*FAILED_EXAMPLES_DIR)?; │ ^^^^^^^^^^^^^^^^^^^^^^^ `std::fs::create_dir_all` is a blocking filesystem operation │ = help: use an async fs API or wrap in `smol::unblock` = context: async fn `run_synthesize` warning[blocking-in-async]: blocking call in async context ┌─ /home/mrg/zed/crates/edit_prediction_cli/src/synthesize.rs:112:9 │ 112 │ std::fs::remove_file(&*LATEST_FAILED_EXAMPLES_DIR)?; │ ^^^^^^^^^^^^^^^^^^^^ `std::fs::remove_file` is a blocking filesystem operation │ = help: use an async fs API or wrap in `smol::unblock` = context: async fn `run_synthesize` warning[blocking-in-async]: blocking call in async context ┌─ /home/mrg/zed/crates/edit_prediction_cli/src/synthesize.rs:240:21 │ 240 │ std::fs::write(&path, spec.to_markdown())?; │ ^^^^^^^^^^^^^^ `std::fs::write` is a blocking filesystem operation │ = help: use an async fs API or wrap in `smol::unblock` = context: async fn `synthesize_repo` warning[blocking-in-async]: blocking call in async context ┌─ /home/mrg/zed/crates/edit_prediction_cli/src/synthesize.rs:250:37 │ 250 │ if let Err(e) = std::fs::write(&path, content) { │ ^^^^^^^^^^^^^^ `std::fs::write` is a blocking filesystem operation │ = help: use an async fs API or wrap in `smol::unblock` = context: async fn `synthesize_repo` warning[blocking-in-async]: blocking call in async context ┌─ /home/mrg/zed/crates/edit_prediction_cli/src/predict.rs:200:29 │ 200 │ fs::write(run_dir.join("prediction_prompt.md"), &prompt)?; │ ^^^^^^^^^ `std::fs::write` is a blocking filesystem operation │ = help: use an async fs API or wrap in `smol::unblock` = context: async fn `run_prediction` warning[blocking-in-async]: blocking call in async context ┌─ /home/mrg/zed/crates/edit_prediction_cli/src/predict.rs:216:29 │ 216 │ fs::write(run_dir.join("prediction_response.md"), &output)?; │ ^^^^^^^^^ `std::fs::write` is a blocking filesystem operation │ = help: use an async fs API or wrap in `smol::unblock` = context: async fn `run_prediction` warning[blocking-in-async]: blocking call in async context ┌─ /home/mrg/zed/crates/edit_prediction_cli/src/predict.rs:252:9 │ 252 │ fs::create_dir_all(&run_dir)?; │ ^^^^^^^^^^^^^^^^^^ `std::fs::create_dir_all` is a blocking filesystem operation │ = help: use an async fs API or wrap in `smol::unblock` = context: async fn `run_prediction` warning[blocking-in-async]: blocking call in async context ┌─ /home/mrg/zed/crates/edit_prediction_cli/src/predict.rs:254:13 │ 254 │ fs::remove_file(&*LATEST_EXAMPLE_RUN_DIR)?; │ ^^^^^^^^^^^^^^^ `std::fs::remove_file` is a blocking filesystem operation │ = help: use an async fs API or wrap in `smol::unblock` = context: async fn `run_prediction` warning[blocking-in-async]: blocking call in async context ┌─ /home/mrg/zed/crates/edit_prediction_cli/src/predict.rs:761:9 │ 761 │ std::thread::sleep(poll_interval); │ ^^^^^^^^^^^^^^^^^^ `std::thread::sleep` is a blocking thread operation │ = help: use `cx.background_executor().timer(duration).await` = context: async fn `wait_for_batches` warning[blocking-in-async]: blocking call in async context ┌─ /home/mrg/zed/crates/edit_prediction_cli/src/git.rs:80:13 │ 80 │ std::fs::remove_dir_all(&repo_path).ok(); │ ^^^^^^^^^^^^^^^^^^^^^^^ `std::fs::remove_dir_all` is a blocking filesystem operation │ = help: use an async fs API or wrap in `smol::unblock` = context: async fn `ensure_repo_cloned` warning[blocking-in-async]: blocking call in async context ┌─ /home/mrg/zed/crates/edit_prediction_cli/src/git.rs:86:9 │ 86 │ std::fs::create_dir_all(&repo_path)?; │ ^^^^^^^^^^^^^^^^^^^^^^^ `std::fs::create_dir_all` is a blocking filesystem operation │ = help: use an async fs API or wrap in `smol::unblock` = context: async fn `ensure_repo_cloned` warning[blocking-in-async]: blocking call in async context ┌─ /home/mrg/zed/crates/edit_prediction_cli/src/load_project.rs:277:13 │ 277 │ fs::remove_file(&worktree_lock_path).ok(); │ ^^^^^^^^^^^^^^^ `std::fs::remove_file` is a blocking filesystem operation │ = help: use an async fs API or wrap in `smol::unblock` = context: async fn `setup_worktree` warning[blocking-in-async]: blocking call in async context ┌─ /home/mrg/zed/crates/edit_prediction_cli/src/load_project.rs:280:13 │ 280 │ fs::remove_file(&repo_lock_path).ok(); │ ^^^^^^^^^^^^^^^ `std::fs::remove_file` is a blocking filesystem operation │ = help: use an async fs API or wrap in `smol::unblock` = context: async fn `setup_worktree` warning[blocking-in-async]: blocking call in async context ┌─ /home/mrg/zed/crates/edit_prediction_cli/src/load_project.rs:292:13 │ 292 │ fs::remove_dir_all(&repo_dir).ok(); │ ^^^^^^^^^^^^^^^^^^ `std::fs::remove_dir_all` is a blocking filesystem operation │ = help: use an async fs API or wrap in `smol::unblock` = context: async fn `setup_worktree` warning[blocking-in-async]: blocking call in async context ┌─ /home/mrg/zed/crates/edit_prediction_cli/src/load_project.rs:298:9 │ 298 │ fs::create_dir_all(&repo_dir)?; │ ^^^^^^^^^^^^^^^^^^ `std::fs::create_dir_all` is a blocking filesystem operation │ = help: use an async fs API or wrap in `smol::unblock` = context: async fn `setup_worktree` warning[blocking-in-async]: blocking call in async context ┌─ /home/mrg/zed/crates/edit_prediction_cli/src/load_project.rs:332:13 │ 332 │ fs::remove_dir_all(&worktree_path).ok(); │ ^^^^^^^^^^^^^^^^^^ `std::fs::remove_dir_all` is a blocking filesystem operation │ = help: use an async fs API or wrap in `smol::unblock` = context: async fn `setup_worktree` warning[blocking-in-async]: blocking call in async context ┌─ /home/mrg/zed/crates/edit_prediction_cli/src/repair.rs:510:9 │ 510 │ std::thread::sleep(poll_interval); │ ^^^^^^^^^^^^^^^^^^ `std::thread::sleep` is a blocking thread operation │ = help: use `cx.background_executor().timer(duration).await` = context: async fn `wait_for_batches` ``` ## `eval_cli` — 2 finding(s) ``` warning[blocking-in-async]: blocking call in async context ┌─ /home/mrg/zed/crates/eval_cli/src/main.rs:498:25 │ 498 │ if let Err(e) = std::fs::write(dir.join("thread.md"), markdown) { │ ^^^^^^^^^^^^^^ `std::fs::write` is a blocking filesystem operation │ = help: use an async fs API or wrap in `smol::unblock` = context: async fn `run_agent` warning[blocking-in-async]: blocking call in async context ┌─ /home/mrg/zed/crates/eval_cli/src/main.rs:506:33 │ 506 │ if let Err(e) = std::fs::write(dir.join("thread.json"), json) { │ ^^^^^^^^^^^^^^ `std::fs::write` is a blocking filesystem operation │ = help: use an async fs API or wrap in `smol::unblock` = context: async fn `run_agent` ``` ## `extension` — 14 finding(s) ``` warning[blocking-in-async]: blocking call in async context ┌─ /home/mrg/zed/crates/extension/src/extension_builder.rs:99:9 │ 99 │ fs::create_dir_all(&self.cache_dir).context("failed to create cache dir")?; │ ^^^^^^^^^^^^^^^^^^ `std::fs::create_dir_all` is a blocking filesystem operation │ = help: use an async fs API or wrap in `smol::unblock` = context: async fn `compile_extension` warning[blocking-in-async]: blocking call in async context ┌─ /home/mrg/zed/crates/extension/src/extension_builder.rs:113:40 │ 113 │ let debug_adapter_schema = fs::read_to_string(&debug_adapter_schema_path) │ ^^^^^^^^^^^^^^^^^^ `std::fs::read_to_string` is a blocking filesystem operation │ = help: use an async fs API or wrap in `smol::unblock` = context: async fn `compile_extension` warning[blocking-in-async]: blocking call in async context ┌─ /home/mrg/zed/crates/extension/src/extension_builder.rs:154:34 │ 154 │ let cargo_toml_content = fs::read_to_string(extension_dir.join("Cargo.toml"))?; │ ^^^^^^^^^^^^^^^^^^ `std::fs::read_to_string` is a blocking filesystem operation │ = help: use an async fs API or wrap in `smol::unblock` = context: async fn `compile_rust_extension` warning[blocking-in-async]: blocking call in async context ┌─ /home/mrg/zed/crates/extension/src/extension_builder.rs:202:31 │ 202 │ let component_bytes = fs::read(&wasm_path) │ ^^^^^^^^ `std::fs::read` is a blocking filesystem operation │ = help: use an async fs API or wrap in `smol::unblock` = context: async fn `compile_rust_extension` warning[blocking-in-async]: blocking call in async context ┌─ /home/mrg/zed/crates/extension/src/extension_builder.rs:215:9 │ 215 │ fs::write(extension_file.clone(), &component_bytes) │ ^^^^^^^^^ `std::fs::write` is a blocking filesystem operation │ = help: use an async fs API or wrap in `smol::unblock` = context: async fn `compile_rust_extension` warning[blocking-in-async]: blocking call in async context ┌─ /home/mrg/zed/crates/extension/src/extension_builder.rs:313:13 │ 313 │ fs::create_dir_all(directory).with_context(|| { │ ^^^^^^^^^^^^^^^^^^ `std::fs::create_dir_all` is a blocking filesystem operation │ = help: use an async fs API or wrap in `smol::unblock` = context: async fn `checkout_repo` warning[blocking-in-async]: blocking call in async context ┌─ /home/mrg/zed/crates/extension/src/extension_builder.rs:427:12 │ 427 │ if fs::metadata(&clang_path).is_ok_and(|metadata| metadata.is_file()) { │ ^^^^^^^^^^^^ `std::fs::metadata` is a blocking filesystem operation │ = help: use an async fs API or wrap in `smol::unblock` = context: async fn `install_wasi_sdk_if_needed` warning[blocking-in-async]: blocking call in async context ┌─ /home/mrg/zed/crates/extension/src/extension_builder.rs:433:9 │ 433 │ fs::remove_dir_all(&wasi_sdk_dir).ok(); │ ^^^^^^^^^^^^^^^^^^ `std::fs::remove_dir_all` is a blocking filesystem operation │ = help: use an async fs API or wrap in `smol::unblock` = context: async fn `install_wasi_sdk_if_needed` warning[blocking-in-async]: blocking call in async context ┌─ /home/mrg/zed/crates/extension/src/extension_builder.rs:434:9 │ 434 │ fs::remove_dir_all(&tar_out_dir).ok(); │ ^^^^^^^^^^^^^^^^^^ `std::fs::remove_dir_all` is a blocking filesystem operation │ = help: use an async fs API or wrap in `smol::unblock` = context: async fn `install_wasi_sdk_if_needed` warning[blocking-in-async]: blocking call in async context ┌─ /home/mrg/zed/crates/extension/src/extension_builder.rs:435:9 │ 435 │ fs::create_dir_all(&tar_out_dir).context("failed to create extraction directory")?; │ ^^^^^^^^^^^^^^^^^^ `std::fs::create_dir_all` is a blocking filesystem operation │ = help: use an async fs API or wrap in `smol::unblock` = context: async fn `install_wasi_sdk_if_needed` warning[blocking-in-async]: blocking call in async context ┌─ /home/mrg/zed/crates/extension/src/extension_builder.rs:473:9 │ 473 │ fs::remove_file(&tar_gz_path).ok(); │ ^^^^^^^^^^^^^^^ `std::fs::remove_file` is a blocking filesystem operation │ = help: use an async fs API or wrap in `smol::unblock` = context: async fn `install_wasi_sdk_if_needed` warning[blocking-in-async]: blocking call in async context ┌─ /home/mrg/zed/crates/extension/src/extension_builder.rs:475:25 │ 475 │ let inner_dir = fs::read_dir(&tar_out_dir)? │ ^^^^^^^^^^^^ `std::fs::read_dir` is a blocking filesystem operation │ = help: use an async fs API or wrap in `smol::unblock` = context: async fn `install_wasi_sdk_if_needed` warning[blocking-in-async]: blocking call in async context ┌─ /home/mrg/zed/crates/extension/src/extension_builder.rs:480:9 │ 480 │ fs::rename(&inner_dir, &wasi_sdk_dir).context("failed to move extracted wasi dir")?; │ ^^^^^^^^^^ `std::fs::rename` is a blocking filesystem operation │ = help: use an async fs API or wrap in `smol::unblock` = context: async fn `install_wasi_sdk_if_needed` warning[blocking-in-async]: blocking call in async context ┌─ /home/mrg/zed/crates/extension/src/extension_builder.rs:481:9 │ 481 │ fs::remove_dir_all(&tar_out_dir).ok(); │ ^^^^^^^^^^^^^^^^^^ `std::fs::remove_dir_all` is a blocking filesystem operation │ = help: use an async fs API or wrap in `smol::unblock` = context: async fn `install_wasi_sdk_if_needed` ``` ## `extension_cli` — 18 finding(s) ``` warning[blocking-in-async]: blocking call in async context ┌─ /home/mrg/zed/crates/extension_cli/src/main.rs:93:5 │ 93 │ fs::remove_dir_all(&archive_dir).ok(); │ ^^^^^^^^^^^^^^^^^^ `std::fs::remove_dir_all` is a blocking filesystem operation │ = help: use an async fs API or wrap in `smol::unblock` = context: async fn `main` warning[blocking-in-async]: blocking call in async context ┌─ /home/mrg/zed/crates/extension_cli/src/main.rs:123:5 │ 123 │ fs::remove_dir_all(&archive_dir)?; │ ^^^^^^^^^^^^^^^^^^ `std::fs::remove_dir_all` is a blocking filesystem operation │ = help: use an async fs API or wrap in `smol::unblock` = context: async fn `main` warning[blocking-in-async]: blocking call in async context ┌─ /home/mrg/zed/crates/extension_cli/src/main.rs:124:5 │ 124 │ fs::write(output_dir.join("manifest.json"), manifest_json.as_bytes())?; │ ^^^^^^^^^ `std::fs::write` is a blocking filesystem operation │ = help: use an async fs API or wrap in `smol::unblock` = context: async fn `main` warning[blocking-in-async]: blocking call in async context ┌─ /home/mrg/zed/crates/extension_cli/src/main.rs:135:5 │ 135 │ fs::create_dir_all(output_dir).context("failed to create output dir")?; │ ^^^^^^^^^^^^^^^^^^ `std::fs::create_dir_all` is a blocking filesystem operation │ = help: use an async fs API or wrap in `smol::unblock` = context: async fn `copy_extension_resources` warning[blocking-in-async]: blocking call in async context ┌─ /home/mrg/zed/crates/extension_cli/src/main.rs:138:5 │ 138 │ fs::write(output_dir.join("extension.toml"), &manifest_toml) │ ^^^^^^^^^ `std::fs::write` is a blocking filesystem operation │ = help: use an async fs API or wrap in `smol::unblock` = context: async fn `copy_extension_resources` warning[blocking-in-async]: blocking call in async context ┌─ /home/mrg/zed/crates/extension_cli/src/main.rs:142:9 │ 142 │ fs::copy( │ ^^^^^^^^ `std::fs::copy` is a blocking filesystem operation │ = help: use an async fs API or wrap in `smol::unblock` = context: async fn `copy_extension_resources` warning[blocking-in-async]: blocking call in async context ┌─ /home/mrg/zed/crates/extension_cli/src/main.rs:152:9 │ 152 │ fs::create_dir_all(&output_grammars_dir)?; │ ^^^^^^^^^^^^^^^^^^ `std::fs::create_dir_all` is a blocking filesystem operation │ = help: use an async fs API or wrap in `smol::unblock` = context: async fn `copy_extension_resources` warning[blocking-in-async]: blocking call in async context ┌─ /home/mrg/zed/crates/extension_cli/src/main.rs:156:13 │ 156 │ fs::copy( │ ^^^^^^^^ `std::fs::copy` is a blocking filesystem operation │ = help: use an async fs API or wrap in `smol::unblock` = context: async fn `copy_extension_resources` warning[blocking-in-async]: blocking call in async context ┌─ /home/mrg/zed/crates/extension_cli/src/main.rs:166:9 │ 166 │ fs::create_dir_all(&output_themes_dir)?; │ ^^^^^^^^^^^^^^^^^^ `std::fs::create_dir_all` is a blocking filesystem operation │ = help: use an async fs API or wrap in `smol::unblock` = context: async fn `copy_extension_resources` warning[blocking-in-async]: blocking call in async context