1. 30 Jun, 2020 1 commit
  2. 22 Jun, 2020 1 commit
    • Michael Müller's avatar
      Implement storage2::Stash::remove_occupied unsafe function (#440) · cf6e7106
      Michael Müller authored
      
      
      * [core] Add stash::remove()
      
      * [core] Add benchmarks: take() vs remove()
      
      * [core] Add benchmark for worst case of take()
      
      * [core] Make worst case test even worse
      
      * [core] Add assertions
      
      * [core] Rename stash.remove() to stash.remove_occupied() and make it unsafe
      
      * [core] Add code for linking list entries when removing one
      
      * [core] Add test for remove with multiple push/pulls
      
      * [core] Improve code
      
      * [core] Do not actually read value in remove_occupied()
      
      * [core] Make clippy happy
      
      * [core] Upgrade criterion
      
      * [core] Remove unnecessary code branches
      
      * [core] Refactor logic
      
      * [core] Rename file
      
      * [core] Remove criterion temporarily
      
      * Add new ops for storage2/vec (#453)
      
      * Fix typo
      
      * [core] Add vec.set()
      
      * [core] Add vec.clear()
      
      * [core] Add benchmarks for vec.put() and vec.clear()
      
      * [core] Minor improvements
      
      * [core] Add user comment
      
      * [core] Improve style
      
      * [core] Add worst case benches
      
      * [core] Include comments from review
      
      * [core] Apply cargo fmt
      
      * [core] Remove unnecessary variable
      
      * [core] Include put worst case bench
      
      * [core] Rename benches to lazy vs. cached
      
      * [core] Reduce benchmark overhead by preventing cache writes
      
      * [core] Add black boxes to prevent over optimization
      
      * [core] improve benchmarks for new storage vector operations (#457)
      
      * [core] optimize LazyIndexMap::put
      
      * [core] put some forgotten black_box instances
      
      * [core] further minor improvements to the benchmarks
      
      * [core] Add criterion dependency workaround
      
      * [core] Change vec.set() to return Result<(), IndexOutOfBounds>
      
      * [core] Remove outdated comment
      
      * [core] Minor fixes
      
      * [core] Minor test fixes
      
      * Apply suggestions from code review
      
      Co-authored-by: default avatarHero Bird <robin.freyler@gmail.com>
      
      Co-authored-by: default avatarHero Bird <robin.freyler@gmail.com>
      
      * [core] Structure and update benches
      
      * [core] Address 'unused Result that must be used'
      
      * [core] Clean up code
      
      * [core] Remove outdated files
      
      * [core] Apply cargo fmt
      
      * Apply suggestions from code review
      
      Co-authored-by: default avatarHero Bird <robin.freyler@gmail.com>
      
      * [core] Wrap comment
      
      * [core] Constrain mutability
      
      Co-authored-by: default avatarHero Bird <robin.freyler@gmail.com>
      cf6e7106
  3. 19 Jun, 2020 1 commit
    • Michael Müller's avatar
      Add new ops for storage2/vec (#453) · d4cbfcea
      Michael Müller authored
      
      
      * Fix typo
      
      * [core] Add vec.set()
      
      * [core] Add vec.clear()
      
      * [core] Add benchmarks for vec.put() and vec.clear()
      
      * [core] Minor improvements
      
      * [core] Add user comment
      
      * [core] Improve style
      
      * [core] Add worst case benches
      
      * [core] Include comments from review
      
      * [core] Apply cargo fmt
      
      * [core] Remove unnecessary variable
      
      * [core] Include put worst case bench
      
      * [core] Rename benches to lazy vs. cached
      
      * [core] Reduce benchmark overhead by preventing cache writes
      
      * [core] Add black boxes to prevent over optimization
      
      * [core] improve benchmarks for new storage vector operations (#457)
      
      * [core] optimize LazyIndexMap::put
      
      * [core] put some forgotten black_box instances
      
      * [core] further minor improvements to the benchmarks
      
      * [core] Add criterion dependency workaround
      
      * [core] Change vec.set() to return Result<(), IndexOutOfBounds>
      
      * [core] Remove outdated comment
      
      * [core] Minor fixes
      
      * [core] Minor test fixes
      
      * Apply suggestions from code review
      
      Co-authored-by: default avatarHero Bird <robin.freyler@gmail.com>
      
      Co-authored-by: default avatarHero Bird <robin.freyler@gmail.com>
      d4cbfcea
  4. 17 Jun, 2020 1 commit
  5. 13 Jun, 2020 2 commits
    • Hero Bird's avatar
      Make ink! lang use ink_core::storage2 module (#422) · 1e312d1e
      Hero Bird authored
      * [abi] create new layout trait and structures
      
      * [abi] remove unused import
      
      * [abi] add missing license header
      
      * [abi] fix clippy warning
      
      * [primitives] add KeyPtr to ink_primitives
      
      * [core] use KeyPtr through ink_primitives and add ExtKeyPtr trait
      
      * [abi] use KeyPtr of ink_primitives
      
      * [abi] make EnumLayout use StructLayout
      
      * [abi] implement custom serde::Serialize for LayoutKey
      
      * [abi] implement IntoCompact for layout2 module types
      
      * [abi] add doc comment
      
      * [abi] apply rustfmt
      
      * [abi] add unit test for LayoutKey serialization
      
      * [abi] rename ArrayLayout::array -> new
      
      * [abi] add dispatch_key field to enum layout
      
      * [abi] derive From for all Layout variants
      
      * [abi] add unit tests for the new layout traits and data structures
      
      * [abi] add experimental CellLayout
      
      * [abi] make tests work again for layout2
      
      * [abi] use specialized serializer function for LayoutKey
      
      * [abi] refactor UnboundedLayout
      
      * [abi] add unit test for UnboundedLayout
      
      * [abi] apply rustfmt
      
      * [core/derive] slightly refactor code
      
      * [abi] simplify enum test
      
      * [primitives] derive Debug, Copy and Clone for KeyPtr
      
      * [abi] simplify CellLayout::new
      
      * [abi] fix calling incorrect constructor for LayoutKey
      
      * [abi] move layout2 module file into directory
      
      * [core] add StorageLayout trait to storage2 module
      
      * [abi_derive, core_derive] remove unnecessary extern crate proc_macro
      
      * [core] imply ink-generate-abi feature by std feature
      
      * [core] derive Metadata for env types for std feature
      
      * [core] add Key, Hash, AccountId and String StorageLayout impls
      
      * [core/derive] add initial structure for StorageLayout derive
      
      * [core] add StorageLayout impls for some more prelude types
      
      * [core] fix Box<T> impl for StorageLayout trait
      
      * [core] implement StorageLayout for storage2::{Memory, Pack, LazyArray}
      
      * [core] fix StorageLayout impl for LazyArray
      
      * [core] implement StorageLayout for LazyIndexMap
      
      * [abi] add HashLayout
      
      * [abi] rewrite UnboundedLayout test to HashLayout test
      
      * [abi] remove unbounded layout
      
      * [abi, core] apply rustfmt
      
      * [core] add initial skeleton for StorageLayout tests
      
      * [core] add StorageLayout impls for Lazy, LazyCell and LazyHashMap
      
      * [core] add StorageLayout impls for Option and Result
      
      * [core] add LayoutCryptoHasher trait
      
      * [core] fix StorageLayout impl for LazyHashMap
      
      * [core] apply rustfmt
      
      * [core] add StorageLayout impl for storage2::Vec
      
      * [core] add StorageLayout for storage2::SmallVec
      
      * [core] implement StorageLayout for storage2::Stash
      
      * [core] implement StorageLayout for storage BitStash, Bitvec and HashMap
      
      * [core] improve StorageLayout impl for storage2::Vec
      
      * [core] apply rustfmt
      
      * [abi] fix clippy warning
      
      * [core] add StorageLayout impl for storage2::alloc::Box
      
      * [core] add StorageLayout impl for DynamicAllocator
      
      * [core/derive] impl StorageLayout derive for struct items
      
      * [core/derive] make StorageLayout derive work for enum items
      
      * [core/derive] fix expansion for nested enums
      
      * [core/derive] fix a bug with nested enums
      
      * [core/derive] add unit test for MixedEnum
      
      * [core/derive] apply rustfmt
      
      * [lang] add revision 2 module
      
      * [core] remove generic T: EnvTypes param from Dispatch trait
      
      * [lang] remove unnecessary import
      
      * [lang] remove unnecessary generic parameter
      
      * [lang/macro] generate codegen for the new v2 traits
      
      * [core] re-export SpreadLayout and PackedLayout macros from within ink_core
      
      * [lang] further adjustments to make ink_lang_macro work with storage2
      
      * [lang, core] apply rustfmt
      
      * [lang] fix clippy warning
      
      * [lang] fix some bugs with constructors without inputs
      
      * [examples] adjust the Flipper example contract for the changes
      
      * [lang] remove codegen for testing ink! contracts
      
      No longer needed.
      
      * [lang] remove test-env crate feature
      
      * [lang] minor improvements to EnvAccess utility type
      
      * [examples] remove unused import for Flipper
      
      * [examples] remove test-env crate feature for Flipper
      
      * [lang] remove unused IdentType::span method
      
      * [examples] Flipper: adjust contract for ink_lang changes
      
      * [examples] adjust Erc20 for the ink_lang changes
      
      * [examples] fix some indentation in Cargo.toml
      
      * [examples] adjust DNS contract for ink_lang changes
      
      * [examples] adjust ERC721 for ink_lang changes
      
      There is still a bug that we need to fix in ink_core.
      
      * [example] adjust lib.rs of ERC721 to ink_lang changes
      
      * [examples] adjust Delegator example contract for ink_lang changes
      
      * [lang_macro] generate SpreadLayout and PackedLayout impls for cross-calling wrappers
      
      * [core] release storage2::Stash::entries() iterator for non-testing API
      
      * [core] add SpreadLayout and PackedLayout impls for () type
      
      * [examples] convert multisig contract example to new ink_lang
      
      * [examples] fix incrementer Cargo.toml indentations
      
      * [examples] adjust runtime-storage example contract for ink_lang changes
      
      * [core] apply rustfmt
      
      * [lang] generate correct attributes for messages
      
      * [examples] make use of derive(Default) for DNS example
      
      * [lang_macro] improve some ink! error messages
      
      * [lang_macro] update all compile tests
      
      * [examples] multisig: ignore doc test
      
      This needs serious fixing later! @athei
      
      * [lang] remove old ink_lang abstractions
      
      * [lang] remove no longer needed ink_lang modules
      
      * [lang_macro] add compile test for derive on storage struct
      
      * [examples] ignore failing doc test
      
      * [examples] actually ignore the failing doc-test for multi-sig
      
      * [lang] move v2 module back to origin
      
      * [lang_macro] adjust codegen for new dispatch module structure of ink_lang
      
      * [lang_macro] no longer impl ink_core::{Flush, AllocateUsing} for ink! dependencies
      
      * [lang_macro] use root namespaces in codegen everywhere
      
      * [lang] apply rustfmt
      
      * [lang_macro] use only root namespaces in codegen (forgot some)
      
      * [lang] remove nightly Rust feature usage
      
      * [core] re-export StorageLayout from ink_core::storage2::traits
      
      * [lang,abi] adjust ink! metadata generation codegen to new layout
      
      * [lang] use root namespaces in codegen
      
      * [examples] apply rustfmt
      
      * [lang] update cross-calling codegen for new storage layout
      
      * [examples] update Delegator example contract
      
      * [examples] apply rustfmt
      
      * [abi] remove StorageLayout trait from ink_abi crate
      
      * [examples] apply rustfmt
      
      * [examples] fix clippy warning
      
      * [examples] fix multisig_plain contract
      
      * [examples] apply rustfmt
      
      * [examples] fix clippy warning
      
      * [examples] remove commented out code from multisig_plain example
      
      * [lang] refactor codegen for contract storage struct
      
      * [lang] fix unused import warning
      
      * [lang] eliminate CrossCallingConflictCfg
      
      * [lang] do not generate normal storage struct as dependency
      
      * [lang] re-introduce cross calling conflict cfg codegen
      
      * [lang/macro] refactor codegen for cross-calling
      
      * [lang] add new traits for Event connectors
      
      * [lang/macro] use connectors API for event codegen
      
      * [lang/macro] apply rustfmt
      
      * [lang/macro] remove out-of-ink-module export
      
      * [abi] fix selector encoding
      
      * [lang/macro] fix unused warning
      
      * [examples] adjust example smart contracts for recents ink_lang_macro changes
      
      * [abi] fix unit test for selector
      
      * [chores] update README ink! example
      
      * [alloc] silence warnings of unused unsafe for core::intrinsics::abort
      
      * [examples] apply rustfmt
      
      * [lang/macro] fix codegen for `cargo test`
      
      * [*] replace ink-generate-abi crate feature everywhere with std
      
      * [examples] fix Cargo.toml for generating metadata
      
      * [examples] move flipper/src/lib.rs one up
      
      * [examples] move lib.rs to root folder
      
      * [examples] fix Cargo.toml of ERC721
      
      * [examples] apply rustfmt to ERC20
      
      * [examples] apply rustfmt to ERC721
      
      * [examples] apply rustfmt to all examples
      
      * [abi] remove unused serialize_selector function
      
      * [examples] fix bug that DNS example still used type-metadata crate
      
      * [example] fix bug in multisig_plain example
      1e312d1e
    • Andrew Jones's avatar
      New metadata format (#296) · 5a7b7e5e
      Andrew Jones authored
      * Move spec tests to separate file
      
      * Add contract spec serialization test
      
      * Camel case field names
      
      * Encode selector as hex string
      
      * Move specs module back to top level
      
      * Move layout test to tests.rs
      
      * Layout externally tagged enums & camelCase
      
      * Format code
      
      * Rename TypeSpec::ty -> TypeSpec::id
      
      * TEMPORARY: Use my type-metadata branch
      
      * Derive TypeInfo for Key
      
      * Switch from type_metadata to scale_info
      
      * Convert layout to using scale-info
      
      * Fix scale-info optional dependencies
      
      * Fmt
      
      * Fix up straggling type-metadata dependency
      
      * scake-info master
      
      * Use scale-info from crates.io
      
      * oops
      
      * Fix compilation errors
      
      * Fmt
      
      * Fix examples manifests
      
      * Remove redundant into()
      5a7b7e5e
  6. 11 Jun, 2020 1 commit
  7. 09 Jun, 2020 1 commit
  8. 20 May, 2020 1 commit
    • Hero Bird's avatar
      Implement storage (revision 2) module (#311) · dffc8cf2
      Hero Bird authored
      
      
      * [core] apply rustfmt
      
      * [core] fix warnings related to Wasm compilation
      
      * [core] add SpreadLayout impl for DynamicAllocator
      
      * [core] remove unused method on Bits256RefMut
      
      * [core] apply rustfmt
      
      * [core] remove some unneded ToDo comments
      
      The ToDo comments have been moved to the associated PR description.
      
      * [core] transit to new traits for LazyIndexMap
      
      * [core] transit to new traits for storage::Vec
      
      * [core] transit to new traits for storage::Stash
      
      * [core] transit to new traits for storage::Bitvec
      
      * [core] transit to new traits for dynamic storage allocator
      
      * [core] transit to new traits for LazyHashMap
      
      * [core] transit to new traits for storage::HashMap
      
      * [core] apply rustfmt
      
      * [core] remove old storage traits for storage::Pack
      
      * [core] transit to new storage traits for LazyArray
      
      * [core] transit to new storage traits for storage::SmallVec
      
      * [core] transit to new storage traits for the rest of the lazy abstractions
      
      * [core] transit to new storage traits for storage::Box
      
      * [core] fix compile error in Drop impl for storage::Box
      
      * [core] remove old storage trait impls for Bits256
      
      * [core] remove old storage trait impls for dynamic storage allocator
      
      * [core] apply rustfmt
      
      * [core] remove old traits module
      
      * [core] replace KeyPtr2 usage with KeyPtr
      
      * [core] rename traits2 module to traits
      
      * [core] apply rustfmt
      
      * [core] add Drop impl to storage::Vec
      
      * [core] don't clear storage if key is none for storage::Vec
      
      * [core] impl Drop for storage::Stash
      
      * [core] simplify trait bounds for LazyHashMap
      
      * [core] impl Drop for storage::HashMap
      
      * [core] add Drop impl for storage::SmallVec
      
      * [core] add are_trait_objects lint as deny
      
      * [core] fix minor formatting issue
      
      * [core] add storage2::Memory utility
      
      * [core] remove usage of storage::Pack from internals of storage::Bitvec
      
      * [core] remove usage of storage::Pack from internals of storage::Stash
      
      * [core] remove usage of storage::Pack from internals of storage::HashMap
      
      * [core] add better Debug impl for LazyIndexMap
      
      The improved impl shows the cached entries which were hidden in the old impl behind the UnsafeCell.
      
      * [core] apply rustfmt
      
      * [core] improve Debug impl for LazyHashMap
      
      It now displays its internal cached entries.
      
      * [core] improve Debug impl for lazy::Entry
      
      * [core] improve Debug impl for LazyCell
      
      * [core] improve Debug impl for LazyArray
      
      * [core] apply rustfmt
      
      * [core] add REQUIRES_DEEP_CLEAN_UP to SpreadLayout
      
      With this we have a way for types to perform an optimized storage clean-up without having to load them in case they do not require a deep clean-up of their state.
      
      * [core] implement REQUIRES_DEEP_CLEAN_UP for all built-in types
      
      * [core] add non-storage trait impls for storage::HashMap
      
      * [core] simplify traits bounds of SpreadLayout impl for storage::HashMap
      
      * [core] fix bug in Wasm compilation
      
      * [core] add initial unit tests for storage::HashMap
      
      * [core] allow loading without key from LazyHashMap
      
      * [core] merge storage::HashMap insert and insert_get and fix bugs with it
      
      * [core] add new unit test for storage::HashMap
      
      * [core] generally allow lazy loading without keys for lazy abstractions
      
      * [core] apply rustfmt
      
      * [core] remove outdated docs of storage::HashMap::insert
      
      * [core] add unit test for storage::HashMap::contains_key
      
      * [core] apply rustfmt to storage::HashMap unit tests
      
      * [core] add unit test for storage::HashMap::{get, get_mut}
      
      * [core] fix the doc comment of storage::HashMap::remove
      
      * [core] add unit test for storage::HashMap::take
      
      * [core] add unit test for storage::HashMap::insert
      
      * [core] remove storage::HashMap::remove
      
      The API cannot be implemented properly at this point.
      
      * [core] implement Iterator::count efficiently for storage::HashMap iterators
      
      * [core] add prelude trait impls for crypto hashers
      
      * [core] add unit test for storage::HashMap::iter
      
      * [core] remove outdated doc comment line
      
      * [core] add doc comments to fowarding-to-packed utility functions
      
      * [core] add some high-level documentation for some root storage2 modules
      
      * [core] add some more high-level docs
      
      * [core] add return value to storage::Stash::defrag
      
      The returned value tells the caller how many storage cells have actually been freed by the routine.
      
      * [core] add return value to storage::HashMap::defrag
      
      * [core] add unit test for storage::HashMap::{values, values_mut}
      
      Also add tests for Iterator::size_hint impls.
      
      * [core] add tests for Iterator::size_hint impls of storage::Vec
      
      * [core] add unit test for storage::HashMap::keys
      
      * [core] add unit test for storage::HashMap::defrag
      
      * [core] add unit tests for LazyIndexMap
      
      * [core] remove lazy::Entry::take_value
      
      * [core] remove LazyIndexMap::take
      
      * [core] remove Entry::set_state
      
      Uses have been replaced with Entry::replace_state.
      
      * [core] remove Lazy{Array, HashMap}::take method
      
      Replace uses with Lazy{Array, HashMap}::put_get(.., None)
      
      * [core] add unit test for LazyIndexMap::put
      
      * [core] add unit test for LazyIndexMap::swap
      
      * [core] apply rustfmt
      
      * [core] cover Default impl of LazyIndexMap with unit test
      
      * [core] move imports to top for LazyIndexMap .rs file
      
      * [core] refactor lazy::Entry internals a bit
      
      * [core] add unit tests for Index impl of storage::Vec
      
      * [core] add unit tests for Index impl of storage::SmallVec
      
      * [core] add tests for Index impl of StorageStash
      
      * [core] improve panic message for Index{Mut} impl of storage::Stash
      
      * [core] add unit tests for Index{Mut} impl of storage::Stash
      
      * [core] extend unit test for storage::Stash::get
      
      * [core] disable certain tests in --release mode testing
      
      * [core] add unit test for LazyIndexMap::{get, get_mut}
      
      * [core] add some unit tests for LazyArray
      
      * [core] add some more unit tests for LazyArray
      
      * [core] add some more unit tests to LaryArray
      
      * [core] apply rustfmt
      
      * [core] add unit tests for LazyCell
      
      * [core] add unit test for SpreadLayout impl of LazyCell
      
      * [core] extend SpreadLayout test for LazyCell
      
      * [core] extend SpreadLayout test to also cover the clear_spread impl
      
      * [core] rename unit test for LazyCell
      
      * [core] fix clippy warning
      
      * [core] fix some LazyCell cache entry in lazy form
      
      * [core] add new unit test for Debug impl of lazy initialized LazyCell
      
      * [core] add more unit tests for lazily initialized LazyCell
      
      * [core] implement shallow clean-up of storage via LazyCell
      
      * [core] test that a lazily loaded LazyCell preserves its cached value
      
      * [core] apply rustfmt
      
      * [core] add additional check for LazyCell cache preservation
      
      * [core] fix bug in LazyIndexMap::clear_packed_at
      
      * [core] add unit test for SpreadLayout impl of LazyIndexMap
      
      * [core] fix bug in LazyArray::clear_packed_at
      
      * [core] add unit test for SpreadLayout impl of LazyArray
      
      * [core] make LazyArray::capacity and SmallVec::capcity more user friendly
      
      * [core] remove unnecessary trait bounds
      
      * [core] remove more unnecessary trait bounds
      
      * [core] add initial unit test for LazyHashMap
      
      * [core] add unit test for LazyHashMap::key_at
      
      * [core] apply rustfmt
      
      * [core] indent a block in test
      
      * [core] add unit test for LazyHashMap::put_get
      
      * [core] add unit test for LazyHashMap::{get, get_mut}
      
      * [core] add unit test for LazyHashMap::put
      
      * [core] add unit test for LazyHashMap::swap
      
      * [core] make hash builders reset their accumulator upon finalization
      
      * [core] add unit test for SpreadLayout impl of LazyHashMap
      
      * [core] fix unit test for LazyHashMap::key_at
      
      Also add prefix to hash-key calculation.
      
      * [core] add unit tests for SpreadLayout impl of storage::Vec
      
      * [core] add unit tests for SpreadLayout impl of storage::SmallVec
      
      * [core] add unit tests for SpreadLayout impl of storage::Stash
      
      * [core] apply rustfmt
      
      * [core] add unit tests for SpreadLayout impl of storage::HashMap
      
      * [core] add unit test for DynamicAllocation::key
      
      * [core] add unit tests for SpreadLayout impl of storage::Bitvec
      
      * [core] fix LazyCell::get unit test
      
      * [core] remove unused dependencies from Cargo.toml
      
      * [core] add missing docs for storage::{Stash, HashMap}
      
      * [core] deny missing docs of public items
      
      * [core] add Debug impl to storage::Box
      
      * [core] add unit tests for storage::Box
      
      * [core] remove internal Pack::{get, get_mut} methods
      
      * [core] fix bug in storage::Memory::{get, get_mut} API
      
      * [core] add unit tests for storage::Pack
      
      * [core] improve storage::Pack unit tests
      
      * [core] experimental inline(never) for debug_assertions compilation
      
      * [core] apply rustfmt
      
      * [core] remove experimental #[inline(never)]
      
      * [core] add unit test for Default impl of storage::Pack
      
      * [core] add unit tests for storage::Memory
      
      * [core] fix a unit test for storage::Box
      
      The storage::Box tests did not reset the dynamic storage allocator instance in between their runs which caued them to have side effects on to each other if run single threaded.
      
      * [core] fix minor bug in BitRefMut utility of storage::Bitvec
      
      * [core] cover storage::Bitvec::get_mut in get_works unit test
      
      * [core] add unit tests for BitRefMut utility of storage::Bitvec
      
      * [core] apply rustfmt
      
      * [core] improve panic message when encountering a double free
      
      * [core] adjust double free unit test for storage::Box
      
      * [core] improve double free of dynamic storage panic message
      
      * [core] apply rustfmt
      
      * [core] merge Bits256Ref and Bits256RefMut into ChunkRef<T>
      
      * [core] split access.rs into bitref.rs and bitsref.rs
      
      * [core] apply rustfmt
      
      * [core] replace transmute with pointer cast
      
      Thanks clippy!
      
      * [core] add comment to explain repr(C)
      
      * [core] add PartialEq and Eq impls to BitRefMut
      
      * [core] add unit tests for ChunkRef
      
      * [core] add failure unit tests for dynamic storage allocator
      
      * [core] fix bug in SpreadLayout impl of Option<T>
      
      * [core] add unit test for dynamic storage allocator SpreadLayout impl
      
      * [core] fix SpreadLayout impl for Result<T, E>
      
      * [core] fix yet another bug in SpreadLayout impl of Result<T, E>
      
      * [core] move forward_supported_array_lens macro to usage site
      
      * [core] refactor some code duplication with clear_spread_root_opt
      
      * [core] fix doc comment in storage::Pack
      
      * [core] remove some unused unsafe blocks
      
      They are going to be re-introduced once the unsafe_op_in_unsafe_fn lint has been implemented in the Rust compiler.
      
      * fix typo
      
      Co-authored-by: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * fix typo
      
      Co-authored-by: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * fix typo
      
      Co-authored-by: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * fix typo
      
      Co-authored-by: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * fix typo
      
      Co-authored-by: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * [core] remove usage of storage::Pack in dynamic storage allocator
      
      * [core] improve panic message in Lazy::{get, get_mut}
      
      * [core] add test for SpreadLayout::clear_spread impl of dynamic storage alloc
      
      * [core] remove code dupe
      
      * [core] refactor clear_spread_root_opt utility function
      
      * [core] implement SpreadLayout::REQUIRES_DEEP_CLEAN_UP for some types
      
      * [core] move from bool to u8 for Option and Result SpreadLayout impls
      
      * [core] fix bug in SpreadLayout impl for Option
      
      * fix typo
      
      Co-authored-by: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * [core] update LazyCell SAFETY comment
      
      * [core] update Entry docs
      
      * [core] remove unneeded code in lazy::Entry::pull_packed_root
      
      * fix typo
      
      Co-authored-by: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * fix typo
      
      Co-authored-by: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * fix typo
      
      Co-authored-by: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * fix typo
      
      Co-authored-by: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * [core] remove commented out code
      
      * [core] add new unit test for dynamic storage allocator
      
      * [core] refactor global storage allocator initialization routines
      
      * [core] fix Wasm compilation errors
      
      * [core] apply rustfmt
      
      * [core] surpress bad clippy lint
      
      * [core] remove dead code
      
      * [core] improve call_setup_works test
      
      * [core] fix bug in initialize_for for off-chain env
      
      * [core] initial steps to factor out BitStash from DynamicAllocator
      
      * [core] apply rustfmt
      
      * [core] add Derive impl for BitStash
      
      * [core] make use of storage::BitStash from dynamic storage allocator
      
      * [core] add unit tests for storage::BitStash
      
      * [core] apply rustfmt
      
      * [core] remove invalid TODO comment
      
      * [core] fix some out of bounds panic messages
      
      * [core] remove deliberate memory leak in test suite
      
      * [core] fix build failure for Wasm target
      
      * [core] add unit tests for SpreadLayout & PackedLayout impls of primitives
      
      * [core] add unit tests for packed layout explicitely
      
      * Fix some typos
      
      * Add simple double ended iter test
      
      * typos
      
      * comment typos
      
      * split hashmap to hash map in comments
      
      * fix typo
      
      Co-authored-by: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * fix typo in unreachable! message
      
      Co-authored-by: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * fix typo in expects message
      
      Co-authored-by: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * fix typo
      
      Co-authored-by: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * fix typo
      
      Co-authored-by: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * [core] add more comments to storage2::HashMap::defrag
      
      * [core] make early return for storage2::HashMap::defrag for limit = 0
      
      * [core] improve storage2::HashMap::contains_key implementation
      
      * [core] rename new_vec_works test to new_works
      
      * [core] apply Andrew's suggestions (and more)
      
      * [core] fix typo: increase -> decrease
      
      * [core] add panic to Bitvec::push in case it reached its maximum capacity
      
      * [core] update comments for storage bit stash
      
      * [core] add more explanation comments
      
      * [core] some more renamings of test internals
      
      * improve reasoning
      
      Co-authored-by: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * fix typo
      
      Co-authored-by: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      Co-authored-by: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      dffc8cf2
  9. 27 Apr, 2020 1 commit
  10. 25 Mar, 2020 2 commits
    • Hero Bird's avatar
      Update to v2.1.0 (#370) · cca31543
      Hero Bird authored
      * [core] fix unused warning
      
      * [*] bump version 2.0.0 -> 2.1.0
      2 tags
      cca31543
    • 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>
      b5a693bb
  11. 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
      e0204021
  12. 18 Mar, 2020 1 commit
  13. 12 Mar, 2020 1 commit
    • Andrew Jones's avatar
      Revert precise version specs and use new trybuild (#345) · 00758069
      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
      00758069
  14. 10 Mar, 2020 1 commit
    • Denis_P's avatar
      CI fixes (#343) · 9e5a3ee0
      Denis_P authored
      * test documentation for all crates
      
      * cargo upgrade to bypass trybuild
      9e5a3ee0
  15. 05 Mar, 2020 1 commit
  16. 18 Feb, 2020 1 commit
    • Michael Müller's avatar
      Add BTreeMap storage primitive (#284) · b042a5fb
      Michael Müller authored
      
      
      * Update readme
      
      * Insert + Entry API
      
      * Combine header + entries into one object
      
      * Move insert logic into `Tree`
      
      * Fix visibility + shorten code
      
      * Add removal API (split/merge nodes) + quickcheck tests
      
      * Simplify code, improve structure
      
      * Add more API functions, improve code
      
      * Update delegator instructions
      
      * Style + Improve structure + Comments
      
      * Clippy made me do it
      
      * Improve code + tests + style
      
      * Clarify search_linear
      
      * Improve code structure and comments
      
      * Improve code structure + add comments
      
      * Fix style
      
      * Fix style
      
      * Improve comments
      
      * Simplify code, improve comments
      
      * Improve readability of tests
      
      * Move expect to function where we can properly prove
      
      * Fix style
      
      * Move expect to function where we can properly prove
      
      * Fix style
      
      * Add debug_assert
      
      * Improve correct_children_... code and docs
      
      * Change kv tuple to named struct and simplify kv code
      
      * Remove unsafe's, introduce indirection for accessing storage, revise pub's
      
      * Put expensive tests behind ink-fuzz feature
      
      * Improve structure
      
      * Satisfy clippy, remove debugging code
      
      * Use extend instead of append
      
      * Adapt to new ink! env rev 3
      
      * Fix comment
      
      * Remove quickcheck tests (until issue with offchain API fixed)
      
      * Refactoring and restructuring
      
      * Refactoring and code restructuring
      
      * Make clippy happy
      
      * Fix metadata derive
      
      * Fix metadata derive
      
      * Add test for tinkering with balancedness
      
      * Refactoring tests
      
      * Update date and satisfy CI
      
      * Improve docs
      
      * Refactoring code
      
      * Refactoring code
      
      * Refactoring code
      
      * Apply rustfmt
      
      * Improve tests
      
      * Apply suggestions from code review
      
      Co-Authored-By: default avatarHero Bird <robin.freyler@gmail.com>
      
      * Improve when/then structure
      
      * Improve readability
      
      * Rename pointer to index
      
      * Rename internal nodes to branch nodes
      
      * Rename entries to nodes
      
      * Document loop behavior
      
      * Improve unreachable! messages
      
      * Improve comments + expect's
      
      * Apply rustfmt
      
      * Apply rustfmt
      
      Co-authored-by: Hero Bird's avatarHero Bird <robbepop@web.de>
      b042a5fb
  17. 03 Feb, 2020 1 commit
    • Hero Bird's avatar
      Implementation of ink! env (revision 3) (#312) · 321fe03a
      Hero Bird authored
      
      
      * [core] initial implementation of env revision 3
      
      * add engine abstraction layer and implement api functions
      
      * add support for dispatch_call to env3
      
      * add missing invoke_runtime to api.rs
      
      * [core] fix restore_contract docs
      
      * [core] initial implementation of off-chain environment
      
      * [core] clean-up of env3 fundamental types
      
      * [core] add WasmEnv::reset_buffer
      
      * show test submodule of env3 when compiling with rustdoc
      
      * [core] initial implementation of the off-chain env instance
      
      Also many other adjustments.
      
      * [core] further enhancements to off-chain env
      
      * [core] implement untyped Env for off-chain environment
      
      * [core] implemented a good chunk of TypedEnv for the off-chain environment
      
      * [core] minor improvements to env3
      
      * [core] further improvements and additions to test-api of env3
      
      * [core] remove former test-api file
      
      * [core] env3: add support for ext_tombstone_deposit
      
      * [core] env3: add setting of rent allowance in off-chain env
      
      * [core] env3: remove buffer.rs
      
      * [core] env3: remove property.rs
      
      * [core] env3: mark some TypedEnv methods as not-todo
      
      * [core] env3: enable off-chain api for non test/doc builds
      
      * [core] env3: use a static buffer instead of Vec<u8>
      
      * [core] env3: move static buffer into its own module
      
      * fix doc comment
      
      Co-Authored-By: Michael Müller's avatarMichael Müller <mich@elmueller.net>
      
      * [core] env3: add missing license header
      
      * [core] env3: remove deprecated doc note
      
      * [core] env3: add off-chain {set/get}_runtime_storage
      
      * [core] env3: add off-chain invoke_runtime dispatch
      
      This also enables support for registering custom runtime call handlers.
      
      * [core] env3: slightly improve env3::random docs comment
      
      * [core] env3: move off-chain errors under EnvError
      
      * [core] env3: add ext_random support for the off-chain environment
      
      * [core] env3: minor clean ups
      
      * [core] env3: improve TypedEncoded::assign
      
      * [core] env3: un-mut some variables
      
      * [core] env3: fix some clippy warnings
      
      * [core] env3: add past_printlns to off-chain test api
      
      * [core] env3: minor refactoring
      
      * [core] env3: apply rustfmt
      
      * [core] env3: clean up of call and instantiate contract
      
      * [core] env3: rename moment -> time_stamp
      
      * [core] env3: make get_runtime_storage return a Result instead of RetCode
      
      * [core] env3: remove unneeded import
      
      * [core] env3: add some trait impls for EnvTypes::Hash
      
      * [core] env3: remove last remaining usages of RetCode
      
      * [core] env3: refactor some errors
      
      * [core] env3: document the EnvError enum
      
      * [core] env3: add impls for fire methods on call and create builders
      
      * [core] env3: add doc comment to past_printlns
      
      * [core] env3: apply rustfmt
      
      * [core] env3: update license headers
      
      * [core] env3: support querying and emitting of events in off-chain env
      
      * [core] env3: missing license header adjustment
      
      * [core] env3: apply rustfmt
      
      * [core] env3: rename some methods in off-chain test-api
      
      * [core] env3: add doc comment to test::emitted_events
      
      * [core] env3: add stub for test::advance_block
      
      * [core] env3: rename some more test API methods
      
      * [core] env3: initialize entropy of block randomly
      
      * [core] env3: extend EnvTypes trait bounds
      
      This change makes the trait bounds more similar to what Substrate defines.
      
      * [core] env3: document SimpleArithmetic trait
      
      * [core] env3: add From<u32> to SimpleArithmetic trait
      
      * [core] env3: made some trait bounds more explicit in SimpleArithmetic trait
      
      * [core] env3: add comment describing potential future extensions to SimpleArithmetic trait
      
      * [core] env3: rename EnvTypes::Moment to TimeStamp
      
      * [core] env3: add block_time to ChainSpec
      
      * [core] env3: remove CodeDb again
      
      Not needed right now. Maybe re-added at a later point.
      
      * [core] env3: apply rustfmt
      
      * [core] env3: implement off-chain test::advance_block
      
      * [core] env3: fix bug in off-chain test::advance_block impl
      
      * [core] env3: made SimpleArithmetic trait more explicit towards Output types
      
      * [core] env3: add default initialization routines for off-chain environment
      
      * [core] env3: remove test::create_user_account for now
      
      * [core] env3: fix missing renaming from Moment -> TimeStamp
      
      * [core] env3: impl PartialEq and Eq for off-chain error types
      
      * [core] env3: add test::run_test for off-chain testing with default setup
      
      * [core] env3: fix several minor bugs with the off-chain environment
      
      * [core] convert key.rs tests to new env3
      
      * [core] remove commented out code in key.rs tests
      
      * [core] evn3: add test::get_contract_storage_rw
      
      * [core] use env3 instead of env1 in storage cells
      
      * [core] integrate env3 into storage::TypedChunk
      
      * [core] remove storage::RawChunk and NonCloneMarker
      
      * [core] adjust SyncChunk slightly for TypedChunk modifications
      
      * [core] simplify transitioned env3 tests for TypedChunk
      
      * [core] transition tests for SynChunk to env3
      
      * [core] transition storage::Stash tests to env3
      
      * [core] transition storage::HashMap tests to env3
      
      * [core] transition storage::BinaryHeap tests to env3
      
      * [lang] remove the entire ink! lang crate
      
      It has been deprecated for a whole while.
      
      * [model] remove ink! model crate entirely
      
      It has been deprecated for a whole while.
      
      * [core] remove the old env1 sub-module of ink_core
      
      It has been deprecated for a whole while.
      
      * [examples] remove model examples
      
      * [examples] remove lang examples
      
      * [examples] remove core examples
      
      * remove "If given too few endowment" from docs
      
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * fix doc comment
      
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * fix doc comment
      
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * [lang2] initial steps towards basing on env3 instead of env2
      
      With this commit `cargo contract build` already works.
      However, cargo test etc. are still broken.
      
      * [lang2] make macros work for `cargo test`
      
      * [core, lang2] make contracts compile as ink-as-dependency
      
      * [lang2] make events work for ink_lang2 on env3
      
      * [lang2] remove AccessEnv - no longer needed
      
      * [core] remove env2
      
      * [lang2] fix tests
      
      - Fix warning in ink_lang2
      - Remove no longer needed test case
      - Adjust some passing tests after default module import removal
      
      * [*] apply rustfmt
      
      * [lang2] silence unused warning for now
      
      * [core] rename {create|Create}* to {instantiate|Instantiate}*
      
      - CreateBuilder -> InstantiateBuilder
      - CreateParams -> InstantiateParams
      - create -> instantiate
      
      * [core] rename endowment -> transferred_value for CallBuilder/Params
      
      * [examples] adjust Delegator contracts for recents changes
      
      * [core] rename now_in_ms -> block_timestamp
      
      * [core] follow-up of the call renamings (transferred_value)
      
      * [lang2] rename now_in_ms -> block_timestamp
      
      * [examples] move examples out of the examples/lang2 folder
      
      * [examples] fix runtime-storage example contract
      
      * [examples] fix Flipper contract
      
      * [examples] fix Incrementer contract
      
      * [examples] fix Erc20 contract
      
      * [utils] add Key and byte_utils to ink_utils
      
      * [utils -> primitives] rename ink_utils -> ink_primitives
      
      * [*] move all links from ink_utils -> ink_primitives
      
      * [primitives] update Cargo.toml description
      
      * [*] use ink_primitives::Key remove ink_core::Key
      
      * [primitives] refactor new crate, make it more usable in ink! context
      
      * [*] relink to ink_primitives for Key usage
      
      * [abi] refactor macros and relink to ink_primitives::Key
      
      * [lang2] fix usage of renamed Create{Builder, Params}
      
      * [examples] fix examples under recent changes with ink_primitives
      
      * [*] apply rustfmt
      
      * [lang2/macro] remove deprecated feature usage of proc_macro_hygiene
      
      * [examples] remove deprecated proc_macro_hygiene feature
      
      * [core] remove test_utils
      
      * [core] rename env3 to env
      
      * [*] rename all usages of env3 to env
      
      * [core] fix feature usage in num-traits of ink_core Cargo.toml
      
      * [*] update README
      
      * [primitives] conditionally compile type_metadata from ink_primitives
      
      * [core] make env::get_contract_storage return Option<Result<T>>
      
      * [core] fix some faulty doc comments
      
      * [ci] fix GitLab CI
      
      * [primitives] fix no_std compilation
      
      * [primitives] fix warning
      
      * [core] make `rand` dependency optional for `std` crate feature
      
      * [core] remove the test-env crate feature from the ink_core crate
      
      * [core,primitives] move some tests from primitives to core
      
      * [lang] move lang2/ to lang/
      
      * [*] rename all instances of ink_lang2 or lang2 to ink_lang or lang
      
      * [lang/macro] fix ink_primitives dependency
      
      * [*] apply rustfmt
      
      * [core] fix clippy warning
      
      * [ci] eliminate README from examples CI checks
      
      * [examples] apply rustfmt
      
      * [lang/macro] improve event codegen
      
      * [core] rename TimeStamp/time_stamp to Timestamp/timestamp
      
      * [lang] remove unused extern crate alloc
      
      * [core] rename env::address to env::account_id
      
      * [lang] perform renamings on ink_lang::EnvAccess but with deprecation instead of removal
      
      * [core] fix missing time_stamp renamings
      
      * [lang] fix missing TimeStamp renamings
      
      * improve doc comment
      
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * improve doc comment
      
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * rename create_contract -> instantiate_contract
      
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * rename create_contract -> instantiate_contract
      
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * improve doc comment
      
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * impr
      
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * improve doc comment
      
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * improve doc comment
      
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * improve doc comment
      
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * rename endowment -> transferred_value
      
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * improve doc comment
      
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * rename create_contract -> instantiate_contract
      
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * rename create_contract -> instantiate_contract
      
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * rename time stamp to timestamp
      
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * rename SRML to env in docs
      
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * remove SRML word from docs
      
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * remove SRML word from docs
      
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * [lang] fix doc comment for filtered_keys in restore_contract
      
      * [core] rename create_contract -> instantiate_contract
      
      * [core] rename create_contract -> instantiate_contract
      
      * [core] fix some renamings around endowment -> transferred_value
      
      * [lang] rename create_contract -> instantiate_contract follow-up
      
      * [core] apply rustfmt
      
      * [core] improve restore_contract doc comment
      
      * [core, lang] link to ink_core::env::* doc comments from all api places
      
      * [core] apply rustfmt
      
      Co-authored-by: Michael Müller's avatarMichael Müller <mich@elmueller.net>
      Co-authored-by: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      321fe03a
  18. 28 Nov, 2019 2 commits
    • Hero Bird's avatar
      Use ink_prelude crate in the rest of ink! (#285) · 76c10bd1
      Hero Bird authored
      * [*] use ink_prelude crate in the rest of ink!
      
      # Conflicts:
      #	core/Cargo.toml
      #	core/src/storage/flush.rs
      
      * [core] fix usage of ink_prelude in buffer_arena
      
      * [core] apply rustfmt
      76c10bd1
    • Hero Bird's avatar
      Use Flush derives and generally update the Flush trait (#269) · 1601b967
      Hero Bird authored
      * [core] add core/derive crate to add derive macro for Flush
      
      * [core/derive] change license from GPL-3.0 to APACHE-2.0
      
      * [core/derive] implement Flush and AllocateUsing derives based on synstructure
      
      * [core] re-export AllocateUsing and Flush derives from within core
      
      * [core/derive] fix AllocateUsing derive impl
      
      * [core/derive] adjust AllocateUsing tests
      
      * [core/derive] apply cargo fmt
      
      * [core/derive] add test::utils and improve AllocateUsing tests
      
      * [core/derive] add explanation docs
      
      * [core/derive] add doc for a hack
      
      * [core/derive] forbid deriving empty enums for Flush
      
      * [core/derive] update compile tests
      
      * [core] remove derive crate feature
      
      * [core/derive] remove `extern crate ink_core` edition 2015 compat
      
      * [core, examples, lang] update Flush impls
      
      * [core] apply rustfmt
      
      * [core] simplify Flush impl for StashHeader
      
      * [core] remove derive crate feature
      
      * [examples] fix clippy warning about Flush in delegator
      1601b967
  19. 26 Nov, 2019 1 commit
    • Hero Bird's avatar
      Add core/derive crate to add derive macro for some traits (#256) · 63163f73
      Hero Bird authored
      * [core] add core/derive crate to add derive macro for Flush
      
      * [core/derive] change license from GPL-3.0 to APACHE-2.0
      
      * [core/derive] implement Flush and AllocateUsing derives based on synstructure
      
      * [core] re-export AllocateUsing and Flush derives from within core
      
      * [core/derive] fix AllocateUsing derive impl
      
      * [core/derive] adjust AllocateUsing tests
      
      * [core/derive] apply cargo fmt
      
      * [core/derive] add test::utils and improve AllocateUsing tests
      
      * [core/derive] add explanation docs
      
      * [core/derive] add doc for a hack
      
      * [core/derive] forbid deriving empty enums for Flush
      
      * [core/derive] update compile tests
      63163f73
  20. 20 Nov, 2019 2 commits
  21. 13 Nov, 2019 3 commits
  22. 04 Oct, 2019 1 commit
    • Hero Bird's avatar
      Implementation of ink_env 2.0 (#195) · 4107f98d
      Hero Bird authored
      * [core] initial implementation of new env module
      
      * [core] add SRML implementations for some more Env trait methods
      
      * [core] replace SmallVec with Vec since it isn't ready yet
      
      * [core] add license header to ret_code.rs
      
      * [core] take generic buffer params &mut instead of by value
      
      * [core] add implementation of create_contract for SRML env
      
      * [core] remove unused SmallVec imports
      
      * [core] implement deposit_event for SRML contracts env
      
      * [core] implement invoke_runtime for SRML contract env
      
      * [core] adjust invoke_runtime at trait level
      
      * [core] implement restore_to for SRML contracts env
      
      * [core] fix minor warnings and formatting issues
      
      * [core] refactoring and clean ups
      
      Output is no longer a contract property since it was too hard to make it work properly and efficiently.
      
      * [core] add initial version of EnvAccess
      
      * [core] add runtime checks to EnvAccess for input and output
      
      * [core] GetProperty and SetProperty no longer return Result
      
      * [core] introduce macro to remove some duplicate code in EnvAccess
      
      * [core] make buffer always the first argument in Env
      
      * [core] some minor clean ups
      
      * [core] implement {get,set,clear}_contract_storage for EnvAccess
      
      * [core] make assert_not_yet_returned and set_has_interacted private fns
      
      * [core] implement EnvAccess::random
      
      * [core] implement EnvAccess::println
      
      * [core] implement EnvAccess::{invoke_contract, eval_contract, create_contract}
      
      * [core] refactor module imports and exports
      
      * [core] add DynEnv utility
      
      * [core] move EnvAccess{Mut} into their own sub-module
      
      * [core] improve docs and add docs where they were missing
      
      * [core] add Default impl for EnvAccess
      
      * [core] add DynEnv
      
      * [core] greatly improve module docs
      
      * [core] remove some warning-errors that were too strict
      
      * [core] introduce initial implementation of test env
      
      * [core] initial Storage implementation for TestEnv
      
      * [core] improve module documentation
      
      * [core] continue implementation of TestEnv
      
      * [core] improve byte_utils docs for negate_bytes
      
      * [core] add new DefaultSrmlTypes implementation
      
      * [core] continue initial TestEnv implementation
      
      * [core] add TypedEncoded utility that we might use in TestEnvInstance
      
      * [core] enhance TypedEncoded utility
      
      * [core] add Debug impl for Storage and Entry
      
      * [core] implement the TestEnvInstance part of TestEnv
      
      This is the part that actually holds the data in a generic fashion and is controlled later on by the TestEnv through thread_local storage.
      
      * [core] remove unnecessary imports
      
      * [core] remove unnecessary derive impls for some marker types
      
      * [core] greatly improve doc comment of TestEnvInstance
      
      * [core] implement Clone, PartialEq, Eq and Hash for any TypedEncoded<M>
      
      * [ci] update Travis CI rust version: nightly-2019-08-30 -> nightly-2019-09-25
      
      * [core] include TestEnv or SrmlEnv conditionally exclusively
      
      * [core] apply rust fmt
      
      * [core] use Input::remaining_len to optimize scale::Decode impl for CallData
      
      * [core] align usage of PhantomData
      
      * [core] resolve call/create TODOs
      
      * [core] fix minor doc issues
      
      * [core] add a note to Env::println to make users aware of it being a debug utility
      
      * [core] apply rust fmt
      
      * [core] add Debug impl to Storage and Entry
      
      * [core] add PartialOrd and Ord impl to TypedEncoded
      
      * [core] split TestEnv TypedEncoded types into their own module
      
      * [core] add an account database for the TestEnv
      
      * [core] move impl_get_property_for next to its macro definition
      
      * [core] enhance test::AccountsDb
      
      * [core] make fields in TestEnvInstance pub
      
      * [core] fix some mod re-exports
      
      * [core] improve AccountsDb get and get_mut interface
      
      * [core] add TypedEncoded::{assign, try_assign} methods
      
      * [core] add 'static to all EnvTypes associated types
      
      * [core] add initial implementation of accessor for TestEnvInstance
      
      * [core] rename some fields in instance.rs
      
      * [core] implement the rest of the properties getters and setters for TestEnv
      
      * [core] move Input property getter into macro
      
      * [core] add initial stubs for Env impl of TestEnv
      
      * [core] slightly improve property getters
      
      * [core] implement Env::get_contract_storage for TestEnv
      
      * [ci] update nightly-2019-09-25 -> nightly-2019-10-03
      
      * [core] improve Storage::write by using Entry API
      
      * [core] silence warning of unused buffer in Env impl for TestEnv
      
      * [core] implement Env::set_contract_storage for TestEnv
      
      * [core] impl Env::clear_contract_storage for TestEnv
      
      * [core] add dev-comments for implementations of many Env methods for TestEnv
      
      These need some explanation since they partly contradict the off-chain nature of the TestEnv.
      
      * [core] implement Env::random for TestEnv
      
      * [core] improve dev-comment for Env::create_contract
      
      * [core] implement Env::output for TestEnv
      
      * [core] add AccountIdGen to TestEnvInstance
      
      * [core] add records to test environment module
      
      Used for later use in recording implementations of Env for TestEnv.
      
      * [core] apply rustfmt
      
      * [core] fix some warnings
      
      * [core] add constructors for records
      
      * [core] make record constructors pub
      
      * [core] apply rustfmt
      
      * [core] implement Env::{invoke_contract, eval_contract} for TestEnv
      
      * [core] implement restoration and runtime invokation records
      
      * [core] implement Env::{emit_event, invoke_runtime, restore_to} for TestEnv
      
      * [core] implement AccountsDb::insert
      
      * [core] implement Env::create_contract for TestEnv
      
      * [core] add doc-comment for test environment module
      
      * [core] fix copy/paste error in accessor.rs
      
      * [core] add initialization routines to TestEnvInstance
      
      * [core] make use of TypedEncoded in record.rs
      
      * [core] re-export concrete Env impls as EnvImpl
      
      * [core] make most of the test environment definitions publicly visible
      
      * [core] apply rustfmt
      
      * [core] fix 2 compile errors in no_std mode
      
      * [core] add doc-comments to all test sub-modules
      
      * [core] add doc-comments to EnvImpl type alias
      
      * [core] add initial implementation of TestEnv::try_initialize
      
      * [core] add dev-notes to SrmlEnv
      
      * [ci] update travis nightly usage nightly-2019-10-03 -> nightly-2019-10-04
      4107f98d
  23. 14 Aug, 2019 2 commits
    • Hero Bird's avatar
      ink! abi followup (#168) · 5c5d17df
      Hero Bird authored
      
      
      * [examples] remove unneeded dependencies
      
      * [cli] template: remove unneeded dependencies
      
      * [*] make test-env a default feature
      
      * [core] no longer export impl_empty_flush_for macro
      
      * [scripts] add usage docs to check-workspace
      
      * [readme] add section about scripts
      
      * [core] add lib.rs docs
      
      * [core] simple Cargo.toml formatting
      
      * [ci] use latest nightly-2019-08-13
      
      * [ci] upload kcov results after workspace checks
      
      * [scripts] fix the banner not being printed
      
      * Update README.md
      
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * Update core/src/lib.rs
      
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      5c5d17df
    • Hero Bird's avatar
      ink! ABI (#104) · fa6b0065
      Hero Bird authored
      
      
      * [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: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * Update abi/src/specs.rs
      
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * Update core/src/storage/collections/stash/impls.rs
      
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * Update core/src/storage/collections/stash/impls.rs
      
      Co-Authored-By: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * [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
      fa6b0065
  24. 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
      9525f2f5
  25. 24 Jul, 2019 1 commit
    • Hero Bird's avatar
      Make std crate feature default for all ink crates (#146) · 7948d23b
      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
      7948d23b
  26. 24 May, 2019 1 commit
  27. 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
      fa906cad
  28. 22 Apr, 2019 1 commit
  29. 28 Mar, 2019 1 commit
  30. 27 Mar, 2019 1 commit
  31. 15 Mar, 2019 1 commit
  32. 19 Feb, 2019 1 commit
  33. 06 Feb, 2019 1 commit