From df062d2c788fd76546d59c67452d8d0fe569c533 Mon Sep 17 00:00:00 2001 From: Divy Srivastava Date: Fri, 5 Jan 2024 18:28:33 +0530 Subject: 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: ![image](https://github.com/denoland/deno/assets/34997667/58932652-6f7a-47f5-8504-896dc9ab4ddc) --- runtime/permissions/mod.rs | 9 +++++++++ runtime/snapshot.rs | 7 +++++++ 2 files changed, 16 insertions(+) (limited to 'runtime') diff --git a/runtime/permissions/mod.rs b/runtime/permissions/mod.rs index 7740a8e31..89adab361 100644 --- a/runtime/permissions/mod.rs +++ b/runtime/permissions/mod.rs @@ -1384,6 +1384,15 @@ impl deno_node::NodePermissions for PermissionsContainer { self.0.lock().read.check(path, api_name) } + #[inline(always)] + fn check_write_with_api_name( + &self, + path: &Path, + api_name: Option<&str>, + ) -> Result<(), AnyError> { + self.0.lock().write.check(path, api_name) + } + fn check_sys(&self, kind: &str, api_name: &str) -> Result<(), AnyError> { self.0.lock().sys.check(kind, Some(api_name)) } diff --git a/runtime/snapshot.rs b/runtime/snapshot.rs index 978f3d70e..a50f0773a 100644 --- a/runtime/snapshot.rs +++ b/runtime/snapshot.rs @@ -84,6 +84,13 @@ impl deno_node::NodePermissions for Permissions { ) -> Result<(), deno_core::error::AnyError> { unreachable!("snapshotting!") } + fn check_write_with_api_name( + &self, + _p: &Path, + _api_name: Option<&str>, + ) -> Result<(), deno_core::error::AnyError> { + unreachable!("snapshotting!") + } fn check_sys( &self, _kind: &str, -- cgit v1.2.3