1. 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
  2. 25 Aug, 2020 1 commit
    • Hero Bird's avatar
      Sync with Substrate RC6 (#478) · ba5aed19
      Hero Bird authored
      * [core] remove get_runtime_storage and invoke_runtime
      * [core] invalidate all implementations and usages of ext functions
      * [core] adjust ext_ functions in ext.rs
      * [core] add ReturnFlags to public API
      * [core] remove off-chain impls for get_runtime_storage and invoke_runtime
      * [core] rename ext::ext_input -> ext::input
      * [core] change return type of get_contract_storage
      Previously returned Option<Result<R>> and now returns Result<Option<R>>.
      This change is more pragmatic.
      * [core] add conversion from ext::Error to EnvError
      * [core] on-chain: add new utilities for static buffer modifications
      - EncodeScope: for efficiently appending encoded values
      - ScopedBuffer: for efficiently chunking buffers
      * [core] add impls for on-chain property getters
      * [core] remove no longer needed utiltiy function
      * [core] on-chain: new impl for invoke_contract and eval_contract
      * [core] on-chain: new impl for get_contract_storage
      * [core] on-chain: new impl for decode_input
      We should also rename this to simply "input" later.
      * [core] on-chain: new impl for output
      Now also uses the new ReturnFlags abstraction.
      * [core] on-chain: new impl for instantiate_contract
      * [core] on-chain: remove unused API
      * [core] on-chain: move EncodeScope and ScopedBuffer to buffer.rs
      * [core] on-chain: implement rest of the on-chain API
      * [core] add ScopedBuffer::take_bytes
      * [core] Add Env::call_chain_extension trait method
      * [core] remove unused helper methods
      * [core] on-chain: simplify static buffer
      - No more length
      - No more encodable
      - Only full range access
      * [core] add env::call_chain_extension public API
      * [core] rename Env::output -> return_value
      * [core] off-chain: adjust a bunch of off-chain methods to new interfaces
      * [core] off-chain: adjust get_contract_storage return type
      * [core] off-chain: remove RuntimeCallHandler and RuntimeStorage facilities
      * [core] off-chain: adjust some tests
      * [core] off-chain: remove OffCall utility type
      * [core] off-chain: implement chain extension handler
      * [core] adjust panic message
      * [core] apply rustfmt
      * [core] apply clippy suggestion
      * [core] off-chain: re-export ChainExtension and ChainSpec types from test API
      * [core] on-chain: retain panic messages
      * [core] rename ext_ to seal_ for all on-chain functions
      * [alloc] fix some warnings and add some minor comments
      * [core] add wasm_import_module = "seal0"
      * [core] introduce new Seal error codes
      * [core] directly return ReturnCode from C-FII
      * [core] make transfer return Result
      * [core] improve some doc comments
      * rename some old errors to their new names
      * [core] remove unused env errors and rename some off-chain errors
      * [core] fix bug in ReturnFlags::set_reverted (formerly known as set_trapped)
      * [core] avoid From impl for () for OffChainError
      * [lang] adjust lang layer for changes in core
      - Remove invoke_runtime
      - Remove get_runtime_storage
      - Rename gas_price -> weight_to_fee
      - Add ReturnFlags to return_value call
      * [core] turn redundant asserts into debug_assert
      * [core] be more strict when handling ext::get_storage error
      * [core] implement clippy suggestion
      * [examples] remove no longer useful runtime-storage contract
      We no longer support the get_runtime_storage host function.
      It will eventually be reintroduced at a later point through chain extensions.
      * [core] disable chain extensions by default
      Can be enabled by experimental crate feature:
      - unstable_chain_extensions
      * [lang] apply clippy suggestion to use matches! macro
      * [core] fix docs for ext_return
      Co-authored-by: Alexander Theißen's avatarAlexander Theißen <alex.theissen@me.com>
      * [core] fix return type of api::return_value
      Not sure why the compiler didn't mention this return type failure ...
      Co-authored-by: Alexander Theißen's avatarAlexander Theißen <alex.theissen@me.com>
      * [core] fix doc comment of Env::return_value
      * [core] introduce RawReturnCode as a layer between Seal error codes and ink!
      * [alloc] make #[alloc_error_handler] private
      * [alloc, core] move alloc_handler from ink_alloc to ink_core
      * [core] replace useless intermediate ReturnCode type
      * [core] rename RawReturnCode -> ReturnCode
      * [core] apply rustfmt
      * [core] apply rustfmt
      * [core] off-chain: rename invoke -> eval for chain extension calling
      * [core] use Ptr32 and Ptr32Mut to encapsulate pointer -> u32 conversions
      * [core] make new Ptr32 and Ptr32Mut abstractions more type safe
      Co-authored-by: Alexander Theißen's avatarAlexander Theißen <alex.theissen@me.com>
  3. 02 Jul, 2020 1 commit
    • Andrew Jones's avatar
      [core] add gas arg to ext_gas_price (#461) · 2456fdd2
      Andrew Jones authored
      * add gas argument
      * Add gas parameter to ext_gas_price
      * Fix up gas_price offchain api
      * Fix up env_access api
      * Emulate gas price calculation
      * Make clippy happy
      * Use Saturating impl for emulating gas price calculation offchain
      * Fmt
      * Add offchain gas_price test
      * Make clippy happy
  4. 17 Jun, 2020 2 commits
    • Hero Bird's avatar
      Avoid heap allocations for contract dispatch (#449) · f5b3c481
      Hero Bird authored
      * [core] add Env::decode_input
      * [lang/macro] remove unneeded crate dependencies
      # Conflicts:
      #	lang/macro/Cargo.toml
      * [lang, lang/macro] add message dispatcher type code generation
      * [lang/macro] add constructor dispatch enum code generation
      * [lang] add executor functions and Execute trait
      * [core] add decode_input to public env API
      * [lang] fix incorrect trait bound in execute_message
      * [lang/macro] add code generation for ink_lang::Execute
      * [lang/macro] integrate Execute trait impls into contract dispatch
      * [lang/macro] fix bug with constructors and messages with multiple inputs
      * [lang] apply rustfmt
      * [lang/macro] apply rustfmt + fix clippy warnings
      * [lang] remove testable module
      * [lang] clean-up lang module after implementing new dispatch codegen
      # Conflicts:
      #	lang/src/dispatcher.rs
      * [lang] re-enable alloc init and finalize
      * [lang] apply rustfmt
      * [core] remove Env::input function
      It has been deprecated. Users should use Env::decode_input function instead.
      # Conflicts:
      #	core/src/env/engine/off_chain/mod.rs
      * [core, examples] fix move of CallData to env::test API
      * [core] apply rustfmt
      * [examples] fix examples Selector::from_str -> new
      * [examples] fix multisig_plain doc-test import
      * [examples] apply rustfmt to multisig_plain example
      * [lang/macro] resolve some code dupes
    • Hero Bird's avatar
      Integrate new Key and KeyPtr types into rest of ink! (#447) · d095dd07
      Hero Bird authored
      * [primitives] add scale::{Encode, Decode} impls for Key
      * [primitives] add #[inline] annotations to scale::{Encode, Decode} impls for Key
      * [primitives] remove old Key and old KeyPtr abstractions
      # Conflicts:
      #	primitives/src/key.rs
      * [abi] adjust codebase to new Key and KeyPtr abstractions
      * [core] first step towards new Key and KeyPtr abstractions
      * [primitives] add core::ops::Add impl to Key for testing
      * [primitives] add Add impls for ref and value Key
      * [primitives] add Key::as_bytes for little-endian architectures
      * [primitives] add HasType{Id, Def} for Key
      * [core] adjust ink_core::env for Key and KeyPtr changes
      * [core] adjust ink_core::storage2 for Key and KeyPtr changes
      * [lang] adjust ink_lang for Key and KeyPtr changes
      * [lang/macro] adjust for Key and KeyPtr changes
      * [core] fix lazy_cell Debug unit test
      * [primitives] remove type_metadata impls, add scale_info impl
      * [abi, core] update unit tests for Key changes
      * [primitives] rename key2 -> key and key_ptr2 -> key_ptr module
      * [primitives] rename bench functions key2 -> key
      * [primitives] use Fields::unnamed
  5. 13 Jun, 2020 1 commit
    • Hero Bird's avatar
      Avoid heap memory allocations for cross-contract calls and instantiations (#439) · 870095c8
      Hero Bird authored
      * [core] add ExecutionInput abstraction
      * [core, lang] adjust env and lang abstractions for call builder changes
      * [lang/macro] adjust cross-call codegen to use new call infrastructure
      * [core] add #[inline] to many call infrastructure functions
      * [core, lang] apply rustfmt
      * [core, lang, lang/macro] avoid heap mem alloc for instantiations as well
      * [core] add inline annotations to some instantation infrastructure
      * [core] fix clippy warning
      * [core] apply rustfmt
      * [examples] fix multisig_plain example contract
      * [examples] apply rustfmt
  6. 25 Mar, 2020 1 commit
    • Hero Bird's avatar
      Initial implementation of high-level hashing infrastructure (#363) · b5a693bb
      Hero Bird authored
      * [core] initial implementation of high-level hashing infrastructure
      * [core] apply rustfmt
      * [core] add doc-comment to state some potential optimization
      * [core] add Wrap as another built-in way of creating an InputBuffer instance
      * [core] make &mut T implement InputBuffer if T: InputBuffer
      * [core] publicly export Wrap
      * [core] remove the two simple forms of all hash functions
      * [core] add extensive docs with examples to all hash functions
      * [core] fix doc tests
      * [core] fix bug in InputBuffer impl of Wrap
      * [core] add asserts to hash doc tests
      * [core] apply rustfmt
      * [core] simplify doc tests
      * [core] adjust doc comments for raw hashes
      * [core] improve docs
      * [core] add missing internal docs
      * [core] rename InputBuffer -> Accumulator
      * [core] apply rustfmt
      * [core] make Accumulator impl more explicit
      Co-Authored-By: default avatarNikolay Volf <nikvolf@gmail.com>
      * [core] make Accumulator impl less explicit
      Co-Authored-By: default avatarNikolay Volf <nikvolf@gmail.com>
      * [core] make Accumulator impl less explicit
      Co-Authored-By: default avatarNikolay Volf <nikvolf@gmail.com>
      * [core] make Accumulator impl less explicit
      Co-Authored-By: default avatarNikolay Volf <nikvolf@gmail.com>
      * [core] remove minor code dupe
      * [core] completely refactor hash module
      * [core] remove XX hash from low-level and high-level API
      * [core] fix typo in docs
      * [core] fix macro generated docs
      Co-authored-by: default avatarNikolay Volf <nikvolf@gmail.com>
  7. 21 Mar, 2020 1 commit
    • Hero Bird's avatar
      Implement crypto hash functions supported by contracts pallet (#360) · e0204021
      Hero Bird authored
      * [core] implement crypto hash functions supported by contracts pallet
      * [core] fix clippy warnings
      * [core] add unit tests for new crypto hashes
      * [core] refactor unit tests for crypto hashes
      * [core] make hash functions return their hash through output buffer
      * [core] update docs of hash APIs
      * [core] put hash API in its own sub-module of env
      * [core] fix on-chain hash implementations
      * [core] apply rustfmt
  8. 17 Mar, 2020 2 commits
  9. 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>
  10. 28 Nov, 2019 1 commit
  11. 20 Nov, 2019 2 commits
  12. 30 Aug, 2019 1 commit
    • Hero Bird's avatar
      Add call infrastructure to ink_lang (#175) · 9cf5a571
      Hero Bird authored
      * [core] add initial call builder implementation
      * [core] add setters to CallBuilder
      * [core] fix invalid mod import in no_std
      * [lang] initial remote call implementation for ink_lang
      * [examples] add ink-as-dependency crate feature to erc20 token contract
      * [core] move calls and call error definitions
      * [core] add ext_create support
      * [*] apply rustfmt
      * [core] expose ReturnType publicly
      * [core] add ext_create impl on the SRML interfacing side
      * [core] fix minor invalid module import
      * [lang] split CallEnhancer into mut and immutable versions
      * [lang] forward to call enhancers from short-version of remote calling
      * [core] improve create builder to return the contract directly
      * [lang] simplify env types code generation
      * [lang] add create call builder code generation
      * [lang] improve code gen by altering spans of the generated code
      * [examples] add ink-as-dependency to all lang examples
      * [cli] add ink-as-dependency to smart contract template
      * [lang] fix code gen bug with forwarding references
      * [lamg] move impls out of const item
      It seems that inherent impls shouldn't be put inside a const item.
      * [core] impl Default for Hash
      * [lang] add Flush, scale::{Encode, Decode} for contracts as dependencies
      * [examples] add example to call remote smart contracts
      * [examples] remove invalid test code from delegator contract
      * [abi] fix warning about suffixed tuple indices
      * [lang] fix bug in generate-abi codegen for deploy handler with multiple args
      * [lang] derive from type_metadata::Metadata for contract structs
      * [examples] ran cargo fmt
      * [examples] derive type_metadata::Metadata for Which
      * [examples] make code hashes deploy inputs for delegator contract
      * [core] rename gas_cost to gas_limit
      * [core] remove parts that got re-introduced accidentally upon merge
      * [examples] add a README to the delegator contract
      * [examples] restructure delegator project structure
      * [examples] fix Cargo.toml of delegator
      * [lang] fix bug that ink-as-dependency derives Metadata for the state struct
      * [lang] add getter for account_id of ink-as-dependency state structs
      * [examples] adjust Delegator contract to make it work with old ABI generator
      * [lang] import FromAccountId
      * [examples] provide a build.sh script to deploy delegator contract
      * [readme] add section about wabt and wasm-utils tools
      * [readme] add off-chain test for the example smart contract
      * [examples] add .value call to contract create calls of delegator
      * [*] use fix-serialization branch of type-metadata
      * [*] use type-metadata master branch again (PR was merged)
      * [lang] update the noop compile test
      * [lang] simplified the noop compile test doc comments
      * [lang] fix compiletest for Flipper contract
      * [lang] fix compile tests for incrementer contract
      * [lang] fix compile tests for Events contract
      * [scripts] do not check the Delegator for now (needs special treatment)
      * [ci] update rust version from nightly-2019-08-13 to nightly-2019-08-30
      * [examples] restructure delegator contract project structure
      * [scripts] make check-examples script simpler again after delegator refactoring
      * [examples] clean up Delegator contract
      * [examples] improve build guidance of Delegator contract
  13. 19 Aug, 2019 1 commit
  14. 16 Aug, 2019 1 commit
  15. 15 Aug, 2019 1 commit
  16. 09 Aug, 2019 1 commit
    • Andrew Jones's avatar
      [*] parity-codec -> parity-scale-codec (#164) · 9525f2f5
      Andrew Jones authored
      * [*] parity-codec -> parity-scale-codec
      * [core, model] Decode impls Option -> Result
      * [core] typed_cell load expect successful Decode
      * [core] Option to Result, remove redundant combinator
      * [model] Option to Result
      * [*] abbreviate parity-scale-codec
      * [core] fix dummy Call Decode impl
  17. 30 Jul, 2019 1 commit
    • Andrew Jones's avatar
      Implement `ext_dispatch_call` (#124) · 49f221bd
      Andrew Jones authored
      * [core] Add AccountId to EnvTypes
      * [core] Add calls mod, plus WIP tests
      * [core] Balance transfer call roundtrip works
      * [core] Add ext_dispatch_call
      * [core] Implement ext_dispatch_call
      * [examples] Add example lang contract for ext_dispatch_call
      * [examples] WIP: implement example lang contract for ext_dispatch_call
      * [examples] complete basic implementation of dispatching Balances Call
      * srml-contracts -> srml-contract
      * [core] remove unsafe from dispatch_call api fn
      * [core] Add docs to dispatch_call
      * [core] Add missing trait bound to account index
      * [core] Some todos
      * [core] Rename dispatch_call to dispatch_raw_call on Env trait
      * [lang] Add AccountIndex type alias
      * [model] add strongly type dispatch call to EnvHandler
      * [*] specify latest parity-codec version, same as substrate
      * [core] fix call roundtrip tests
      * [lang] fix tests
      * [core] fix wasm build
      * [core] fix std build
      * [core] move call type serialization tests
      * [core] test Call serialization roundtrip
      * [core] use node_runtime for Call serialization roundtrip
      * [core] remove unused dependencies
      * [core] remove unused substrate dependencies
      * [core] change default Balance to u128, matching substrate
      * [core] introduce Address type for balance calls
      * [core] fix Balances transfer serialization test
      * [core] add Address serialization tests
      * [ci] install wasm-gc for building substrate dev deps
      * [ci] move wasm-gc installation after wasm target added
      * [examples] get the calls example compiling
      * [CI] add temporary check for debugging ci build
      * [CI] restore wasm-gc to install section and remove temp version check
      * [CI] temporarily depend on substrate branch to test build fix
      * [CI] remove temp substrate branch, build issue fixed
      * [core] use std feature instead of test-env for EnvTypes
      * [core] remove Call types, moved to ink-types-node-runtime
      * [core] remove AccountIndex from EnvTypes
      * [core] remove AccountIndex from lang codegen
      * [core] fix unused for std
      * [CI] remove wasm-gc from travis build
      * [CI] remove AccountIndex type alias from codegen
      * parity-codec version 4.1.1 -> 4.1
      * [core] ext_dispatch_call docs
      * [core] describe in comment what will happen if decoding fails
      * [model] implement suggestion of Into<Call>
      * rustfmt
      * rustfmt again
      * rustfmt again again
      * [examples] deleted calls example - moved to ink_types_node_runtime
      * [core] use into in api::dispatch_call
      * [core] make Call empty enum and use test-env feature for EnvTypes
      * [core] remove unused Call enum
      * [core] add comments explaining rationale for test-env
      * [core] missing period
      * [core] add comments
      * [core] add space in comment
      * [core] add comment to Call decode impl
      * [core] make dispatched_calls a DoubleEndedIterator
      * [core] add missing doc comment
      * [core] add comment explaining Decode requirement
      * [core] doc comment and DoubleEndedIterator
  18. 24 Jul, 2019 1 commit
    • Hero Bird's avatar
      Enhance Flush (#136) · b66ab319
      Hero Bird authored
      * [core] Enhance Flush trait to make it work with SyncCell and SyncChunk
      * apply rustfmt
  19. 24 Jun, 2019 1 commit
    • Andrew Jones's avatar
      Contract Runtime Types (#108) · efe69028
      Andrew Jones authored
      * [model] Make EnvHandler generic over Env
      * [core] Remove api env functions
      * [core] Remove default srml types, separate EnvStorage trait
      * [core] Remove TryFrom bounds
      * [core, examples] Convert incrementer to use NodeRuntime types
      * [examples] Ignore duplicate wasm runtime lang items
      * [examples] Tidy up incrementer example
      * [core] Add Hash constraint for AccountId
      * [examples] Convert model ERC20 example
      * [lang, examples] Generate env type aliases, convert ERC20 example
      * [types] Add pre-baked node-runtime types lib
      * [examples] Convert core/incrementer to use node-runtime-types
      * [examples] Convert lang/erc20 to use node-runtime-types
      * [examples] Convert model/erc20 to use node-runtime-types
      * [types, examples] Rename node-runtime to node_runtime
      * [types] Add default contract environment types
      * [types] Rename type crates
      * [types, core] Move default types back to core
      * [examples] Convert flipper example to use default types
      * [core] Fix up test_env
      * [core] Fix syn Errors after merge
      * [core] Temporarily suppress unused errors in test_env
      * [tests] Fix up test compilation
      * [tests] Remove unused test code overrides
      * [core] Make SrmlEnvStorage enum
      * [core] Fix empty enum
      * Use Debug impl of AccountId
      * [model] Remove stray license template line
      * [lang] Replace Env type alias with explicit type
      * [core, tests] Store raw bytes in TestEnv data
      * [model] Fix tests
      * [examples] Add missing env import
      * [core] Remove Hash + Copy constraints
      * [core] Replace unwrap with expect
      * [core] Remove unused import
      * [lang] Fix missing Env type param for test-env
      * [examples] Construct AccountId in tests by decoding bytes
      * [examples] set_caller helper function
      * [core, examples] Extract TestEnv events, no type param required
      * [core, examples] Restore `r#return` api call
      * [examples] Use from impl for AccountId
      * [core. lang] Encode concrete env type in contract
      * [lang] Fix lang failure tests
      * [examples] Fix lang incrementer example
      * [lang] Fix up events test
      * [lang] Increase recursion limit for lang test
      * [lang] Encapsulate env types in module and use alias for ContractEnv
      * [lang] Fix remaining lang tests
      * [examples] Move node runtime types to separate repo
      * [lang] Make types public and prefix ContractEnv alias
      * [lang] Remove ContractEnv alias, inline type
      * [fix] Remove types/node_runtime from workspace
      * [lang] Use fully qualified ContractEnv, fix lang tests
      * [examples] Fix events lang example
      * [lang, examples] Convert erc20 example to use new ink-types-node-runtime
      * [docs, template, examples] Add missing EnvTypes declaration
      * [lang] Add super import to types mod
      * [examples] use DefaultSrmlTypes in erc20 example
      * [examples] Use ink-types-node-runtime lib
      * [examples] Use remote git dependency
      * [core] remove unused reexport
      * [core] update docs
      * [examples] Fix core incrementer example
      * [lang] Move 'env' type alias to test module
      * Revert "[lang] Move 'env' type alias to test module"
      This reverts commit 8f73f37b
      * [lang] use Env trait to allow calling methods from type alias
      * [lang] Fix lang codegen tests
      * [lang] Use inner attr for EnvTypes instead of type alias
      * [lang] Add some tests for parsing env types meta attr
      * [lang] Pass EnvHandler type to fix compile error after merge
      * [core] Add extra trait bounds to EnvTypes
      * [core] EnvTypes test-env feature
      * [examples] Reference master ink! in anticipation of merge
      * [core] Docs and pub(self)
      * [examples] Convert to AccountId::from
      * [lang] Revert recursion limit
      * [core] Make ContractEnv pub again
      * [lang] remove env type alias
      * [core] restore test env emitted_events method
      * [core] missing T
      * [core] emitted_events missing type parameter
      * [examples] update env usage in erc20
      * [examples] update env usage in other lang examples
      * [examples] fix up core examples
      * [examples] fix up model examples
      * [core] fix import
      * [core] phantom marker grumble
      * [core] comment grumble
      * [core] return Iterator from emitted_events
      * [lang] remove commented out code
      * [core] remove redundant allow_unused
      * [examples] use DefaultSrmlTypes for erc20 example
  20. 23 May, 2019 1 commit
    • Hero Bird's avatar
      Major clean up of ink! codebase (#99) · fa906cad
      Hero Bird authored
      * [ink] Update rust-toolchain from 2019-04-20 to 2019-05-21
      * [core,lang] Update & fix Cargo information
      * [chores] Update rustfmt version to the current toolchain
      * [core] Clean up, fix some warnings
      * [core] Remove unneeded dependency
      * [core] Ignore return value of Key ops
      Fixes a warning
      * [core,model] Adjust warning level
      * [lang] Minor rustfmt run
      * [ink] Add topics to events
      For now, ink! will simply leave topics slice empty.
      * [core] Add ext_gas_left, ext_gas_price and ext_value_transferred bindings
      * [core] Clean up some code by dedup
      * [core] Further code clean up
      * [core] Simplify SrmlEnv::load impl
  21. 14 May, 2019 1 commit
  22. 09 May, 2019 1 commit
  23. 22 Apr, 2019 2 commits
  24. 18 Apr, 2019 1 commit
  25. 17 Apr, 2019 3 commits
  26. 11 Apr, 2019 1 commit
  27. 27 Mar, 2019 1 commit
  28. 13 Mar, 2019 1 commit
  29. 06 Mar, 2019 2 commits