* 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
* 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>
* 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
* 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
* 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