mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-11 21:11:07 +00:00
Make wasmtime the default when the feature is enabled (#8855)
* Make wasmtime the default when the feature is enabled * Update client/cli/src/arg_enums.rs Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com> Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com>
This commit is contained in:
@@ -20,26 +20,54 @@
|
||||
|
||||
use structopt::clap::arg_enum;
|
||||
|
||||
arg_enum! {
|
||||
/// How to execute Wasm runtime code
|
||||
#[allow(missing_docs)]
|
||||
#[derive(Debug, Clone, Copy)]
|
||||
pub enum WasmExecutionMethod {
|
||||
// Uses an interpreter.
|
||||
Interpreted,
|
||||
// Uses a compiled runtime.
|
||||
Compiled,
|
||||
/// How to execute Wasm runtime code.
|
||||
#[derive(Debug, Clone, Copy)]
|
||||
pub enum WasmExecutionMethod {
|
||||
/// Uses an interpreter.
|
||||
Interpreted,
|
||||
/// Uses a compiled runtime.
|
||||
Compiled,
|
||||
}
|
||||
|
||||
impl std::fmt::Display for WasmExecutionMethod {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
match self {
|
||||
Self::Interpreted => write!(f, "Interpreted"),
|
||||
Self::Compiled => write!(f, "Compiled"),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl std::str::FromStr for WasmExecutionMethod {
|
||||
type Err = String;
|
||||
|
||||
fn from_str(s: &str) -> Result<Self, String> {
|
||||
if s.eq_ignore_ascii_case("interpreted-i-know-what-i-do") {
|
||||
Ok(Self::Interpreted)
|
||||
} else if s.eq_ignore_ascii_case("compiled") {
|
||||
#[cfg(feature = "wasmtime")]
|
||||
{
|
||||
Ok(Self::Compiled)
|
||||
}
|
||||
#[cfg(not(feature = "wasmtime"))]
|
||||
{
|
||||
Err(format!("`Compiled` variant requires the `wasmtime` feature to be enabled"))
|
||||
}
|
||||
} else {
|
||||
Err(format!("Unknown variant `{}`, known variants: {:?}", s, Self::variants()))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl WasmExecutionMethod {
|
||||
/// Returns list of variants that are not disabled by feature flags.
|
||||
pub fn enabled_variants() -> Vec<&'static str> {
|
||||
Self::variants()
|
||||
.iter()
|
||||
.cloned()
|
||||
.filter(|&name| cfg!(feature = "wasmtime") || name != "Compiled")
|
||||
.collect()
|
||||
/// Returns all the variants of this enum to be shown in the cli.
|
||||
pub fn variants() -> &'static [&'static str] {
|
||||
let variants = &["interpreted-i-know-what-i-do", "compiled"];
|
||||
if cfg!(feature = "wasmtime") {
|
||||
variants
|
||||
} else {
|
||||
&variants[..1]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -181,7 +209,7 @@ impl std::str::FromStr for Database {
|
||||
} else if s.eq_ignore_ascii_case("paritydb-experimental") {
|
||||
Ok(Self::ParityDb)
|
||||
} else {
|
||||
Err(format!("Unknwon variant `{}`, known variants: {:?}", s, Self::variants()))
|
||||
Err(format!("Unknown variant `{}`, known variants: {:?}", s, Self::variants()))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,6 +27,12 @@ use sc_client_api::execution_extensions::ExecutionStrategies;
|
||||
use structopt::StructOpt;
|
||||
use std::path::PathBuf;
|
||||
|
||||
#[cfg(feature = "wasmtime")]
|
||||
const WASM_METHOD_DEFAULT: &str = "Compiled";
|
||||
|
||||
#[cfg(not(feature = "wasmtime"))]
|
||||
const WASM_METHOD_DEFAULT: &str = "interpreted-i-know-what-i-do";
|
||||
|
||||
/// Parameters for block import.
|
||||
#[derive(Debug, StructOpt, Clone)]
|
||||
pub struct ImportParams {
|
||||
@@ -50,9 +56,9 @@ pub struct ImportParams {
|
||||
#[structopt(
|
||||
long = "wasm-execution",
|
||||
value_name = "METHOD",
|
||||
possible_values = &WasmExecutionMethod::enabled_variants(),
|
||||
possible_values = &WasmExecutionMethod::variants(),
|
||||
case_insensitive = true,
|
||||
default_value = "Interpreted"
|
||||
default_value = WASM_METHOD_DEFAULT
|
||||
)]
|
||||
pub wasm_method: WasmExecutionMethod,
|
||||
|
||||
@@ -76,7 +82,6 @@ pub struct ImportParams {
|
||||
}
|
||||
|
||||
impl ImportParams {
|
||||
|
||||
/// Specify the state cache size.
|
||||
pub fn state_cache_size(&self) -> usize {
|
||||
self.state_cache_size
|
||||
|
||||
Reference in New Issue
Block a user