• Hero Bird's avatar
    Implementation of ink! syntax 2.0 (#191) · 098b5a4d
    Hero Bird authored
    * [lang2] initial commit of ink! lang2 frontend
    
    This is going to be the frontend for the new ink! syntax.
    
    * [lang2] change version syntax to semantic versioning string
    
    * [lang2] add failure test for invalid semantic version string
    
    * [lang2] fix some unused warnings
    
    * [lang2] change lib name to ink_lang2
    
    * [lang2] add span to ir::data::ItemStorage
    
    * [lang2] modernize env types codegen
    
    * [lang2] re-introduce entry points codegen but without body for now
    
    * [lang2] add initial storage struct codegen
    
    * [lang2] add lang2 flipper contract example for testing purposes
    
    * [core] impl env2::EnvTypes for DefaultSrmlTypes instead of old env::EnvTypes
    
    * [lang2] add `0` body to entry points
    
    * [lang2] mark fn allocate_using impl for storage struct as unsafe
    
    * [lagn2] ignore args in Initialize::initialize impl for storage struct
    
    * [lang2] adjust compiletests
    
    * [core] add emit_event to EnvAccess{Mut}
    
    * [lang2] add codegen for contract functions
    
    * [lang2] add Signature::inputs
    
    * [lang2] adjust and modernize compiletests
    
    * [lang2] apply rustfmt
    
    * [core] add generic Encode param to EmitEventParams
    
    * [cli] bump version 0.1.1 -> 0.1.2
    
    * [core] make it possible to use EnvAccess{Mut} directly in storage
    
    * [core] make Selector::{from_bytes, to_bytes} const fn
    
    * [core] add check to Decode impl for CallData
    
    * [core] add #[inline..] annotations to some public trait impls
    
    * [lang2] move lang2 into lang2_macro and create new lang2 helper crate
    
    * [examples] add initial core/flipper example that acts as codegen prototype
    
    * [core] add some more #[inline..] annotations
    
    * [lang2] split DerefEnv into AccessEnv{Mut} and losen direct trait bounds
    
    * [core] add efficient conversion from DynEnv<EnvAccessMut> to DynEnv<EnvAccess>
    
    * [examples] adjust core::Flipper prototype to newest state
    
    * [core] add env accessors to DynEnv
    
    * [lang2] add AccessEnv{Mut} impls for DynEnv and EnvAccess{Mut}
    
    * [lang2] use double AccessEnv trait indirection in dispatch fns
    
    * [examples] core::flipper: add ink-dyn-alloc crate feature
    
    Enable this to enable dynamic storage allocation for your contract.
    Dynamic storage allocation is an optional drop-in feature.
    
    * [lang2] make LICENSE and README.md sym links
    
    * [lang2-macro] replace LICENSE and README.md with sym links
    
    * [lang2] add access_env sub module
    
    * [lang2] simplify Message trait concept for constructors
    
    * [lang2] add more general error codes
    
    * [lang2] add storage sub module
    
    * [lang2] remove old dispatch sub module
    
    * [lang2] implement new dispatcher based on ink_model v2
    
    * [examples] adjust core flipper example for new codegen
    
    * [lang2] remove some commented out code
    
    * [lang2] rename dispatch2 to dispatch_using_mode
    
    * [lang2] fix doc link in DispatchMode docs
    
    * [examples] adjust core::Flipper to better reflect codegen prototype
    
    * [lang2] rename ContractDispatch to DispatchUsingMode and add docs
    
    * [lang2] remove unused ContractInstance trait
    
    * [lang2] remove unneeded Msg and Constr utility types
    
    Those types should solely be provided by the contracts themselves.
    They act as namespaces for the respective message type.
    
    * [lang2/macro] add GenerateCodeUsing trait
    
    * [example] add explanation docs to the Flipper::get(&mut self) method
    
    * [lang2] fix unused warning
    
    * [lang2/macro] refactor codegen module
    
    * [lang2/macro] remove commented-out code
    
    * [core] add EnvAccess to allow universal usage of EnvAccess
    
    * [lang2] no longer require separate storage structs
    
    * [examples] adjust core/Flipper to newest ink_lang2 and ink_core changes
    
    * [examples] remove as much direct Flipper usages as possible
    
    * [lang2/macro] temporarily disable dispatch codegen
    
    * [lang2/macro] add MetaInfo::is_dynamic_allocation_enabled stub
    
    * [lang2/macro] implement initial storage codegen
    
    * [core] remove DynEnvAccess and DynEnvAccessMut
    
    No longer needed!
    
    * [core] implement AccessEnv for &'a {mut} DynEnv<EnvAccess{Mut}>
    
    * [examples] fix implementation of ink_lang2::AccesEnv for StorageAndEnv
    
    * [examples] fix ink_core::env2::AccessEnv impl for StorageAndEnv
    
    * [examples] move deploy and call fns into dispatch const block
    
    * [examples] convert docs to comments because they screw up cargo expand
    
    * [lang2/macro] remove ink_model dependency
    
    * [lang2] fix some minor warnings and issues
    
    * [lang2/macro] fix codegen of ink_core::env2::AccessEnv impls
    
    * [lang2/macro] refactor and improve FunctionSelector implementation
    
    * [lang2/macro] Signature::inputs now returns an iterator over IdentType
    
    Was returning an iterator over FnArg before but conversion is trivial.
    
    * [lang2/macro] add dispatch codegen
    
    * [examples] fix DefaultSrmlTypes usage in lang2/Flipper
    
    * [core] prepare env2 to be used with ABI generation purposes
    
    * [examples] add ABI generation to core/Flipper
    
    This will serve as a prototype for ink_lang2 codegen.
    
    * [core, model] remove unneeded warnings/lints
    
    * [lang2] make calls to AccessEnv and Flush more explicit
    
    * [lang2/macro] no longer use no-default-features for dev-dependencies
    
    * [lang2/macro] surpress warnings of unused imports for core::env2::AccessEnv
    
    * [lang2/macro] fix codegen of {ink_lang2/core::env2}::AccessEnv impls
    
    * [lang2/macro] remove unused let binding (was commented out anyways)
    
    * [lang2/macro] fix several codegen bugs
    
    * [examples] remove ink_model and ink_lang dependencies of lang2/Flipper
    
    * [examples] add contract and layout bindings type annotation
    
    * [lang2/macro] adjust some passing tests
    
    * [lang2] add GenerateAbi trait guarded by ink-generate-abi crate feature
    
    * [lang2/macro] move scale dependency away from ink dependencies in Cargo.toml
    
    * [lang2/macro] add Metadata and HasLayout derives to storage structs
    
    * [lang2/macro] insert minor whitespace between bindings and quote
    
    * [lang2/macro] add abi module to generate ABI generating code
    
    * [lang2/macro] add Function::{filter_constructor, filter_message}
    
    * [lang2/macro] fix bug that non-ink! filter for attributes was off
    
    * [lang2/macro] make use of iterative array quoting in Dispatch codegen
    
    * [lang2/macro] add utility to filter doc attributes and parse them to readable string
    
    * [lang2/macro] add codegen for ABI generation
    
    * [example] adjust lang2/Flipper abi-gen package
    
    * [lang2/macro] ink::contract params adjustments
    
    - make `env` param default to ink_core::env2::DefaultSrmlTypes
    - add `dynamic_allocations = {true|false}`, default: false
    - add `compile_as_dependency = {true|false}`, default: false
    
    * [lang2/macro] adjust passing tests to new contract params
    
    * [examples] adjust lang2/Flipper to new contract params
    
    We enable dynamic_allocations for now since disabling it causes other errors.
    
    * [lang2/macro] add different HasLayout impl for dynamic_allocations {true|false}
    
    * [examples] lang2/Flipper no longer requires dynamic_allocations = true
    
    * [lang2] rename AccessEnv::env to AccessEnv::access_env
    
    This helps to disambiguate certain other `env` methods and trait impls
    
    * [examples] adjust core/Flipper example
    
    * [core] refactor event emitting interfaces in env2
    
    * [examples] core/Flipper: fix env types aliases
    
    * [examples] core/Flipper: adjust to new event emitting
    
    Also:
    - messages and constructors no longer can access private fields from StorageAndEnv
    - rename __ink_storage to __ink_private
    - add __ink_events module in __ink_private defining all events and utilities
    - general rust formatting
    
    * [core] add EmitEvent utility trait
    
    This allow to disambiguate the contract's provided EmitEvent trait
    
    * [examples] core/Flipper: make it impossible to ambiguate emitting of events
    
    * [lang2/macro] rename contract_module.rs to contract.rs
    
    * [lang2/macro] generated messages and constructors can no longer access internals of StorageAndEnv
    
    * [lang2/macro] apply rustfmt
    
    * [lang2/macro] add event codegen
    
    - ABI generation codegen for events is still missing
    
    * [lang2/macro] adjust some pass UI tests to new event codegen
    
    * [lang2/macro] re-export the contract on crate root again
    
    This is done for ABI creation since otherwise the abi-gen tool couldn't access the data.
    
    * [lang2/macro] add ABI generation for events
    
    * [lang2/macro] add Erc721 UI pass test
    
    * [lang2/macro] add missing codegen for ABI event args docs
    
    * [lang2/macro] fix a bug that ABI codegen would always impl GenerateAbi for Flipper
    
    * [lang2/macro] add derive(Metadata) to Error enum for Erc721 test
    
    * [core] add missing Initialize::default_value impls
    
    * [core] add Debug impls for some env types
    
    * [examples] core/Flipper: add code to allow for offchain testability
    
    * [examples] core/Flipper: add error handling for test env init
    
    * [lang2/macro] add docs to ABI generation of event args
    
    * [examples] core/Flipper: adjust to improve testability
    
    - No longer requires <Flipper as Testable>::constructor
    - packs whole of flipper contract in associated flipper module such as what ink_lang2 does
    
    * [lang2/macro] add filter_ink_attributes and has_ink_attributes to utilities
    
    * [lang2/macro] re-export utils from ir
    
    * [lang2/macro] add ir::utils::is_ink_attribute
    
    * [lang2/macro] allow non-ink! items in the contract module
    
    * [lang2/macro] add test for non-ink! module items
    
    * [lang2/macro] apply rustfmt on UI tests
    
    * [lang2/macro] fix 02 ui fail test
    
    * [lang2/macro] generate code for non-ink! module items
    
    * [lang2/macro] move utilities inside the contract module - because we can!!
    
    * [lang2/macro] adjust compile tests for most recent changes
    
    * [lang2/macro] add compile test for missing messages
    
    * [lang2/macro] fix some minor warnings
    
    * [lang2/macro] add a lint to check if all identifiers respect not starting with __ink
    
    * [lang2/macro] add simple test for __ink starting identifiers lint
    
    * [lang2/macro] update docs of idents_respect_pred
    
    * [lang2] apply rustfmt
    
    * [core] apply rustfmt to env2 module
    
    * [lang2/macro] add ir::utils::filter_non_ink_attributes
    
    * [lang2/macro] make use or ir::utils::filter_non_ink_attributes
    
    * [lang2/macro] re-export contract on crate root only for ABI generation
    
    * [lang2/macro] documented code generation principles
    
    * [examples] add Erc20 token example for lang2
    
    * [lang2/macro] refactor event codegen
    
    * [lang2/macro] move dispatch codegen into __ink_private
    
    This hides `Msg` and `Constr` namespaces into __ink_private.
    
    * [lang2/macro] move ABI generation codegen into __ink_private
    
    * [lang2/macro] add test to forbig accessing generated storage fields
    
    * [lang2/macro] extend test to forbig accessing generated storage fields
    
    * [lang2] implement testable contracts codegen
    
    * [lang2/macro] do not generate dispatch code for tests or if `test-env` is enabled
    
    * [examples] lang2/Flipper: add contract tests
    
    * [lang2/macro] add simple tests to flipper test
    
    * [examples] remove core/Flipper example again
    
    This was decided after we felt that maintaining it was more of a burden than it being a help for further development.
    
    * [lang2/macro] apply rustfmt
    
    * [core] refactor env2 cross-calling infrastructure
    
    * [core] move seals into utils
    
    * [examples] lang2/Flipper: add default_works test
    
    * [lang2/macro] add cross-contract calling
    
    * [lang2/macro] add cross-contract calling test
    
    * [lang2] remove CreateForwarder infrastructure since unneeded
    
    * [lang2/macro] do not generate code for Events when compiled as dependency
    
    * [lang2/macro] remove strange semi-comments in Msg and Constr
    
    * [lang2/macro] add Debug derive to StorageAsDependency
    
    * [examples] add Delegator contract based on ink_lang2
    
    * [core] guard calling CreateBuilder::using_code at compile-time
    
    * [lang2] fix some clippy warnings
    
    * [chores] update README
    
    * [lang2/macro] refactor into_hir: use ir types through ir module
    
    * fix typo
    Co-Authored-By: Michael Müller's avatarMichael Müller <mich@elmueller.net>
    
    * fix typo in lang2/macro/src/ir/into_hir.rs
    Co-Authored-By: Michael Müller's avatarMichael Müller <mich@elmueller.net>
    
    * fix typo in examples/lang2/delegator/adder/lib.rs
    Co-Authored-By: Michael Müller's avatarMichael Müller <mich@elmueller.net>
    
    * fix typo in lang2/macro/src/codegen/cross_calling.rs
    Co-Authored-By: Michael Müller's avatarMichael Müller <mich@elmueller.net>
    
    * fix typo in core/src/env2/traits.rs
    Co-Authored-By: Michael Müller's avatarMichael Müller <mich@elmueller.net>
    
    * fix typo in lang2/macro/src/codegen/contract.rs
    Co-Authored-By: Michael Müller's avatarMichael Müller <mich@elmueller.net>
    
    * [lang2/macro] improve some ink! error messages
    
    * [lang2/macro] remove commented-out code
    
    * fix typo in lang2/macro/src/codegen/dispatch.rs
    Co-Authored-By: Michael Müller's avatarMichael Müller <mich@elmueller.net>
    
    * [lang2/macro] remove ancient Cargo.toml artifacts
    
    * [examples] fix typo and enhance delegator docs a bit
    
    * use `#!/usr/bin/env` instead of `#!/bin/bash`
    Co-Authored-By: Michael Müller's avatarMichael Müller <mich@elmueller.net>
    
    * [lang2] apply rustfmt
    
    * [core] env2: apply rustfmt
    
    * [cli] adjust CLI to generate ink_lang2 contract upon new command
    
    * [lang2/macro] generate some #[inline] annotations on some generated cross-calling interfaces
    
    * [examples] improve Delegator example slightly
    
    * [core] fix bug that SrmlEnv tried to impl traits for TestEnv
    
    * [examples] fix bug that .ink/abi_gen was using incorrect crate features
    
    * [cli,examples] fix all abi_gen/Cargo.toml files
    
    * [examples] fix bugs in some examples
    
    * [lang2/macro] suppress some unused_parens warnings
    
    * [examples] add incrementer as lang2 example
    
    * [lang2/macro] make codegen more precise when using traits
    
    * [lang2/macro] "fix" a bug in cross-calling codegen
    
    The fix is actually a hack that we should remove again as soon as possible by a proper solution.
    
    * [core] rename ext_create to ext_instantiate
    
    * [examples] lang2/Delegator: fix some warnings and added Delegator::get
    
    * [examples] lang2/Erc20: add Erc20::allowance
    
    * [core] fix bug in executing ext::scratch_read causing panic
    
    * [core] remove unused println statements in tests
    
    * [examples] delegator: minor improvements
    098b5a4d
Name
Last commit
Last update
abi Loading commit data...
alloc Loading commit data...
cli Loading commit data...
core Loading commit data...
examples Loading commit data...
lang Loading commit data...
lang2 Loading commit data...
model Loading commit data...
scripts Loading commit data...
utils Loading commit data...
.editorconfig Loading commit data...
.gitignore Loading commit data...
.gitlab-ci.yml Loading commit data...
.rustfmt.toml Loading commit data...
.travis.yml Loading commit data...
CODE_OF_CONDUCT.adoc Loading commit data...
CONTRIBUTING.md Loading commit data...
Cargo.toml Loading commit data...
LICENSE Loading commit data...
LICENSE_TEMPLATE Loading commit data...
README.md Loading commit data...