* Temporarily remove support for interface types This commit temporarily removes support for interface types from the `wasmtime` CLI and removes the `wasmtime-interface-types` crate. An error is now printed for any input wasm modules that have wasm interface types sections to indicate that support has been removed and references to two issues are printed as well: * #677 - tracking work for re-adding interface types support * #1271 - rationale for removal and links to other discussions Closes #1271 * Update the python extension
45 lines
1.2 KiB
Rust
45 lines
1.2 KiB
Rust
pub use wasmtime_rust_macro::wasmtime;
|
|
|
|
// modules used by the macro
|
|
#[doc(hidden)]
|
|
pub mod __rt {
|
|
pub use anyhow;
|
|
pub use wasmtime;
|
|
pub use wasmtime_wasi;
|
|
|
|
use std::convert::{TryFrom, TryInto};
|
|
|
|
pub trait FromVecValue: Sized {
|
|
fn from(list: Vec<wasmtime::Val>) -> anyhow::Result<Self>;
|
|
}
|
|
|
|
macro_rules! tuple {
|
|
($(($($a:ident),*),)*) => ($(
|
|
impl<$($a: TryFrom<wasmtime::Val>),*> FromVecValue for ($($a,)*)
|
|
where $(anyhow::Error: From<$a::Error>,)*
|
|
{
|
|
#[allow(non_snake_case)]
|
|
fn from(list: Vec<wasmtime::Val>) -> anyhow::Result<Self> {
|
|
let mut iter = list.into_iter();
|
|
$(
|
|
let $a = iter.next()
|
|
.ok_or_else(|| anyhow::format_err!("not enough values"))?
|
|
.try_into()?;
|
|
)*
|
|
if iter.next().is_some() {
|
|
anyhow::bail!("too many return values");
|
|
}
|
|
Ok(($($a,)*))
|
|
}
|
|
}
|
|
)*)
|
|
}
|
|
|
|
tuple! {
|
|
(),
|
|
(A),
|
|
(A, B),
|
|
(A, B, C),
|
|
}
|
|
}
|