1. 04 Oct, 2021 1 commit
    • Robin Freyler's avatar
      Implement selector_id!, selector_bytes! and blake2x256! macros (#947) · bd4b51e3
      Robin Freyler authored
      * add selector_id! and selector_bytes! proc macros
      
      * implement blake2x256! macro
      
      * re-export blake2x256! macro from ink_lang crate
      
      * apply rustfmt
      
      * add BLAKE2b to hunspell dictionary
      
      * add UI tests for blake2x256! macro
      
      * improve span for non-literal inputs to blake2x256! macro
      
      * add non-literal input failure UI test to blake2x256! macro
      
      * improve error span for non-literal selector_{id,bytes}! macro inputs
      
      * rename UI test blake2x256 -> blake2x256_macro
      
      * rename UI test
      
      * add UI tests for selector_id! proc. macro
      
      * fix UI test
      
      * fix UI test expectation
      
      * add UI tests for seletor_bytes! macro
      
      * make flaky and broken codecov CI happy again ...
      bd4b51e3
  2. 21 Sep, 2021 1 commit
    • Robin Freyler's avatar
      Misc cleanups in ink! codegen (#935) · b4e2781c
      Robin Freyler authored
      * remove some duplicated AsRef impl code in generators
      
      * improve #[ink::test] macro hygiene and error message upon failure
      
      * import standard ink! traits anonymously in codegen
      
      * modernize and improve macro hygiene of metadata codegen
      
      * modernize and simplify and improve macro hygiene of storage codegen
      
      * extend selector_works unit test
      
      * fix minor error in item impl error message
      b4e2781c
  3. 12 Jan, 2021 1 commit
    • Hero Bird's avatar
      Implement ink! chain extensions (#592) · 59a7f5ed
      Hero Bird authored
      
      
      * add new tests for #[ink(namespace = ..)] and #[ink(selector = ..)] attrs
      
      * [lang] implement new errors for ink! attributes: namespace, selector
      
      * add #[ink(extension = N: u32)] attribute
      
      * apply rustfmt
      
      * [lang] add initial implementation of chain extension proc. macro
      
      * [lang] rename AttributeArg -> AttributeFrag
      
      * rename AttributeFrag::kind field to arg
      
      * rename AttributeArgKind -> AttributeArg
      
      Also introduce a new AttributeArgKind type and AttributeArg::kind method.
      
      * [lang] apply rustfmt
      
      * add Display impl for AttributeArgKind
      
      * [lang] use AttributeArgKind in sanitize_attributes and ensure_first methods
      
      * [lang/ir] improve error reporting for duplicate ink! attributes
      
      * [lang/ir] refactoring and improvements to chain extension IR impl
      
      * [lang/ir] add tests for IR implementation of chain extensions
      
      * [lang/ir] remove some code dupe
      
      * [lang/ir] add getters to ChainExtension
      
      * [lang/ir] add re-exports for ChainExtension definitions
      
      * [lang/codegen] add initial impl for ChainExtensions
      
      * [env] add ChainExtension assoc type to the Environment trait
      
      * [lang] initial impl to make it possible to use chain extension syntax
      
      * [env] improvements to chain extensions API
      
      Also removes the unstable crate feature guarding the feature.
      
      * [lang/macro] add UI test for chain extension
      
      * [lang/macro] register new UI test
      
      * [lang/codegen] fix some codegen bugs with new chain extension feature
      
      * [lang, env] apply rustfmt
      
      * [lang/ir] apply clippy suggestions and fix outdated error messages
      
      * [lang/ir] fix some tests and incorrect error messages
      
      * [examples] apply clippy suggestion
      
      * add ErrorCode to ink! chain extension trait
      
      * add FromStatusCode trait to ink_lang
      
      * add #[ink(expect_output)] and #[ink(expect_ok)] attributes
      
      Also add their handling for the #[ink::chain_extension] proc. macro.
      
      * add ink_lang::IsResultType trait
      
      * add ChainExtensionMethodInputs iterator
      
      * hide docs for IsResultType trait
      
      * add some docs to chain extension codegen
      
      * implement expect_ok and expect_output where bounds in codegen
      
      * apply code review suggestions by (cmichi)
      
      * add ReturnCode::into_u32 getter
      
      * change return type of ext::call_chain_extension: RetCode -> u32
      
      Chain extensions do not follow the general scheme of error return code because they have their own set of errors that is custom defined by the author of the chain extension.
      
      * [lang] add ChainExtension trait
      
      Not yet sure we need it.
      
      * change EnvBackend::call_chain_extension signature
      
      The new signature is much more low-level and supports all the different ways to call a chain extension method.
      This commit already implements the chain extension call on the on-chain environment.
      More work needs to be done to properly support this for the off-chain environment.
      
      * remove old high-level API for calling chain extension methods
      
      * [env] add new high-level module to handle chain extension calls
      
      * rename ChainExtensionMethodInstance -> ChainExtensionMethod
      
      * [env] add doc examples to chain extension method API
      
      * apply rustfmt
      
      * [env] clippy: allow complex type in ChainExtensionMethod type state
      
      * silence some warnings
      
      * re-export IsResultType from ink_lang crate
      
      * [lang] remove FromStatusCode trait
      
      This trait already exists in the ink_env crate.
      
      * [lang] update codegen for chain extensions
      
      Not yet done but close.
      
      * [lang] update simple chain extension test
      
      Compiles now again.
      
      * apply rustfmt
      
      * update some license headers
      
      * [env] fix where bound
      
      * extend chain extension test case to cover all cases
      
      * add messages for read_small, access and unlock_access
      
      * fix some bugs with chain extension method signatures in test
      
      * fix some bugs and docs in chain extension test
      
      * fix test
      
      * update quickcheck to 1.0
      
      * [env] implement chain extension calling for off-chain env
      
      The new interface is much more lower-level and it is still impossible to use chain state from within the chain extension call. The latter must be fixed as soon as the off-chain environment receives its rework.
      
      * apply rustfmt
      
      * add docs to #[ink::chain_extension] proc. macro
      
      * rename env_types -> env everywhere
      
      * make doc examples for #[ink::chain_extension] compile
      
      * add yet another technical limitation
      
      * make link to simple.rs test case more stable (point to revision)
      
      * fix docs (code suggestion)
      Co-authored-by: Michael Müller's avatarMichael Müller <michi@parity.io>
      
      * fix docs (code suggestion)
      Co-authored-by: Michael Müller's avatarMichael Müller <michi@parity.io>
      
      * fix docs (code suggestion)
      Co-authored-by: Michael Müller's avatarMichael Müller <michi@parity.io>
      
      * fix docs (code suggestion)
      Co-authored-by: Michael Müller's avatarMichael Müller <michi@parity.io>
      
      * add dev. note to Backend::call_chain_extension
      
      * fix docs example (code suggestion)
      Co-authored-by: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * [env] chain extension: make doc examples/tests compile
      
      * fix some doc comments according to review suggestions
      
      * review suggestion: telling -> meaning
      
      * fix docs (review suggestion)
      Co-authored-by: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * fix docs (review suggestion)
      Co-authored-by: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * improve docs (review suggestion)
      Co-authored-by: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * rename chain extension test file
      
      * analyse_error_code add doc comments for possible errors
      
      * rename expect_ok -> returns_result and expect_output -> handle_status
      
      Some examples and docs might be invalidated or outdated.
      
      * [lang/ir] improve error reporting for ink! namespace attribute with missing parameter
      
      * [lang/*] implement new handle_status and returns_result attributes
      
      * [env] apply rustfmt
      Co-authored-by: Michael Müller's avatarMichael Müller <michi@parity.io>
      Co-authored-by: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      59a7f5ed
  4. 04 Jan, 2021 1 commit
  5. 29 Sep, 2020 2 commits
    • Hero Bird's avatar
      Move all ink! crates into the crates directory (#494) · 31276d89
      Hero Bird authored
      * [*] move all ink! crates into crates/ directory
      
      * [ci] adjust .gitab-ci.yml to crates/ directory
      
      * [ci] fix GitLab .gitlab-ci.yml (attempt #2)
      
      * [ci] forgot some lines in attempt #2
      
      * [examples] fix example smart contracts
      
      They need to readjust their paths for the crates/ directory.
      31276d89
    • Hero Bird's avatar
      Finalize ink! 3.0 integration (#493) · 529bd588
      Hero Bird authored
      * [lang/codegen] initial impl of the new ink! codegen
      
      This new codegen is based on the (also) new ink! IR.
      
      * [lang/macro] apply rustfmt to imports
      
      * [lang/codegen] apply rustfmt
      
      * [lang/ir] add ItemMod::{attrs, vis} getters
      
      * [lang/codegen] make use of ir::ItemMod::{attrs, vis} in codegen
      
      * [lang/codegen] restructure ink_lang_codegen library
      
      * [lang/codegen] appliy clippy suggestion
      
      * [lang/ir] add Event::attrs() and ToTokens impl for EventField
      
      * [lang/codegen] apply rustfmt
      
      * [lang/codegen] implement Event code generator
      
      * [lang/codegen] make use of the new Events code generator
      
      * [lang/ir] make ir::Callable always Copy and Clone
      
      * [lang/ir] rename CallableWithSelector::item -> callable
      
      * [lang/ir] add Callable::kind() trait method
      
      * [lang/codegen] add dispatch enum code generation
      
      * [lang/codegen] enable dispatch code generator
      
      * [lang/codegen] add generation for constructor dispatch enum
      
      * [lang/codegen] implement contract entry points
      
      * [lang/codegen] implement code generation for DispatchUsingMode impl
      
      * [lang/codegen] add trait impl namespaces Msg<S> and Constr<S>
      
      * [lang/ir] add ir::Message::inputs_span() getter
      
      * [lang/codegen] add codegen for dispatch trait impls for ink! messages
      
      * [lang/codegen] plug-in dispatch trait impls code gen
      
      * [lang/ir] add Callable::inputs_span trait method
      
      * [lang/codegen] implement dispatch trait impl codegen for ink! constructors
      
      Also this implementation avoids a lot of code duplication with the similar code generation for dispatch trait impl of ink! messages.
      
      * [lang/codegen] make generate_input_bindings doc tests pass
      
      * [lang/ir] apply rustfmt
      
      * [lang/codegen] fix message and constructor namespaces
      
      * [lang/ir] add {Message, Constructor}::attrs getter
      
      * [lang/codegen] implement codegen for ink! ItemImpls
      
      * [lang/codegen] remove some unneeded imports for ItemImpl codegen
      
      * [lang/codegen] automatically import ink_lang's Env, EmitEvent and StaticEnv traits
      
      * [lang/codegen] do not generate for ink-as-dependency
      
      * [lang/codegen] initial impl for cross-calling codegen
      
      Not complete, yet. Also we stubled upon the fact that due to the
      additional Rust trait support we have to completely change how we
      generate code for cross-calling. Research!
      
      * [core] rename utils.rs -> selector.rs
      
      * [core] add common mod for common abstractions for call and create
      
      * [core] improve ExecutionInput: add useful trait impls
      
      * [core] refactor call builder
      
      * [core] adjust rest of ink_core to changed imports
      
      * [core] implement new CreateBuilder
      
      * [core] remove old InstantiateBuilder
      
      * [core] remove no longer needed traits
      
      * [core] add eval,invoke,eval_params,invoke_params to CallBuilder
      
      This makes both CallBuilder and CreateBuilder more similar to each other.
      
      * [core] apply rustfmt
      
      * [core] adjust environment to new CreateBuilder
      
      * [core] apply rustfmt
      
      * [core] move eval and invoke to CallParams
      
      * [core] adjust on-chain impl for CallBuilder
      
      * [core] add explanation for the cfg
      
      * [core] move instantiate to CreateParams
      
      * [core] make CreateParams getters crate private
      
      * [core] rename Call -> CallParams
      
      * [core] improve doc comment
      
      * [lang] adjust lang for new call and create builders
      
      * [core] expose builder construction through build_call and build_create
      
      * [core] remove Default impl for empty ExecutionInput
      
      * [core] add usage examples to build_call
      
      * [core] improve usage doc example of build_call
      
      * [core] improve doc tests for build_call
      
      * [core] add doc test example to build_create
      
      * [core] fix compilation after merge
      
      * [metadata] make constuctor and message name an array and add is_payable
      
      Only messages need is_payable field since constructors must always be payable.
      
      * [lang/codegen] add metadata code generation
      
      * [lang/ir] implement lint to ensure there are no __ink_ prefixed identifiers
      
      Identifiers starting with __ink_ may only be used by the ink! codegen.
      So far this has been only implemented on TokenTree or TokenStream level and not on parsed syn abstractions leading to arcane errors. E.g. it was possible to catch errors if an __ink_ substring appeared in a string literal before.
      
      * [metadata] make serialized Layout fields camelCase
      
      * [lang/ir, lang/macro] apply rustfmt
      
      * [lang/ir] initial implementation of #[ink::trait_definition] proc. macro
      
      * [lang/ir] re-export InkTrait
      
      * [lang/macro] create new proc. macro for ink! trait definitions
      
      * [lang/ir] improve error messages of #[ink::trat_definition] a bit
      
      * [lang/ir] add many more unit tests
      
      * [lang/ir] apply rustfmt
      
      * [lang/ir] fixed spelling bug
      
      * [lang/ir] fix handling or errorneous Self receiver in ink! constructors
      
      * [lang/ir] add bunch of new unit tests for #[ink::trait_definition] proc. macro
      
      * [lang/ir] add some more unit tests
      
      * [lang/ir] implement checks for invalid ink! attributes
      
      * [lang/ir] add unit tests for invalid ink! attributes
      
      * [lang/ir] use syn's builtin receiver getter
      
      * [lang/ir] add iterators for ink! trait definition
      
      * [lang/ir] add getters for generic info of ink! trait definition
      
      * [lang/ir] fix a unit test testing too much
      
      * [lang/ir] deny ink! trait definitions with supertraits
      
      We might add support for supertraits in future versions.
      
      * [lang/ir] add verify_hash functions
      
      * [lang/ir] simplify ink! trait verification hash
      
      There now is only a single hash instead of a hash per constructor and message.
      
      * [lang/ir] add InkTrait::attrs() getter
      
      * [lang/ir] add re-exports for most InkTrait types
      
      * [lang/codegen] initial implementation of #[ink::trait_definition] codegen
      
      Does not yet include the verification hash generation.
      
      * [lang/codegen] refine codegen for ink! trait definitions
      
      * [lang, lang/codegen] use correct trait for ink! trait definition checking
      
      * [lang/codegen] rework crate exposed API
      
      * [lang/ir] fix return value of ir::InkTrait::new
      
      * [lang/macro] update codegen driver for ink! trait definition
      
      * [core, lang/codegen, lang/ir, metadata] apply clippy suggestions
      
      * [lang/codegen, lang/ir, lang/macro, lang] apply rustfmt
      
      * [lang/macro] add ink_lang_codegen dependency
      
      Needed for #[ink::trait_definition] proc. macro.
      
      * [core/derive] use _ as const name instead of generated one
      
      * [lang/codegen] prefix {Constructo,Message}DispatchEnum ident with __ink_
      
      * [lang/codegen] use payable instead of is_payable
      
      * [lang/codegen] hide some generated types
      
      * [lang/ir] improve error span of bad storage struct visibility
      
      * [core] add CallBuilder::returns to signal return type
      
      Also this adds CallBuilder::fire as a quick way to fire off the call.
      The CallBuilder::invoke_params and CallBuilder::eval_params are no longer needed and thus removed.
      
      * [lang/ir] implement ToTokens for ir::Receiver
      
      * [lang/codegen] apply #[doc(hidden)] to generated call forwarders
      
      * [lang/codegen] slightly clean-up code
      
      * [lang/codegen] use new call infrastructure for call forwarders
      
      * [lang/codegen] add codegen for short-hand cross-contract message calls
      
      * [lang/codegen] add #[inline] to generated short-hand message calls
      
      * [lang/codegen] improve short-hand call error message
      
      * [lang/codegen] do not generate conflicting impls
      
      * [lang/codegen] generate non-ink! specific user defined items
      
      * [lang/ir] remove some commented out code
      
      * [core, lang/ir] apply rustfmt
      
      * [core] add CreateBuilder::instantiate
      
      * [lang/codegen] fix generate_arg_list
      
      * [lang/codegen] add cross-calling codegen for non-trait constructor impls
      
      * [lang/codegen] add an associated type per trait constructor in ink! trait definition
      
      * [lang/codegen] remove former Output associated type in ink! trait definition
      
      * [lang] re-export trait_definiction proc. macro from ink_lang crate
      
      * [lang/ir] expose InkTrait::compute_verify_hash
      
      * [lang/ir] add ir::ItemImpl::trait_ident
      
      * [lang/codegen] fix some bugs with trait_definition codegen
      
      * [lang/codegen] add codegen for cross-calling ink! trait implementations
      
      * [lang/codegen] surpress warning in generated code
      
      * [lang/codegen] fix bug in generated trait constructors
      
      * [lang/codegen] add codegen for trait implementation blocks
      
      * [lang/ir] allow access to parent impl block from within a CallableWithSelector
      
      * [lang/codegen] make dispatch trait impls more explicit for trait impls
      
      * [lang/codegen] fix and fully implement cross-calling (trait) impl blocks
      
      Works now for both trait impl blocks as well as inherent impl blocks.
      Only missing piece now is the codegen for the call forwarders and their impl blocks.
      
      * [lang/ir] add ir::ItemImpl::attrs getter
      
      * [lang/codegen] add codegen for impl block attributes for cross-calling
      
      * [lang/codegen] correctly re-generate attributes for impl blocks
      
      * [lang/codegen] generate forwarder inherent impl blocks
      
      * [lang, lang/codegen] adjust ink::trait_definition proc. macro codegen
      
      Now it also generates an associated return type per message.
      Those have to respect the ink_lang::ImpliesReturn trait.
      
      * [lang/codegen] add cross-calling call forwarder codegen for trait impl blocks
      
      * [lang] add NeverReturns utility codegen type
      
      * [lang/codegen] implement codegen for cross-calling trait impl blocks
      
      * [*] apply rustfmt
      
      * [lang/codegen] apply some clippy suggestions
      
      * [lang/macro] make use of new ink! 3.0 codegen
      
      * [examples] adjust Flipper example to ink! 3.0
      
      * [examples] add trait based Flipper example
      
      * [examples] adjust Delegator example to ink! 3.0
      
      * [lang/codegen] always use std feature for itertools dependency
      
      Otherwise codegen won't work for Wasm32 compilations.
      
      * [examples] adjusted Incrementer to the new ink! 3.0 codegen
      
      * [lang/ir] fix error span for bad event visibility modifier
      
      * [lang/ir, lang/codegen] fix event fields codegen
      
      * [lang/codegen] fix incorrectly generated EmitEvent trait impl
      
      * [lang/codegen] fix bugs with ink-as-dependency and event usage
      
      * [examples] adjust Erc20 contract to ink! 3.0 syntax
      
      * [examples] fix Erc20 unit tests
      
      * [lang, lang/codegen] add ContractEnv trait
      
      Used to query EnvTypes trait impl using the ink! storage struct.
      
      * [lang, lang/codegen] implement payable messages and dynamic storage alloc
      
      Now it is possible to control whether to use the dynamic storage allocator provided by ink! in ink! itself.
      Also this PR implements codegen for non-payable messages.
      
      * [lang/macro, lang/codegen] apply rustfmt
      
      # Conflicts:
      #	lang/macro/src/lib.rs
      
      * [lang/ir] error upon payable constructor
      
      ink! constructors are payable by default.
      
      * [core] remove EnvTypes::Call associated type
      
      No longer needed since we just removed the ability to directly call the runtime.
      
      * [core] add MAX_EVENT_TOPICS to EnvTypes trait
      
      * [lang, lang/codegen] optimize message payment checks codegen
      
      * [lang/ir, lang/codegen] dynamic storage allocator: rename + change default
      
      New default is set to "false" so only contracts that actually use this feature need to specify it.
      Also renamed to dynamic_storage_allocator to better carry intention.
      
      * [lang, lang/codegen] add codegen to guard against too many event topics
      
      * [lang/ir] apply rustfmt
      
      * [lang/codegen] pull topic guards codegen out of topics impl codegen const
      
      * [lang/codegen] split event topic guards into their own method
      
      * [lang] remove duplicate re-exports
      
      * [lang/codegen] improve error message for events with too many topics
      
      * [core/derive] explicitly use synstructure 0.12.4
      
      * [examples] update DNS contract example to ink! 3.0 syntax
      
      * [examples] update ERC-721 contract example to ink! 3.0 syntax
      
      * [examples] update multisig_plain example contract to ink! 3.0
      
      The most work was to update the new call builders.
      
      * [lang/ir] improve error message for bad visibility of ink! callables
      
      * [*] update all ink! versions: 2.1.0 -> 3.0.0
      
      * [lang/ir, lang/codegen] port InkTest proc. macro impl to new facilities
      
      * [lang/ir] make __ink_ ident prefix check more general
      
      * [lang/ir] make use of __ink_ idents check in other proc. macro impls
      
      * [*] apply rustfmt
      
      * [examples] apply rustfmt
      
      * [lang] integrate ported #[ink::test] proc. macro
      
      * [lang/macro] remove old proc. macro facilities
      
      * [lang/macro] fix all passing UI tests
      
      * [lang/ir] implement check to guard against Self return in ink! messages
      
      * [lang/codegen] implement check to guard against non ink! storage ink! impls
      
      This works even in precense of type aliases.
      
      * [lang] add re-export for static_assertions
      
      * [lang/macro] update all ink! UI failure tests
      
      * [lang/ir] apply rustfmt
      
      * [lang/codegen] remove commented-out code
      
      * [lang/codegen] allow clippy::type_complexity in some cross-calling sites
      
      * [*] remove Cargo.lock.old ... oupsi
      
      * [examples] fix incorrected doc comments
      
      * [metadata] remove unnecessary serde field attribute
      
      * [metadata] rename module layout2 -> layout
      
      * [core] rename module storage2 -> storage
      
      * [core] apply rustfmt
      529bd588
  6. 28 Sep, 2020 1 commit
    • Hero Bird's avatar
      Implement trait support - Part 2/3 - New ink! codegen (#470) · 5d7d855c
      Hero Bird authored
      * [lang/codegen] initial impl of the new ink! codegen
      
      This new codegen is based on the (also) new ink! IR.
      
      * [lang/macro] apply rustfmt to imports
      
      * [lang/codegen] apply rustfmt
      
      * [lang/ir] add ItemMod::{attrs, vis} getters
      
      * [lang/codegen] make use of ir::ItemMod::{attrs, vis} in codegen
      
      * [lang/codegen] restructure ink_lang_codegen library
      
      * [lang/codegen] appliy clippy suggestion
      
      * [lang/ir] add Event::attrs() and ToTokens impl for EventField
      
      * [lang/codegen] apply rustfmt
      
      * [lang/codegen] implement Event code generator
      
      * [lang/codegen] make use of the new Events code generator
      
      * [lang/ir] make ir::Callable always Copy and Clone
      
      * [lang/ir] rename CallableWithSelector::item -> callable
      
      * [lang/ir] add Callable::kind() trait method
      
      * [lang/codegen] add dispatch enum code generation
      
      * [lang/codegen] enable dispatch code generator
      
      * [lang/codegen] add generation for constructor dispatch enum
      
      * [lang/codegen] implement contract entry points
      
      * [lang/codegen] implement code generation for DispatchUsingMode impl
      
      * [lang/codegen] add trait impl namespaces Msg<S> and Constr<S>
      
      * [lang/ir] add ir::Message::inputs_span() getter
      
      * [lang/codegen] add codegen for dispatch trait impls for ink! messages
      
      * [lang/codegen] plug-in dispatch trait impls code gen
      
      * [lang/ir] add Callable::inputs_span trait method
      
      * [lang/codegen] implement dispatch trait impl codegen for ink! constructors
      
      Also this implementation avoids a lot of code duplication with the similar code generation for dispatch trait impl of ink! messages.
      
      * [lang/codegen] make generate_input_bindings doc tests pass
      
      * [lang/ir] apply rustfmt
      
      * [lang/codegen] fix message and constructor namespaces
      
      * [lang/ir] add {Message, Constructor}::attrs getter
      
      * [lang/codegen] implement codegen for ink! ItemImpls
      
      * [lang/codegen] remove some unneeded imports for ItemImpl codegen
      
      * [lang/codegen] automatically import ink_lang's Env, EmitEvent and StaticEnv traits
      
      * [lang/codegen] do not generate for ink-as-dependency
      
      * [lang/codegen] initial impl for cross-calling codegen
      
      Not complete, yet. Also we stubled upon the fact that due to the
      additional Rust trait support we have to completely change how we
      generate code for cross-calling. Research!
      
      * [core] rename utils.rs -> selector.rs
      
      * [core] add common mod for common abstractions for call and create
      
      * [core] improve ExecutionInput: add useful trait impls
      
      * [core] refactor call builder
      
      * [core] adjust rest of ink_core to changed imports
      
      * [core] implement new CreateBuilder
      
      * [core] remove old InstantiateBuilder
      
      * [core] remove no longer needed traits
      
      * [core] add eval,invoke,eval_params,invoke_params to CallBuilder
      
      This makes both CallBuilder and CreateBuilder more similar to each other.
      
      * [core] apply rustfmt
      
      * [core] adjust environment to new CreateBuilder
      
      * [core] apply rustfmt
      
      * [core] move eval and invoke to CallParams
      
      * [core] adjust on-chain impl for CallBuilder
      
      * [core] add explanation for the cfg
      
      * [core] move instantiate to CreateParams
      
      * [core] make CreateParams getters crate private
      
      * [core] rename Call -> CallParams
      
      * [core] improve doc comment
      
      * [lang] adjust lang for new call and create builders
      
      * [core] expose builder construction through build_call and build_create
      
      * [core] remove Default impl for empty ExecutionInput
      
      * [core] add usage examples to build_call
      
      * [core] improve usage doc example of build_call
      
      * [core] improve doc tests for build_call
      
      * [core] add doc test example to build_create
      
      * [core] fix compilation after merge
      
      * [metadata] make constuctor and message name an array and add is_payable
      
      Only messages need is_payable field since constructors must always be payable.
      
      * [lang/codegen] add metadata code generation
      
      * [lang/ir] implement lint to ensure there are no __ink_ prefixed identifiers
      
      Identifiers starting with __ink_ may only be used by the ink! codegen.
      So far this has been only implemented on TokenTree or TokenStream level and not on parsed syn abstractions leading to arcane errors. E.g. it was possible to catch errors if an __ink_ substring appeared in a string literal before.
      
      * [metadata] make serialized Layout fields camelCase
      
      * [lang/ir, lang/macro] apply rustfmt
      
      * [lang/ir] initial implementation of #[ink::trait_definition] proc. macro
      
      * [lang/ir] re-export InkTrait
      
      * [lang/macro] create new proc. macro for ink! trait definitions
      
      * [lang/ir] improve error messages of #[ink::trat_definition] a bit
      
      * [lang/ir] add many more unit tests
      
      * [lang/ir] apply rustfmt
      
      * [lang/ir] fixed spelling bug
      
      * [lang/ir] fix handling or errorneous Self receiver in ink! constructors
      
      * [lang/ir] add bunch of new unit tests for #[ink::trait_definition] proc. macro
      
      * [lang/ir] add some more unit tests
      
      * [lang/ir] implement checks for invalid ink! attributes
      
      * [lang/ir] add unit tests for invalid ink! attributes
      
      * [lang/ir] use syn's builtin receiver getter
      
      * [lang/ir] add iterators for ink! trait definition
      
      * [lang/ir] add getters for generic info of ink! trait definition
      
      * [lang/ir] fix a unit test testing too much
      
      * [lang/ir] deny ink! trait definitions with supertraits
      
      We might add support for supertraits in future versions.
      
      * [lang/ir] add verify_hash functions
      
      * [lang/ir] simplify ink! trait verification hash
      
      There now is only a single hash instead of a hash per constructor and message.
      
      * [lang/ir] add InkTrait::attrs() getter
      
      * [lang/ir] add re-exports for most InkTrait types
      
      * [lang/codegen] initial implementation of #[ink::trait_definition] codegen
      
      Does not yet include the verification hash generation.
      
      * [lang/codegen] refine codegen for ink! trait definitions
      
      * [lang, lang/codegen] use correct trait for ink! trait definition checking
      
      * [lang/codegen] rework crate exposed API
      
      * [lang/ir] fix return value of ir::InkTrait::new
      
      * [lang/macro] update codegen driver for ink! trait definition
      
      * [core, lang/codegen, lang/ir, metadata] apply clippy suggestions
      
      * [lang/codegen, lang/ir, lang/macro, lang] apply rustfmt
      
      * [lang/macro] add ink_lang_codegen dependency
      
      Needed for #[ink::trait_definition] proc. macro.
      
      * [core/derive] use _ as const name instead of generated one
      
      * [lang/codegen] prefix {Constructo,Message}DispatchEnum ident with __ink_
      
      * [lang/codegen] use payable instead of is_payable
      
      * [lang/codegen] hide some generated types
      
      * [lang/ir] improve error span of bad storage struct visibility
      
      * [core] add CallBuilder::returns to signal return type
      
      Also this adds CallBuilder::fire as a quick way to fire off the call.
      The CallBuilder::invoke_params and CallBuilder::eval_params are no longer needed and thus removed.
      
      * [lang/ir] implement ToTokens for ir::Receiver
      
      * [lang/codegen] apply #[doc(hidden)] to generated call forwarders
      
      * [lang/codegen] slightly clean-up code
      
      * [lang/codegen] use new call infrastructure for call forwarders
      
      * [lang/codegen] add codegen for short-hand cross-contract message calls
      
      * [lang/codegen] add #[inline] to generated short-hand message calls
      
      * [lang/codegen] improve short-hand call error message
      
      * [lang/codegen] do not generate conflicting impls
      
      * [lang/codegen] generate non-ink! specific user defined items
      
      * [lang/ir] remove some commented out code
      
      * [core, lang/ir] apply rustfmt
      
      * [core] add CreateBuilder::instantiate
      
      * [lang/codegen] fix generate_arg_list
      
      * [lang/codegen] add cross-calling codegen for non-trait constructor impls
      
      * [lang/codegen] add an associated type per trait constructor in ink! trait definition
      
      * [lang/codegen] remove former Output associated type in ink! trait definition
      
      * [lang] re-export trait_definiction proc. macro from ink_lang crate
      
      * [lang/ir] expose InkTrait::compute_verify_hash
      
      * [lang/ir] add ir::ItemImpl::trait_ident
      
      * [lang/codegen] fix some bugs with trait_definition codegen
      
      * [lang/codegen] add codegen for cross-calling ink! trait implementations
      
      * [lang/codegen] surpress warning in generated code
      
      * [lang/codegen] fix bug in generated trait constructors
      
      * [lang/codegen] add codegen for trait implementation blocks
      
      * [lang/ir] allow access to parent impl block from within a CallableWithSelector
      
      * [lang/codegen] make dispatch trait impls more explicit for trait impls
      
      * [lang/codegen] fix and fully implement cross-calling (trait) impl blocks
      
      Works now for both trait impl blocks as well as inherent impl blocks.
      Only missing piece now is the codegen for the call forwarders and their impl blocks.
      
      * [lang/ir] add ir::ItemImpl::attrs getter
      
      * [lang/codegen] add codegen for impl block attributes for cross-calling
      
      * [lang/codegen] correctly re-generate attributes for impl blocks
      
      * [lang/codegen] generate forwarder inherent impl blocks
      
      * [lang, lang/codegen] adjust ink::trait_definition proc. macro codegen
      
      Now it also generates an associated return type per message.
      Those have to respect the ink_lang::ImpliesReturn trait.
      
      * [lang/codegen] add cross-calling call forwarder codegen for trait impl blocks
      
      * [lang] add NeverReturns utility codegen type
      
      * [lang/codegen] implement codegen for cross-calling trait impl blocks
      
      * [*] apply rustfmt
      
      * [lang/codegen] apply some clippy suggestions
      
      * [lang/codegen] always use std feature for itertools dependency
      
      Otherwise codegen won't work for Wasm32 compilations.
      
      * [lang/ir] fix error span for bad event visibility modifier
      
      * [lang/ir, lang/codegen] fix event fields codegen
      
      * [lang/codegen] fix incorrectly generated EmitEvent trait impl
      
      * [lang/codegen] fix bugs with ink-as-dependency and event usage
      
      * [lang, lang/codegen] add ContractEnv trait
      
      Used to query EnvTypes trait impl using the ink! storage struct.
      
      * [lang, lang/codegen] implement payable messages and dynamic storage alloc
      
      Now it is possible to control whether to use the dynamic storage allocator provided by ink! in ink! itself.
      Also this PR implements codegen for non-payable messages.
      
      * [lang/macro, lang/codegen] apply rustfmt
      
      * [lang/ir] error upon payable constructor
      
      ink! constructors are payable by default.
      
      * [core] remove EnvTypes::Call associated type
      
      No longer needed since we just removed the ability to directly call the runtime.
      
      * [core] add MAX_EVENT_TOPICS to EnvTypes trait
      
      * [lang, lang/codegen] optimize message payment checks codegen
      
      * [lang/ir, lang/codegen] dynamic storage allocator: rename + change default
      
      New default is set to "false" so only contracts that actually use this feature need to specify it.
      Also renamed to dynamic_storage_allocator to better carry intention.
      
      * [lang, lang/codegen] add codegen to guard against too many event topics
      
      * [lang/codegen] pull topic guards codegen out of topics impl codegen const
      
      * [lang/codegen] split event topic guards into their own method
      
      * [lang] apply rustftm
      
      * [lang/ir] remove unnecessary lifetime
      
      * [lang] make use of deny_payment internally
      
      * [lang/macro] ignore UI compile tests for now
      
      These will be re-enabled for the follow-up PR.
      
      * [metadata] rename is_payable -> payable (also for metadata format)
      
      * [lang/ir] resolve duplicate code for non-pub visibility checking
      
      Was duplicated for events and storage structs.
      
      * [lang/ir] apply rustfmt
      
      * [lang/codegen] removed commented-out code and update license header
      
      * [lang/codegen] update crate description
      
      * [core] move CreateParams impl blocks closer to struct definition
      
      * [lang/macro] use US english
      
      * [core] fix incorrect doc comment
      5d7d855c
  7. 10 Sep, 2020 1 commit
    • Michael Müller's avatar
      Implement Entry API for storage2::LazyHashMap (#480) · c22562ac
      Michael Müller authored
      * [core] Rename Entry to Internal Entry
      
      * [core] Add Entry API for storage2::LazyHashMap
      
      * [core] Add storage2::LazyHashMap::len()
      
      * [core] Migrate tests to use storage2::LazyHashMap::len()
      
      * [core] Implement FromIterator and Extend for storage2::LazyHashMap
      
      * [core] Implement macro to generate LazyHashMap + HashMap Entry API tests
      
      * [core] Remove redundant storage2::HashMap Entry API tests
      
      * [core] Make storage2::HashMap Entry API use storage2::LazyHashMap's Entry API
      
      * [core] Move parameterized Entry API tests into separate file
      
      * [core] Rename InternalEntry to StorageEntry
      
      * [core] Make lazy_hmap module public
      
      * [core] Generate Entry API benches for LazyHashMap and HashMap from macro
      
      * [core] Minor streamlining
      
      * [core] Display hashmap variant in benchmark description
      
      * [core] Fix comment
      
      * [core] Fix typos
      
      * [core] Make more use of BTreeMap Entry API
      
      * [core] Replace unwrap with expect
      
      * [core] Improve comment
      
      * [core] Handle loading from storage
      
      * [core] Restrict unsafe
      
      * [core] Less ops for case "entry not in cache, but in storage"
      
      * [core] Rename len()
      
      * [core] Fix typo
      
      * [core] Fix visibility
      
      * [core] Address comments
      
      * [core] Add test to verify that cache is marked as 'Mutated'
      
      * [core] Shorten code with utility function
      
      * [core] Improve naming
      c22562ac
  8. 25 May, 2020 1 commit
    • Hero Bird's avatar
      Move collections/boxed to alloc/boxed (#415) · b302ebcf
      Hero Bird authored
      * [core] move collections/boxed module to alloc module
      
      * [core] move main docs from boxed module to Box struct
      
      * [core] properly relink moved module
      
      * [core] remove unnecessary #Safety docs (not related to PR)
      
      * [core] apply rustfmt
      b302ebcf
  9. 20 May, 2020 1 commit
    • Hero Bird's avatar
      Implement storage (revision 2) module (#311) · dffc8cf2
      Hero Bird authored
      
      
      * [core] apply rustfmt
      
      * [core] fix warnings related to Wasm compilation
      
      * [core] add SpreadLayout impl for DynamicAllocator
      
      * [core] remove unused method on Bits256RefMut
      
      * [core] apply rustfmt
      
      * [core] remove some unneded ToDo comments
      
      The ToDo comments have been moved to the associated PR description.
      
      * [core] transit to new traits for LazyIndexMap
      
      * [core] transit to new traits for storage::Vec
      
      * [core] transit to new traits for storage::Stash
      
      * [core] transit to new traits for storage::Bitvec
      
      * [core] transit to new traits for dynamic storage allocator
      
      * [core] transit to new traits for LazyHashMap
      
      * [core] transit to new traits for storage::HashMap
      
      * [core] apply rustfmt
      
      * [core] remove old storage traits for storage::Pack
      
      * [core] transit to new storage traits for LazyArray
      
      * [core] transit to new storage traits for storage::SmallVec
      
      * [core] transit to new storage traits for the rest of the lazy abstractions
      
      * [core] transit to new storage traits for storage::Box
      
      * [core] fix compile error in Drop impl for storage::Box
      
      * [core] remove old storage trait impls for Bits256
      
      * [core] remove old storage trait impls for dynamic storage allocator
      
      * [core] apply rustfmt
      
      * [core] remove old traits module
      
      * [core] replace KeyPtr2 usage with KeyPtr
      
      * [core] rename traits2 module to traits
      
      * [core] apply rustfmt
      
      * [core] add Drop impl to storage::Vec
      
      * [core] don't clear storage if key is none for storage::Vec
      
      * [core] impl Drop for storage::Stash
      
      * [core] simplify trait bounds for LazyHashMap
      
      * [core] impl Drop for storage::HashMap
      
      * [core] add Drop impl for storage::SmallVec
      
      * [core] add are_trait_objects lint as deny
      
      * [core] fix minor formatting issue
      
      * [core] add storage2::Memory utility
      
      * [core] remove usage of storage::Pack from internals of storage::Bitvec
      
      * [core] remove usage of storage::Pack from internals of storage::Stash
      
      * [core] remove usage of storage::Pack from internals of storage::HashMap
      
      * [core] add better Debug impl for LazyIndexMap
      
      The improved impl shows the cached entries which were hidden in the old impl behind the UnsafeCell.
      
      * [core] apply rustfmt
      
      * [core] improve Debug impl for LazyHashMap
      
      It now displays its internal cached entries.
      
      * [core] improve Debug impl for lazy::Entry
      
      * [core] improve Debug impl for LazyCell
      
      * [core] improve Debug impl for LazyArray
      
      * [core] apply rustfmt
      
      * [core] add REQUIRES_DEEP_CLEAN_UP to SpreadLayout
      
      With this we have a way for types to perform an optimized storage clean-up without having to load them in case they do not require a deep clean-up of their state.
      
      * [core] implement REQUIRES_DEEP_CLEAN_UP for all built-in types
      
      * [core] add non-storage trait impls for storage::HashMap
      
      * [core] simplify traits bounds of SpreadLayout impl for storage::HashMap
      
      * [core] fix bug in Wasm compilation
      
      * [core] add initial unit tests for storage::HashMap
      
      * [core] allow loading without key from LazyHashMap
      
      * [core] merge storage::HashMap insert and insert_get and fix bugs with it
      
      * [core] add new unit test for storage::HashMap
      
      * [core] generally allow lazy loading without keys for lazy abstractions
      
      * [core] apply rustfmt
      
      * [core] remove outdated docs of storage::HashMap::insert
      
      * [core] add unit test for storage::HashMap::contains_key
      
      * [core] apply rustfmt to storage::HashMap unit tests
      
      * [core] add unit test for storage::HashMap::{get, get_mut}
      
      * [core] fix the doc comment of storage::HashMap::remove
      
      * [core] add unit test for storage::HashMap::take
      
      * [core] add unit test for storage::HashMap::insert
      
      * [core] remove storage::HashMap::remove
      
      The API cannot be implemented properly at this point.
      
      * [core] implement Iterator::count efficiently for storage::HashMap iterators
      
      * [core] add prelude trait impls for crypto hashers
      
      * [core] add unit test for storage::HashMap::iter
      
      * [core] remove outdated doc comment line
      
      * [core] add doc comments to fowarding-to-packed utility functions
      
      * [core] add some high-level documentation for some root storage2 modules
      
      * [core] add some more high-level docs
      
      * [core] add return value to storage::Stash::defrag
      
      The returned value tells the caller how many storage cells have actually been freed by the routine.
      
      * [core] add return value to storage::HashMap::defrag
      
      * [core] add unit test for storage::HashMap::{values, values_mut}
      
      Also add tests for Iterator::size_hint impls.
      
      * [core] add tests for Iterator::size_hint impls of storage::Vec
      
      * [core] add unit test for storage::HashMap::keys
      
      * [core] add unit test for storage::HashMap::defrag
      
      * [core] add unit tests for LazyIndexMap
      
      * [core] remove lazy::Entry::take_value
      
      * [core] remove LazyIndexMap::take
      
      * [core] remove Entry::set_state
      
      Uses have been replaced with Entry::replace_state.
      
      * [core] remove Lazy{Array, HashMap}::take method
      
      Replace uses with Lazy{Array, HashMap}::put_get(.., None)
      
      * [core] add unit test for LazyIndexMap::put
      
      * [core] add unit test for LazyIndexMap::swap
      
      * [core] apply rustfmt
      
      * [core] cover Default impl of LazyIndexMap with unit test
      
      * [core] move imports to top for LazyIndexMap .rs file
      
      * [core] refactor lazy::Entry internals a bit
      
      * [core] add unit tests for Index impl of storage::Vec
      
      * [core] add unit tests for Index impl of storage::SmallVec
      
      * [core] add tests for Index impl of StorageStash
      
      * [core] improve panic message for Index{Mut} impl of storage::Stash
      
      * [core] add unit tests for Index{Mut} impl of storage::Stash
      
      * [core] extend unit test for storage::Stash::get
      
      * [core] disable certain tests in --release mode testing
      
      * [core] add unit test for LazyIndexMap::{get, get_mut}
      
      * [core] add some unit tests for LazyArray
      
      * [core] add some more unit tests for LazyArray
      
      * [core] add some more unit tests to LaryArray
      
      * [core] apply rustfmt
      
      * [core] add unit tests for LazyCell
      
      * [core] add unit test for SpreadLayout impl of LazyCell
      
      * [core] extend SpreadLayout test for LazyCell
      
      * [core] extend SpreadLayout test to also cover the clear_spread impl
      
      * [core] rename unit test for LazyCell
      
      * [core] fix clippy warning
      
      * [core] fix some LazyCell cache entry in lazy form
      
      * [core] add new unit test for Debug impl of lazy initialized LazyCell
      
      * [core] add more unit tests for lazily initialized LazyCell
      
      * [core] implement shallow clean-up of storage via LazyCell
      
      * [core] test that a lazily loaded LazyCell preserves its cached value
      
      * [core] apply rustfmt
      
      * [core] add additional check for LazyCell cache preservation
      
      * [core] fix bug in LazyIndexMap::clear_packed_at
      
      * [core] add unit test for SpreadLayout impl of LazyIndexMap
      
      * [core] fix bug in LazyArray::clear_packed_at
      
      * [core] add unit test for SpreadLayout impl of LazyArray
      
      * [core] make LazyArray::capacity and SmallVec::capcity more user friendly
      
      * [core] remove unnecessary trait bounds
      
      * [core] remove more unnecessary trait bounds
      
      * [core] add initial unit test for LazyHashMap
      
      * [core] add unit test for LazyHashMap::key_at
      
      * [core] apply rustfmt
      
      * [core] indent a block in test
      
      * [core] add unit test for LazyHashMap::put_get
      
      * [core] add unit test for LazyHashMap::{get, get_mut}
      
      * [core] add unit test for LazyHashMap::put
      
      * [core] add unit test for LazyHashMap::swap
      
      * [core] make hash builders reset their accumulator upon finalization
      
      * [core] add unit test for SpreadLayout impl of LazyHashMap
      
      * [core] fix unit test for LazyHashMap::key_at
      
      Also add prefix to hash-key calculation.
      
      * [core] add unit tests for SpreadLayout impl of storage::Vec
      
      * [core] add unit tests for SpreadLayout impl of storage::SmallVec
      
      * [core] add unit tests for SpreadLayout impl of storage::Stash
      
      * [core] apply rustfmt
      
      * [core] add unit tests for SpreadLayout impl of storage::HashMap
      
      * [core] add unit test for DynamicAllocation::key
      
      * [core] add unit tests for SpreadLayout impl of storage::Bitvec
      
      * [core] fix LazyCell::get unit test
      
      * [core] remove unused dependencies from Cargo.toml
      
      * [core] add missing docs for storage::{Stash, HashMap}
      
      * [core] deny missing docs of public items
      
      * [core] add Debug impl to storage::Box
      
      * [core] add unit tests for storage::Box
      
      * [core] remove internal Pack::{get, get_mut} methods
      
      * [core] fix bug in storage::Memory::{get, get_mut} API
      
      * [core] add unit tests for storage::Pack
      
      * [core] improve storage::Pack unit tests
      
      * [core] experimental inline(never) for debug_assertions compilation
      
      * [core] apply rustfmt
      
      * [core] remove experimental #[inline(never)]
      
      * [core] add unit test for Default impl of storage::Pack
      
      * [core] add unit tests for storage::Memory
      
      * [core] fix a unit test for storage::Box
      
      The storage::Box tests did not reset the dynamic storage allocator instance in between their runs which caued them to have side effects on to each other if run single threaded.
      
      * [core] fix minor bug in BitRefMut utility of storage::Bitvec
      
      * [core] cover storage::Bitvec::get_mut in get_works unit test
      
      * [core] add unit tests for BitRefMut utility of storage::Bitvec
      
      * [core] apply rustfmt
      
      * [core] improve panic message when encountering a double free
      
      * [core] adjust double free unit test for storage::Box
      
      * [core] improve double free of dynamic storage panic message
      
      * [core] apply rustfmt
      
      * [core] merge Bits256Ref and Bits256RefMut into ChunkRef<T>
      
      * [core] split access.rs into bitref.rs and bitsref.rs
      
      * [core] apply rustfmt
      
      * [core] replace transmute with pointer cast
      
      Thanks clippy!
      
      * [core] add comment to explain repr(C)
      
      * [core] add PartialEq and Eq impls to BitRefMut
      
      * [core] add unit tests for ChunkRef
      
      * [core] add failure unit tests for dynamic storage allocator
      
      * [core] fix bug in SpreadLayout impl of Option<T>
      
      * [core] add unit test for dynamic storage allocator SpreadLayout impl
      
      * [core] fix SpreadLayout impl for Result<T, E>
      
      * [core] fix yet another bug in SpreadLayout impl of Result<T, E>
      
      * [core] move forward_supported_array_lens macro to usage site
      
      * [core] refactor some code duplication with clear_spread_root_opt
      
      * [core] fix doc comment in storage::Pack
      
      * [core] remove some unused unsafe blocks
      
      They are going to be re-introduced once the unsafe_op_in_unsafe_fn lint has been implemented in the Rust compiler.
      
      * fix typo
      Co-authored-by: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * fix typo
      Co-authored-by: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * fix typo
      Co-authored-by: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * fix typo
      Co-authored-by: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * fix typo
      Co-authored-by: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * [core] remove usage of storage::Pack in dynamic storage allocator
      
      * [core] improve panic message in Lazy::{get, get_mut}
      
      * [core] add test for SpreadLayout::clear_spread impl of dynamic storage alloc
      
      * [core] remove code dupe
      
      * [core] refactor clear_spread_root_opt utility function
      
      * [core] implement SpreadLayout::REQUIRES_DEEP_CLEAN_UP for some types
      
      * [core] move from bool to u8 for Option and Result SpreadLayout impls
      
      * [core] fix bug in SpreadLayout impl for Option
      
      * fix typo
      Co-authored-by: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * [core] update LazyCell SAFETY comment
      
      * [core] update Entry docs
      
      * [core] remove unneeded code in lazy::Entry::pull_packed_root
      
      * fix typo
      Co-authored-by: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * fix typo
      Co-authored-by: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * fix typo
      Co-authored-by: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * fix typo
      Co-authored-by: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * [core] remove commented out code
      
      * [core] add new unit test for dynamic storage allocator
      
      * [core] refactor global storage allocator initialization routines
      
      * [core] fix Wasm compilation errors
      
      * [core] apply rustfmt
      
      * [core] surpress bad clippy lint
      
      * [core] remove dead code
      
      * [core] improve call_setup_works test
      
      * [core] fix bug in initialize_for for off-chain env
      
      * [core] initial steps to factor out BitStash from DynamicAllocator
      
      * [core] apply rustfmt
      
      * [core] add Derive impl for BitStash
      
      * [core] make use of storage::BitStash from dynamic storage allocator
      
      * [core] add unit tests for storage::BitStash
      
      * [core] apply rustfmt
      
      * [core] remove invalid TODO comment
      
      * [core] fix some out of bounds panic messages
      
      * [core] remove deliberate memory leak in test suite
      
      * [core] fix build failure for Wasm target
      
      * [core] add unit tests for SpreadLayout & PackedLayout impls of primitives
      
      * [core] add unit tests for packed layout explicitely
      
      * Fix some typos
      
      * Add simple double ended iter test
      
      * typos
      
      * comment typos
      
      * split hashmap to hash map in comments
      
      * fix typo
      Co-authored-by: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * fix typo in unreachable! message
      Co-authored-by: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * fix typo in expects message
      Co-authored-by: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * fix typo
      Co-authored-by: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * fix typo
      Co-authored-by: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * [core] add more comments to storage2::HashMap::defrag
      
      * [core] make early return for storage2::HashMap::defrag for limit = 0
      
      * [core] improve storage2::HashMap::contains_key implementation
      
      * [core] rename new_vec_works test to new_works
      
      * [core] apply Andrew's suggestions (and more)
      
      * [core] fix typo: increase -> decrease
      
      * [core] add panic to Bitvec::push in case it reached its maximum capacity
      
      * [core] update comments for storage bit stash
      
      * [core] add more explanation comments
      
      * [core] some more renamings of test internals
      
      * improve reasoning
      Co-authored-by: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * fix typo
      Co-authored-by: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      Co-authored-by: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      dffc8cf2
  10. 03 Feb, 2020 1 commit
    • Hero Bird's avatar
      Implementation of ink! env (revision 3) (#312) · 321fe03a
      Hero Bird authored
      
      
      * [core] initial implementation of env revision 3
      
      * add engine abstraction layer and implement api functions
      
      * add support for dispatch_call to env3
      
      * add missing invoke_runtime to api.rs
      
      * [core] fix restore_contract docs
      
      * [core] initial implementation of off-chain environment
      
      * [core] clean-up of env3 fundamental types
      
      * [core] add WasmEnv::reset_buffer
      
      * show test submodule of env3 when compiling with rustdoc
      
      * [core] initial implementation of the off-chain env instance
      
      Also many other adjustments.
      
      * [core] further enhancements to off-chain env
      
      * [core] implement untyped Env for off-chain environment
      
      * [core] implemented a good chunk of TypedEnv for the off-chain environment
      
      * [core] minor improvements to env3
      
      * [core] further improvements and additions to test-api of env3
      
      * [core] remove former test-api file
      
      * [core] env3: add support for ext_tombstone_deposit
      
      * [core] env3: add setting of rent allowance in off-chain env
      
      * [core] env3: remove buffer.rs
      
      * [core] env3: remove property.rs
      
      * [core] env3: mark some TypedEnv methods as not-todo
      
      * [core] env3: enable off-chain api for non test/doc builds
      
      * [core] env3: use a static buffer instead of Vec<u8>
      
      * [core] env3: move static buffer into its own module
      
      * fix doc comment
      Co-Authored-By: Michael Müller's avatarMichael Müller <mich@elmueller.net>
      
      * [core] env3: add missing license header
      
      * [core] env3: remove deprecated doc note
      
      * [core] env3: add off-chain {set/get}_runtime_storage
      
      * [core] env3: add off-chain invoke_runtime dispatch
      
      This also enables support for registering custom runtime call handlers.
      
      * [core] env3: slightly improve env3::random docs comment
      
      * [core] env3: move off-chain errors under EnvError
      
      * [core] env3: add ext_random support for the off-chain environment
      
      * [core] env3: minor clean ups
      
      * [core] env3: improve TypedEncoded::assign
      
      * [core] env3: un-mut some variables
      
      * [core] env3: fix some clippy warnings
      
      * [core] env3: add past_printlns to off-chain test api
      
      * [core] env3: minor refactoring
      
      * [core] env3: apply rustfmt
      
      * [core] env3: clean up of call and instantiate contract
      
      * [core] env3: rename moment -> time_stamp
      
      * [core] env3: make get_runtime_storage return a Result instead of RetCode
      
      * [core] env3: remove unneeded import
      
      * [core] env3: add some trait impls for EnvTypes::Hash
      
      * [core] env3: remove last remaining usages of RetCode
      
      * [core] env3: refactor some errors
      
      * [core] env3: document the EnvError enum
      
      * [core] env3: add impls for fire methods on call and create builders
      
      * [core] env3: add doc comment to past_printlns
      
      * [core] env3: apply rustfmt
      
      * [core] env3: update license headers
      
      * [core] env3: support querying and emitting of events in off-chain env
      
      * [core] env3: missing license header adjustment
      
      * [core] env3: apply rustfmt
      
      * [core] env3: rename some methods in off-chain test-api
      
      * [core] env3: add doc comment to test::emitted_events
      
      * [core] env3: add stub for test::advance_block
      
      * [core] env3: rename some more test API methods
      
      * [core] env3: initialize entropy of block randomly
      
      * [core] env3: extend EnvTypes trait bounds
      
      This change makes the trait bounds more similar to what Substrate defines.
      
      * [core] env3: document SimpleArithmetic trait
      
      * [core] env3: add From<u32> to SimpleArithmetic trait
      
      * [core] env3: made some trait bounds more explicit in SimpleArithmetic trait
      
      * [core] env3: add comment describing potential future extensions to SimpleArithmetic trait
      
      * [core] env3: rename EnvTypes::Moment to TimeStamp
      
      * [core] env3: add block_time to ChainSpec
      
      * [core] env3: remove CodeDb again
      
      Not needed right now. Maybe re-added at a later point.
      
      * [core] env3: apply rustfmt
      
      * [core] env3: implement off-chain test::advance_block
      
      * [core] env3: fix bug in off-chain test::advance_block impl
      
      * [core] env3: made SimpleArithmetic trait more explicit towards Output types
      
      * [core] env3: add default initialization routines for off-chain environment
      
      * [core] env3: remove test::create_user_account for now
      
      * [core] env3: fix missing renaming from Moment -> TimeStamp
      
      * [core] env3: impl PartialEq and Eq for off-chain error types
      
      * [core] env3: add test::run_test for off-chain testing with default setup
      
      * [core] env3: fix several minor bugs with the off-chain environment
      
      * [core] convert key.rs tests to new env3
      
      * [core] remove commented out code in key.rs tests
      
      * [core] evn3: add test::get_contract_storage_rw
      
      * [core] use env3 instead of env1 in storage cells
      
      * [core] integrate env3 into storage::TypedChunk
      
      * [core] remove storage::RawChunk and NonCloneMarker
      
      * [core] adjust SyncChunk slightly for TypedChunk modifications
      
      * [core] simplify transitioned env3 tests for TypedChunk
      
      * [core] transition tests for SynChunk to env3
      
      * [core] transition storage::Stash tests to env3
      
      * [core] transition storage::HashMap tests to env3
      
      * [core] transition storage::BinaryHeap tests to env3
      
      * [lang] remove the entire ink! lang crate
      
      It has been deprecated for a whole while.
      
      * [model] remove ink! model crate entirely
      
      It has been deprecated for a whole while.
      
      * [core] remove the old env1 sub-module of ink_core
      
      It has been deprecated for a whole while.
      
      * [examples] remove model examples
      
      * [examples] remove lang examples
      
      * [examples] remove core examples
      
      * remove "If given too few endowment" from docs
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * fix doc comment
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * fix doc comment
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * [lang2] initial steps towards basing on env3 instead of env2
      
      With this commit `cargo contract build` already works.
      However, cargo test etc. are still broken.
      
      * [lang2] make macros work for `cargo test`
      
      * [core, lang2] make contracts compile as ink-as-dependency
      
      * [lang2] make events work for ink_lang2 on env3
      
      * [lang2] remove AccessEnv - no longer needed
      
      * [core] remove env2
      
      * [lang2] fix tests
      
      - Fix warning in ink_lang2
      - Remove no longer needed test case
      - Adjust some passing tests after default module import removal
      
      * [*] apply rustfmt
      
      * [lang2] silence unused warning for now
      
      * [core] rename {create|Create}* to {instantiate|Instantiate}*
      
      - CreateBuilder -> InstantiateBuilder
      - CreateParams -> InstantiateParams
      - create -> instantiate
      
      * [core] rename endowment -> transferred_value for CallBuilder/Params
      
      * [examples] adjust Delegator contracts for recents changes
      
      * [core] rename now_in_ms -> block_timestamp
      
      * [core] follow-up of the call renamings (transferred_value)
      
      * [lang2] rename now_in_ms -> block_timestamp
      
      * [examples] move examples out of the examples/lang2 folder
      
      * [examples] fix runtime-storage example contract
      
      * [examples] fix Flipper contract
      
      * [examples] fix Incrementer contract
      
      * [examples] fix Erc20 contract
      
      * [utils] add Key and byte_utils to ink_utils
      
      * [utils -> primitives] rename ink_utils -> ink_primitives
      
      * [*] move all links from ink_utils -> ink_primitives
      
      * [primitives] update Cargo.toml description
      
      * [*] use ink_primitives::Key remove ink_core::Key
      
      * [primitives] refactor new crate, make it more usable in ink! context
      
      * [*] relink to ink_primitives for Key usage
      
      * [abi] refactor macros and relink to ink_primitives::Key
      
      * [lang2] fix usage of renamed Create{Builder, Params}
      
      * [examples] fix examples under recent changes with ink_primitives
      
      * [*] apply rustfmt
      
      * [lang2/macro] remove deprecated feature usage of proc_macro_hygiene
      
      * [examples] remove deprecated proc_macro_hygiene feature
      
      * [core] remove test_utils
      
      * [core] rename env3 to env
      
      * [*] rename all usages of env3 to env
      
      * [core] fix feature usage in num-traits of ink_core Cargo.toml
      
      * [*] update README
      
      * [primitives] conditionally compile type_metadata from ink_primitives
      
      * [core] make env::get_contract_storage return Option<Result<T>>
      
      * [core] fix some faulty doc comments
      
      * [ci] fix GitLab CI
      
      * [primitives] fix no_std compilation
      
      * [primitives] fix warning
      
      * [core] make `rand` dependency optional for `std` crate feature
      
      * [core] remove the test-env crate feature from the ink_core crate
      
      * [core,primitives] move some tests from primitives to core
      
      * [lang] move lang2/ to lang/
      
      * [*] rename all instances of ink_lang2 or lang2 to ink_lang or lang
      
      * [lang/macro] fix ink_primitives dependency
      
      * [*] apply rustfmt
      
      * [core] fix clippy warning
      
      * [ci] eliminate README from examples CI checks
      
      * [examples] apply rustfmt
      
      * [lang/macro] improve event codegen
      
      * [core] rename TimeStamp/time_stamp to Timestamp/timestamp
      
      * [lang] remove unused extern crate alloc
      
      * [core] rename env::address to env::account_id
      
      * [lang] perform renamings on ink_lang::EnvAccess but with deprecation instead of removal
      
      * [core] fix missing time_stamp renamings
      
      * [lang] fix missing TimeStamp renamings
      
      * improve doc comment
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * improve doc comment
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * rename create_contract -> instantiate_contract
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * rename create_contract -> instantiate_contract
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * improve doc comment
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * impr
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * improve doc comment
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * improve doc comment
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * improve doc comment
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * rename endowment -> transferred_value
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * improve doc comment
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * rename create_contract -> instantiate_contract
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * rename create_contract -> instantiate_contract
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * rename time stamp to timestamp
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * rename SRML to env in docs
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * remove SRML word from docs
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * remove SRML word from docs
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * [lang] fix doc comment for filtered_keys in restore_contract
      
      * [core] rename create_contract -> instantiate_contract
      
      * [core] rename create_contract -> instantiate_contract
      
      * [core] fix some renamings around endowment -> transferred_value
      
      * [lang] rename create_contract -> instantiate_contract follow-up
      
      * [core] apply rustfmt
      
      * [core] improve restore_contract doc comment
      
      * [core, lang] link to ink_core::env::* doc comments from all api places
      
      * [core] apply rustfmt
      Co-authored-by: Michael Müller's avatarMichael Müller <mich@elmueller.net>
      Co-authored-by: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      321fe03a
  11. 20 Nov, 2019 1 commit
  12. 22 Apr, 2019 1 commit
  13. 27 Feb, 2019 1 commit
  14. 06 Feb, 2019 1 commit
  15. 23 Jan, 2019 1 commit
  16. 02 Jan, 2019 1 commit
  17. 21 Dec, 2018 1 commit
    • Hero Bird's avatar
      [pdsl_core] Remove capacity from chunks · d140ef31
      Hero Bird authored
      This greatly simplifies chunk implementations as well as everything that builds on top of them.
      Chunks are now always having full range of 2^32 elements.
      So no further checks have to be done on accessing them.
      d140ef31
  18. 16 Dec, 2018 4 commits
  19. 15 Dec, 2018 1 commit