diff --git a/Cargo.lock b/Cargo.lock index e9dca08d28..ad290eb5e2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4004,6 +4004,12 @@ dependencies = [ "winapi", ] +[[package]] +name = "id-arena" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25a2bc672d1148e28034f176e01fffebb08b35768468cc954630da77a1449005" + [[package]] name = "ident_case" version = "1.0.1" @@ -8647,6 +8653,17 @@ dependencies = [ "syn 1.0.98", ] +[[package]] +name = "pulldown-cmark" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffade02495f22453cd593159ea2f59827aae7f53fa8323f756799b670881dcf8" +dependencies = [ + "bitflags", + "memchr", + "unicase", +] + [[package]] name = "quick-error" version = "1.2.3" @@ -10852,6 +10869,17 @@ dependencies = [ "serde_derive", ] +[[package]] +name = "serde-wasm-bindgen" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3b4c031cd0d9014307d82b8abf653c0290fbdaeb4c02d00c63cf52f728628bf" +dependencies = [ + "js-sys", + "serde", + "wasm-bindgen", +] + [[package]] name = "serde_cbor" version = "0.11.2" @@ -13649,9 +13677,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.81" +version = "0.2.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c53b543413a17a202f4be280a7e5c62a1c69345f5de525ee64f8cfdbc954994" +checksum = "eaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -13659,13 +13687,13 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.81" +version = "0.2.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5491a68ab4500fa6b4d726bd67408630c3dbe9c4fe7bda16d5c82a1fd8c7340a" +checksum = "4c8ffb332579b0557b52d268b91feab8df3615f265d5270fec2a8c95b17c1142" dependencies = [ "bumpalo", - "lazy_static", "log", + "once_cell", "proc-macro2 1.0.40", "quote 1.0.20", "syn 1.0.98", @@ -13686,9 +13714,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.81" +version = "0.2.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c441e177922bc58f1e12c022624b6216378e5febc2f0533e41ba443d505b80aa" +checksum = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810" dependencies = [ "quote 1.0.20", "wasm-bindgen-macro-support", @@ -13696,9 +13724,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.81" +version = "0.2.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d94ac45fcf608c1f45ef53e748d35660f168490c10b23704c7779ab8f5c3048" +checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c" dependencies = [ "proc-macro2 1.0.40", "quote 1.0.20", @@ -13709,9 +13737,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.81" +version = "0.2.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a89911bd99e5f3659ec4acf9c4d93b0a90fe4a2a11f15328472058edc5261be" +checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f" [[package]] name = "wasm-encoder" @@ -13759,15 +13787,17 @@ dependencies = [ [[package]] name = "wasmer" -version = "3.0.0-beta.2" +version = "3.0.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01fc47a9d4ebb42b3a9a3d802e809bbdb5afaf3028373a82b989e51f4e400903" +checksum = "acfd471eb798272c684bf6c958ec70c9e6e2cceefc05c9cfe293d995c7fc9cc0" dependencies = [ "bytes 1.1.0", "cfg-if", "indexmap", "js-sys", "more-asserts", + "serde", + "serde-wasm-bindgen", "target-lexicon", "thiserror", "wasm-bindgen", @@ -13782,9 +13812,9 @@ dependencies = [ [[package]] name = "wasmer-compiler" -version = "3.0.0-beta.2" +version = "3.0.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54d7b5068f9ed673f0fc8513b4702067a0f5712d3ea226eb71fc4a9c6c4fe9c7" +checksum = "a075ace8064d26557356cb499ad6e6559346baa825e138122565611c983753ed" dependencies = [ "backtrace", "cfg-if", @@ -13806,9 +13836,9 @@ dependencies = [ [[package]] name = "wasmer-compiler-cranelift" -version = "3.0.0-beta.2" +version = "3.0.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0fac321e5d3dc4f157f28bf6001f06d2e821422ce60449da97d39af171b4169" +checksum = "c45fe71c800c50755d675465b50e017038213b8f75bb14d04b8298b2c16a62e2" dependencies = [ "cranelift-codegen 0.86.1", "cranelift-entity 0.86.1", @@ -13825,9 +13855,9 @@ dependencies = [ [[package]] name = "wasmer-compiler-llvm" -version = "3.0.0-beta.2" +version = "3.0.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86c172bbe70b146d46b750d842e426f1abf1b698cf22fad7cdefb632a2b17dbd" +checksum = "926f9fa88075231332083f72ca8bc04f280de632435634bb5fae8ac048c114f2" dependencies = [ "byteorder", "cc", @@ -13849,9 +13879,9 @@ dependencies = [ [[package]] name = "wasmer-compiler-singlepass" -version = "3.0.0-beta.2" +version = "3.0.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20ae0bafb36a7ab8e4125474ebf19e640820797181bc19682d056d0cba037e6f" +checksum = "af10e365ef38ab13b1f062d447fb5545546ccc6b99b5daa836fd503eceafb562" dependencies = [ "byteorder", "dynasm", @@ -13867,9 +13897,9 @@ dependencies = [ [[package]] name = "wasmer-derive" -version = "3.0.0-beta.2" +version = "3.0.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02b38c7a442cffa5efb799631013bb30aeb1d553c50effa51905ea8b36ecc6c8" +checksum = "d4bee8b64f88235d9b5ed24b76245cbbcc3a252a696a0f65baeb732060a3d005" dependencies = [ "proc-macro-error", "proc-macro2 1.0.40", @@ -13879,9 +13909,9 @@ dependencies = [ [[package]] name = "wasmer-middlewares" -version = "3.0.0-beta.2" +version = "3.0.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "190f1fa6e3a5980c9a571af457cb810945d4cd11b674b3892db973220f87bb0f" +checksum = "29f50edd5e8e19fe81099a3757e5168d65695ae262c98de0518336148094bdd2" dependencies = [ "wasmer", "wasmer-types", @@ -13898,9 +13928,9 @@ dependencies = [ [[package]] name = "wasmer-types" -version = "3.0.0-beta.2" +version = "3.0.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d47fb87929c956693d68393d4778670ed1ce9733804b74bbd5fa6fa6d725250" +checksum = "b5806cf609ca299b265f93b5a8c4c2156933fd7d592c5861a847f11336cf8dc4" dependencies = [ "enum-iterator", "enumset", @@ -13913,9 +13943,9 @@ dependencies = [ [[package]] name = "wasmer-vm" -version = "3.0.0-beta.2" +version = "3.0.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a72cac9f0ce7a9f3d0fe01604202270cdfe8d3dae9d84742b85c5d935cad74d" +checksum = "0898e214975ccdbbd0cddc2aa89839b34b6d0f373bc442c7c675cbb024019468" dependencies = [ "backtrace", "cc", @@ -13937,14 +13967,86 @@ dependencies = [ [[package]] name = "wasmer-wasi-types" -version = "3.0.0-beta.2" +version = "3.0.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5ada7a7fc8ac363e750518f3a81257cbc9d7188895a05fbe5e557b9d7a6366c" +checksum = "c91f20991cffe6dcf691ac9aa8078cf56f2bfdb5f5ec1559f875f34c5706217d" dependencies = [ "byteorder", "time 0.2.27", + "wasmer", "wasmer-derive", "wasmer-types", + "wasmer-wit-bindgen-gen-core", + "wasmer-wit-bindgen-gen-rust-wasm", + "wasmer-wit-bindgen-rust", + "wasmer-wit-parser", +] + +[[package]] +name = "wasmer-wit-bindgen-gen-core" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff8aa5be5ae5d61f5e151dc2c0e603093fe28395d2083b65ef7a3547844054fe" +dependencies = [ + "anyhow", + "wasmer-wit-parser", +] + +[[package]] +name = "wasmer-wit-bindgen-gen-rust" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "438bce7c4589842bf100cc9b312443a9b5fc6440e58ab0b8c114e460219c3c3b" +dependencies = [ + "heck 0.3.3", + "wasmer-wit-bindgen-gen-core", +] + +[[package]] +name = "wasmer-wit-bindgen-gen-rust-wasm" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "505f5168cfee591840e13e158a5c5e2f95d6df1df710839021564f36bee7bafc" +dependencies = [ + "heck 0.3.3", + "wasmer-wit-bindgen-gen-core", + "wasmer-wit-bindgen-gen-rust", +] + +[[package]] +name = "wasmer-wit-bindgen-rust" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "968747f1271f74aab9b70d9c5d4921db9bd13b4ec3ba5506506e6e7dc58c918c" +dependencies = [ + "async-trait", + "bitflags", + "wasmer-wit-bindgen-rust-impl", +] + +[[package]] +name = "wasmer-wit-bindgen-rust-impl" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd26fe00d08bd2119870b017d13413dfbd51e7750b6634d649fc7a7bbc057b85" +dependencies = [ + "proc-macro2 1.0.40", + "syn 1.0.98", + "wasmer-wit-bindgen-gen-core", + "wasmer-wit-bindgen-gen-rust-wasm", +] + +[[package]] +name = "wasmer-wit-parser" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46c9a15086be8a2eb3790613902b9d3a9a687833b17cd021de263a20378585a" +dependencies = [ + "anyhow", + "id-arena", + "pulldown-cmark", + "unicode-normalization", + "unicode-xid 0.2.3", ] [[package]] diff --git a/crates/sidevm/host-runtime/Cargo.toml b/crates/sidevm/host-runtime/Cargo.toml index e5d2a8ee5c..e6899a56ad 100644 --- a/crates/sidevm/host-runtime/Cargo.toml +++ b/crates/sidevm/host-runtime/Cargo.toml @@ -13,13 +13,13 @@ loupe = "0.1.3" sidevm-env = { path = "../env", features = ["host"] } thread_local = "1.1" tokio = { version = "1.17.0", features = ["full"] } -wasmer = "3.0.0-beta.2" -wasmer-wasi-types = "3.0.0-beta.2" -wasmer-compiler-singlepass = "3.0.0-beta.2" -wasmer-compiler-cranelift = { version = "3.0.0-beta.2", optional = true } -wasmer-compiler-llvm = { version = "3.0.0-beta.2", optional = true } +wasmer = "3.0.0-rc.2" +wasmer-wasi-types = "3.0.0-rc.2" +wasmer-compiler-singlepass = "3.0.0-rc.2" +wasmer-compiler-cranelift = { version = "3.0.0-rc.2", optional = true } +wasmer-compiler-llvm = { version = "3.0.0-rc.2", optional = true } wasmer-tunables = { path = "../../wasmer-tunables" } -wasmer-middlewares = "3.0.0-beta.2" +wasmer-middlewares = "3.0.0-rc.2" parity-wasm = "0.45.0" wasm-instrument = "0.3.0" serde = { version = "1.0", features = ["derive"] } diff --git a/crates/sidevm/host-runtime/src/env/wasi_env.rs b/crates/sidevm/host-runtime/src/env/wasi_env.rs index 6d28f5dba5..78612cc34a 100644 --- a/crates/sidevm/host-runtime/src/env/wasi_env.rs +++ b/crates/sidevm/host-runtime/src/env/wasi_env.rs @@ -1,14 +1,14 @@ use super::{Env as WasiEnv, Result}; -use libc::{ - clock_getres, clock_gettime, timespec, CLOCK_MONOTONIC, CLOCK_PROCESS_CPUTIME_ID, - CLOCK_REALTIME, CLOCK_THREAD_CPUTIME_ID, -}; +use libc::{clock_getres, clock_gettime, timespec, CLOCK_MONOTONIC, CLOCK_REALTIME}; use sidevm_env::{OcallError, OcallFuncs}; use thiserror::Error; use wasmer::{ namespace, AsStoreMut, Exports, Function, FunctionEnv, FunctionEnvMut, Memory32, WasmPtr, }; -use wasmer_wasi_types::*; +use wasmer_wasi_types::{ + types::*, + wasi::{self, Errno}, +}; /// This is returned in `RuntimeError`. /// Use `downcast` or `downcast_ref` to retrieve the `ExitCode`. @@ -20,7 +20,7 @@ pub enum WasiError { macro_rules! wasi_try { ($expr:expr) => {{ - let res: Result<_, __wasi_errno_t> = $expr; + let res: Result<_, Errno> = $expr; match res { Ok(val) => val, Err(err) => { @@ -88,29 +88,26 @@ pub fn args_get( _env: FunctionEnvMut, _argv: WasmPtr>, _argv_buf: WasmPtr, -) -> __wasi_errno_t { - __WASI_ENOSYS +) -> Errno { + Errno::Nosys } pub fn args_sizes_get( _env: FunctionEnvMut, _argc: WasmPtr, _argv_buf_size: WasmPtr, -) -> __wasi_errno_t { - __WASI_ENOSYS +) -> Errno { + Errno::Nosys } pub fn clock_res_get( env: FunctionEnvMut, - clock_id: __wasi_clockid_t, - resolution: WasmPtr<__wasi_timestamp_t>, -) -> __wasi_errno_t { + clock_id: wasi::Clockid, + resolution: WasmPtr, +) -> Errno { let unix_clock_id = match clock_id { - __WASI_CLOCK_MONOTONIC => CLOCK_MONOTONIC, - __WASI_CLOCK_PROCESS_CPUTIME_ID => CLOCK_PROCESS_CPUTIME_ID, - __WASI_CLOCK_REALTIME => CLOCK_REALTIME, - __WASI_CLOCK_THREAD_CPUTIME_ID => CLOCK_THREAD_CPUTIME_ID, - _ => return __WASI_EINVAL, + wasi::Clockid::Realtime => CLOCK_REALTIME, + wasi::Clockid::Monotonic => CLOCK_MONOTONIC, }; let (_output, timespec_out) = unsafe { @@ -127,25 +124,22 @@ pub fn clock_res_get( let memory = guard.memory.unwrap_ref().view(&env); let resolution = resolution.deref(&memory); wasi_try!( - resolution.write(t_out as __wasi_timestamp_t).ok(), - __WASI_EACCES + resolution.write(t_out as wasi::Timestamp).ok(), + Errno::Fault ); - __WASI_ESUCCESS + Errno::Success } pub fn clock_time_get( env: FunctionEnvMut, - clock_id: __wasi_clockid_t, - _precision: __wasi_timestamp_t, - time: WasmPtr<__wasi_timestamp_t>, -) -> __wasi_errno_t { + clock_id: wasi::Clockid, + _precision: wasi::Timestamp, + time: WasmPtr, +) -> Errno { let unix_clock_id = match clock_id { - __WASI_CLOCK_MONOTONIC => CLOCK_MONOTONIC, - __WASI_CLOCK_PROCESS_CPUTIME_ID => CLOCK_PROCESS_CPUTIME_ID, - __WASI_CLOCK_REALTIME => CLOCK_REALTIME, - __WASI_CLOCK_THREAD_CPUTIME_ID => CLOCK_THREAD_CPUTIME_ID, - _ => return __WASI_EINVAL, + wasi::Clockid::Realtime => CLOCK_REALTIME, + wasi::Clockid::Monotonic => CLOCK_MONOTONIC, }; let (_output, timespec_out) = unsafe { @@ -164,351 +158,343 @@ pub fn clock_time_get( let guard = env.data().inner.lock().unwrap(); let memory = guard.memory.unwrap_ref().view(&env); let time = time.deref(&memory); - wasi_try!(time.write(t_out as __wasi_timestamp_t).ok(), __WASI_EACCES); + wasi_try!(time.write(t_out as wasi::Timestamp).ok(), Errno::Fault); - __WASI_ESUCCESS + Errno::Success } pub fn environ_get( _env: FunctionEnvMut, _environ: WasmPtr>, _environ_buf: WasmPtr, -) -> __wasi_errno_t { - __WASI_ESUCCESS +) -> Errno { + Errno::Success } pub fn environ_sizes_get( env: FunctionEnvMut, environ_count: WasmPtr, environ_buf_size: WasmPtr, -) -> __wasi_errno_t { +) -> Errno { let guard = env.data().inner.lock().unwrap(); let memory = guard.memory.unwrap_ref().view(&env); let environ_count = environ_count.deref(&memory); let environ_buf_size = environ_buf_size.deref(&memory); - wasi_try!(environ_count.write(0).ok(), __WASI_EACCES); - wasi_try!(environ_buf_size.write(0).ok(), __WASI_EACCES); - __WASI_ESUCCESS + wasi_try!(environ_count.write(0).ok(), Errno::Fault); + wasi_try!(environ_buf_size.write(0).ok(), Errno::Fault); + Errno::Success } pub fn fd_advise( _env: FunctionEnvMut, - _fd: __wasi_fd_t, - _offset: __wasi_filesize_t, - _len: __wasi_filesize_t, - _advice: __wasi_advice_t, -) -> __wasi_errno_t { - __WASI_ESUCCESS + _fd: wasi::Fd, + _offset: wasi::Filesize, + _len: wasi::Filesize, + _advice: wasi::Advice, +) -> Errno { + Errno::Success } pub fn fd_allocate( _env: FunctionEnvMut, - _fd: __wasi_fd_t, - _offset: __wasi_filesize_t, - _len: __wasi_filesize_t, -) -> __wasi_errno_t { - __WASI_ENOSYS + _fd: wasi::Fd, + _offset: wasi::Filesize, + _len: wasi::Filesize, +) -> Errno { + Errno::Nosys } -pub fn fd_close(_env: FunctionEnvMut, _fd: __wasi_fd_t) -> __wasi_errno_t { - __WASI_ENOSYS +pub fn fd_close(_env: FunctionEnvMut, _fd: wasi::Fd) -> Errno { + Errno::Nosys } -pub fn fd_datasync(_env: FunctionEnvMut, _fd: __wasi_fd_t) -> __wasi_errno_t { - __WASI_ENOSYS +pub fn fd_datasync(_env: FunctionEnvMut, _fd: wasi::Fd) -> Errno { + Errno::Nosys } pub fn fd_fdstat_get( _env: FunctionEnvMut, - _fd: __wasi_fd_t, - _buf_ptr: WasmPtr<__wasi_fdstat_t>, -) -> __wasi_errno_t { - __WASI_ENOSYS + _fd: wasi::Fd, + _buf_ptr: WasmPtr, +) -> Errno { + Errno::Nosys } pub fn fd_fdstat_set_flags( _env: FunctionEnvMut, - _fd: __wasi_fd_t, - _flags: __wasi_fdflags_t, -) -> __wasi_errno_t { - __WASI_ENOSYS + _fd: wasi::Fd, + _flags: wasi::Fdflags, +) -> Errno { + Errno::Nosys } pub fn fd_fdstat_set_rights( _env: FunctionEnvMut, - _fd: __wasi_fd_t, - _fs_rights_base: __wasi_rights_t, - _fs_rights_inheriting: __wasi_rights_t, -) -> __wasi_errno_t { - __WASI_ENOSYS + _fd: wasi::Fd, + _fs_rights_base: wasi::Rights, + _fs_rights_inheriting: wasi::Rights, +) -> Errno { + Errno::Nosys } pub fn fd_filestat_get( _env: FunctionEnvMut, - _fd: __wasi_fd_t, - _buf: WasmPtr<__wasi_filestat_t>, -) -> __wasi_errno_t { - __WASI_ENOSYS + _fd: wasi::Fd, + _buf: WasmPtr, +) -> Errno { + Errno::Nosys } pub fn fd_filestat_set_size( _env: FunctionEnvMut, - _fd: __wasi_fd_t, - _st_size: __wasi_filesize_t, -) -> __wasi_errno_t { - __WASI_ENOSYS + _fd: wasi::Fd, + _st_size: wasi::Filesize, +) -> Errno { + Errno::Nosys } pub fn fd_filestat_set_times( _env: FunctionEnvMut, - _fd: __wasi_fd_t, - _st_atim: __wasi_timestamp_t, - _st_mtim: __wasi_timestamp_t, - _fst_flags: __wasi_fstflags_t, -) -> __wasi_errno_t { - __WASI_ENOSYS + _fd: wasi::Fd, + _st_atim: wasi::Timestamp, + _st_mtim: wasi::Timestamp, + _fst_flags: wasi::Fstflags, +) -> Errno { + Errno::Nosys } pub fn fd_pread( _env: FunctionEnvMut, - _fd: __wasi_fd_t, + _fd: wasi::Fd, _iovs: WasmPtr<__wasi_iovec_t>, _iovs_len: u32, - _offset: __wasi_filesize_t, + _offset: wasi::Filesize, _nread: WasmPtr, -) -> __wasi_errno_t { - __WASI_ENOSYS +) -> Errno { + Errno::Nosys } pub fn fd_prestat_get( _env: FunctionEnvMut, - _fd: __wasi_fd_t, - _buf: WasmPtr<__wasi_prestat_t>, -) -> __wasi_errno_t { - __WASI_EBADF + _fd: wasi::Fd, + _buf: WasmPtr, +) -> Errno { + Errno::Badf } pub fn fd_prestat_dir_name( _env: FunctionEnvMut, - _fd: __wasi_fd_t, + _fd: wasi::Fd, _path: WasmPtr, _path_len: u32, -) -> __wasi_errno_t { - __WASI_ENOSYS +) -> Errno { + Errno::Nosys } pub fn fd_pwrite( _env: FunctionEnvMut, - _fd: __wasi_fd_t, + _fd: wasi::Fd, _iovs: WasmPtr<__wasi_ciovec_t>, _iovs_len: u32, - _offset: __wasi_filesize_t, + _offset: wasi::Filesize, _nwritten: WasmPtr, -) -> __wasi_errno_t { - __WASI_ENOSYS +) -> Errno { + Errno::Nosys } pub fn fd_read( _env: FunctionEnvMut, - _fd: __wasi_fd_t, + _fd: wasi::Fd, _iovs: WasmPtr<__wasi_iovec_t>, _iovs_len: u32, _nread: WasmPtr, -) -> __wasi_errno_t { - __WASI_ENOSYS +) -> Errno { + Errno::Nosys } pub fn fd_readdir( _env: FunctionEnvMut, - _fd: __wasi_fd_t, + _fd: wasi::Fd, _buf: WasmPtr, _buf_len: u32, - _cookie: __wasi_dircookie_t, + _cookie: wasi::Dircookie, _bufused: WasmPtr, -) -> __wasi_errno_t { - __WASI_ENOSYS +) -> Errno { + Errno::Nosys } -pub fn fd_renumber( - _env: FunctionEnvMut, - _from: __wasi_fd_t, - _to: __wasi_fd_t, -) -> __wasi_errno_t { - __WASI_ENOSYS +pub fn fd_renumber(_env: FunctionEnvMut, _from: wasi::Fd, _to: wasi::Fd) -> Errno { + Errno::Nosys } pub fn fd_seek( _env: FunctionEnvMut, - _fd: __wasi_fd_t, - _offset: __wasi_filedelta_t, - _whence: __wasi_whence_t, - _newoffset: WasmPtr<__wasi_filesize_t>, -) -> __wasi_errno_t { - __WASI_ENOSYS + _fd: wasi::Fd, + _offset: wasi::FileDelta, + _whence: wasi::Whence, + _newoffset: WasmPtr, +) -> Errno { + Errno::Nosys } -pub fn fd_sync(_env: FunctionEnvMut, _fd: __wasi_fd_t) -> __wasi_errno_t { - __WASI_ENOSYS +pub fn fd_sync(_env: FunctionEnvMut, _fd: wasi::Fd) -> Errno { + Errno::Nosys } pub fn fd_tell( _env: FunctionEnvMut, - _fd: __wasi_fd_t, - _offset: WasmPtr<__wasi_filesize_t>, -) -> __wasi_errno_t { - __WASI_ENOSYS + _fd: wasi::Fd, + _offset: WasmPtr, +) -> Errno { + Errno::Nosys } pub fn fd_write( _env: FunctionEnvMut, - _fd: __wasi_fd_t, + _fd: wasi::Fd, _iovs: WasmPtr<__wasi_ciovec_t>, _iovs_len: u32, _nwritten: WasmPtr, -) -> __wasi_errno_t { - __WASI_ESUCCESS +) -> Errno { + Errno::Success } pub fn path_create_directory( _env: FunctionEnvMut, - _fd: __wasi_fd_t, + _fd: wasi::Fd, _path: WasmPtr, _path_len: u32, -) -> __wasi_errno_t { - __WASI_ENOSYS +) -> Errno { + Errno::Nosys } pub fn path_filestat_get( _env: FunctionEnvMut, - _fd: __wasi_fd_t, - _flags: __wasi_lookupflags_t, + _fd: wasi::Fd, + _flags: wasi::LookupFlags, _path: WasmPtr, _path_len: u32, - _buf: WasmPtr<__wasi_filestat_t>, -) -> __wasi_errno_t { - __WASI_ENOSYS + _buf: WasmPtr, +) -> Errno { + Errno::Nosys } #[allow(clippy::too_many_arguments)] pub fn path_filestat_set_times( _env: FunctionEnvMut, - _fd: __wasi_fd_t, - _flags: __wasi_lookupflags_t, + _fd: wasi::Fd, + _flags: wasi::LookupFlags, _path: WasmPtr, _path_len: u32, - _st_atim: __wasi_timestamp_t, - _st_mtim: __wasi_timestamp_t, - _fst_flags: __wasi_fstflags_t, -) -> __wasi_errno_t { - __WASI_ENOSYS + _st_atim: wasi::Timestamp, + _st_mtim: wasi::Timestamp, + _fst_flags: wasi::Fstflags, +) -> Errno { + Errno::Nosys } #[allow(clippy::too_many_arguments)] pub fn path_link( _env: FunctionEnvMut, - _old_fd: __wasi_fd_t, - _old_flags: __wasi_lookupflags_t, + _old_fd: wasi::Fd, + _old_flags: wasi::LookupFlags, _old_path: WasmPtr, _old_path_len: u32, - _new_fd: __wasi_fd_t, + _new_fd: wasi::Fd, _new_path: WasmPtr, _new_path_len: u32, -) -> __wasi_errno_t { - __WASI_ENOSYS +) -> Errno { + Errno::Nosys } #[allow(clippy::too_many_arguments)] pub fn path_open( _env: FunctionEnvMut, - _dirfd: __wasi_fd_t, - _dirflags: __wasi_lookupflags_t, + _dirfd: wasi::Fd, + _dirflags: wasi::LookupFlags, _path: WasmPtr, _path_len: u32, - _o_flags: __wasi_oflags_t, - _fs_rights_base: __wasi_rights_t, - _fs_rights_inheriting: __wasi_rights_t, - _fs_flags: __wasi_fdflags_t, - _fd: WasmPtr<__wasi_fd_t>, -) -> __wasi_errno_t { - __WASI_ENOSYS + _o_flags: wasi::Oflags, + _fs_rights_base: wasi::Rights, + _fs_rights_inheriting: wasi::Rights, + _fs_flags: wasi::Fdflags, + _fd: WasmPtr, +) -> Errno { + Errno::Nosys } pub fn path_readlink( _env: FunctionEnvMut, - _dir_fd: __wasi_fd_t, + _dir_fd: wasi::Fd, _path: WasmPtr, _path_len: u32, _buf: WasmPtr, _buf_len: u32, _buf_used: WasmPtr, -) -> __wasi_errno_t { - __WASI_ENOSYS +) -> Errno { + Errno::Nosys } pub fn path_remove_directory( _env: FunctionEnvMut, - _fd: __wasi_fd_t, + _fd: wasi::Fd, _path: WasmPtr, _path_len: u32, -) -> __wasi_errno_t { - __WASI_ENOSYS +) -> Errno { + Errno::Nosys } pub fn path_rename( _env: FunctionEnvMut, - _old_fd: __wasi_fd_t, + _old_fd: wasi::Fd, _old_path: WasmPtr, _old_path_len: u32, - _new_fd: __wasi_fd_t, + _new_fd: wasi::Fd, _new_path: WasmPtr, _new_path_len: u32, -) -> __wasi_errno_t { - __WASI_ENOSYS +) -> Errno { + Errno::Nosys } pub fn path_symlink( _env: FunctionEnvMut, _old_path: WasmPtr, _old_path_len: u32, - _fd: __wasi_fd_t, + _fd: wasi::Fd, _new_path: WasmPtr, _new_path_len: u32, -) -> __wasi_errno_t { - __WASI_ENOSYS +) -> Errno { + Errno::Nosys } pub fn path_unlink_file( _env: FunctionEnvMut, - _fd: __wasi_fd_t, + _fd: wasi::Fd, _path: WasmPtr, _path_len: u32, -) -> __wasi_errno_t { - __WASI_ENOSYS +) -> Errno { + Errno::Nosys } pub fn poll_oneoff( _env: FunctionEnvMut, - _in_: WasmPtr<__wasi_subscription_t>, - _out_: WasmPtr<__wasi_event_t>, + _in_: WasmPtr, + _out_: WasmPtr, _nsubscriptions: u32, _nevents: WasmPtr, -) -> __wasi_errno_t { - __WASI_ENOSYS +) -> Errno { + Errno::Nosys } pub fn proc_exit(_env: FunctionEnvMut, code: __wasi_exitcode_t) -> Result<(), WasiError> { Err(WasiError::Exited(code)) } -pub fn proc_raise(_env: FunctionEnvMut, _sig: __wasi_signal_t) -> __wasi_errno_t { - __WASI_ENOSYS +pub fn proc_raise(_env: FunctionEnvMut, _sig: wasi::Signal) -> Errno { + Errno::Nosys } -pub fn random_get( - mut env: FunctionEnvMut, - buf: u32, - buf_len: u32, -) -> Result<__wasi_errno_t> { +pub fn random_get(mut env: FunctionEnvMut, buf: u32, buf_len: u32) -> Result { let inner = env.data().inner.clone(); let mut env_guard = inner.lock().unwrap(); @@ -521,40 +507,36 @@ pub fn random_get( .view(&env) .write(buf as _, &u8_buffer) .or(Err(OcallError::InvalidAddress))?; - Ok(__WASI_ESUCCESS) + Ok(Errno::Success) } -pub fn sched_yield(_env: FunctionEnvMut) -> __wasi_errno_t { - __WASI_ESUCCESS +pub fn sched_yield(_env: FunctionEnvMut) -> Errno { + Errno::Success } pub fn sock_recv( _env: FunctionEnvMut, - _sock: __wasi_fd_t, + _sock: wasi::Fd, _ri_data: WasmPtr<__wasi_iovec_t>, _ri_data_len: u32, - _ri_flags: __wasi_riflags_t, + _ri_flags: RiFlags, _ro_datalen: WasmPtr, - _ro_flags: WasmPtr<__wasi_roflags_t>, -) -> __wasi_errno_t { - __WASI_ENOSYS + _ro_flags: WasmPtr, +) -> Errno { + Errno::Nosys } pub fn sock_send( _env: FunctionEnvMut, - _sock: __wasi_fd_t, + _sock: wasi::Fd, _si_data: WasmPtr<__wasi_ciovec_t>, _si_data_len: u32, - _si_flags: __wasi_siflags_t, + _si_flags: SiFlags, _so_datalen: WasmPtr, -) -> __wasi_errno_t { - __WASI_ENOSYS +) -> Errno { + Errno::Nosys } -pub fn sock_shutdown( - _env: FunctionEnvMut, - _sock: __wasi_fd_t, - _how: __wasi_sdflags_t, -) -> __wasi_errno_t { - __WASI_ENOSYS +pub fn sock_shutdown(_env: FunctionEnvMut, _sock: wasi::Fd, _how: SdFlags) -> Errno { + Errno::Nosys } diff --git a/crates/wasmer-tunables/Cargo.toml b/crates/wasmer-tunables/Cargo.toml index 8715509527..31d4dd5b03 100644 --- a/crates/wasmer-tunables/Cargo.toml +++ b/crates/wasmer-tunables/Cargo.toml @@ -5,5 +5,5 @@ edition = "2021" [dependencies] loupe = "0.1.3" -wasmer = "3.0.0-beta.2" +wasmer = "3.0.0-rc.2" diff --git a/standalone/pruntime/Cargo.lock b/standalone/pruntime/Cargo.lock index 4c45e23d24..b10c6ac830 100644 --- a/standalone/pruntime/Cargo.lock +++ b/standalone/pruntime/Cargo.lock @@ -2475,6 +2475,12 @@ dependencies = [ "winapi", ] +[[package]] +name = "id-arena" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25a2bc672d1148e28034f176e01fffebb08b35768468cc954630da77a1449005" + [[package]] name = "ident_case" version = "1.0.1" @@ -5144,6 +5150,17 @@ dependencies = [ "syn 1.0.99", ] +[[package]] +name = "pulldown-cmark" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffade02495f22453cd593159ea2f59827aae7f53fa8323f756799b670881dcf8" +dependencies = [ + "bitflags", + "memchr", + "unicase", +] + [[package]] name = "quote" version = "0.6.13" @@ -5931,6 +5948,17 @@ dependencies = [ "serde_derive", ] +[[package]] +name = "serde-wasm-bindgen" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3b4c031cd0d9014307d82b8abf653c0290fbdaeb4c02d00c63cf52f728628bf" +dependencies = [ + "js-sys", + "serde", + "wasm-bindgen", +] + [[package]] name = "serde_cbor" version = "0.11.2" @@ -7841,9 +7869,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.82" +version = "0.2.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc7652e3f6c4706c8d9cd54832c4a4ccb9b5336e2c3bd154d5cccfbf1c1f5f7d" +checksum = "eaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -7851,9 +7879,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.82" +version = "0.2.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "662cd44805586bd52971b9586b1df85cdbbd9112e4ef4d8f41559c334dc6ac3f" +checksum = "4c8ffb332579b0557b52d268b91feab8df3615f265d5270fec2a8c95b17c1142" dependencies = [ "bumpalo", "log", @@ -7878,9 +7906,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.82" +version = "0.2.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b260f13d3012071dfb1512849c033b1925038373aea48ced3012c09df952c602" +checksum = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810" dependencies = [ "quote 1.0.21", "wasm-bindgen-macro-support", @@ -7888,9 +7916,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.82" +version = "0.2.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5be8e654bdd9b79216c2929ab90721aa82faf65c48cdf08bdc4e7f51357b80da" +checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c" dependencies = [ "proc-macro2 1.0.43", "quote 1.0.21", @@ -7901,9 +7929,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.82" +version = "0.2.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6598dd0bd3c7d51095ff6531a5b23e02acdc81804e30d8f07afb77b7215a140a" +checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f" [[package]] name = "wasm-encoder" @@ -7925,15 +7953,17 @@ dependencies = [ [[package]] name = "wasmer" -version = "3.0.0-beta.2" +version = "3.0.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01fc47a9d4ebb42b3a9a3d802e809bbdb5afaf3028373a82b989e51f4e400903" +checksum = "acfd471eb798272c684bf6c958ec70c9e6e2cceefc05c9cfe293d995c7fc9cc0" dependencies = [ "bytes", "cfg-if", "indexmap", "js-sys", "more-asserts", + "serde", + "serde-wasm-bindgen", "target-lexicon", "thiserror", "wasm-bindgen", @@ -7948,9 +7978,9 @@ dependencies = [ [[package]] name = "wasmer-compiler" -version = "3.0.0-beta.2" +version = "3.0.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54d7b5068f9ed673f0fc8513b4702067a0f5712d3ea226eb71fc4a9c6c4fe9c7" +checksum = "a075ace8064d26557356cb499ad6e6559346baa825e138122565611c983753ed" dependencies = [ "backtrace", "cfg-if", @@ -7972,9 +8002,9 @@ dependencies = [ [[package]] name = "wasmer-compiler-cranelift" -version = "3.0.0-beta.2" +version = "3.0.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0fac321e5d3dc4f157f28bf6001f06d2e821422ce60449da97d39af171b4169" +checksum = "c45fe71c800c50755d675465b50e017038213b8f75bb14d04b8298b2c16a62e2" dependencies = [ "cranelift-codegen", "cranelift-entity", @@ -7991,9 +8021,9 @@ dependencies = [ [[package]] name = "wasmer-compiler-singlepass" -version = "3.0.0-beta.2" +version = "3.0.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20ae0bafb36a7ab8e4125474ebf19e640820797181bc19682d056d0cba037e6f" +checksum = "af10e365ef38ab13b1f062d447fb5545546ccc6b99b5daa836fd503eceafb562" dependencies = [ "byteorder", "dynasm", @@ -8009,9 +8039,9 @@ dependencies = [ [[package]] name = "wasmer-derive" -version = "3.0.0-beta.2" +version = "3.0.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02b38c7a442cffa5efb799631013bb30aeb1d553c50effa51905ea8b36ecc6c8" +checksum = "d4bee8b64f88235d9b5ed24b76245cbbcc3a252a696a0f65baeb732060a3d005" dependencies = [ "proc-macro-error", "proc-macro2 1.0.43", @@ -8021,9 +8051,9 @@ dependencies = [ [[package]] name = "wasmer-middlewares" -version = "3.0.0-beta.2" +version = "3.0.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "190f1fa6e3a5980c9a571af457cb810945d4cd11b674b3892db973220f87bb0f" +checksum = "29f50edd5e8e19fe81099a3757e5168d65695ae262c98de0518336148094bdd2" dependencies = [ "wasmer", "wasmer-types", @@ -8040,9 +8070,9 @@ dependencies = [ [[package]] name = "wasmer-types" -version = "3.0.0-beta.2" +version = "3.0.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d47fb87929c956693d68393d4778670ed1ce9733804b74bbd5fa6fa6d725250" +checksum = "b5806cf609ca299b265f93b5a8c4c2156933fd7d592c5861a847f11336cf8dc4" dependencies = [ "enum-iterator", "enumset", @@ -8055,9 +8085,9 @@ dependencies = [ [[package]] name = "wasmer-vm" -version = "3.0.0-beta.2" +version = "3.0.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a72cac9f0ce7a9f3d0fe01604202270cdfe8d3dae9d84742b85c5d935cad74d" +checksum = "0898e214975ccdbbd0cddc2aa89839b34b6d0f373bc442c7c675cbb024019468" dependencies = [ "backtrace", "cc", @@ -8079,14 +8109,86 @@ dependencies = [ [[package]] name = "wasmer-wasi-types" -version = "3.0.0-beta.2" +version = "3.0.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5ada7a7fc8ac363e750518f3a81257cbc9d7188895a05fbe5e557b9d7a6366c" +checksum = "c91f20991cffe6dcf691ac9aa8078cf56f2bfdb5f5ec1559f875f34c5706217d" dependencies = [ "byteorder", "time 0.2.27", + "wasmer", "wasmer-derive", "wasmer-types", + "wasmer-wit-bindgen-gen-core", + "wasmer-wit-bindgen-gen-rust-wasm", + "wasmer-wit-bindgen-rust", + "wasmer-wit-parser", +] + +[[package]] +name = "wasmer-wit-bindgen-gen-core" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff8aa5be5ae5d61f5e151dc2c0e603093fe28395d2083b65ef7a3547844054fe" +dependencies = [ + "anyhow", + "wasmer-wit-parser", +] + +[[package]] +name = "wasmer-wit-bindgen-gen-rust" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "438bce7c4589842bf100cc9b312443a9b5fc6440e58ab0b8c114e460219c3c3b" +dependencies = [ + "heck 0.3.3", + "wasmer-wit-bindgen-gen-core", +] + +[[package]] +name = "wasmer-wit-bindgen-gen-rust-wasm" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "505f5168cfee591840e13e158a5c5e2f95d6df1df710839021564f36bee7bafc" +dependencies = [ + "heck 0.3.3", + "wasmer-wit-bindgen-gen-core", + "wasmer-wit-bindgen-gen-rust", +] + +[[package]] +name = "wasmer-wit-bindgen-rust" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "968747f1271f74aab9b70d9c5d4921db9bd13b4ec3ba5506506e6e7dc58c918c" +dependencies = [ + "async-trait", + "bitflags", + "wasmer-wit-bindgen-rust-impl", +] + +[[package]] +name = "wasmer-wit-bindgen-rust-impl" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd26fe00d08bd2119870b017d13413dfbd51e7750b6634d649fc7a7bbc057b85" +dependencies = [ + "proc-macro2 1.0.43", + "syn 1.0.99", + "wasmer-wit-bindgen-gen-core", + "wasmer-wit-bindgen-gen-rust-wasm", +] + +[[package]] +name = "wasmer-wit-parser" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46c9a15086be8a2eb3790613902b9d3a9a687833b17cd021de263a20378585a" +dependencies = [ + "anyhow", + "id-arena", + "pulldown-cmark", + "unicode-normalization", + "unicode-xid 0.2.3", ] [[package]]