mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-04-26 01:47:55 +00:00
e349fc9ef8
This PR adds initial support for building RISC-V runtimes targeting PolkaVM. - Setting the `SUBSTRATE_RUNTIME_TARGET=riscv` environment variable will now build a RISC-V runtime instead of a WASM runtime. - This only adds support for *building* runtimes; running them will need a PolkaVM-based executor, which I will add in a future PR. - Only building the minimal runtime is supported (building the Polkadot runtime doesn't work *yet* due to one of the dependencies). - The builder now sets a `substrate_runtime` cfg flag when building the runtimes, with the idea being that instead of doing `#[cfg(not(feature = "std"))]` or `#[cfg(target_arch = "wasm32")]` to detect that we're building a runtime you'll do `#[cfg(substrate_runtime)]`. (Switching the whole codebase to use this will be done in a future PR; I deliberately didn't do this here to keep this PR minimal and reviewable.) - Further renaming of things (e.g. types, environment variables and proc macro attributes having "wasm" in their name) to be target-agnostic will also be done in a future refactoring PR (while keeping backwards compatibility where it makes sense; I don't intend to break anyone's workflow or create unnecessary churn). - This PR also fixes two bugs in the `wasm-builder` crate: * The `RUSTC` environment variable is now removed when invoking the compiler. This prevents the toolchain version from being overridden when called from a `build.rs` script. * When parsing the `rustup toolchain list` output the `(default)` is now properly stripped and not treated as part of the version. - I've also added a minimal CI job that makes sure this doesn't break in the future. (cc @paritytech/ci) cc @athei ------ Also, just a fun little tidbit: quickly comparing the size of the built runtimes it seems that the PolkaVM runtime is slightly smaller than the WASM one. (`production` build, with the `names` section substracted from the WASM's size to keep things fair, since for the PolkaVM runtime we're currently stripping out everything) - `.wasm`: 625505 bytes - `.wasm` (after wasm-opt -O3): 563205 bytes - `.wasm` (after wasm-opt -Os): 562987 bytes - `.wasm` (after wasm-opt -Oz): 536852 bytes - `.polkavm`: ~~580338 bytes~~ 550476 bytes (after enabling extra target features; I'll add those in another PR once we have an executor working) --------- Co-authored-by: Bastian Köcher <git@kchr.de>
67 lines
2.0 KiB
TOML
67 lines
2.0 KiB
TOML
[package]
|
|
name = "sp-runtime-interface"
|
|
version = "24.0.0"
|
|
authors.workspace = true
|
|
edition.workspace = true
|
|
license = "Apache-2.0"
|
|
homepage = "https://substrate.io"
|
|
repository.workspace = true
|
|
description = "Substrate runtime interface"
|
|
documentation = "https://docs.rs/sp-runtime-interface/"
|
|
readme = "README.md"
|
|
|
|
[lints]
|
|
workspace = true
|
|
|
|
[package.metadata.docs.rs]
|
|
targets = ["x86_64-unknown-linux-gnu"]
|
|
|
|
[dependencies]
|
|
bytes = { version = "1.1.0", default-features = false }
|
|
sp-wasm-interface = { path = "../wasm-interface", default-features = false }
|
|
sp-std = { path = "../std", default-features = false }
|
|
sp-tracing = { path = "../tracing", default-features = false }
|
|
sp-runtime-interface-proc-macro = { path = "proc-macro" }
|
|
sp-externalities = { path = "../externalities", default-features = false }
|
|
codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false, features = ["bytes"] }
|
|
static_assertions = "1.0.0"
|
|
primitive-types = { version = "0.12.0", default-features = false }
|
|
sp-storage = { path = "../storage", default-features = false }
|
|
impl-trait-for-tuples = "0.2.2"
|
|
|
|
[target.'cfg(all(any(target_arch = "riscv32", target_arch = "riscv64"), substrate_runtime))'.dependencies]
|
|
polkavm-derive = { workspace = true }
|
|
|
|
[dev-dependencies]
|
|
sp-runtime-interface-test-wasm = { path = "test-wasm" }
|
|
sp-state-machine = { path = "../state-machine" }
|
|
sp-core = { path = "../core" }
|
|
sp-io = { path = "../io" }
|
|
rustversion = "1.0.6"
|
|
trybuild = "1.0.88"
|
|
|
|
[features]
|
|
default = ["std"]
|
|
std = [
|
|
"bytes/std",
|
|
"codec/std",
|
|
"primitive-types/std",
|
|
"sp-core/std",
|
|
"sp-externalities/std",
|
|
"sp-io/std",
|
|
"sp-runtime-interface-test-wasm/std",
|
|
"sp-state-machine/std",
|
|
"sp-std/std",
|
|
"sp-storage/std",
|
|
"sp-tracing/std",
|
|
"sp-wasm-interface/std",
|
|
]
|
|
|
|
# ATTENTION
|
|
#
|
|
# Only use when you know what you are doing.
|
|
#
|
|
# Disables static assertions in `impls.rs` that checks the word size. To prevent any footgun, the
|
|
# check is changed into a runtime check.
|
|
disable_target_static_assertions = []
|