* Remove the `Copy` bound on `AssetId`
* Also relax the `Copy` bound in the assets pallet
* Fix warnings on the newest nightly Rust
* Remove some unnecessary `clone()`s
* Try to satisfy clippy
* Remove some more unnecessary `clone()`s
* Add more `.clone()`s for newly merged code
* Also add `clone()`s in the benchmarks
---------
Co-authored-by: parity-processbot <>
* Switch to the `blake2b_simd` crate in `sp-core-hashing`
* ".git/.scripts/commands/bench/bench.sh" pallet dev frame_benchmarking
---------
Co-authored-by: command-bot <>
* Speed up storage iteration from within the runtime
* Move the cached iterator into an `Option`
* Use `RefCell` in no_std
* Simplify the code slightly
* Use `Option::replace`
* Update doc comment for `next_storage_key_slow`
* Remove `Backend::apply_to_key_values_while`
* Add `IterArgs::start_at_exclusive`
* Use `start_at_exclusive` in functions which used `Backend::apply_to_key_values_while`
* Remove `Backend::apply_to_keys_while`
* Remove `for_keys_with_prefix`, `for_key_values_with_prefix` and `for_child_keys_with_prefix`
* Remove unnecessary `to_vec` calls
* Fix unused method warning in no_std
* Remove unnecessary import
* Also check proof sizes in the test
* Iterate over both keys and values in `prove_range_read_with_size` and add a test
* Rework storage iterators
* Make sure storage iteration is also accounted for when benchmarking
* Use `trie-db` from crates.io
* Appease clippy
* Bump `trie-bench` to 0.35.0
* Fix tests' compilation
* Update comment to clarify how `IterArgs::start_at` works
* Add extra tests
* Fix iterators on `Client` so that they behave as before
* Add extra `unwrap`s in tests
* More clippy fixes
* Come on clippy, give me a break already
* Rename `allow_missing` to `stop_on_incomplete_database`
* Add `#[inline]` to `with_recorder_and_cache`
* Use `with_recorder_and_cache` in `with_trie_db`; add doc comment
* Simplify code: use `with_trie_db` in `next_storage_key_from_root`
* Remove `expect`s in the benchmarking CLI
* Add extra doc comments
* Move `RawIter` before `TrieBackendEssence` (no code changes; just cut-paste)
* Remove a TODO in tests
* Update comment for `StorageIterator::was_complete`
* Update `trie-db` to 0.25.1
* Bump `wasmtime` to 4.0.0 (and a few other deps)
* Use `Error::msg` instead of `anyhow!`
* Bump `wasmtime` to 5.0.0
* Update `Cargo.lock`
* Add `wasmtime` feature to `sp-wasm-interface` dependency
* Remove lifetime from `KeyIterator`
* Remove the lifetime from the method too
* update lockfile for {"substrate"}
Co-authored-by: parity-processbot <>
* Have `KeyIterator` clone the `prefix` it receives
* Stream keys in `storage_size` RPC and add a runtime limit
* Update client/rpc/Cargo.toml
Co-authored-by: Bastian Köcher <git@kchr.de>
* Update client/rpc/src/state/utils.rs
Co-authored-by: Bastian Köcher <git@kchr.de>
* Rename the types to signify that the cancellation is due to a timeout
* Move the test into a `mod tests`
* Add a comment regarding `biased` in `tokio::select`
* Make the `clone` explicit when calling `KeyIterator::{new, new_child}`
Co-authored-by: Bastian Köcher <git@kchr.de>
* Remove the `wasmtime` feature flag
* Update `substrate` and `polkadot` to the newest `master`
* Update `substrate` and `polkadot` to the newest `master`
* Remove `sp_tasks::spawn` API and related code
* Remove `RuntimeTasks::{spawn, join}` host functions
* remove unused
* Remove a few more tests that I forgot to remove
Co-authored-by: Shawn Tabrizi <shawntabrizi@gmail.com>
* Force base weights to be the minimum only when the intercept is negative; emit minimum execution times
* Add an `assert` making sure the intercept is zero when it's supposed to be zero
* Fix template
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* ".git/.scripts/bench-bot.sh" pallet dev pallet_assets
* ".git/.scripts/bench-bot.sh" pallet dev pallet_uniques
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
Co-authored-by: command-bot <>
* Support running the pallet benchmarks analysis without running the benchmarks
* Rename `override-results` to `json-input` and update the help comment
* ".git/.scripts/fmt.sh" 1
Co-authored-by: command-bot <>
* Improve base weights consistency and make sure they're never zero
* Switch back to `linregress` crate; add back estimation errors
* Move the test into `mod tests`
* Use all of the samples instead of only the first one
* Use full precision extrinsic base weights and slopes
* Add an extra comment
* ".git/.scripts/bench-bot.sh" pallet dev pallet_contracts
Co-authored-by: parity-processbot <>
Co-authored-by: Shawn Tabrizi <shawntabrizi@gmail.com>
* Restore `wasmtime`'s default stack size limit to 1MB
* Add extra comments
* Enforce different maximum call depth in release mode
* Split the call depth limit in two
* Align to changes in substrate: `sp_io::storage::get` now returns `Bytes`
* Update substrate and polkadot to the newest master
* update lockfile for {"substrate", "polkadot"}
Co-authored-by: parity-processbot <>
* Expose allocation stats in `FreeingBumpHeapAllocator`
* Return allocation stats when calling into the runtime
* Bump `parity-scale-codec` to 3.1.3 (fork)
* Prevent double allocation of the payload when calling `sp_io::storage::get`
* Fix tests
* Remove unnecessary `mut`
* Enable the `bytes` feature for `parity-scale-codec` in `sp-runtime-interface`
* Update client/allocator/src/freeing_bump.rs
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
* Bump `parity-scale-codec` to 3.1.3
* Fix some of the UI tests
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
* Prevend unsoundness in environments with broken `madvise(MADV_DONTNEED)`
* Add the `std` feature to `rustix` dependency
Apparently not having this breaks compilation on non-nightly toolchains.
* Autodetect the page size when checking whether `madvise` works
* Only make sure that the madvice check doesn't return `Err`
* Pump the gossip engine while waiting for the BEEFY runtime pallet
This fixes a memory leak when the BEEFY gadget is turned on, but
the runtime doesn't actually use BEEFY.
* Implement `FusedFuture` for `GossipEngine`
* Fuse futures outside of loops
* Run `sc-executor-wasmtime` unit tests for all instantiation strategies
* Adjust maximum memory pages hard limit for the pooling instantiation strategy
* Switch to pooling copy-on-write instantiation strategy for WASM
* Fix benchmark compilation
* Fix `cargo fmt`
* Fix compilation of another benchmark I've missed
* Cleanups according to review comments
* Move `max_memory_size` to `Semantics`
* Set `memory_guaranteed_dense_image_size` to `max_memory_size`
* Rename `wasm_instantiation_strategy` to `wasmtime_instantiation_strategy`
* Update the doc-comments regarding the instantiation strategy
* Extend the integration tests to test every instantiation strategy
* Don't drop the temporary directory until the runtime is dropped in benchmarks
* Don't drop the temporary directory until the runtime is dropped in tests
* When an RPC is rejected because it's RPC-unsafe say why in the error message
* Make wildcard storage change subscriptions RPC-unsafe
* Apply suggestions from code review
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
* Fix typo
* Fix tests
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
* Align to changes in Substrate
* Align to the newest changes in substrate
* Update `Cargo.lock`
* Add hwbenches to `parachain-template` too
* update lockfile for {"polkadot"}
Co-authored-by: parity-processbot <>
* Align to changes in Substrate
* Align to the newest changes in substrate
* Rename `--disable-hardware-benchmarks` to `--no-hardware-benchmarks`
* Fix `polkadot-test-service` compilation
* Fix compilation of test parachains
* Add new hardware and software metrics
* Move sysinfo tests into `mod tests`
* Correct a typo in a comment
* Remove unnecessary `nix` dependency
* Fix the version tests
* Add a `--disable-hardware-benchmarks` CLI argument
* Disable hardware benchmarks in the integration tests
* Remove unused import
* Fix benchmarks compilation
* Move code to a new `sc-sysinfo` crate
* Correct `impl_version` comment
* Move `--disable-hardware-benchmarks` to the chain-specific bin crate
* Move printing out of hardware bench results to `sc-sysinfo`
* Move hardware benchmarks to a separate messages; trigger them manually
* Rename some of the fields in the `HwBench` struct
* Revert changes to the telemetry crate; manually send hwbench messages
* Move sysinfo logs into the sysinfo crate
* Move the `TARGET_OS_*` constants into the sysinfo crate
* Minor cleanups
* Move the `HwBench` struct to the sysinfo crate
* Derive `Clone` for `HwBench`
* Fix broken telemetry connection notification stream
* Prevent the telemetry connection notifiers from leaking if they're disconnected
* Turn the telemetry notification failure log into a debug log
* Rename `--disable-hardware-benchmarks` to `--no-hardware-benchmarks`
* Catch panics on the FFI boundary between the runtime and the host for `wasmtime`
* Use an already existing test runtime function
* Merge the tests together
* Update `regex` to 1.5.5
* Update `libc` to 0.2.121
* Update `handlebars` to 4.2.2
* Update `lru` to 0.7.3
* Update `zeroize` to 1.5.4 and `zeroize_derive` to 1.3.2
* update lockfile for {"substrate"}
Co-authored-by: parity-processbot <>
* Rename to BagError
* Additional parameter for 'revert' command
* Set aux revert param to None
* Align to changes in how the WASM executor is configured in `substrate`
* update lockfile for {"substrate"}
* update lockfile for {"substrate"}
* Update substrate
* Update substrate
Co-authored-by: Keith Yeung <kungfukeith11@gmail.com>
Co-authored-by: Davide Galassi <davxy@datawok.net>
Co-authored-by: Shawn Tabrizi <shawntabrizi@gmail.com>
Co-authored-by: parity-processbot <>
* Add extra WASM heap pages when precompiling the runtime blob
* Fix compilation
* Fix rustdoc
* Fix rustdoc for real this time
* Fix benches compilation
* Improve the builder in `sc-executor-wasmtime`'s tests
* Refactor WASM module instantiation; enable WASM instance pooling
* Disable the `uffd` feature on `wasmtime`
* Restore the original behavior regarding the initial WASM memory size
* Adjust error message
* Remove unnecessary import in the benchmarks
* Preinstantiate the WASM runtime for a slight speedup
* Delete the asserts in `convert_memory_import_into_export`
* `return` -> `break`
* Revert WASM instance pooling for now
* Have `convert_memory_import_into_export` return an error instead of panic
* Update the warning when an import is missing
* Rustfmt and clippy fix
* Fix executor benchmarks' compilation without `wasmtime` being enabled
* rustfmt again
* Align to review comments
* Extend tests so that both imported and exported memories are tested
* Increase the number of heap pages for exported memories too
* Fix `decommit_works` test
* Bump `tokio` to 1.17.0
* Bump the `tokio` version in the test service too
* Revert changes to `bridges/relays/client-substrate/Cargo.toml`
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
* Simplify `num_connected_peers`
* Track requested peer counts
* Revert "Track requested peer counts"
This reverts commit 9f1c8704353df6afc17ed7e9f4ab8d8e29466ae4.
* Remove `substrate_sub_libp2p_peerset_num_requested` metric
* Remove two unused functions that I forgot to get rid of in previous commit
* Add a new host function for reporting fatal errors
* Fix one of the wasmtime executor tests
* Have `#[runtime_interface(wasm_only)]` actually mean WASM-only, and not no_std-only
* Print out errors through `Display` instead of `Debug`
* Switch one more trait to require `Error` for its error instead of only `Debug`
* Align to review comments
* Statically register host WASM functions
* Fix `substrate-test-client` compilation
* Move `ExtendedHostFunctions` to `sp-wasm-interface`
* Fix `sp-runtime-interface` tests' compilation
* Fix `sc-executor-wasmtime` tests' compilation
* Use `runtime_interface` macro in `test-runner`
* Fix `sc-executor` tests' compilation
* Reformatting/`rustfmt`
* Add an extra comment regarding the `H` generic arg in `create_runtime`
* Even more `rustfmt`
* Depend on `wasmtime` without default features in `sp-wasm-interface`
* Bump version of `sp-wasm-interface` to 4.0.1
* Bump `sp-wasm-interface` in `Cargo.lock` too
* Bump all of the `sp-wasm-interface` requirements to 4.0.1
Maybe this will appease cargo-unleash?
* Revert "Bump all of the `sp-wasm-interface` requirements to 4.0.1"
This reverts commit 0f7ccf8e0f371542861121b145ab87af6541ac30.
* Make `cargo-unleash` happy (maybe)
* Use `cargo-unleash` to bump the crates' versions
* Align to review comments
* Fix WASM executor without instance reuse; cleanups and refactoring
* Align to review comments
* Move the functions for reading/writing memory to `util.rs`
* Only `#[ignore]` the test in debug builds
* More review comments and minor extra comments
* Add a block production benchmark
* Simplify the block production benchmark
* Cleanups; switch execution strategy to WASM
* Switch WASM execution to `Compiled`
* Reduce the setup cost of the benchmark
Creating all of those extrinsics takes up *a lot* of time, up to the point
where the majority of the time is actually spent *outside* of the code
which we want to benchmark here. So let's only do it once.
* Add a variant of the block production benchmark with proof recording
* sp-sandbox: convert executors into normal `mod`s instead of using `include!`
* sp-sandbox: run `cargo fmt` on `host_executor.rs`
* sp-sandbox: abstract away the executors behind traits
* sp_sandbox: always compile both executors when possible
* sc-executor: make sure all sandbox tests run on both sandbox executors
* sc-executor: fix brainfart: actually call into the sandbox through the trait
* sc-runtime-test: fix cargo fmt
* sc-runtime-test: deduplicate executor-specific sandbox test entrypoints
* sc-executor: test each sandbox executor in a separate test
* cargo fmt (Github's conflict resolving thingy broke indentation)
* Strip out control codes from the logged messages
* Also strip away C1 control codes
* Add extra comments
* Clear the buffer after flushing; rename `write` to `flush`
* Move control code stripping into its own function
* Also strip out control codes from panic messages
* Also strip out Unicode left-to-right/right-to-left control codes
* Update `tracing`-related dependencies
* Enable `parking_lot` feature in `tracing-subscriber`
* Add an asynchronous stderr logger
* Make clippy happy
* Add an integration test for the logger
* Refactor `test_logger_filters`'s subprocess machinery into a separate function
* Use a child process instead of hooking into stderr for the test
* Add a doc comment for `MakeStderrWriter`
* Move the initialization into the `MakeStderrWriter`'s constructor
* Add an extra test case to trigger the logger's emergency flush mechanism
* Use the buffer's mutex for asynchronous flushes
* Remove vestigial `nix` dependency from one of the previous commits