rust/library
Urgau c2f0209c3c
Rollup merge of #150881 - fix-wasi-fs-copy, r=alexcrichton
Fix std::fs::copy on WASI by setting proper OpenOptions flags

When PR rust-lang/rust#147572 switched WASI to use Unix-style filesystem APIs, the open_to_and_set_permissions function for WASI was implemented to call OpenOptions::new().open() without setting any access mode flags.

This causes std::fs::copy to fail with the error:
"must specify at least one of read, write, or append access"

The fix is to explicitly set .write(true), .create(true), and .truncate(true) on the OpenOptions, matching the behavior of the non-WASI Unix implementation but without the permission handling that WASI doesn't support.

Minimal reproduction:
```rs
    fn main() {
        std::fs::write("/src.txt", b"test").unwrap();
        match std::fs::copy("/src.txt", "/dst.txt") {
            Ok(_) => println!("PASS: fs::copy works!"),
            Err(e) => println!("FAIL: {}", e),
        }
    }
```
    # Compile and run:
    rustc +nightly --target wasm32-wasip2 test.rs -o test.wasm
    wasmtime -S cli --dir . test.wasm

    # Before fix: FAIL: must specify at least one of read, write, or append access
    # After fix:  PASS: fs::copy works!

Note: The existing test library/std/src/fs/tests.rs::copy_file_ok would have caught this regression if the std test suite ran on WASI targets. Currently std tests don't compile for wasm32-wasip2 due to Unix-specific test code in library/std/src/sys/fd/unix/tests.rs.

Fixes the regression introduced in nightly-2025-12-10.

r? @alexcrichton
2026-01-09 23:28:25 +01:00
..
alloc Stop emitting UbChecks on every Vec→Slice 2026-01-08 17:14:02 -08:00
alloctests Rollup merge of #149318 - slice_partial_sort_unstable, r=tgross35 2026-01-09 23:28:15 +01:00
backtrace@b65ab935fb Update the backtrace submodule 2025-06-16 07:00:13 +00:00
compiler-builtins compiler-builtins: Enable AArch64 __chkstk for MinGW 2026-01-08 05:01:35 -05:00
core Rollup merge of #149318 - slice_partial_sort_unstable, r=tgross35 2026-01-09 23:28:15 +01:00
coretests Rollup merge of #147499 - josh-kaplan:master, r=Mark-Simulacrum 2025-12-28 18:16:09 +01:00
panic_abort Use core via rustc-std-workspace-core in library/panic* 2025-07-31 22:47:24 +00:00
panic_unwind Fix new function_casts_as_integer lint errors in core, std, panic_unwind and compiler crates 2025-11-10 16:38:28 +01:00
portable-simd Remove more #[must_use] from portable-simd 2025-11-11 13:27:04 -08:00
proc_macro Update literal-escaper version to 0.0.7 2026-01-08 14:10:33 +01:00
profiler_builtins Fix profiler_builtins build script to handle full path to profiler lib 2025-04-11 16:57:38 +02:00
rtstartup Update cfg(bootstrap) 2025-07-01 10:55:49 -07:00
rustc-std-workspace-alloc Disable unit tests for stdlib packages that don't contain any 2025-07-24 09:15:28 +00:00
rustc-std-workspace-core Use core via rustc-std-workspace-core in library/panic* 2025-07-31 22:47:24 +00:00
rustc-std-workspace-std Disable unit tests for stdlib packages that don't contain any 2025-07-24 09:15:28 +00:00
std Rollup merge of #150881 - fix-wasi-fs-copy, r=alexcrichton 2026-01-09 23:28:25 +01:00
std_detect Auto merge of #145948 - a4lg:riscv-stabilize-target-features-v2, r=Amanieu 2026-01-03 07:26:35 +00:00
stdarch Merge pull request #1984 from rust-lang/rustc-pull 2026-01-03 03:33:46 +00:00
sysroot add autodiff examples 2025-11-16 23:35:37 -05:00
test rustdoc: Write newline differently 2025-12-13 16:31:09 +09:00
unwind Correct hexagon "unwinder_private_data_size" 2025-12-29 15:21:09 -06:00
windows_targets Rollup merge of #144399 - bjorn3:stdlib_tests_separate_packages, r=Mark-Simulacrum 2025-07-28 08:36:53 +02:00
Cargo.lock Update literal-escaper version to 0.0.7 2026-01-08 14:10:33 +01:00
Cargo.toml Remove the std workspace patch for compiler-builtins 2025-08-19 18:56:35 +00:00