diff options
author | Divy Srivastava <dj.srivastava23@gmail.com> | 2024-01-05 18:28:33 +0530 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-05 18:28:33 +0530 |
commit | df062d2c788fd76546d59c67452d8d0fe569c533 (patch) | |
tree | b82a837378469c3eb1456aeea40354601b040793 /ext/fs/interface.rs | |
parent | bac51f66aa89dd9b79a3c4e844423c3a3399ea13 (diff) |
fix(ext/node): add fs.cp, fs.cpSync, promises.cp (#21745)
Fixes https://github.com/denoland/deno/issues/20803
Fixes https://github.com/denoland/deno/issues/21723
Performance: copying a 48GiB rust `target` folder (recursive)
| Platform | `deno` | `node v21.5` | Improvement |
| -------- | ------- | ------- | ------- |
| macOS (APFS) | 3.1secs | 127.99 secs | **42x** |
| Windows | 18.3secs | 67.2secs | **3.8x** |
Copying files with varying sizes:

Diffstat (limited to 'ext/fs/interface.rs')
-rw-r--r-- | ext/fs/interface.rs | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/ext/fs/interface.rs b/ext/fs/interface.rs index e69e80c6b..8ffa61481 100644 --- a/ext/fs/interface.rs +++ b/ext/fs/interface.rs @@ -131,6 +131,9 @@ pub trait FileSystem: std::fmt::Debug + MaybeSend + MaybeSync { newpath: PathBuf, ) -> FsResult<()>; + fn cp_sync(&self, path: &Path, new_path: &Path) -> FsResult<()>; + async fn cp_async(&self, path: PathBuf, new_path: PathBuf) -> FsResult<()>; + fn stat_sync(&self, path: &Path) -> FsResult<FsStat>; async fn stat_async(&self, path: PathBuf) -> FsResult<FsStat>; |