Our executor currently only supports the WASM MVP feature set, however
nowadays when compiling WASM the Rust compiler has more features enabled
by default.
We do set the `-C target-cpu=mvp` flag to make sure that *our* code gets
compiled in a way that is compatible with our executor, however this
doesn't affect Rust's standard library crates (`std`, `core` and
`alloc`) which are by default precompiled and still can make use of
these extra features.
So in this PR we force the compiler to also compile the standard library
crates for us to make sure that they also only use the MVP features.
I've added the `WASM_BUILD_STD` environment variable which can be used
to disable this behavior if set to `0`.
Unfortunately this *will* slow down the compile times when building
runtimes, but there isn't much that we can do about that.
Fixes https://github.com/paritytech/polkadot-sdk/issues/1755
---------
Co-authored-by: Bastian Köcher <git@kchr.de>
* Happy New Year!
* Remove year entierly
Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* Remove years from copyright notice in the entire repo
---------
Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* Implement PVF validation host
* WIP: Diener
* Increase the alloted compilation time
* Add more comments
* Minor clean up
* Apply suggestions from code review
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
* Fix pruning artifact removal
* Fix formatting and newlines
* Fix the thread pool
* Update node/core/pvf/src/executor_intf.rs
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
* Remove redundant test declaration
* Don't convert the path into an intermediate string
* Try to workaround the test failure
* Use the puppet_worker trick again
* Fix a blip
* Move `ensure_wasmtime_version` under the tests mod
* Add a macro for puppet_workers
* fix build for not real-overseer
* Rename the puppet worker for adder collator
* play it safe with the name of adder puppet worker
* Typo: triggered
* Add more comments
* Do not kill exec worker on every error
* Plumb Duration for timeouts
* typo: critical
* Add proofs
* Clean unused imports
* Revert "WIP: Diener"
This reverts commit b9f54e513366c7a6dfdd117ac19fbdc46b900b4d.
* Sync version of wasmtime
* Update cargo.lock
* Update Substrate
* Merge fixes still
* Update wasmtime version in test
* bastifmt
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
* Squash spaces
* Trailing new line for testing.rs
* Remove controversial code
* comment about biasing
* Fix suggestion
* Add comments
* make it more clear why unwrap_err
* tmpfile retry
* proper proofs for claim_idle
* Remove mutex from ValidationHost
* Add some more logging
* Extract exec timeout into a constant
* Add some clarifying logging
* Use blake2_256
* Clean up the merge
Specifically the leftovers after removing real-overseer
* Update parachain/test-parachains/adder/collator/Cargo.toml
Co-authored-by: Andronik Ordian <write@reusable.software>
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
Co-authored-by: Andronik Ordian <write@reusable.software>
* upgrade primitives to allow changing validation function
* set up storage schema for old parachains code
* fix compilation errors
* fix test compilation
* add some tests for past code meta
* most of the runtime logic for code upgrades
* implement old-code pruning
* add a couple tests
* clean up remaining TODOs
* add a whole bunch of tests for runtime functionality
* remove unused function
* fix runtime compilation
* extract some primitives to parachain crate
* add validation-code upgrades to validation params and result
* extend validation params with code upgrade fields
* provide maximums to validation params
* port test-parachains
* add a code-upgrader test-parachain and tests
* fix collator tests
* move test-parachains to own folder to work around compilation errors
* fix test compilation
* update the Cargo.lock
* fix parachains tests
* remove dbg! invocation
* use new pool in code-upgrader
* bump lockfile
* link TODO to issue
* WIP
* WIp
* Mostly get tests to compile
* Fix adder collator
* Remove more stuff
* Revert some changes to av store
* Fix av store tests
* Nitpicks
* Restore some things
* Small changes
* Remvoe unused error variants
* Make use of `runtime_interface` for parachain externalities
This also changes the encoding of the `ValidationResult` return value to
match the default encoding used in Substrate.
* Fix compilation for web
* Update `Cargo.lock`
* Include feedback
* Move proc macro
* Update parachain/src/lib.rs
Co-Authored-By: Robert Habermeier <rphmeier@gmail.com>
Co-authored-by: Robert Habermeier <rphmeier@gmail.com>
* rename crates as appropriate
* Rename to use master - easy to revert, but shows it's working
* Bump runtime version
* Bump version
* Bump Substrate again
* Rest of parathread draft implementation, parachain permissioning.
* Update Substrate
* Update Substrate again
* Integrate weight/fee stuff.
* Council
* Build fixes
* More fixes
* Minor additions
* fix some small errors
* Revert "fix some small errors"
This reverts commit 4fb52c82adfdaf3af98edfe36b280133bcd4f9d3.
* Merge fix.
* do_swap -> on_swap
* Update depdendency to polkadot-master
* Fix more merge problems
* Some patching of errors
* Fix storage closure
* Actually fix storage. It builds!
* Tests run... but not successfully.
* Add `run_to_block` to get parachains active to start
* More `run_to_block`
* Fix build
* Queue up changes to threads
* Move registration test
* Fix regsiter/deregister test
* Retry queue.
* Minor refactor
* Refactor to avoid heavy storage items
* Make tests pass
* remove para on deregister, add events
* Remove println
* Fix register/deregister parathread test
* fix merge
* Parathread can be activated test
* Test auction
* Add `Debtors` storage item
I considered putting the debtor information in `ParaInfo`, but it did not make sense to me since this information only applies to parathreads, not `paras` in general.
* remove comment code
* Some new tests
* Fixes for removing threads when scheduled. Tests.
* Test progression of threads.
* Test that reschedule queuing works properly.
* Make test slightly more interesting
* whitespace
* Swap works properly.
* Update locks
* Build
* Rename can_swap
* Add test for funds to be correctly returned after a swap
Swap does not seem to have logic which correctly swaps the debtor account to the new parathread.
* Make tests consistant
* Add check that `PendingSwap` is cleaned up
* Update runtime/src/parachains.rs
Co-Authored-By: Robert Habermeier <rphmeier@gmail.com>
* Update runtime/src/registrar.rs
Co-Authored-By: Robert Habermeier <rphmeier@gmail.com>
* Some fixes/suggestions from review
* Docs
* Apply suggestions from code review
Co-Authored-By: Robert Habermeier <rphmeier@gmail.com>
Co-Authored-By: Shawn Tabrizi <shawntabrizi@gmail.com>
* Update network/src/gossip.rs
Co-Authored-By: Robert Habermeier <rphmeier@gmail.com>
* Rename OnSwap
* Add missing `]`
* Rejig ordering semantics, making everything a bit slower but correct.
* Some Fixes to Parathread Compile (#470)
* Some Fixes
* Fix queue_upward_messages
* Change back to const
* Build fixes
* Fix tests
* Integrate srml/im-online
* Fix all build errors with old aura.
* Fix most of the build errors.
* Builds and tests seem to pass (I will not trust this commit yet)
* Apply suggestions from code review
Co-Authored-By: Robert Habermeier <rphmeier@gmail.com>
* Kill some warnings.
* fix panics on 0 validators
* Fix dev chain.
* Fix author stuff
* fix im online integration.
* Some tweaks
* Introduce app-crypto
* Initial build work
* codec update / tweaks
* patch polkadot-erasure-coding input
* More fixes for new crypto
* More fixes
* Update parachains module
* evamp parachain crypto
* More crypto work.
* Chain spec and service.
* ChainSpec stuff
* Last bits for a clean build
* Tweak coment
* adapt polkadot-validation to the new keystore
* polkadot-network compiles, but tests don't
* Integrate the new parachain validation stuff
* delete message_routing file
* make polkadot-network tests compile and pass
* runtime tests compile and pass
* update substrate ref
* service compiles
* all tests pass
* Add TODO, change branch back to polkadot-master
* Lock file
* TODOs done
* Issue number
* Remove old tODO
* Remove commented code
* Make `polkadot-parachain` call `validate_block` instead of `validate`
Also switch to rust 2018 in the crate
* Use `rstd`
* Make `load_params` a pointer
* Slots module
* Integrate slots
* More drafting
* Minor updates
* Update parachains to use trati
* More build fixes
* Full code now compiles
* Add renew bid function
* Implement calculate_winner
* Warning remove
* Update gitignore
* Test framework
* Tests
* Further testing
* More tests, new parameterisation.
* Fix and new test
* Thread-safe tests
* Test off-boarding and a fix.
* Test onboarding
* Allow late onboarding.
* Another test and fix
* Avoid println in nostd
* Compact representation of paraids
* Introduce documentation.
* Introduce events.
* Additional test and fix
* Additional test
* Tidy up line lengths.
* Remove printlns
* Use later substrate utils.
* Allow parachains to send messages.
* Fix build/test
* Make slots work with latest substrate
* Update runtime/src/slot_range.rs
Co-Authored-By: Robert Habermeier <rphmeier@gmail.com>
* Update runtime/src/slots.rs
Co-Authored-By: Shawn Tabrizi <shawntabrizi@gmail.com>
* Update runtime/src/slots.rs
Co-Authored-By: Shawn Tabrizi <shawntabrizi@gmail.com>
* Polish logic
* Rewind to earlier substrate master
* Remove dead code.
* Fix build
* Update substrate ref to master
* Update to new inherent digests API
* address grumbles
* fix
* Fix a warning.
* Reworded a comment.
* Check that receipt matches expectations
* Add test for final checks
* Split out queuing logic.
* Test final piece of queuing logic
* Fix up docs.
* More docs fixes
* Slots module
* Integrate slots
* More drafting
* Minor updates
* Update parachains to use trati
* More build fixes
* Full code now compiles
* Add renew bid function
* Implement calculate_winner
* Warning remove
* Update gitignore
* Test framework
* Tests
* Further testing
* More tests, new parameterisation.
* Fix and new test
* Thread-safe tests
* Test off-boarding and a fix.
* Test onboarding
* Allow late onboarding.
* Another test and fix
* Avoid println in nostd
* Compact representation of paraids
* Introduce documentation.
* Introduce events.
* Additional test and fix
* Additional test
* Tidy up line lengths.
* Remove printlns
* Use later substrate utils.
* Fix build/test
* Make slots work with latest substrate
* Update runtime/src/slot_range.rs
Co-Authored-By: Robert Habermeier <rphmeier@gmail.com>
* Update runtime/src/slots.rs
Co-Authored-By: Shawn Tabrizi <shawntabrizi@gmail.com>
* Update runtime/src/slots.rs
Co-Authored-By: Shawn Tabrizi <shawntabrizi@gmail.com>
* Polish logic
* Rewind to earlier substrate master
* Remove dead code.
* compute ingress and routing in polkadot runtime
* extract parent candidates from block when beginning consensus
* fetch incoming messages when validating
* fix consensus tests
* parachain wasm execution uses messages
* update parachain tests to check if messages are executed
* abstract out network service to make room for network tests
* skeleton for incoming data fetch
* collate ingress from consensus-gossip
* keep track of validated candidates in the shared-table
* add some shared_table tests for new behavior
* broadcast egress messages on gossip
* test compute_ingress
* move network tests to module folder
* dummy network for consensus-network tests
* make consensus network generic over executor
* test egress broadcast and ingress fetch
* fix test compilation
* address some grumbles
* address grumbles and fix parachain shuffle
* remove broadcast parameter from consensus network trait
* read head-data directly out of WASM memory
* implement ext_post_message for parachain WASM
* further refactoring of the parachain module
* add externalities error type
* accumulate posted messages when validating parachain candidate
* define Extrinsic type in primitives
* availability-store: store extrinsic data
* compute extrinsic and check against candidate
* add some egress queue tests
* grumbles & substrate update
* ensure everything builds
* dynamic inclusion threshold calculator
* collators interface
* collation helpers
* initial proposal-creation future
* create proposer when asked to propose
* remove local_availability duty
* statement table tracks includable parachain count
* beginnings of timing future
* finish proposal logic
* remove stray println
* extract shared table to separate module
* change ordering
* includability tracking
* fix doc
* initial changes to parachains module
* initialise dummy block before API calls
* give polkadot control over round proposer based on random seed
* propose only after enough candidates
* flesh out parachains module a bit more
* set_heads
* actually introduce set_heads to runtime
* update block_builder to accept parachains
* split block validity errors from real errors in evaluation
* update WASM runtimes
* polkadot-api methods for parachains additions
* delay evaluation until candidates are ready
* comments
* fix dynamic inclusion with zero initial
* test for includability tracker
* wasm validation of parachain candidates
* move primitives to primitives crate
* remove runtime-std dependency from codec
* adjust doc
* polkadot-parachain-primitives
* kill legacy polkadot-validator crate
* basic-add test chain
* test for basic_add parachain
* move to test-chains dir
* use wasm-build
* new wasm directory layout
* reorganize a bit more
* Fix for rh-minimal-parachain (#141)
* Remove extern "C"
We already encountered such behavior (bug?) in pwasm-std, I believe.
* Fix `panic_fmt` signature by adding `_col`
Wrong `panic_fmt` signature can inhibit some optimizations in LTO mode.
* Add linker flags and use wasm-gc in build script
Pass --import-memory to LLD to emit wasm binary with imported memory.
Also use wasm-gc instead of wasm-build.
* Fix effective_max.
I'm not sure why it was the way it was actually.
* Recompile wasm.
* Fix indent
* more basic_add tests
* validate parachain WASM
* produce statements on receiving statements
* tests for reactive statement production
* fix build
* add OOM lang item to runtime-io
* use dynamic_inclusion when evaluating as well
* fix update_includable_count
* remove dead code
* grumbles
* actually defer round_proposer logic
* update wasm
* address a few more grumbles
* grumbles
* update WASM checkins
* remove dependency on tokio-timer