Commit 10ed775d authored by Hero Bird's avatar Hero Bird Committed by GitHub
Browse files

ink! ABI (#104)



* [abi] Create ink_abi sub crate

* [abi] Add initial types for abi generation

* [abi] Add EventParamSpec to include indexed event params

* [abi] Add documentation field to specs

* [abi] Add license and readme links and clean up authors

* [abi] Add missing license headers

* [abi] Fix some compile errors

* [abi] Make macros usable internally

* [abi] Create type_spec_of_tuple constructor macro

* [abi] Implement serialization for tuples

* [abi] Implement serialize for array types

* [abi] Remove module prefix of Vec<T>

* [abi] Apply rustfmt

* [abi] Improve minor formatting

* [abi] Add trait to allow external crate to specify serialize of TypeSpec<T>

* [abi] Make rustfmt happy

* [abi] Handle missing Vec in no_std environment

We really need a further abstraction to handle memory types.
Right now they life in ink_core but we shouldn't depend on ink_core from within ink_abi.
So we want to extract the memory sub module out of ink_core into its own crate that we can from then on depend on.

* [abi] Use same array pre-impls as metadata prototype impl

* [abi] Depend on cennznet/type-metadata + adjustments

* [abi] add missing license headers

* [abi] fixes for renamings in type-metadata crate

* [abi] add IntoCompact impls for layout types

* [abi] properly forward std feature

* [abi] implement Serialize for Key

* [abi] apply rustfmt and add some layout constructors

This also removes the dependency from ink_abi to ink_core and adds derive feature to type-metadata dependency.

* [core] implement ink_abi traits for ink_core abstractions

* adjust ink_abi Cargo.toml to using std feature by default

# Conflicts:
#	abi/Cargo.toml

* [core] Integrate ink_abi no_std compat into ink_core

* [lang] initial skeleton of codegen for ink_abi

* Enhance Flush (#136)

* [core] Enhance Flush trait to make it work with SyncCell and SyncChunk

* apply rustfmt

* [core] implement ink_abi traits for ink_core abstractions

* [core] Integrate ink_abi no_std compat into ink_core

* [core] Apply cargo fmt

* [cli] initial adjustments for ink_abi to ink! template

* [abi] clean-up of Cargo.toml

* [abi] remove invalid lib docs

* [utils] Update utilities docs

* [abi] improve JSON encoding of layout structs

* [abi] improve JSON encoding and add builder pattern constructors

* [abi] Add InkProject meta type

* [abi] temporarily depend on improve-json-output type-metadata branch

* [core] adjust type-metadata temporary branch to use the same as ink_abi

* [ci] add travis CI nightly-2019-08-01 channel (experimental)

* [abi] add MessageSpecBuilder::{args, docs} methods

* [core] implement Metadata for AccountId and Hash of DefaultSrmlTypes

* [abi] change type of selector from u64 to u32

* [lang] add some helper routines

* [lang] add code generation for new ABI format

* [abi,core] use master branch for type-metadata again

* [lang] implement initial code gen for ABI generation

* [examples] adjust Flipper contract example to ink_abi generation

* [lang] remove old generate-abi-description feature and associated code

* [examples] remove traces of removed generate-api-description feature

* [core] make cells_origin and chunks_origin only visible for test-env

* [cli] adjust template for ink-abi update

* [abi] implement ink_abi_derive for HasLayout derive macro

* [lang] make use of new ink_abi_derive functionality

* [examples] adjust Flipper for new ink_abi derive crate feature

This is needed because we disable default features.

* [abi] remove some commented-out code

* [chores] update README and include ink_abi docs

* [abi] apply rustfmt

* [lang] apply rustfmt

* [abi] apply rustfmt to non derive crate

* [core] apply rustfmt

* [lang] trim doc strings coming from syn::Attribute

* [examples] rename .tools directory to .ink

* [examples] fix bug with no_std and "std" crate feature

* [lang] fix bug in abi generation for events

* [examples] adjust events example to new ink_abi

* [lang] fix some more edge cases with doc string trimming

* [lang] fix a bug that path matching for function arguments was off

* [examples] adjust Incrementer to new ink_abi

* [cli] rename .tools to .ink in template

* [cli] update template Cargo.toml

* [examples] temporarily fix type-metadata hick-up

* [examples] make ink_abi optional

* [examples] adjust Erc20 token example to new ink_abi

* [cli] fix template no_std support

* [*] use master branch of type-metadata crate again

* [examples] replace parity-codec/std with scale/std

* [core] derive Metadata for some util types

This unfortunately was lost upon the latest rebase.

* [ci] update from nightly-2019-08-01/2019-07-19 to just nightly-2019-08-09

* [abi] remove commented-out code

* [abi] add some docs to specs items

* Update abi/src/specs.rs

Co-Authored-By: default avatarAndrew Jones <[email protected]>

* Update abi/src/specs.rs

Co-Authored-By: default avatarAndrew Jones <[email protected]>

* Update core/src/storage/collections/stash/impls.rs

Co-Authored-By: default avatarAndrew Jones <[email protected]>

* Update core/src/storage/collections/stash/impls.rs

Co-Authored-By: default avatarAndrew Jones <[email protected]>

* [examples] remove some more commented-out code

* [lang] remove outdated docs

* [lang] extract fn docs impl into helper method

* [lang] fix compile-error in `filter_doc_attributes`

* [core] use derive feature from ink_abi

* [examples] adjust shared_vec example for ink_abi

* [lang] trim doc comments raw string escape sequence

* [lang] adjust noop test for ink_abi

* [lang] adjust flipper test for ink_abi

* [lang] improve raw-string char sequence fix

* [lang] adjust incrementer test for ink_abi

* [lang] adjust events test for ink_abi

* [lang] fix whitespace (tabs) issues in lang tests

* [ci] add examples to CI

* [ci] remove +nightly attribute for examples

* [abi] remove instances of std usage

* [core] remove instances of std usage

* [examples] erc20: remove std usage in no_std environment

* [core] factor out ink_abi and type-metadata and guard their use with ink-generate-abi feature

* [examples] adjust examples to newest refactoring in ink_core

* [cli] adjust template to ink_core refactorings

* [scripts] add new script to quickly check all example smart contracts

* [ci] make use of new check-examples script

* [*] apply rustfmt

* [scripts] adjust check-examples to no longer set test-env

* [scripts] Add check-workspace script

* [examples] make test-env a default feature

* [cli] make test-env a default feature for the template

* [ci] update CI to use the new check-workspace script
parent 2582c6ff
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment