From 5cf0360be5f6cfaca0b096c8a7f197c4eb68b91e Mon Sep 17 00:00:00 2001 From: Nyannyacha Date: Thu, 16 Oct 2025 10:08:20 +0000 Subject: [PATCH 1/8] chore: replace gh runner with `blacksmith` --- .github/workflows/ci.yml | 6 +++--- .github/workflows/mirror.yml | 2 +- .github/workflows/release.yml | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b4b13bcab..2a072a474 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -41,7 +41,7 @@ jobs: cargo-fmt: if: github.event.pull_request.draft == false name: 'fmt' - runs-on: ubuntu-latest + runs-on: blacksmith-4vcpu-ubuntu-2404 steps: - uses: actions/checkout@v4 - uses: denoland/setup-deno@v2 @@ -53,7 +53,7 @@ jobs: cargo-clippy: if: github.event.pull_request.draft == false name: 'cargo clippy' - runs-on: ubuntu-latest + runs-on: blacksmith-4vcpu-ubuntu-2404 steps: - uses: actions/checkout@v4 - name: Install deps @@ -67,7 +67,7 @@ jobs: cargo-test: if: github.event.pull_request.draft == false name: 'cargo test' - runs-on: ubuntu-latest + runs-on: blacksmith-4vcpu-ubuntu-2404 steps: - name: Install deps run: | diff --git a/.github/workflows/mirror.yml b/.github/workflows/mirror.yml index 58bd20d54..27899cd99 100644 --- a/.github/workflows/mirror.yml +++ b/.github/workflows/mirror.yml @@ -13,7 +13,7 @@ permissions: jobs: mirror: - runs-on: ubuntu-latest + runs-on: blacksmith-4vcpu-ubuntu-2404 permissions: contents: read packages: write diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 8315ff3ed..1a53e7c9d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -12,7 +12,7 @@ permissions: jobs: release: - runs-on: ubuntu-latest + runs-on: blacksmith-4vcpu-ubuntu-2404 outputs: published: ${{ steps.semantic.outputs.new_release_published }} version: ${{ steps.semantic.outputs.new_release_version }} @@ -34,7 +34,7 @@ jobs: needs: - release if: needs.release.outputs.published == 'true' - runs-on: ubuntu-latest + runs-on: blacksmith-4vcpu-ubuntu-2404 env: arch: amd64 outputs: @@ -121,7 +121,7 @@ jobs: merge_manifest: needs: [release, publish_x86, publish_arm] - runs-on: ubuntu-latest + runs-on: blacksmith-4vcpu-ubuntu-2404 permissions: contents: read packages: write From fc3111f54ac957629b333299af025adbbd1fa201 Mon Sep 17 00:00:00 2001 From: Nyannyacha Date: Thu, 16 Oct 2025 10:20:06 +0000 Subject: [PATCH 2/8] stamp: meow --- cli/src/main.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/src/main.rs b/cli/src/main.rs index 4976c1654..181dcd300 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -270,7 +270,7 @@ fn main() -> Result { "{}", concat!( "if `oneshot` policy is enabled, the maximum ", - "parallelism is fixed to `1` as forcibly" + "parallelism is fixed to `1` as forcibly ^^" ) ); } From bb752a6a0cd3d68e70fee8031d5577c6fb241e6a Mon Sep 17 00:00:00 2001 From: Nyannyacha Date: Fri, 24 Oct 2025 07:27:59 +0000 Subject: [PATCH 3/8] fix: it seems some library in jsr.io refers to `SharedArrayBuffer` --- ext/runtime/js/bootstrap.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ext/runtime/js/bootstrap.js b/ext/runtime/js/bootstrap.js index 5dc96bc3d..a17e5937e 100644 --- a/ext/runtime/js/bootstrap.js +++ b/ext/runtime/js/bootstrap.js @@ -656,7 +656,7 @@ globalThis.bootstrapSBEdge = (opts, ctx) => { return new wasmMemoryCtor(maybeOpts); } - delete globalThis.SharedArrayBuffer; + globalThis.SharedArrayBuffer = globalThis.ArrayBuffer; globalThis.WebAssembly.Memory = patchedWasmMemoryCtor; /// DISABLE SHARED MEMORY INSTALL MEM CHECK TIMING From 93dccdf703d3f9b79f261cd0bbf191742d00a0b9 Mon Sep 17 00:00:00 2001 From: Nyannyacha Date: Mon, 27 Oct 2025 08:32:04 +0000 Subject: [PATCH 4/8] chore(base): add dev dependency --- Cargo.lock | 1 + crates/base/Cargo.toml | 1 + 2 files changed, 2 insertions(+) diff --git a/Cargo.lock b/Cargo.lock index 659f6af5d..6d794d7c3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -878,6 +878,7 @@ dependencies = [ "deno_core", "deno_facade", "deno_webgpu", + "diff", "either", "enum-as-inner", "eszip", diff --git a/crates/base/Cargo.toml b/crates/base/Cargo.toml index c7202be6b..a3109ae1d 100644 --- a/crates/base/Cargo.toml +++ b/crates/base/Cargo.toml @@ -87,6 +87,7 @@ tokio-util = { workspace = true, features = ["rt", "compat"] } tracing-subscriber = { workspace = true, features = ["env-filter", "tracing-log"] } async-tungstenite = { version = "0.25.0", default-features = false } +diff = "0.1" tungstenite = { version = "0.21.0", default-features = false, features = ["handshake"] } [build-dependencies] From 7e30144e42421dc24665259b69e5111bf93a05a8 Mon Sep 17 00:00:00 2001 From: Nyannyacha Date: Mon, 27 Oct 2025 08:32:16 +0000 Subject: [PATCH 5/8] stamp: render diffs --- crates/base/tests/eszip_migration.rs | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/crates/base/tests/eszip_migration.rs b/crates/base/tests/eszip_migration.rs index cfe03a87f..f5fc67530 100644 --- a/crates/base/tests/eszip_migration.rs +++ b/crates/base/tests/eszip_migration.rs @@ -1,3 +1,4 @@ +use std::borrow::Cow; use std::fs::read_dir; use std::path::Path; use std::path::PathBuf; @@ -33,6 +34,7 @@ async fn test_eszip_migration() { let mut passed = 0; let mut failed = 0; let mut snapshot_created = 0; + let mut diff_msgs = vec![]; println!("running {} eszip tests", paths.len()); for path in paths { @@ -54,12 +56,22 @@ async fn test_eszip_migration() { passed += 1; snapshot_created += 1; } else { - let snapshot_buf = read(snapshot_path).await.unwrap(); + let snapshot_buf = read(&snapshot_path).await.unwrap(); if snapshot_buf == buf { println!("ok"); passed += 1; } else { println!("FAILED"); + diff_msgs.push(format!("{}", snapshot_path.to_string_lossy()).into()); + diff_msgs.push(Cow::Borrowed("--------------------")); + diff_msgs.extend( + render_diff( + &String::from_utf8_lossy(&snapshot_buf), + &String::from_utf8_lossy(buf), + ) + .map(Cow::Owned), + ); + diff_msgs.push(Cow::Borrowed("\n")); failed += 1; } } @@ -68,6 +80,9 @@ async fn test_eszip_migration() { let msg = format!("eszip test result: {status}. {passed} passed ({snapshot_created} snapshot created); {failed} failed"); if failed > 0 { + for line in diff_msgs { + println!("{line}"); + } panic!("{msg}"); } else { eprintln!("{msg}"); @@ -324,3 +339,14 @@ fn get_bool_from_json_value( ) -> Option { value.get(key).and_then(|it| it.as_bool()) } + +fn render_diff<'l>( + left: &'l str, + right: &'l str, +) -> impl Iterator + 'l { + diff::lines(left, right).into_iter().map(|it| match it { + diff::Result::Left(l) => format!("-{l}"), + diff::Result::Both(l, _) => format!(" {l}"), + diff::Result::Right(r) => format!("+{r}"), + }) +} From 58bb0346cfdb980bf3d68fdb4bafa0d398e38405 Mon Sep 17 00:00:00 2001 From: Nyannyacha Date: Mon, 27 Oct 2025 08:44:38 +0000 Subject: [PATCH 6/8] stamp: eprintln --- crates/base/tests/eszip_migration.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/base/tests/eszip_migration.rs b/crates/base/tests/eszip_migration.rs index f5fc67530..dfb6be12f 100644 --- a/crates/base/tests/eszip_migration.rs +++ b/crates/base/tests/eszip_migration.rs @@ -81,7 +81,7 @@ async fn test_eszip_migration() { format!("eszip test result: {status}. {passed} passed ({snapshot_created} snapshot created); {failed} failed"); if failed > 0 { for line in diff_msgs { - println!("{line}"); + eprintln!("{line}"); } panic!("{msg}"); } else { From 64f1a5235e813fb0a464b2222e7561c38f8edee2 Mon Sep 17 00:00:00 2001 From: Nyannyacha Date: Mon, 27 Oct 2025 10:30:27 +0000 Subject: [PATCH 7/8] stamp: prohibit RealFs --- .../deno_facade/module_loader/standalone.rs | 2 +- crates/fs/impl/deno_compile_fs.rs | 69 ++++++++++++++++++- 2 files changed, 67 insertions(+), 4 deletions(-) diff --git a/crates/deno_facade/module_loader/standalone.rs b/crates/deno_facade/module_loader/standalone.rs index 84e7cb6d4..d6d757117 100644 --- a/crates/deno_facade/module_loader/standalone.rs +++ b/crates/deno_facade/module_loader/standalone.rs @@ -621,7 +621,7 @@ pub async fn create_module_loader_for_eszip( ) .context("Failed to load npm vfs.")?; - let fs = DenoCompileFileSystem::new(vfs); + let fs = DenoCompileFileSystem::new(vfs).use_real_fs(false); let fs_backed_vfs = fs.file_backed_vfs().clone(); ( diff --git a/crates/fs/impl/deno_compile_fs.rs b/crates/fs/impl/deno_compile_fs.rs index 04a133803..735fb1f07 100644 --- a/crates/fs/impl/deno_compile_fs.rs +++ b/crates/fs/impl/deno_compile_fs.rs @@ -10,6 +10,7 @@ use deno_io::fs::File; use deno_io::fs::FsError; use deno_io::fs::FsResult; use deno_io::fs::FsStat; +use std::io; use std::path::Path; use std::path::PathBuf; use std::rc::Rc; @@ -20,15 +21,20 @@ use crate::rt::IO_RT; use super::virtual_fs::FileBackedVfs; #[derive(Debug, Clone)] -pub struct DenoCompileFileSystem(Arc); +pub struct DenoCompileFileSystem(Arc, bool); impl DenoCompileFileSystem { pub fn new(vfs: FileBackedVfs) -> Self { - Self(Arc::new(vfs)) + Self(Arc::new(vfs), true) } pub fn from_rc(vfs: Arc) -> Self { - Self(vfs) + Self(vfs, true) + } + + pub fn use_real_fs(mut self, value: bool) -> Self { + self.1 = value; + self } pub fn file_backed_vfs(&self) -> Arc { @@ -43,6 +49,17 @@ impl DenoCompileFileSystem { } } + fn error_if_no_use_real_fs(&self, not_found: bool) -> FsResult<()> { + if !self.1 { + if not_found { + return Err(FsError::Io(io::Error::from(io::ErrorKind::NotFound))); + } + return Err(FsError::NotSupported); + } else { + Ok(()) + } + } + async fn copy_to_real_path_async( &self, oldpath: &Path, @@ -51,6 +68,7 @@ impl DenoCompileFileSystem { let old_file = self.0.file_entry(oldpath)?; let old_file_bytes = self.0.read_file_all(old_file).await?; + self.error_if_no_use_real_fs(true)?; RealFs .write_file_async( newpath.to_path_buf(), @@ -73,19 +91,23 @@ impl DenoCompileFileSystem { #[async_trait::async_trait(?Send)] impl FileSystem for DenoCompileFileSystem { fn cwd(&self) -> FsResult { + self.error_if_no_use_real_fs(false)?; RealFs.cwd() } fn tmp_dir(&self) -> FsResult { + self.error_if_no_use_real_fs(false)?; RealFs.tmp_dir() } fn chdir(&self, path: &Path) -> FsResult<()> { + self.error_if_no_use_real_fs(false)?; self.error_if_in_vfs(path)?; RealFs.chdir(path) } fn umask(&self, mask: Option) -> FsResult { + self.error_if_no_use_real_fs(false)?; RealFs.umask(mask) } @@ -98,6 +120,7 @@ impl FileSystem for DenoCompileFileSystem { if self.0.is_path_within(path) { Ok(self.0.open_file(path)?) } else { + self.error_if_no_use_real_fs(true)?; RealFs.open_sync(path, options, None) } } @@ -110,6 +133,7 @@ impl FileSystem for DenoCompileFileSystem { if self.0.is_path_within(&path) { Ok(self.0.open_file(&path)?) } else { + self.error_if_no_use_real_fs(true)?; RealFs.open_async(path, options, None).await } } @@ -120,6 +144,7 @@ impl FileSystem for DenoCompileFileSystem { recursive: bool, mode: Option, ) -> FsResult<()> { + self.error_if_no_use_real_fs(false)?; self.error_if_in_vfs(path)?; RealFs.mkdir_sync(path, recursive, mode) } @@ -129,15 +154,18 @@ impl FileSystem for DenoCompileFileSystem { recursive: bool, mode: Option, ) -> FsResult<()> { + self.error_if_no_use_real_fs(false)?; self.error_if_in_vfs(&path)?; RealFs.mkdir_async(path, recursive, mode).await } fn chmod_sync(&self, path: &Path, mode: u32) -> FsResult<()> { + self.error_if_no_use_real_fs(false)?; self.error_if_in_vfs(path)?; RealFs.chmod_sync(path, mode) } async fn chmod_async(&self, path: PathBuf, mode: u32) -> FsResult<()> { + self.error_if_no_use_real_fs(false)?; self.error_if_in_vfs(&path)?; RealFs.chmod_async(path, mode).await } @@ -148,6 +176,7 @@ impl FileSystem for DenoCompileFileSystem { uid: Option, gid: Option, ) -> FsResult<()> { + self.error_if_no_use_real_fs(false)?; self.error_if_in_vfs(path)?; RealFs.chown_sync(path, uid, gid) } @@ -157,6 +186,7 @@ impl FileSystem for DenoCompileFileSystem { uid: Option, gid: Option, ) -> FsResult<()> { + self.error_if_no_use_real_fs(false)?; self.error_if_in_vfs(&path)?; RealFs.chown_async(path, uid, gid).await } @@ -167,6 +197,7 @@ impl FileSystem for DenoCompileFileSystem { uid: Option, gid: Option, ) -> FsResult<()> { + self.error_if_no_use_real_fs(false)?; self.error_if_in_vfs(path)?; RealFs.lchown_sync(path, uid, gid) } @@ -176,20 +207,24 @@ impl FileSystem for DenoCompileFileSystem { uid: Option, gid: Option, ) -> FsResult<()> { + self.error_if_no_use_real_fs(false)?; self.error_if_in_vfs(&path)?; RealFs.lchown_async(path, uid, gid).await } fn remove_sync(&self, path: &Path, recursive: bool) -> FsResult<()> { + self.error_if_no_use_real_fs(false)?; self.error_if_in_vfs(path)?; RealFs.remove_sync(path, recursive) } async fn remove_async(&self, path: PathBuf, recursive: bool) -> FsResult<()> { + self.error_if_no_use_real_fs(false)?; self.error_if_in_vfs(&path)?; RealFs.remove_async(path, recursive).await } fn copy_file_sync(&self, oldpath: &Path, newpath: &Path) -> FsResult<()> { + self.error_if_no_use_real_fs(false)?; self.error_if_in_vfs(newpath)?; if self.0.is_path_within(oldpath) { std::thread::scope(|s| { @@ -204,6 +239,9 @@ impl FileSystem for DenoCompileFileSystem { .unwrap() }) } else { + if !self.1 { + return Err(FsError::NotSupported); + } RealFs.copy_file_sync(oldpath, newpath) } } @@ -212,6 +250,7 @@ impl FileSystem for DenoCompileFileSystem { oldpath: PathBuf, newpath: PathBuf, ) -> FsResult<()> { + self.error_if_no_use_real_fs(false)?; self.error_if_in_vfs(&newpath)?; if self.0.is_path_within(&oldpath) { let fs = self.clone(); @@ -222,11 +261,13 @@ impl FileSystem for DenoCompileFileSystem { } fn cp_sync(&self, from: &Path, to: &Path) -> FsResult<()> { + self.error_if_no_use_real_fs(false)?; self.error_if_in_vfs(to)?; RealFs.cp_sync(from, to) } async fn cp_async(&self, from: PathBuf, to: PathBuf) -> FsResult<()> { + self.error_if_no_use_real_fs(false)?; self.error_if_in_vfs(&to)?; RealFs.cp_async(from, to).await @@ -236,6 +277,7 @@ impl FileSystem for DenoCompileFileSystem { if self.0.is_path_within(path) { Ok(self.0.stat(path)?) } else { + self.error_if_no_use_real_fs(true)?; RealFs.stat_sync(path) } } @@ -243,6 +285,7 @@ impl FileSystem for DenoCompileFileSystem { if self.0.is_path_within(&path) { Ok(self.0.stat(&path)?) } else { + self.error_if_no_use_real_fs(true)?; RealFs.stat_async(path).await } } @@ -251,6 +294,7 @@ impl FileSystem for DenoCompileFileSystem { if self.0.is_path_within(path) { Ok(self.0.lstat(path)?) } else { + self.error_if_no_use_real_fs(true)?; RealFs.lstat_sync(path) } } @@ -258,6 +302,7 @@ impl FileSystem for DenoCompileFileSystem { if self.0.is_path_within(&path) { Ok(self.0.lstat(&path)?) } else { + self.error_if_no_use_real_fs(true)?; RealFs.lstat_async(path).await } } @@ -266,6 +311,7 @@ impl FileSystem for DenoCompileFileSystem { if self.0.is_path_within(path) { Ok(self.0.canonicalize(path)?) } else { + self.error_if_no_use_real_fs(true)?; RealFs.realpath_sync(path) } } @@ -273,6 +319,7 @@ impl FileSystem for DenoCompileFileSystem { if self.0.is_path_within(&path) { Ok(self.0.canonicalize(&path)?) } else { + self.error_if_no_use_real_fs(true)?; RealFs.realpath_async(path).await } } @@ -281,6 +328,7 @@ impl FileSystem for DenoCompileFileSystem { if self.0.is_path_within(path) { Ok(self.0.read_dir(path)?) } else { + self.error_if_no_use_real_fs(true)?; RealFs.read_dir_sync(path) } } @@ -288,11 +336,13 @@ impl FileSystem for DenoCompileFileSystem { if self.0.is_path_within(&path) { Ok(self.0.read_dir(&path)?) } else { + self.error_if_no_use_real_fs(true)?; RealFs.read_dir_async(path).await } } fn rename_sync(&self, oldpath: &Path, newpath: &Path) -> FsResult<()> { + self.error_if_no_use_real_fs(false)?; self.error_if_in_vfs(oldpath)?; self.error_if_in_vfs(newpath)?; RealFs.rename_sync(oldpath, newpath) @@ -302,12 +352,14 @@ impl FileSystem for DenoCompileFileSystem { oldpath: PathBuf, newpath: PathBuf, ) -> FsResult<()> { + self.error_if_no_use_real_fs(false)?; self.error_if_in_vfs(&oldpath)?; self.error_if_in_vfs(&newpath)?; RealFs.rename_async(oldpath, newpath).await } fn link_sync(&self, oldpath: &Path, newpath: &Path) -> FsResult<()> { + self.error_if_no_use_real_fs(false)?; self.error_if_in_vfs(oldpath)?; self.error_if_in_vfs(newpath)?; RealFs.link_sync(oldpath, newpath) @@ -317,6 +369,7 @@ impl FileSystem for DenoCompileFileSystem { oldpath: PathBuf, newpath: PathBuf, ) -> FsResult<()> { + self.error_if_no_use_real_fs(false)?; self.error_if_in_vfs(&oldpath)?; self.error_if_in_vfs(&newpath)?; RealFs.link_async(oldpath, newpath).await @@ -328,6 +381,7 @@ impl FileSystem for DenoCompileFileSystem { newpath: &Path, file_type: Option, ) -> FsResult<()> { + self.error_if_no_use_real_fs(false)?; self.error_if_in_vfs(oldpath)?; self.error_if_in_vfs(newpath)?; RealFs.symlink_sync(oldpath, newpath, file_type) @@ -338,6 +392,7 @@ impl FileSystem for DenoCompileFileSystem { newpath: PathBuf, file_type: Option, ) -> FsResult<()> { + self.error_if_no_use_real_fs(false)?; self.error_if_in_vfs(&oldpath)?; self.error_if_in_vfs(&newpath)?; RealFs.symlink_async(oldpath, newpath, file_type).await @@ -347,6 +402,7 @@ impl FileSystem for DenoCompileFileSystem { if self.0.is_path_within(path) { Ok(self.0.read_link(path)?) } else { + self.error_if_no_use_real_fs(true)?; RealFs.read_link_sync(path) } } @@ -354,15 +410,18 @@ impl FileSystem for DenoCompileFileSystem { if self.0.is_path_within(&path) { Ok(self.0.read_link(&path)?) } else { + self.error_if_no_use_real_fs(true)?; RealFs.read_link_async(path).await } } fn truncate_sync(&self, path: &Path, len: u64) -> FsResult<()> { + self.error_if_no_use_real_fs(false)?; self.error_if_in_vfs(path)?; RealFs.truncate_sync(path, len) } async fn truncate_async(&self, path: PathBuf, len: u64) -> FsResult<()> { + self.error_if_no_use_real_fs(false)?; self.error_if_in_vfs(&path)?; RealFs.truncate_async(path, len).await } @@ -375,6 +434,7 @@ impl FileSystem for DenoCompileFileSystem { mtime_secs: i64, mtime_nanos: u32, ) -> FsResult<()> { + self.error_if_no_use_real_fs(false)?; self.error_if_in_vfs(path)?; RealFs.utime_sync(path, atime_secs, atime_nanos, mtime_secs, mtime_nanos) } @@ -386,6 +446,7 @@ impl FileSystem for DenoCompileFileSystem { mtime_secs: i64, mtime_nanos: u32, ) -> FsResult<()> { + self.error_if_no_use_real_fs(false)?; self.error_if_in_vfs(&path)?; RealFs .utime_async(path, atime_secs, atime_nanos, mtime_secs, mtime_nanos) @@ -400,6 +461,7 @@ impl FileSystem for DenoCompileFileSystem { mtime_secs: i64, mtime_nanos: u32, ) -> FsResult<()> { + self.error_if_no_use_real_fs(false)?; self.error_if_in_vfs(path)?; RealFs.lutime_sync(path, atime_secs, atime_nanos, mtime_secs, mtime_nanos) } @@ -411,6 +473,7 @@ impl FileSystem for DenoCompileFileSystem { mtime_secs: i64, mtime_nanos: u32, ) -> FsResult<()> { + self.error_if_no_use_real_fs(false)?; self.error_if_in_vfs(&path)?; RealFs .lutime_async(path, atime_secs, atime_nanos, mtime_secs, mtime_nanos) From 1f75edec3cc9a9ee233893e432a1ba1e8090cda1 Mon Sep 17 00:00:00 2001 From: Nyannyacha Date: Mon, 27 Oct 2025 22:19:09 +0000 Subject: [PATCH 8/8] stamp: clippy --- crates/fs/impl/deno_compile_fs.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/fs/impl/deno_compile_fs.rs b/crates/fs/impl/deno_compile_fs.rs index 735fb1f07..3a6a8cbe5 100644 --- a/crates/fs/impl/deno_compile_fs.rs +++ b/crates/fs/impl/deno_compile_fs.rs @@ -54,7 +54,7 @@ impl DenoCompileFileSystem { if not_found { return Err(FsError::Io(io::Error::from(io::ErrorKind::NotFound))); } - return Err(FsError::NotSupported); + Err(FsError::NotSupported) } else { Ok(()) }