- 29 Sep, 2020 1 commit
-
-
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
-
- 25 Aug, 2020 1 commit
-
-
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 <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 <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 <alex.theissen@me.com>
-
- 05 Jun, 2020 1 commit
-
-
Hero Bird authored
-
- 25 Mar, 2020 1 commit
-
-
Hero Bird authored
* [core] fix unused warning * [*] bump version 2.0.0 -> 2.1.0
-
- 18 Mar, 2020 1 commit
-
-
Hero Bird authored
* [*] initial swipe over codebase to tag 2.0.0 release * [*] fix a number of issues with the previous version setup
-
- 12 Mar, 2020 1 commit
-
-
Andrew Jones authored
* Revert precise version upgrades from #343 This reverts commit 9e5a3ee0 * Use latest trybuild with fix * CI troubleshoot: completely remove trybuild * Revert "CI troubleshoot: completely remove trybuild" This reverts commit 593b7183 * Restore trybuild deps * CI troubleshoot: remove GIT_DEPTH * CI troubleshoot: remove CARGO_HOME * CI troubleshoot: revert deleting of CARGO_HOME * CI troubleshoot: restore GIT_DEPTH and delete CARGO_HOME again * CI troubleshoot: revert deleting of CARGO_HOME
-
- 10 Mar, 2020 1 commit
-
-
Denis_P authored
* test documentation for all crates * cargo upgrade to bypass trybuild
-
- 20 Nov, 2019 2 commits
-
-
Hero Bird authored
* Update some deps Signed-off-by:
koushiro <koushiro.cqx@gmail.com> * Format Signed-off-by:
koushiro <koushiro.cqx@gmail.com> * Fix clippy-wasm Signed-off-by:
koushiro <koushiro.cqx@gmail.com> * [examples] fix minor formatting issues * [examples] fix some clippy warnings * [lang2/macro] silence warning for ink! constructors named "new" * [*] replace documentation link in Cargo.toml to ink! tutorial * [abi] specify allow(clippy::trivially_copy_pass_by_ref) in a smaller scope * [abi] specify allow(clippy::new_ret_no_self) in smaller scope * [ci] adjust gitlab-ci.yml * [ci] update Travis CI to just do coverage reporting
-
Hero Bird authored
-
- 24 Jul, 2019 1 commit
-
-
Hero Bird authored
* make std crate feature default for all ink crates * adjust travis CI for builds without std feature enabled * remove incorrect usages of ink_abi * apply rustfmt * remove invalid type-metadata dependencies for ink_core * [lang] fix Cargo.toml indentations * adjust Erc20 token examples for new std crate feature * adjust template and lang example std feature and propagation
-
- 29 May, 2019 1 commit
-
-
Hero Bird authored
* [ink] Fix some clippy warnings * [lang] Major clean ups in preparation of greater refactorings
-
- 25 May, 2019 1 commit
-
-
Robin Freyler authored
-
- 24 May, 2019 1 commit
-
-
Hero Bird authored
* [core] Factor nightly alloc parts out of core into new alloc ink crate * Further cleanup after factoring out ink_alloc crate * [alloc] Use symlinks instead of copies
-