1. 15 Jul, 2020 1 commit
  2. 10 Jul, 2020 2 commits
    • Michael Müller's avatar
    • Michael Müller's avatar
      [core] Optimize dynamic storage allocator (#472) · e96513a6
      Michael Müller authored
      * [core] Fix typos
      
      * [core] Add BitStash::is_completely_full()
      
      * [core] Split logic and get rid of loop
      
      * [core] Add benchmarks for storage2::BitStash
      
      * [core] Shorten code
      
      * [core] Remove outcommented code
      
      * [core] Get rid of warnings
      
      * [core] Apply cargo fmt
      
      * [core] Remove unnecessary mutable
      
      * [core] Remove unnecessary check
      
      * [core] Add more storage2::BitStash benchmarks
      
      * [core] Fix benches (panics for empty_cache::one_put)
      
      * [core] Fix empty_cache::one_put bench
      
      * Revert "[core] Remove outcommented code"
      
      This reverts commit 98a74324.
      
      * [core] Improve benchmark labels
      
      * [core] Use iter_batched_ref consistently
      
      * [core] Remove unnecessary black_box
      
      * Revert "Revert "[core] Remove outcommented code""
      
      This reverts commit aaf24713.
      
      * [core] Satisfy clippy
      e96513a6
  3. 07 Jul, 2020 1 commit
    • Michael Müller's avatar
      [core] Add storage2::Lazy::set(…) (#466) · 68ac2124
      Michael Müller authored
      
      
      * [core] Fix typo
      
      * [core] Add Lazy::set(…)
      
      * [core] Add benchmarks for Lazy::set(…)
      
      * [core] Improve comments
      
      * [core] Set must not write to contract storage
      
      * [core] Benchmark set vs deref_mut (not set vs get_mut + assign)
      
      * [core] Bench with Lazy instead of LazyCell
      
      * Update core/src/storage2/lazy/lazy_cell.rs
      
      Co-authored-by: default avatarHero Bird <robin.freyler@gmail.com>
      
      * [core] Rename file
      
      * [core] Push actual Lazy<i32> when returning Lazy<i32>
      
      * [core] Add elaborate set() test with push/pull
      
      * [core] Shorten code
      
      * [core] Fix 0 ps issue with criterion
      
      * [core] Remove unnecessary comment
      
      * [core] Add #[inline] attribute
      
      Co-authored-by: default avatarHero Bird <robin.freyler@gmail.com>
      68ac2124
  4. 02 Jul, 2020 2 commits
    • Hero Bird's avatar
      Implement trait support - Part 1/3 - New ink! IR (#451) · c24f0ff9
      Hero Bird authored
      
      
      * [lang/macro] move some items around
      
      * [lang/macro] rename AttributeFlag -> AttributeArg
      
      This is in order to sync naming with the syn crate.
      
      * [lang/macro] implement ink! config parameter parsing
      
      * [lang/macro] add doc comment to into_nested_meta helper function
      
      * [lang/macro] add preliminary ast module
      
      * [lang/macro] replace usage of ink_primitives::hash module
      
      * [lang/macro] slightly refactor Selector
      
      * [lang/macro] fully implement AttributeArgs definitions + tests
      
      * [lang/macro] add IntoIterator for AttributeArgs
      
      * [lang/macro] base ir2::Config on the new ast::AttributeArgs definitions
      
      * [lang/macro] apply rustfmt
      
      * [lang/macro] add some ToTokens implementations
      
      * [lang/macro] add unit tests for ir2::Config
      
      * [lang/macro] introduce general Error type
      
      * [lang/macro] remove RustItem
      
      * [lang/macro] follow-up: remove RustItem
      
      * [lang/macro] add ir2::contains_ink_attributes helper function
      
      * [lang/macro] initial skeleton for TryFrom<syn::Item> for ir2::Item impl
      
      * [lang/macro] add first_ink_attribute helper function
      
      * [lang/macro] refactor initial skeleton for ir2::Item TryFrom impl
      
      * [lang/macro] re-export first_ink_attribute to ir2 module
      
      * [lang/macro] add unit tests for contains_ink_attributes and first_ink_attribute
      
      * [lang/macro] enhance initial TryFrom skeleton for ir2::Item
      
      * [lang/macro] simplify item_attrs
      
      * [lang/macro] further simplify item_attrs
      
      * [lang/macro] minor improvement
      
      * [lang/macro] add ExtError to extend syn::Error
      
      * [lang/macro] add Attrs trait to extract attributes from syn types
      
      * [lang/macro] re-base error infrastructure on to syn::Error
      
      * [lang/macro] adjust unit tests for new error infrastructure
      
      * [lang/macro] remove old error types
      
      * [lang/macro] use syn::Error in ir2::Config
      
      * [lang/macro] adjust Config unit tests for syn::Error usage
      
      * [lang/macro] rename ensure_no_duplicates -> ensure_no_duplicate_attrs
      
      * [lang/macro] add AttributeArg::kind method
      
      * [lang/macro] use full type path
      
      * [lang/macro] implement InkAttribute::from_expanded
      
      * [lang/macro] implement ir2::Storage TryFrom
      
      * [lang/macro] minor refactor
      
      * [lang/macro] add InkAttribute::ensure_no_conflicts
      
      * [lang/macro] add some failure paths to TryFrom<_> for ink! Storage struct
      
      * [lang/macro] add unit tests for ink! storage struct conversion
      
      * [lang/macro] apply rustfmt
      
      * [lang/macro] fix some clippy warnings
      
      * [lang/macro] rename Storage::item_struct field to ast
      
      * [lang/macro] rename Event::item_struct -> ast
      
      * [lang/macro] add some method and an iterator to ink! event struct
      
      * [lang/macro] add initial implementation of ink! event's TryFrom
      
      * [lang/macro] add derives for Debug, PartialEq and Eq for ink! event
      
      * [lang/macro] add initial success path unit tests for TryFrom for ink! event
      
      * [lang/macro] fix bug with #[ink(topic)] annotated event fields
      
      * [lang/macro] apply rustfmt
      
      * [lang/macro] apply clippy suggestion
      
      * [lang/macro] add first bunch of failure event TryFrom unit tests
      
      * [lang/macro] normalize the current failure event unit tests
      
      * [lang/macro] add more event unit tests for topics on fields
      
      * [lang/macro] add Debug, PartialEq and Eq derives for some ir2 types
      
      * [lang/macro] add unit tests for ir2::Item
      
      * [lang/macro] add ir2::ImplBlock::is_ink_impl_block
      
      * [lang/macro] add doc comment note
      
      * [lang/macro] rename ImplBlockItem::Rust -> Other
      
      * [lang/macro] apply rustfmt
      
      * [lang/macro] add stub TryFrom impls for Constructor and Message
      
      * [lang/macro] add TryFrom impl for ir2::ImplBlockItem
      
      * [lang/macro] add initial skeleton for TryFrom impl for ir::ImplBlock
      
      * [lang/macro] implement ir2::sanitize_attributes
      
      * [lang/macro] split impl_block.rs into multiple files as sub modules
      
      * [lang/macro] apply rustfmt + remove unused imports
      
      * [lang/macro] split item module into multiple modules
      
      * [lang/macro] finalize move into multiple files from commit before
      
      * [lang/macro] add lots of error checks to TryFrom for Message
      
      * [lang/macro] improve TryFrom tests for ir2::ImplBlock
      
      * [lang/macro] make Event and Storage use ir2::sanitize_attributes
      
      * [lang/macro] add additional constructors for Iter{Constructors, Messages}
      
      * [lang/macro] add visibility check to Message TryFrom impl
      
      * [lang/macro] add Message::Visibility and getter
      
      * [lang/macro] implement Message::receiver getter
      
      * [lang/macro] extend ImplBlock doc comment note section
      
      * [lang/macro] add Message::Visibility getters
      
      * [lang/macro] refactor Receiver getters
      
      * [lang/macro] fix doc comment
      
      * [lang/macro] add unit test for Message::visibility getter
      
      * [lang/macro] add unit test for Message::receiver getter
      
      * [lang/macro] move Visibility from message.rs to impl_item.rs
      
      * [lang/macro] add Constructor::visibility getter
      
      * [lang/macro] implement callable.rs
      
      * [lang/macro] make use of new shared callable.rs utilities
      
      * [lang/macro] remove visibility from impl_item.rs
      
      * [lang/macro] fix some imports
      
      * [lang/macro] implement constructor check for missing return type
      
      * [lang/macro] implement constructor check for invalid self receiver
      
      * [lang/macro] add some ink! constructor try_from unit tests
      
      * [lang/macro] add ink! constructor visibility getter unit test
      
      * [lang/macro] fix unit test for ink! message visibility
      
      * [lang/macro] add many unit tests for ink! constructor TryFrom impl
      
      * [lang/macro] extend success TryFrom impl unit tests
      
      * [lang/macro] factor out sanitize_attributes for TryFrom impls
      
      * [lang/macro] remove salt from messages and constructors
      
      * [lang/macro] add salt extraction for ink! impl block
      
      * [lang/macro] add unit test for ink! impl block salt
      
      * [lang/macro] implement InkAttribute::{salt, selector} getters
      
      * [lang/macro] make use of InkAttribute::salt in TryFrom for ir2::ImplBlock
      
      * [lang/macro] apply rustfmt
      
      * [lang/macro] implement InkAttribute::is_payable
      
      * [lang/macro] make use of InkAttribute::{is_payable, selector}
      
      * [lang/macro] add module doc to callable.rs
      
      * [lang/macro] rename ImplBlock -> ItemImpl
      
      * [lang/macro] rename impl_block module to item_impl
      
      * [lang/macro] rename ImplBlockItem -> ImplItem
      
      * [lang/macro] add {Message, Constructor}::is_payable
      
      * [lang/macro] add doc note to ir2::ImplItem
      
      * [lang/macro] add implementation for InputsIter
      
      * [lang/macro] make use of InputsIter in ink! message and constructor
      
      * [lang/macro] add getter for the return type of an ink! message
      
      * [lang/macro] add unit test for ink! message is_payable
      
      * [lang/macro] add unit test for Constructor::is_payable
      
      * [lang/macro] rewrite receiver_works unit test for ink! message
      
      * [lang/macro] add unit test for ink! message inputs
      
      * [lang/macro] add unit test for ink! message output getter
      
      * [lang/macro] add identifier getter to ink! message and constructor
      
      * [lang/macro] apply rustfmt
      
      * [lang/macro] apply rustfmt
      
      * [lang/macro] implement clippy suggestions
      
      * [lang/macro] add unit test for Constructor::inputs
      
      * [lang/macro] refactor Storage::is_ink_storage
      
      * [lang/macro] add Event::is_ink_event
      
      * [lang/macro] add InkItem::is_ink_item
      
      * [lang/macro] apply rustfmt
      
      * [lang/macro] fix many non-dead-code warnings and allow dead-code for ir2
      
      * [lang/macro] implement Contract::config getter
      
      * [lang/macro] allow compile failure of some in-doc tests
      
      * [lang/macro] implement TryFrom for ir2::Module
      
      * [lang/macro] re-export ImplItem from ir2
      
      * [lang/macro] implement visibility check for ink! impl blocks
      
      * [lang/macro] fix unit test
      
      * [lang/macro] improve error message for visibility check
      
      * [lang/macro] add unit test for visibility failure
      
      * [lang/macro] apply rustfmt
      
      * [lang/macro] introduce Callable trait to unify ink! messages and constructors
      
      * [lang/macro] craft initial skeleton of compose_selector function
      
      * [lang/macro] implement ItemImpl::{self_type, trait_path, salt}
      
      * [lang/macro] extend compose_selector docs with a usage recommendation section
      
      * [lang/macro] implement initial version of compose_selector
      
      * [lang/macro] apply clippy suggestion
      
      * [lang/macro] fix some bugs in compose_selector implementation
      
      * [lang/macro] add unit tests for compose_selector
      
      * [lang/macro] rename ir2::Module -> ir2::ItemMod (syn)
      
      * [lang/macro] rename module.rs -> item_mod.rs
      
      * [lang/macro] remove some imports, use names directly
      
      * [lang/macro] rename Event::ast -> item
      
      * [lang/macro] refactor event fields iterator
      
      * rebase resolve conflict
      
      * [lang/macro] move ir2 and ast modules to new crate
      
      * [lang/ir] some general renamings after crate move
      
      * [lang/macro] no longer refer to ast and ir2 modules
      
      * [lang/macro] get rid of all bail! and bail_span! macro calls
      
      They hide significant control flow which is bad for readability.
      
      * [lang/ir] export error macros
      
      * [lang/ir] remove unused import
      
      * [lang/macro] make use of new ink_lang_ir crate
      
      * [lang/ir] improve documentation and module structure
      
      * [lang/ir] apply clippy suggestions + formatting
      
      * [lang/macro] apply clippy suggestions
      
      * [lang/ir] further improvements to the documentation
      
      * [lang/ir] fix error macro docs
      
      * [lang/ir] add missing re-export for ir::Contract
      
      * [lang/ir] improve ir::Contract docs
      
      * [lang/ir] minor refactor of ir::Contract
      
      * [lang/ir] extend docs for ir::Contract
      
      * [lang/ir] make ast::AttributeArgs::args field private
      
      * [lang/ir] apply rustfmt
      
      * [lang/ir] improve docs
      
      * [lang/ir] further documentation improvements
      
      * [lang/ir] add missing exports
      
      * [lang/ir] adjust format_err to require its expr to be T:Spanned
      
      Formerly this was T:ToTokens which is more restrictive than it should have been.
      
      * [lang/ir] refactor format_err_span and format_err macros + docs
      
      * [lang/ir] rename format_err macro -> format_err_spanned
      
      * [lang/ir] rename format_err_span macro -> format_err
      
      * [lang/ir] apply rustfmt
      
      * [lang/ir] minor improvements to format_err{_spanned}
      
      * [lang/ir] implement ToTokens for all ink! IR structures
      
      This is useful because T:ToTokens automatically implements syn::spanned::Spanned while being simpler to implement than syn::spanned::Spanned.
      
      * [lang/ir] add links to tracking issue for format_err{_spanned}
      
      * [lang/ir] minor docs improvements
      
      * [lang/ir] do not re-export everything that belongs to attributes
      
      * [lang/ir] fix compilation in test mode
      
      * [lang/ir] add ir::ItemMod checks for ink! storage, message and constructor quantities
      
      * [lang/ir] make ast module private and move ir module to root
      
      * [lang/ir] rename IterItemImpls -> IterItemImpls
      
      * [lang/ir] remove ir::EnvTypes from public API
      
      * [lang/ir] rename ir::ItemMod::impl_blocks -> item_impls
      
      * [lang/ir] rename ir::Module::item_impls -> impls
      
      * [lang/ir] make ir::Config::env_types return syn::Path
      
      * [lang/ir] move mod doc to lib doc
      
      * [lang/ir] fix event doc test
      
      * [lang/ir] make Event::is_ink_event module private
      
      * [lang/ir] apply rustfmt
      
      * [lang/ir] fix Storage doc test
      
      * [lang/ir] remove unnecessary rust annotation for doc test
      
      * [lang/ir] fix doc tests for constructor and message
      
      * [lang/ir] fix fmt todo! avoidance
      
      * [lang/ir] remove unneded let binding
      
      * [lang/ir] fix doc tests of impl_item/mod.rs
      
      * [lang/ir] make ItemImpl::is_ink_impl_block module private
      
      * [lang/ir] re-export InputsIter
      
      * [lang/ir] add getter for ir::ItemImpl::items
      
      * [lang/ir] rename salt -> namespace
      
      * add doc link in MetaNameValue doc
      
      Co-authored-by: Michael Müller's avatarMichael Müller <mich@elmueller.net>
      
      * [lang/ir] rename Callable::selector -> user_provided_selector
      
      This is going to avoid confusion with composed selector concept.
      
      * [lang/ir] make Storage::is_ink_storage module private
      
      * [lang/ir] fix doc link
      
      * [lang/ir] expose composed selector through messages and constructors iter
      
      * [lang/ir] apply rustfmt
      
      * [lang/ir] fix item_mod.rs doc tests
      
      * [lang/ir] ignore contract doc test for now
      
      It is hard to test because of the unknown ink::contract attribute at the top.
      
      * [lang/ir] add item getter to CallableWithSelector
      
      * [lang/ir] add Callable::statements getter
      
      * [lang/ir] add ir::ItemMod::ensure_no_overlapping_selectors + tests
      
      * [lang/ir] remove duplicate code
      
      * 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>
      
      * [lang/ir] move config.rs -> attr_args.rs
      
      * [lang/ir] update doc comments
      
      * [lang/ir] some more doc polishing
      
      * [lang/ir] fix outdated doc comment
      
      * [lang/ir] remove outdated doc comment
      
      * 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>
      
      * [lang/ir] remove unneeded let binding in doc test
      
      * [lang/ir] fix conflicting constructor attribute closure
      
      Co-authored-by: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * [lang/ir] fix doc comment
      
      * [lang/ir] remove outdated doc comment
      
      * fix doc comment
      
      Co-authored-by: Andrew Jones's avatarAndrew Jones <ascjones@gmail.com>
      
      * [lang/ir] rename 'outer label to 'repeat
      
      * [ci] add lang/ir to ALL_CRATES
      
      * [lang/ir] update blake2 dependency from 0.8 -> 0.9
      
      * [lang/macro] remove unneeded blake2 dependency
      
      * [lang/ir] take last segment of trait path
      
      * [lang/ir] slightly improve overlapping selector error message
      
      * [lang/ir] improve overlapping selector formatting
      
      * [lang/ir] add unit test for composed selector with relative trait path
      
      * [lang/ir] improve unit test for relative trait path composed selector
      
      * [lang/ir] fix bug that namespace was a valid attribute on ink! messages
      
      * [lang/ir] add unit test to check against conflicting attributes on ink! messages
      
      * [lang/ir] fix bug that namespace was an allowed attribute for ink! constructors
      
      * [lang/ir] add unit test to check against conflicting ink! constructor attributes
      
      * [lang/ir] add success tests for ir::ItemMod TryFrom
      
      * [lang/ir] fix out-of-line ink! module error message
      
      * [lang/ir] add a bunch of ink! module TryFrom failure unit tests
      
      * [lang/ir] add unit test for ink! event fields iterator
      
      * [lang/ir] 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>
      c24f0ff9
    • Andrew Jones's avatar
      [core] add gas arg to ext_gas_price (#461) · 2456fdd2
      Andrew Jones authored
      * add gas argument
      
      * Add gas parameter to ext_gas_price
      
      * Fix up gas_price offchain api
      
      * Fix up env_access api
      
      * Emulate gas price calculation
      
      * Make clippy happy
      
      * Use Saturating impl for emulating gas price calculation offchain
      
      * Fmt
      
      * Add offchain gas_price test
      
      * Make clippy happy
      2456fdd2
  5. 30 Jun, 2020 3 commits
    • Michael Müller's avatar
      Support quickcheck based property testing (#319) · 30fe10df
      Michael Müller authored
      
      
      * Support quickcheck tests
      
      Quickcheck runs multiple tests in one thread, whereas the
      testing environment expects one test per thread, since the
      offchain env is `thread_local!`.
      
      This commit adds the possibility to have each test run
      with an explicitly uninitialized env.
      
      * Introduce ink-fuzz feature
      
      Computationally expensive fuzzing tests should have
      to be run explicitly with `--features ink-fuzz`.
      
      These tests must be marked `#[cfg(feature = "ink-fuzz")]`.
      
      * Add quickcheck property testing for HashMap
      
      * Make ink-fuzz imply std feature
      
      * Support quickcheck tests
      
      By adding the ability to reset the offchain environment explicitly.
      
      * Apply rustfmt
      
      * [core] Remove unnecessary code due changes in master in the meantime
      
      * [core] More removals of no longer necessary code
      
      * [core] Apply cargo fmt
      
      * [core] Rename ink-fuzz to ink-fuzz-tests
      
      * [core] Split fuzz tests into separate file
      
      * [core] Improve naming
      
      * Apply suggestions from code review
      
      Co-authored-by: default avatarHero Bird <robin.freyler@gmail.com>
      
      * [core] Replace for_each with for loop
      
      * [core] Replace for_each with for loop
      
      Co-authored-by: default avatarHero Bird <robin.freyler@gmail.com>
      30fe10df
    • Andrew Jones's avatar
      [metadata] rename abi crate to metadata (#465) · 59dcb1ba
      Andrew Jones authored
      * git mv abi metadata
      
      * mm
      
      * Rename codegen abi to metadata
      
      * Fmt
      59dcb1ba
    • Andrew Jones's avatar
      [core] update arithmetic traits, add saturating impls (#463) · 65e094e1
      Andrew Jones authored
      * extract arithmetic types
      
      * Add basic saturating tests
      
      * Fmt
      
      * Add comment about EnvTypes bounds
      65e094e1
  6. 24 Jun, 2020 1 commit
    • Andrew Jones's avatar
      [examples] remove config made redundant by cargo-contract (#456) · fc424c23
      Andrew Jones authored
      * Incrementer
      
      * DNS
      
      * ERC 20
      
      * [examples] set all crate-types to cdylib
      
      * [examples] delegator
      
      * [examples] remove remaining abi and profile.release cruft
      
      * Restore rlib to delegator dependencies
      
      * Remove redundant reexports
      
      * Restore reexports for delegator sub contracts
      
      * Fix type
      
      * Install version of cargo-contract from branch
      
      * Use cargo-contract ink-ci branch
      
      * dns crate type
      fc424c23
  7. 22 Jun, 2020 2 commits
    • 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
    • Andrew Jones's avatar
      Extern function to generate metadata (#460) · 9eb92645
      Andrew Jones authored
      * Hack to see if #[start] works
      
      * Hack to see if #[no_mangle] works
      
      * Remove incrementer bin target
      
      * Use Rust extern api and pass back InkProject struct directly
      
      * Uglify name
      
      * Update remaining examples to use generate metadata function
      
      * Do not generate for ink-as-dependency to make delegator work
      
      * Remove explicit version from abi dependency
      
      * Remove duplication
      
      * Remove GenerateAbi trait
      9eb92645
  8. 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
  9. 17 Jun, 2020 3 commits
    • Hero Bird's avatar
      Avoid heap allocations for contract dispatch (#449) · f5b3c481
      Hero Bird authored
      * [core] add Env::decode_input
      
      * [lang/macro] remove unneeded crate dependencies
      
      # Conflicts:
      #	lang/macro/Cargo.toml
      
      * [lang, lang/macro] add message dispatcher type code generation
      
      * [lang/macro] add constructor dispatch enum code generation
      
      * [lang] add executor functions and Execute trait
      
      * [core] add decode_input to public env API
      
      * [lang] fix incorrect trait bound in execute_message
      
      * [lang/macro] add code generation for ink_lang::Execute
      
      * [lang/macro] integrate Execute trait impls into contract dispatch
      
      * [lang/macro] fix bug with constructors and messages with multiple inputs
      
      * [lang] apply rustfmt
      
      * [lang/macro] apply rustfmt + fix clippy warnings
      
      * [lang] remove testable module
      
      * [lang] clean-up lang module after implementing new dispatch codegen
      
      # Conflicts:
      #	lang/src/dispatcher.rs
      
      * [lang] re-enable alloc init and finalize
      
      * [lang] apply rustfmt
      
      * [core] remove Env::input function
      
      It has been deprecated. Users should use Env::decode_input function instead.
      
      # Conflicts:
      #	core/src/env/engine/off_chain/mod.rs
      
      * [core, examples] fix move of CallData to env::test API
      
      * [core] apply rustfmt
      
      * [examples] fix examples Selector::from_str -> new
      
      * [examples] fix multisig_plain doc-test import
      
      * [examples] apply rustfmt to multisig_plain example
      
      * [lang/macro] resolve some code dupes
      f5b3c481
    • Andrew Jones's avatar
      [abi] update to scale-info v0.2 (#454) · af1ab521
      Andrew Jones authored
      * Update to latest scale-info
      
      * scale-info 0.2
      
      * Merge branch 'master' into aj-update-scale-info
      
      # Conflicts:
      #	primitives/src/key.rs
      
      * Fmt
      af1ab521
    • Hero Bird's avatar
      Integrate new Key and KeyPtr types into rest of ink! (#447) · d095dd07
      Hero Bird authored
      * [primitives] add scale::{Encode, Decode} impls for Key
      
      * [primitives] add #[inline] annotations to scale::{Encode, Decode} impls for Key
      
      * [primitives] remove old Key and old KeyPtr abstractions
      
      # Conflicts:
      #	primitives/src/key.rs
      
      * [abi] adjust codebase to new Key and KeyPtr abstractions
      
      * [core] first step towards new Key and KeyPtr abstractions
      
      * [primitives] add core::ops::Add impl to Key for testing
      
      * [primitives] add Add impls for ref and value Key
      
      * [primitives] add Key::as_bytes for little-endian architectures
      
      * [primitives] add HasType{Id, Def} for Key
      
      * [core] adjust ink_core::env for Key and KeyPtr changes
      
      * [core] adjust ink_core::storage2 for Key and KeyPtr changes
      
      * [lang] adjust ink_lang for Key and KeyPtr changes
      
      * [lang/macro] adjust for Key and KeyPtr changes
      
      * [core] fix lazy_cell Debug unit test
      
      * [primitives] remove type_metadata impls, add scale_info impl
      
      * [abi, core] update unit tests for Key changes
      
      * [primitives] rename key2 -> key and key_ptr2 -> key_ptr module
      
      * [primitives] rename bench functions key2 -> key
      
      * [primitives] use Fields::unnamed
      d095dd07
  10. 16 Jun, 2020 1 commit
    • Hero Bird's avatar
      Remove ink_primitives::hash module (#450) · ef3b1375
      Hero Bird authored
      * [primitives, lang/macro] remove ink_primitives::hash module
      
      # Conflicts:
      #	primitives/src/lib.rs
      
      * [core] remove ink_core's Selector::{from_str, from<&[u8]>} constructors
      
      * [examples] fix DNS contract
      
      * [examples] fix ers20
      
      * [examples] fix other example smart contracts
      
      * [examples] apply rustfmt
      ef3b1375
  11. 15 Jun, 2020 1 commit
  12. 14 Jun, 2020 1 commit
  13. 13 Jun, 2020 5 commits
    • Hero Bird's avatar
      Remove old modules after storage2 transition (#446) · 2021becf
      Hero Bird authored
      * [core] remove old storage module
      
      # Conflicts:
      #	core/src/storage/alloc/bump_alloc.rs
      #	core/src/storage/alloc/dyn_alloc.rs
      #	core/src/storage/cell/sync_cell.rs
      #	core/src/storage/chunk/sync_chunk/chunk.rs
      #	core/src/storage/collections/binary_heap/duplex_sync_chunk.rs
      #	core/src/storage/collections/binary_heap/impls.rs
      #	core/src/storage/collections/bitvec/block.rs
      #	core/src/storage/collections/bitvec/pack.rs
      #	core/src/storage/collections/bitvec/vec.rs
      #	core/src/storage/collections/btree_map/impls.rs
      #	core/src/storage/collections/btree_map/node.rs
      #	core/src/storage/collections/hash_map/impls.rs
      #	core/src/storage/collections/stash/impls.rs
      #	core/src/storage/collections/vec/impls.rs
      #	core/src/storage/value.rs
      
      * [abi] remove old layout module
      
      # Conflicts:
      #	abi/src/layout.rs
      #	abi/src/lib.rs
      
      * [abi] remove abi_derive sub crate
      
      # Conflicts:
      #	abi/derive/src/has_layout.rs
      #	abi/derive/src/impl_wrapper.rs
      #	abi/src/lib.rs
      
      * [core/derive] remove Flush and AllocateUsing derives + tests
      
      * [abi] remove unused function
      
      * [abi] remove unused tests and simplify imports
      2021becf
    • Hero Bird's avatar
      Optimize Key and KeyPtr primitives (#433) · f0747864
      Hero Bird authored
      * [chores] add primitives/target to gitignore
      
      * [primitives] add Key2 replacement for Key
      
      # Conflicts:
      #	primitives/src/lib.rs
      
      * [primitives] add KeyPtr2 replacement for KeyPtr
      
      * [primitives] add benchmark tests for Key, Key2, KeyPtr and KeyPtr2
      
      * [primitives] rename some benches
      
      * [primitives] inline some KeyPtr methods
      
      This is mainly to make comparison between old and new KeyPtr fairer.
      
      # Conflicts:
      #	primitives/src/key_ptr.rs
      
      * [primitives] carve out fallback for big-endian to_bytes
      
      This makes it better testable.
      
      * [primitives] include big-endian fallback procedures into a test
      
      * [primitives] add doc comment to Key2
      
      * [primitives] apply rustfmt
      
      * [primitives] fix clippy warning
      
      * [primitives] add repr(transparent) to Key2
      
      * [primitives] replace AsRef<[u8; 32]> impl with Key2::try_as_bytes method
      
      * [primitives] add SAFETY comment to unsafe block
      
      * [primitives] apply rustfmt
      
      * [primitives] add Display impl to Key2
      f0747864
    • Hero Bird's avatar
      Avoid heap memory allocations for cross-contract calls and instantiations (#439) · 870095c8
      Hero Bird authored
      * [core] add ExecutionInput abstraction
      
      * [core, lang] adjust env and lang abstractions for call builder changes
      
      * [lang/macro] adjust cross-call codegen to use new call infrastructure
      
      * [core] add #[inline] to many call infrastructure functions
      
      * [core, lang] apply rustfmt
      
      * [core, lang, lang/macro] avoid heap mem alloc for instantiations as well
      
      * [core] add inline annotations to some instantation infrastructure
      
      * [core] fix clippy warning
      
      * [core] apply rustfmt
      
      * [examples] fix multisig_plain example contract
      
      * [examples] apply rustfmt
      870095c8
    • 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
  14. 11 Jun, 2020 1 commit
  15. 09 Jun, 2020 1 commit
  16. 05 Jun, 2020 1 commit
  17. 26 May, 2020 1 commit
  18. 25 May, 2020 3 commits
  19. 23 May, 2020 1 commit
    • Hero Bird's avatar
      Eliminate some unsafe in storage2 module (#413) · 718b9f5e
      Hero Bird authored
      * [core] apply rustfmt
      
      * [core] add CacheCell abstraction
      
      * [core] re-export CacheCell for other lazy abstractions
      
      * [core] make use of CacheCell in LazyIndexMap
      
      * [core] make use of CacheCell in LazyHashMap
      
      * [core] make use of CacheCell in LazyCell
      
      * [core] make use of CacheCell in LazyArray
      
      * [core] apply rustfmt
      718b9f5e
  20. 22 May, 2020 1 commit
  21. 21 May, 2020 1 commit
  22. 20 May, 2020 3 commits
    • Hero Bird's avatar
      [github] update issue template for bug reports · e1dcdc80
      Hero Bird authored
      e1dcdc80
    • Hero Bird's avatar
      Update .gitlab-ci.yml (#400) · 17143beb
      Hero Bird authored
      17143beb
    • 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
  23. 18 May, 2020 1 commit
  24. 14 May, 2020 2 commits