Skip to content

wasmtime 1.0.0's wasi-cap-std-sync doesn't compile with nightly Rust on Windows #4936

@philpax

Description

@philpax

Steps to Reproduce

  • Update to a Rust nightly after the 27th of July
  • Attempt to build wasmtime-wasi

Expected Results

The build completes successfully.

Actual Results

The build fails as the version of cap-std in use uses sealed traits in the Rust stdlib:

   --> C:\Users\me\.cargo\registry\src\git.colasdn.top-1ecc6299db9ec823\cap-primitives-0.25.3\src\fs
\file_type.rs:134:6
    |
134 | impl std::os::windows::fs::FileTypeExt for FileType {
    |      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `std::sealed::Sealed` is not 
implemented for `file_type::FileType`
    |
    = help: the following other types implement trait `std::sealed::Sealed`:
              Child
              Command
              ExitCode
              ExitStatus
              ExitStatusError
              OsStr
              OsString
              Simd<f32, N>
            and 2 others
note: required by a bound in `std::os::windows::fs::FileTypeExt`

Versions and Environment

Wasmtime version or commit: 1.0.0

Operating system: Windows 10

Architecture: x86-64

Extra Info

This is caused by bytecodealliance/cap-std#270, which has been fixed up by upstream cap-std. A v0.26.0-patch1 has been released that includes this fix, but it may be worth waiting for the 1.0.0? (not sure what y'all are planning internally.)

Prior to this, I was using wasmtime 0.39.1 with these patches:

[patch.crates-io]
cap-std = { git = "https://github.com/bytecodealliance/cap-std.git", branch = "sunfishcode/file-type-ext" }
cap-primitives = { git = "https://github.com/bytecodealliance/cap-std.git", branch = "sunfishcode/file-type-ext" }
cap-fs-ext = { git = "https://github.com/bytecodealliance/cap-std.git", branch = "sunfishcode/file-type-ext" }

As wasmtime 1.0.0 depends on 0.25.3 specifically, I can no longer manually patch the relevant packages as there's no version of 0.25.3 with this fix on the Git repository, and (as far as I can tell, it's still a little mysterious to me) there's no way to patch with another version from crates.io (I'd patch with 1.0.0rc1 if it was possible)

This is currently blocking us from updating to 1.0.0; 0.39.1 still works fine, but would love to get in today's release hype 🚀

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugIncorrect behavior in the current implementation that needs fixing

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions