Files
pezkuwi-subxt/substrate/Cargo.toml
T
Kian Paimani 263a5d6c1e Default Pallet Config Trait / derive_impl (#13454)
* first draft, probably won't work

* first draft, probably won't work

* good progress..

* good milestone, still a lot to do.

* EVERYTHING WORKS

* Update frame/support/procedural/src/derive_impl.rs

Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Update frame/support/procedural/src/derive_impl.rs

Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* clean up + cargo fmt

* import tokens WIP

* export_tokens working with impl Trait

* WIP / notes

* use macro_magic 0.2.0's export_tokens to access foreign items

* token importing working properly using macro_magic 0.2.5

* combine_impls almost working

* successfully get foreign path via macro_magic 0.2.6

* combine_impls using implementing_type generics

* working + clean up

* more clean up

* decrease rightwards drift and add docs to combine_impls

* add support for macros to impl_item_ident in case we hit that

* add docs for impl_item_ident method

* fix no_std issues

* re-export of macro_magic working in pallets 🎉

* clean up + fully resolve no_std issue with macro_magic with v0.2.11

* remove trait item code for different trait item types since this
is now handled directly by combine_impls

* clean up

* remove dev comments

* only generate default trait if #[pallet::default_trait] is attached

* authorship and most other pallets now compiling

* compiling 🎉

* add check for more than two pallet attributes on Config trait

* remove unused import in nomination-pool

* clean up debug code

* upgrade to macro_magic v0.2.12

* add neater #[register_default_config(SomeIdent)] macro

* really just a thin wrapper around #[export_tokens]

* upgrade to macro_magic 0.3.1

* rewrite parsing to be compatible with syn 2.x, compiling 🎉

* remove unused keywords

* macro stubs for the new pallet:: macros, preliminary docs

* upgrade to macro_magic v0.3.2

* rename register_default_config => register_default_impl

* bump to macro_magic v0.3.3

* custom disambiguation_path working as 2nd arg to derive_impl

* overhaul docs

* fixes, ident-style paths shortcut working

* remove ident-style shortcut because it makes testing difficult

* add passing UI tests for derive_impl

* switch to `ForeignPath as DisambiguationPath` syntax + update docs

* add UI test for bad foreign path

* add UI test for bad disambiguation path

* add UI test for missing disambiguation path

* add UI test for attached to non impl

* fix derive_impl_attr_args_parsing test

* move tests to bottom

* fix nightly issue

* add doc notes on importing/re-exporting

* remove explicit use of macro_magic::use_attr

Co-authored-by: Bastian Köcher <git@kchr.de>

* use explicit macro_magic::use_attr

Co-authored-by: Bastian Köcher <git@kchr.de>

* remove unneeded {}

Co-authored-by: Bastian Köcher <git@kchr.de>

* remove unneeded collect

Co-authored-by: Bastian Köcher <git@kchr.de>

* add docs for TestDefaultConfig

* remove unneeded `#[export_tokens]` on `DefaultConfig`

* add docs for auto-generated `DefaultConfig`

* no need to clone

Co-authored-by: Bastian Köcher <git@kchr.de>

* clean up combine_impls + compiling again

* remove unused dependency

* simplify struct definition

Co-authored-by: Bastian Köcher <git@kchr.de>

* fix register_default_impl docs

* reduce rightward drift / refactor

Co-authored-by: Keith Yeung <kungfukeith11@gmail.com>

* fix derive_impl after keith's changes

* simplify disambiguation_path calculation

Co-authored-by: Keith Yeung <kungfukeith11@gmail.com>

* compiling again

* simplify parsing of trait item

Co-authored-by: Keith Yeung <kungfukeith11@gmail.com>

* rename preludes => prelude

Co-authored-by: Keith Yeung <kungfukeith11@gmail.com>

* fix other places where we used preludes instead of prelude

* fix indents

* simplify PalletAttr parsing

Co-authored-by: Keith Yeung <kungfukeith11@gmail.com>

* go back to having no_default and constant as keywords

* make it more clear that disambiguation_path is optional

* make default_trait_items just a Vec instead of Option<Vec>

* rename foreign_path => default_impl_path within substrate

* fix docs

* Change {} to ;

Co-authored-by: Bastian Köcher <git@kchr.de>

* highlight full end-to-end example with link

* add pallet-default-config-example, start by copying dev mode code

* update dev-mode specific docs

* use Person and Points instead of Dummy and Bar

* add docs to example pallet

* revert changes to pallets other than the default config example

* fix outdated references to basic example pallet

* re-order docs to be a bit more clear

* better errors for extra attributes

* add UI tests for duplicate/extra attributes on trait items

* change `#[pallet::default_config]` to option on `#[pallet::config()]`

* update UI tests
* add UI test covering missing `#[pallet::config(with_default)]` when
  `#[pallet::no_default]` is used

* add note about new optional conventions

* improve docs about `DefaultConfig` and link to these from a few places

* fix doc comment

* fix old comment referencing `pallet::default_config`

* use u32 instead of u64 for block number

Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com>

* use () instead of u32 for `AccountData`

Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com>

* use ConstU32<10> for BlockHashCount instead of ConstU64<10>

Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com>

* people are not dummies

Co-authored-by: Liam Aharon <liam.aharon@hotmail.com>

* fix wording

Co-authored-by: Just van Stam <vstam1@users.noreply.github.com>

* Person => People and compiling again

* add docs for `prelude` module in frame_system

* update Cargo.lock

* cleaner example

* tweaks

* update docs more

* update docs more

* update docs more

* update docs more

* fix ui tests

* err

* Update frame/support/test/tests/pallet_ui.rs

* update ui tests

---------

Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
Co-authored-by: Sam Johnson <sam@durosoft.com>
Co-authored-by: parity-processbot <>
Co-authored-by: Bastian Köcher <git@kchr.de>
Co-authored-by: Keith Yeung <kungfukeith11@gmail.com>
Co-authored-by: Liam Aharon <liam.aharon@hotmail.com>
Co-authored-by: Just van Stam <vstam1@users.noreply.github.com>
2023-05-30 08:06:40 +00:00

337 lines
9.3 KiB
TOML

[workspace]
resolver = "2"
members = [
"bin/node-template/node",
"bin/node-template/pallets/template",
"bin/node-template/runtime",
"bin/node/bench",
"bin/node/cli",
"bin/node/executor",
"bin/node/inspect",
"bin/node/primitives",
"bin/node/rpc",
"bin/node/runtime",
"bin/node/testing",
"bin/utils/chain-spec-builder",
"bin/utils/subkey",
"client/api",
"client/authority-discovery",
"client/basic-authorship",
"client/block-builder",
"client/chain-spec",
"client/chain-spec/derive",
"client/cli",
"client/consensus/aura",
"client/consensus/babe",
"client/consensus/babe/rpc",
"client/consensus/beefy",
"client/consensus/beefy/rpc",
"client/consensus/common",
"client/consensus/epochs",
"client/consensus/grandpa",
"client/consensus/grandpa/rpc",
"client/consensus/manual-seal",
"client/consensus/pow",
"client/consensus/slots",
"client/db",
"client/executor",
"client/executor/common",
"client/executor/runtime-test",
"client/executor/wasmtime",
"client/informant",
"client/keystore",
"client/merkle-mountain-range",
"client/merkle-mountain-range/rpc",
"client/network",
"client/network/transactions",
"client/network/statement",
"client/network-gossip",
"client/network/bitswap",
"client/network/common",
"client/network/light",
"client/network/sync",
"client/network/test",
"client/offchain",
"client/allocator",
"client/proposer-metrics",
"client/rpc",
"client/rpc-api",
"client/rpc-servers",
"client/rpc-spec-v2",
"client/service",
"client/service/test",
"client/state-db",
"client/statement-store",
"client/storage-monitor",
"client/sysinfo",
"client/sync-state-rpc",
"client/telemetry",
"client/tracing",
"client/tracing/proc-macro",
"client/transaction-pool",
"client/transaction-pool/api",
"client/utils",
"frame/alliance",
"frame/asset-conversion",
"frame/assets",
"frame/atomic-swap",
"frame/aura",
"frame/authority-discovery",
"frame/authorship",
"frame/babe",
"frame/bags-list",
"frame/bags-list/fuzzer",
"frame/bags-list/remote-tests",
"frame/balances",
"frame/beefy",
"frame/beefy-mmr",
"frame/benchmarking",
"frame/benchmarking/pov",
"frame/bounties",
"frame/child-bounties",
"frame/collective",
"frame/contracts",
"frame/contracts/proc-macro",
"frame/contracts/primitives",
"frame/conviction-voting",
"frame/core-fellowship",
"frame/democracy",
"frame/fast-unstake",
"frame/try-runtime",
"frame/elections-phragmen",
"frame/election-provider-multi-phase",
"frame/election-provider-multi-phase/test-staking-e2e",
"frame/election-provider-support",
"frame/election-provider-support/benchmarking",
"frame/election-provider-support/solution-type",
"frame/election-provider-support/solution-type/fuzzer",
"frame/examples/basic",
"frame/examples/offchain-worker",
"frame/examples/dev-mode",
"frame/examples/default-config",
"frame/executive",
"frame/nis",
"frame/grandpa",
"frame/identity",
"frame/im-online",
"frame/indices",
"frame/lottery",
"frame/membership",
"frame/merkle-mountain-range",
"frame/multisig",
"frame/nicks",
"frame/node-authorization",
"frame/offences",
"frame/offences/benchmarking",
"frame/preimage",
"frame/proxy",
"frame/message-queue",
"frame/nfts",
"frame/nfts/runtime-api",
"frame/nft-fractionalization",
"frame/nomination-pools",
"frame/nomination-pools/fuzzer",
"frame/nomination-pools/benchmarking",
"frame/nomination-pools/test-staking",
"frame/nomination-pools/runtime-api",
"frame/insecure-randomness-collective-flip",
"frame/ranked-collective",
"frame/recovery",
"frame/referenda",
"frame/remark",
"frame/salary",
"frame/scheduler",
"frame/scored-pool",
"frame/session",
"frame/session/benchmarking",
"frame/society",
"frame/staking",
"frame/staking/reward-curve",
"frame/staking/reward-fn",
"frame/staking/runtime-api",
"frame/state-trie-migration",
"frame/sudo",
"frame/root-offences",
"frame/root-testing",
"frame/statement",
"frame/support",
"frame/support/procedural",
"frame/support/procedural/tools",
"frame/support/procedural/tools/derive",
"frame/support/test",
"frame/support/test/compile_pass",
"frame/support/test/pallet",
"frame/system",
"frame/system/benchmarking",
"frame/system/rpc/runtime-api",
"frame/timestamp",
"frame/transaction-payment",
"frame/transaction-payment/asset-tx-payment",
"frame/transaction-payment/rpc",
"frame/transaction-payment/rpc/runtime-api",
"frame/transaction-storage",
"frame/treasury",
"frame/asset-rate",
"frame/tips",
"frame/uniques",
"frame/utility",
"frame/vesting",
"frame/glutton",
"frame/whitelist",
"primitives/api",
"primitives/api/proc-macro",
"primitives/api/test",
"primitives/application-crypto",
"primitives/application-crypto/test",
"primitives/arithmetic",
"primitives/arithmetic/fuzzer",
"primitives/authority-discovery",
"primitives/block-builder",
"primitives/blockchain",
"primitives/consensus/aura",
"primitives/consensus/babe",
"primitives/consensus/beefy",
"primitives/consensus/common",
"primitives/consensus/grandpa",
"primitives/consensus/pow",
"primitives/consensus/slots",
"primitives/core",
"primitives/core/hashing",
"primitives/core/hashing/proc-macro",
"primitives/database",
"primitives/debug-derive",
"primitives/externalities",
"primitives/inherents",
"primitives/io",
"primitives/keyring",
"primitives/keystore",
"primitives/maybe-compressed-blob",
"primitives/merkle-mountain-range",
"primitives/metadata-ir",
"primitives/npos-elections",
"primitives/npos-elections/fuzzer",
"primitives/offchain",
"primitives/panic-handler",
"primitives/rpc",
"primitives/runtime",
"primitives/runtime-interface",
"primitives/runtime-interface/proc-macro",
"primitives/runtime-interface/test",
"primitives/runtime-interface/test-wasm",
"primitives/runtime-interface/test-wasm-deprecated",
"primitives/session",
"primitives/staking",
"primitives/state-machine",
"primitives/statement-store",
"primitives/std",
"primitives/storage",
"primitives/test-primitives",
"primitives/timestamp",
"primitives/tracing",
"primitives/transaction-pool",
"primitives/transaction-storage-proof",
"primitives/trie",
"primitives/version",
"primitives/version/proc-macro",
"primitives/wasm-interface",
"primitives/weights",
"scripts/ci/node-template-release",
"test-utils",
"test-utils/client",
"test-utils/derive",
"test-utils/runtime",
"test-utils/runtime/client",
"test-utils/runtime/transaction-pool",
"test-utils/test-crate",
"utils/build-script-utils",
"utils/fork-tree",
"utils/frame/benchmarking-cli",
"utils/frame/remote-externalities",
"utils/frame/frame-utilities-cli",
"utils/frame/try-runtime/cli",
"utils/frame/rpc/state-trie-migration-rpc",
"utils/frame/rpc/support",
"utils/frame/rpc/system",
"utils/frame/generate-bags",
"utils/frame/generate-bags/node-runtime",
"utils/frame/rpc/client",
"utils/prometheus",
"utils/wasm-builder",
"utils/binary-merkle-tree",
]
# The list of dependencies below (which can be both direct and indirect dependencies) are crates
# that are suspected to be CPU-intensive, and that are unlikely to require debugging (as some of
# their debug info might be missing) or to require to be frequently recompiled. We compile these
# dependencies with `opt-level=3` even in "dev" mode in order to make "dev" mode more usable.
# The majority of these crates are cryptographic libraries.
#
# Note that this does **not** affect crates that depend on Substrate. In other words, if you add
# a dependency on Substrate, you have to copy-paste this list in your own `Cargo.toml` (assuming
# that you want the same list). This list is only relevant when running `cargo build` from within
# the Substrate workspace.
#
# If you see an error mentioning "profile package spec ... did not match any packages", it
# probably concerns this list.
#
# This list is ordered alphabetically.
[profile.dev.package]
blake2 = { opt-level = 3 }
blake2b_simd = { opt-level = 3 }
chacha20poly1305 = { opt-level = 3 }
cranelift-codegen = { opt-level = 3 }
cranelift-wasm = { opt-level = 3 }
crc32fast = { opt-level = 3 }
crossbeam-deque = { opt-level = 3 }
crypto-mac = { opt-level = 3 }
curve25519-dalek = { opt-level = 3 }
ed25519-zebra = { opt-level = 3 }
flate2 = { opt-level = 3 }
futures-channel = { opt-level = 3 }
hashbrown = { opt-level = 3 }
hash-db = { opt-level = 3 }
hmac = { opt-level = 3 }
httparse = { opt-level = 3 }
integer-sqrt = { opt-level = 3 }
k256 = { opt-level = 3 }
keccak = { opt-level = 3 }
libm = { opt-level = 3 }
librocksdb-sys = { opt-level = 3 }
libsecp256k1 = { opt-level = 3 }
libz-sys = { opt-level = 3 }
mio = { opt-level = 3 }
nalgebra = { opt-level = 3 }
num-bigint = { opt-level = 3 }
parking_lot = { opt-level = 3 }
parking_lot_core = { opt-level = 3 }
percent-encoding = { opt-level = 3 }
primitive-types = { opt-level = 3 }
ring = { opt-level = 3 }
rustls = { opt-level = 3 }
secp256k1 = { opt-level = 3 }
sha2 = { opt-level = 3 }
sha3 = { opt-level = 3 }
smallvec = { opt-level = 3 }
snow = { opt-level = 3 }
twox-hash = { opt-level = 3 }
uint = { opt-level = 3 }
wasmi = { opt-level = 3 }
x25519-dalek = { opt-level = 3 }
yamux = { opt-level = 3 }
zeroize = { opt-level = 3 }
[profile.release]
# Substrate runtime requires unwinding.
panic = "unwind"
[profile.production]
inherits = "release"
# Sacrifice compile speed for execution speed by using optimization flags:
# https://doc.rust-lang.org/rustc/linker-plugin-lto.html
lto = "fat"
# https://doc.rust-lang.org/rustc/codegen-options/index.html#codegen-units
codegen-units = 1