diff --git a/Cargo.toml b/Cargo.toml index 3d9383f..a1c42ff 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,17 +10,6 @@ description = "WebAssembly interpreter" keywords = ["wasm", "webassembly", "bytecode", "interpreter"] exclude = [ "/res/*", "/tests/*", "/fuzz/*", "/benches/*" ] -[features] -default = ["std"] -# Disable for no_std support -std = [ - "parity-wasm/std", - "wasmi-validation/std", -] -# Enable for no_std support -# hashbrown only works on no_std -core = ["hashbrown/nightly", "libm"] - [dependencies] wasmi-validation = { path = "validation", default-features = false } parity-wasm = { version = "0.31", default-features = false } @@ -33,5 +22,20 @@ assert_matches = "1.1" rand = "0.4.2" wabt = "0.6" +[features] +default = ["std"] +# Disable for no_std support +std = [ + "parity-wasm/std", + "wasmi-validation/std", +] +# Enable for no_std support +# hashbrown only works on no_std +core = [ + "wasmi-validation/core", + "hashbrown/nightly", + "libm" +] + [workspace] members = ["validation"] diff --git a/src/func.rs b/src/func.rs index bc650dd..3f51ce9 100644 --- a/src/func.rs +++ b/src/func.rs @@ -1,5 +1,5 @@ #[allow(unused_imports)] -use alloc::prelude::*; +use alloc::prelude::v1::*; use alloc::rc::{Rc, Weak}; use core::fmt; use host::Externals; diff --git a/src/imports.rs b/src/imports.rs index 44866a7..5cd72eb 100644 --- a/src/imports.rs +++ b/src/imports.rs @@ -1,5 +1,5 @@ #[allow(unused_imports)] -use alloc::prelude::*; +use alloc::prelude::v1::*; #[cfg(not(feature = "std"))] use hashbrown::HashMap; diff --git a/src/isa.rs b/src/isa.rs index 0325f4e..01bc69c 100644 --- a/src/isa.rs +++ b/src/isa.rs @@ -68,7 +68,7 @@ //! #[allow(unused_imports)] -use alloc::prelude::*; +use alloc::prelude::v1::*; /// Should we keep a value before "discarding" a stack frame? /// diff --git a/src/lib.rs b/src/lib.rs index 93b7aa9..6b0604f 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -97,7 +97,7 @@ #![warn(missing_docs)] #![cfg_attr(not(feature = "std"), no_std)] //// alloc is required in no_std -#![cfg_attr(not(feature = "std"), feature(alloc))] +#![cfg_attr(not(feature = "std"), feature(alloc, alloc_prelude))] #[cfg(not(feature = "std"))] #[macro_use] @@ -123,7 +123,7 @@ extern crate parity_wasm; extern crate wasmi_validation as validation; #[allow(unused_imports)] -use alloc::prelude::*; +use alloc::prelude::v1::*; use core::fmt; #[cfg(feature = "std")] use std::error; diff --git a/src/memory.rs b/src/memory.rs index 9f3302f..f9ad91c 100644 --- a/src/memory.rs +++ b/src/memory.rs @@ -1,5 +1,5 @@ #[allow(unused_imports)] -use alloc::prelude::*; +use alloc::prelude::v1::*; use alloc::rc::Rc; use core::cell::{Cell, RefCell}; use core::cmp; diff --git a/src/module.rs b/src/module.rs index 51666d8..c3b30e2 100644 --- a/src/module.rs +++ b/src/module.rs @@ -1,5 +1,5 @@ #[allow(unused_imports)] -use alloc::prelude::*; +use alloc::prelude::v1::*; use alloc::rc::Rc; use core::cell::RefCell; use core::fmt; diff --git a/src/prepare/compile.rs b/src/prepare/compile.rs index e402cc8..c72d095 100644 --- a/src/prepare/compile.rs +++ b/src/prepare/compile.rs @@ -1,3 +1,6 @@ +#[allow(unused_imports)] +use alloc::prelude::v1::*; + use parity_wasm::elements::{BlockType, Instruction}; use validation::func::{ diff --git a/src/prepare/mod.rs b/src/prepare/mod.rs index 790c126..e3c0eae 100644 --- a/src/prepare/mod.rs +++ b/src/prepare/mod.rs @@ -1,3 +1,6 @@ +#[allow(unused_imports)] +use alloc::prelude::v1::*; + use crate::{ isa, validation::{validate_module2, Error, Validation}, diff --git a/src/runner.rs b/src/runner.rs index edd23ac..9425844 100644 --- a/src/runner.rs +++ b/src/runner.rs @@ -1,5 +1,5 @@ #[allow(unused_imports)] -use alloc::prelude::*; +use alloc::prelude::v1::*; use core::fmt; use core::ops; use core::{u32, usize}; diff --git a/src/table.rs b/src/table.rs index 7d8d744..63b633f 100644 --- a/src/table.rs +++ b/src/table.rs @@ -1,5 +1,5 @@ #[allow(unused_imports)] -use alloc::prelude::*; +use alloc::prelude::v1::*; use alloc::rc::Rc; use core::cell::RefCell; use core::fmt; diff --git a/validation/Cargo.toml b/validation/Cargo.toml index 88baefe..a5775fa 100644 --- a/validation/Cargo.toml +++ b/validation/Cargo.toml @@ -7,7 +7,11 @@ edition = "2018" [dependencies] parity-wasm = { version = "0.31", default-features = false } memory_units_crate = { package = "memory_units", version = "0.3.0" } +hashbrown = { version = "0.1.8", optional = true } [features] default = ["std"] std = ["parity-wasm/std"] +core = [ + "hashbrown/nightly" +] diff --git a/validation/src/context.rs b/validation/src/context.rs index f95fe70..e7de32b 100644 --- a/validation/src/context.rs +++ b/validation/src/context.rs @@ -1,6 +1,6 @@ use crate::Error; #[allow(unused_imports)] -use alloc::prelude::*; +use alloc::prelude::v1::*; use parity_wasm::elements::{ BlockType, FunctionType, GlobalType, MemoryType, TableType, ValueType, }; diff --git a/validation/src/func.rs b/validation/src/func.rs index b7fc28d..05efd2e 100644 --- a/validation/src/func.rs +++ b/validation/src/func.rs @@ -1,5 +1,5 @@ #[allow(unused_imports)] -use alloc::prelude::*; +use alloc::prelude::v1::*; use crate::{ context::ModuleContext, stack::StackWithLimit, util::Locals, Error, FunctionValidator, diff --git a/validation/src/lib.rs b/validation/src/lib.rs index 6a0df73..f46c5a5 100644 --- a/validation/src/lib.rs +++ b/validation/src/lib.rs @@ -3,7 +3,7 @@ #![cfg_attr(not(feature = "std"), no_std)] //// alloc is required in no_std -#![cfg_attr(not(feature = "std"), feature(alloc))] +#![cfg_attr(not(feature = "std"), feature(alloc, alloc_prelude))] #[cfg(not(feature = "std"))] #[macro_use] @@ -22,7 +22,7 @@ pub const DEFAULT_TABLE_INDEX: u32 = 0; pub const LINEAR_MEMORY_MAX_PAGES: Pages = Pages(65536); #[allow(unused_imports)] -use alloc::prelude::*; +use alloc::prelude::v1::*; use core::fmt; #[cfg(feature = "std")] use std::error; @@ -167,8 +167,6 @@ pub fn deny_floating_point(module: &Module) -> Result<(), Error> { } if let (Some(sec), Some(types)) = (module.function_section(), module.type_section()) { - use parity_wasm::elements::{Type, ValueType}; - let types = types.types(); for sig in sec.entries() { diff --git a/validation/src/stack.rs b/validation/src/stack.rs index 9e96a63..6f1166a 100644 --- a/validation/src/stack.rs +++ b/validation/src/stack.rs @@ -1,5 +1,5 @@ #[allow(unused_imports)] -use alloc::prelude::*; +use alloc::prelude::v1::*; use core::fmt; #[cfg(feature = "std")] diff --git a/validation/src/util.rs b/validation/src/util.rs index 44639ef..3fb6c1c 100644 --- a/validation/src/util.rs +++ b/validation/src/util.rs @@ -1,6 +1,6 @@ use crate::Error; #[allow(unused_imports)] -use alloc::prelude::*; +use alloc::prelude::v1::*; use parity_wasm::elements::{Local, ValueType}; /// Locals are the concatenation of a slice of function parameters