* Adds benchmark for direct/indirect wasm function calls
* Store the benchmark function pointer in a `Cell`
* Add some documentation
* Make function implementations exchangeable
* Add parachain stub
* Add macro for registering the `validate_block` function
* Make all functions replace-able by unimplemented
* Some more refactoring
* Adds tests for executing empty parachain block
* Work on a new test with empty witness data
* Don't exchange `ext_print_*` stuff
* Some cleanup and one more function for `validate_block`
* More tests and more functions
* Fixes after merging master
* Use `parity-codec` `derive` feature
* CHange implementation of `wasm-nice-panic-message`
* Move `parachain` stuff to cumulus
* Updated wasm files
* Integrate feedback
* Switch to `ExchangeableFunction` struct
* More fixes
* Switch to Cell and panic on multiple replaces
* Increase `impl_version`
* Fix shifting
* Make the API more verbose of `ExchangeableFunction`
* Increase `impl_version`
* Hide `__GetByteStruct*` types in the docs
* Forward documentation to `GenesisConfig`
* Hide `PhantomItem` in docs for `Call`
* Hide public calls in `Module`
* Forward documenation for storage functions
* Hide auxiliary functions in documentation
Procedural do not support `$crate` to get access to the crate where the
macro is defined. We use a hack to re-export the crate under a known
name. With rust edition 2018, people started to rename their crates in
`Cargo.toml`, but that breaks the re-export. This commit introduces
`proc-maco-crate` that supports finding the requested crate name, even
if it was renamed.
* Make runtime macros work without required `macro_use`
* Adds node-template
* Adds node-template-release tool
* Fixes building `node-template` and improve the release
* Add `profile.release` by release script to remove warning
* Adds script for releasing the node template
* Fixes compilation after master merge
* Port node-template to edition 2018
* Remove license
* Fixes compilation after master merge
* Add `node-template-release.sh` into the CI
* WIP Ci integrate node template (#1701)
* copy artifacts to s3 bucket latest path
* typo
* bucket name
* Update wasm files
* Rework how a runtime api calls into the runtime
Now we generate a default implementation for each api call that calls
a generated method `method_runtime_api_impl`. This newly generated
method is the one that will be implemented by the `impl_runtime_apis`
macro in the runtime for the client side.
* Support `changed_in` to change runtime api function signatures
* Update documentation
* Fixes tests
* Implement checking the api version with a predicate
* Make the implementation backwards compatible with CC
* Update wasm files after merge
* Check for wasm runtime differences by building master and current branch
* Update spec_version and wasm files
* Fixes
* Revert my changes
* Remove `patch.crates-io` from test-runtime
* Move `CODE` directly into `TestExternalities`
This change allows tests to modify CODE in storage.
* Update more hashes
* Test
* Move `code` back into a field of `TestExternalities`
* Update wasm after master merge
* Rework cli handling
* Update readme
* Adds support for custom subcommands and extra run parameters
* Update readme
* Fixes compilation after master merge
* Make "Run" the default subcommand
Actually its hidden to the outside that is an subcommand.
* Rewrite CLI to work without breaking old CLI behavior
* Some cleanup
* Fix incorrect config setup
* Update README
* Fixes after merge
* Fixes incorrect README
* Fix warnings in substrate
* More warnings removed and wasm updated
* Fixes error on stable and grumbles
* Update wasm files
* Add links to the github issue for replacing `error-chain`
* Implement new inherent data
* Fixes compilation on wasm
* Fixes after rebase
* Switch back to generate inherent stuff by macro
* Update after rebase
* Apply suggestions from code review
Co-Authored-By: bkchr <bkchr@users.noreply.github.com>
* Fix compilation after rebase
* Address grumbles
* Remove `InherentDataProviders` from `Client`
* Update wasm files after rebase
* Address grumbles
* Fixes compilation after latest merge
* Last fix
* Add simple benchmark for the runtime api
* Make the executor support native calls
* Some documentation
* Hide behind `feature = "std"`
* Rework the native calls
* Make all tests compile again
* Make every parameter using the Block serialized/deserialized in the native call
* Forward `UnwindSafe` requirement
* Remove debug stuff
* Add some documentation
* Fixes warnings
* Fixes errors after master rebase
* Fixes compilation after master rebase
* Fixes compilation after rebase
* Make `deposit_event` work with none generic events
`fn deposit_event() = default` will now be used for none generic events
`fn deposit_event<T>() = default` is now for generic events.
* Update wasm files
* Fixes some spelling mistakes
* Update wasm and fix new module
* Make `decl_runtime_apis!` implement `RuntimeApiInfo` for all runtime
apis
* Make the runtime side generate the info constants as well
* Make `RuntimeApiInfo` implementation use the correct generics
* Adds a test for the runtime api info stuff
* Remove duplicated code by using block from `test-client`
* Adds `compile_fail` tests for `api_version`
* Adds documentation for `api_version`
* Make `impl_runtime_apis!` generate `RUNTIME_API_VERSIONS`
* Update documentation and tests for `RUNTIME_API_VERSIONS`
* Implement `has_api` by using the `RuntimeApiInfo`
* Make `impl_runtime_apis` check that trait identifiers are unique
* Prefix all runtime api function with the corresponding trait
So `execute_block` will be called `Core_execute_block`.
This makes it possible to have traits implement a function with the
same name.
* Rebase master
* Update after master rebase
This restores an old behavior with more checks to inform the user
about misuse.
Only the `build-spec` parameter is not accepting these flags and options.
This subcommand only works with the options specified on the main command,
this is a restriction of the current cli parse/execute design.
Parameters like `--dev`, `--base-path` or `--chain` were replicated
for each subcommand and were also present in the "top". This pr removes
these parameters from the subcommands.
The subcommands also ignored stuff like `--dev` as it was only read in
the top matcher, that did not look into the subcommand matchers.
Now, if you specify one of the parameters for a subcommand, you will get
an error instead of silently ignoring it.
* Rewrites `impl_runtime_apis!` macro as `proc-macro`
* Adds some documentation
* Require the `impl_runtime_apis` to use a path for accessing the trait
* Make the runtime implement `GetNodeBlockType`
* Moves first chunk of runtime api code into the `impl_runtime_apis` macro
This also renames `ClientWithApi` into `RuntimeApi`.
* Make `impl_runtime_apis` use `runtime` api version automatically
* `decl_runtime_apis` automatically adds `Block: BlockT` as generic parameter
* Remove function generic arguments in block builder api
* Remove some unnused stuff from the `decl_runtime_apis` macro
* Make `InherentData` working again
* Make `impl_runtime_apis!` implement the `RuntimeApi` side as well
* Make it compile again after rebasing with master
* Split `sr-api-macros` into multiple files
* Reimplement `decl_runtime_apis!` as proc_macro
* Use `decl_runtime_apis!` for `Core` as well and improve error reporting
* Adds documentation for `decl_runtime_apis!` and `impl_runtime_apis!`
* Move some code
* Adds compile fail tests
* Adds a test and fixes some bugs
* Make `impl_runtime_apis!` support `_` as parameter name
* Fixes build errors with wasm
* Wasm rebuild after master rebase
* Apply suggestions from code review
Co-Authored-By: bkchr <bkchr@users.noreply.github.com>
* Addresses some grumbles
* Adds test to ensure that method signatures need to match
* New wasm files
* Make sure to call the runtime trait functions
The runtime trait functions export their functions as extern c
functions. These functions itself call the trait functions. This commit
makes sure that the trait functions are called and not functions with
the same name that are implemented for the runtime.
* Update the wasm files
* Revert "start to refactor block import wrapper a bit"
This reverts commit b919de49e1a82422a0870b66100832d531174771.
* Refactor grandpa stuff to get tests almost compiling
* Fixes after rebase
* Fixes merge compile errors
* Move `initialise_block` into `Core` trait as it is crucial calling the API functions
* Switch to first version of new runtime API implementation
* Fixes bug in tests
* Reenable asserts
* Directly use the `TestAPI` in the tests
* Start improving the api traits
:100644 100644 898aadc7 49217199 M Cargo.lock
:100644 100644 61570436 465ed664 M core/client/src/backend.rs
:100644 100644 5d0c886b 64d710fd M core/client/src/block_builder.rs
:100644 100644 c447855e 5ecbe474 M core/client/src/client.rs
:100644 100644 139cef13 f90dbf3d M core/client/src/error.rs
:100644 100644 2800c503 3298e66a M core/client/src/runtime_api.rs
:100644 100644 affa1c5c 809b08bc M core/primitives/src/lib.rs
:100644 100644 2877dfa9 d5547413 M core/sr-api/Cargo.toml
:100644 100644 9a49784d 6a625a03 M core/sr-api/src/lib.rs
:100644 100644 7c28e1c7 a1a444a9 M core/sr-primitives/src/traits.rs
:100644 100644 2e113ab6 dcc01a6d M srml/metadata/Cargo.toml
:100644 100644 ea722a700809531a M srml/metadata/src/lib.rs
* Refactoring
* Move `sr-api` into client and more refactoring
* Fixes tests
* Some documentation and cleanup
* Fixes compilation after rebase
* More refactoring and more documentation
* Makes `substrate-client` compilable on `wasm`
On `wasm` it basically just exports the runtime api stuff.
* Fixes grumbles
* Updates wasm files after rebasing the master
* Remove TODO comment
* Remove whitespaces
* Fixes after rebasing master
* Another rebase, another fix commit
* General `decl_module` improvements
* Make `deposit_event` implementable by `decl_module!`
* Make `decl_module!` implement calls directly
* Regenerate the wasm file after master rebase
* Adds new `ProvideInherent` trait
Also implements the new trait for `srml/consensus` and `srml/timestamp`.
* Adds `impl_outer_inherent!` macro
* Reexport macros from `alloc`
* Introduce `RuntimeString` and fix `ProvideInherent` on `no_std`
* Replace `VersionString` with `RuntimeString`
* Improvements for `impl_outer_inherent!`
* Make `construct_runtime!` support `impl_outer_inherent!`
* Fixes after rebase
* Whitespace
* Adds new `check_inherents` function to the `BlockBuilder` API
* Switch to `check_inherents` in `node-consensus`
* Remove `CheckedBlock`, because it is not required anymore
* Fixes after rebase
* Fixes compilation on stable
* Make `on_message` take the message as `&mut Option<_>`
* Make `ConsensusGossip` implement `Specialization`
* Move `new_session` into `ConsensusGossip`
* Adds `construct_simple_protocol` macro for simplifying the creation of protocols
* Rename `NewTxQueue` to `TaggedTransactionQueue`
* Remove `BlockBuilder` API and support adding documentation to the API functions
* Adds new `BlockBuilder` API
* Fixes compilation with new `BlockBuilder` API
* Some more cleanup
* Cargo.lock update
* Try to fix on stable
* Add missing `As` imports.
* Adds new API traits that will be used by the client and runtime
* Switch consensus to new API's
* Switches transaction-pool to new API's
* Move runtime api stuff into its own crate
* Adds `impl_apis!` macro for implementing the new API traits
* Make `metadata` return directly a blob
* Runtime replace `impl_stubs!` with `impl_apis!`
* Switches to none feature based approach for declaring the different API traits
* Fixes compilation error
* Fixes errors
* Make the `decl_apis!` trait usable from the outside
* Make the `test-client` use the new API traits
* Remove last `impl_stubs!` bits and move some of them into wasm executor for tests
* A little bit more documentation
* Remove `node-api` from `node-consensus` and `node-transaction-pool`
* Remove the `node-api` crate and its last usages
* Remove left over file
* Fixes compilation errors
* Switch to `As` trait
* Rename trait
* Whitespace
* Move module metadata from json string to custom metadata
* Revisit the metadata structures
1. Move the structures into the metadata crate.
2. Switch to using Cow/MaybeOwnedArray to support Encode/Decode
* Adapt to new metadata structures
* Convert event json metadata to new metadata structures
* Convert storage json metadata to new metadata structures
* Convert runtime metadata from json to new metadata structs
* Implements new metadata structures in client and runtime
* Fixes errors on `no_std`
* Fixes errors after rebasing master
* Do not use `Cow` anymore in metadata
Also replace `String` with our own type definition `StringBuf`.
This fixes compilation on `no_std`.
* Wrap `RuntimeMetadata` in `RuntimeMetadataVersioned` to support versioning
* Move metadata into `srml` and make core unaware of the implementation
* Make `system` module renamable in `impl_outer_event!`
* Implement `construct_runtime!` macro
This macro generates code for calling all the common `impl_outer_*` macros.
* Add documentation
* Fixes wrong declaration of `contract`
* Update dependencies to work on `no_std`
* One more `Cargo.lock` update
* Address comments
* Improve and simplify `decl_event!`
- RawEvent is not required anymore to be written in the defintion
- Events with and without parameters are now supported everywhere
* Make `decl_event!` more flexible with the automatic naming of generic parameters
The macro will now automatically derive the name of a generic parameter
from the trait type name, if no explicit name is given.
`where Balance = <T as Trait>::Balance` can be simplified to
`where <T as Trait>::Balance`.
* Adapts to latest refactoring changes
* Introduce `impl_event!` for declaring the Event/RawEvent for a module
* Implements a function for generating the event json metadata
* Update runtime `json_metadata` to include the new event json metadata
* Switch to `impl_event!` for new modules
* Remove unused module declaration in `impl_event!`
* Rename `impl_event!` to `decl_event!`
* Fixes some style nits
* Adds `impl_json_metadata!` for generating all metadata of a runtime
* Adds `json_metadata` RPC call
* Adds simple test for the `json_metadata` RPC call
* Implements json metadata in the demo runtime
* Fix indent
* Adds missing copyright headers
* Dispatch json metadata renamings and improvements
* Replaces `format!` & `String` with `Vec<JSONMetadata`
* Implements `Encode` and `Decode` for JSONMetadata
* Make `impl_json_metadata!` compileable on `no_std`
* Adapt the client to decode the correct type for `json_metadata`
* Fixes compile error and warning
* Whitespace
* `decl_storage!` exposes json metadata about the storage
The metadata can be accessed by calling `store_json_metadata()`.
* Hide internal macros in the documentation
* Include the function documentation in the store json metadata
* Adapt the storage declarations to use doc comments
* Include function comments into modules `json_metadata`
All doc comments (with `///`) are included in the description field of
the function.
Progress on #535
* Replace spaces with tabs