Skip to content
Snippets Groups Projects
  1. Feb 10, 2020
    • Sergey Pepyakin's avatar
      Refactor and document allocator (#4855) · 5aa5c711
      Sergey Pepyakin authored
      
      * Clarify code a bit.
      
      * Move code around.
      
      * Introduce `Order`.
      
      * Introduce `Link` structure.
      
      * Get rid of ptr_offset
      
      This is beneficial since ptr_offset is essentially makes us handle two different address spaces, global (i.e. `mem`) and heap local and without it things are becoming simpler.
      
      * Rename PREFIX_SIZE to HEADER_SIZE.
      
      This will come in the next commits.
      
      * Introduce a separate `Memory` trait.
      
      This is not necessary, but will come in handy for the upcoming changes.
      
      * Rename `ptr` to `header_ptr` where makes sense.
      
      * Introduce a `Header` type.
      
      * Make `bump` dumber.
      
      This allows us to pull `HEADER_SIZE` to see that we actually allocate `order.size() + HEADER_SIZE`.
      
      * Clean up.
      
      * Introduce a freelists struct.
      
      * Update documentation.
      
      * Make Sized requirement optional to make the PR truly back-compatible.
      
      * Apply suggestions from code review
      
      Co-Authored-By: default avatarGavin Wood <gavin@parity.io>
      
      * Apply suggestions from code review
      
      Co-Authored-By: default avatarBastian Köcher <bkchr@users.noreply.github.com>
      
      Co-authored-by: default avatarGavin Wood <github@gavwood.com>
      Co-authored-by: default avatarBastian Köcher <bkchr@users.noreply.github.com>
      5aa5c711
  2. Feb 06, 2020
    • Bastian Köcher's avatar
      Allocator improvements/clean ups (#4838) · 07daa525
      Bastian Köcher authored
      * FreeingBumpAllocator: Initialize the heads to `u32::max_value()`
      
      `self.heads` can point to an element with the index `0` in the heap.
      This would make the allocator fail to reuse this element.
      
      * Simplify the `PREFIX_SIZE` handling
      07daa525
  3. Jan 22, 2020
    • Bastian Köcher's avatar
      Move "wasm" allocator into its own crate (#4716) · 5bd6e94e
      Bastian Köcher authored and Sergey Pepyakin's avatar Sergey Pepyakin committed
      This moves the wasm-allocator (`FreeingBumpHeapAllocator`) into its own
      crate `sp-allocator`. This new crate can theoretically provide multiple
      different allocators. Besides moving the allocator, this pr also makes
      `FreeingBumpHeapAllocator` compile on `no_std`.
      5bd6e94e
  4. Jan 05, 2020
  5. Dec 24, 2019
    • Sergey Pepyakin's avatar
      Extract execution engines definitions into their own crates (#4489) · 1782fbbb
      Sergey Pepyakin authored
      * Clean imports in wasmi_execution
      
      * Replace `interpret_runtime_api_result` with `pointer_and_len_from_u64`.
      
      * Extract sc-executor-common crate
      
      * Extract `sc-executor-wasmi` into its own crate
      
      * Extract `sc-executor-wasmtime` into its own crate.
      
      * Add missing headers.
      
      * Clean and docs
      
      * Docs for sc-executor-wasmi
      
      * Expand a comment about sandboxing
      
      * Fix assert_matches
      
      * Rename (un)pack_ptr_and_len and move them into util module
      
      * Remove wasmtime errors in sc-executor-common
      1782fbbb
  6. Dec 16, 2019
    • Tomasz Drwięga's avatar
      [big refactor] Remove crate aliasing. (#4395) · 8778ca7d
      Tomasz Drwięga authored
      * Rename: Phase 1.
      
      * Unify codec.
      
      * Fixing: Phase 2
      
      * Fixing: Phase 3.
      
      * Fixing: Phase 4.
      
      * Fixing: Phase 5.
      
      * Fixing: Phase 6.
      
      * Fixing: Phase 7.
      
      * Fixing: Phase 8. Tests
      
      * Fixing: Phase 9. Tests!!!
      
      * Fixing: Phase 10. Moar tests!
      
      * Finally done!
      
      * More fixes.
      
      * Rename primitives:: to sp_core::
      
      * Apply renames in finality-grandpa.
      
      * Fix benches.
      
      * Fix benches 2.
      
      * Revert node-template.
      
      * Fix frame-system in our modules.
      8778ca7d
  7. Nov 14, 2019
    • Benjamin Kampmann's avatar
      Reorganising the repository - external renames and moves (#4074) · 60e5011c
      Benjamin Kampmann authored
      * Adding first rough ouline of the repository structure
      
      * Remove old CI stuff
      
      * add title
      
      * formatting fixes
      
      * move node-exits job's script to scripts dir
      
      * Move docs into subdir
      
      * move to bin
      
      * move maintainence scripts, configs and helpers into its own dir
      
      * add .local to ignore
      
      * move core->client
      
      * start up 'test' area
      
      * move test client
      
      * move test runtime
      
      * make test move compile
      
      * Add dependencies rule enforcement.
      
      * Fix indexing.
      
      * Update docs to reflect latest changes
      
      * Moving /srml->/paint
      
      * update docs
      
      * move client/sr-* -> primitives/
      
      * clean old readme
      
      * remove old broken code in rhd
      
      * update lock
      
      * Step 1.
      
      * starting to untangle client
      
      * Fix after merge.
      
      * start splitting out client interfaces
      
      * move children and blockchain interfaces
      
      * Move trie and state-machine to primitives.
      
      * Fix WASM builds.
      
      * fixing broken imports
      
      * more interfac...
      60e5011c
  8. Oct 02, 2019
    • DemiMarie-parity's avatar
      Upgrade dependencies whenever “easy” (#3556) · 62b97a09
      DemiMarie-parity authored
      
      * Update all dependencies
      
      * Upgrade dependencies whenever “easy”
      
      “easy” means that there are no major changes required.
      
      * Fix build and bump paste dependency to 0.1.6
      
      * Remove dead code
      
      * Re-add = dependency for futures-preview
      
      * Add missing std features for runtime-io
      
      * Remove git dependencies
      
      as updated versions have been published to crates.io
      
      * try to debug bug
      
      * For sr-io, "std" should imply "no_oom" and "no_panic_handler".
      
      Otherwise, rustc complains (correctly) about duplicate lang items.
      
      * Add missing "runtime-io/std" features
      
      * Fix compilation errors
      
      * Prevent duplicate lang items
      
      Rust does not allow duplicate lang items.  When compiled without the
      `std` feature, `sr-io` defines two lang items.  Therefore, `sr-io`
      compiled without `feature = "std"` must not be linked with `std`.
      
      However, `pwasm-utils` and `wasmi-validation` both bring in `std` unless
      compiled with `default-features = "false"`.  This caused a duplicate
      lang item error.  Building both with `default-features = "false"`
      prevents this error.  When building with `feature = "std"`, they should
      both be built with the `std` feature, so this feature needs to be
      explicitly depended on.
      
      * Bump `impl_version`
      
      * Make tests pass
      
      Three tests used 1 less gas than they had previously.
      
      * Try to un-break build
      
      * Add a Cargo.lock file
      
      * Revert offchain code
      
      * Revert "Revert offchain code"
      
      This reverts commit d216d08cc6ca0344614669c1d24cde3aa5c0d4e2.
      
      * Don’t try to send a body with a GET request
      
      without adding a Transfer-Encoding or Content-Length header.
      
      This has always been wrong, but hyperium/hyper#1925 hid the bug until
      hyper was upgraded to 0.12.35.
      
      * Change some more GET requests to POST requests
      
      * Fix excess line width and remove an `extern crate`
      
      * Delete commented-out extern crate
      
      Co-Authored-By: default avatarSergei Pepyakin <sergei@parity.io>
      
      * Fix regression in Cargo.toml files
      
      dev-dependencies need `default-features = false`, too.
      
      * Bump parity-wasm dependency
      
      * Bump `futures-preview`
      
      * Apply suggestions from code review
      
      Co-Authored-By: default avatarBastian Köcher <bkchr@users.noreply.github.com>
      
      * Update Cargo.lock files
      
      * Apply suggestions from code review
      
      Co-Authored-By: default avatarBastian Köcher <bkchr@users.noreply.github.com>
      
      * Update core/service/src/chain_ops.rs
      
      Co-Authored-By: default avatarSergei Pepyakin <sergei@parity.io>
      62b97a09
  9. Sep 23, 2019
  10. Sep 13, 2019
    • Michael Müller's avatar
      Fixes for allocator + factory + misc improvements (#3534) · 5cb8c0dc
      Michael Müller authored
      
      * Clear up import/export misunderstandings
      
      * Fetch minimum period from runtime
      
      * Remove unnecessary comment
      
      This variable is already fetched from the runtime
      in the line below.
      
      * Fix bug in factory
      
      The `best_block_id` stayed the same, it was always the
      genesis hash. This resulted in the factory failing after
      4096 blocks, since `client/db` discards hashes (in this
      case the genesis hash) after 4096 blocks from the database.
      
      * Fix tense in error message
      
      * Improve allocator documentation
      
      * Fix bug in allocator
      
      Under certain circumstances an invalid pointer was
      returned: when the `ptr` was calculated as equal
      to the `max_heap_size`. This is an invalid pointer
      since there is no access allowed after the heap limit.
      
      The way to provoke this was to repeatedly allocate
      with sizes which were previously not allocated and
      immediately deallocate right afterwards. What this
      did was to increment the `bumper` with each allocation,
      whilst keeping the `total_size` of the heap `0`.
      If this repeated allocation/deallocation scheme resulted
      in `max_heap_size == ptr` the `ptr` was still returned.
      
      The allocator only checked if the `total_size` was
      still within the `max_heap_size` limits, and not
      if the resulting `ptr` was still within the valid
      heap region.
      
      This commit introduces a check to validate if the
      calculated `ptr` is within the heap.
      
      * Add test for zero byte allocation and document behavior
      
      * Improve code readability by introducing a const
      
      * Fix error message in test
      
      * Apply suggestions from code review
      
      Co-Authored-By: default avatarBastian Köcher <bkchr@users.noreply.github.com>
      
      * Fix code review suggestions
      
      * Replace early return with assertion
      
      * Remove test for zero size allocations
      
      * Shorten test code
      
      * Shorten comment
      
      * Make bump() return Result
      
      * Add comment for bump()
      
      * Remove ambiguous comment
      
      * Replace value with const
      
      * Use proof for panic message
      
      * Fix merge
      
      * Add comment regarding minimum allocation size
      5cb8c0dc
  11. Sep 10, 2019
    • Bastian Köcher's avatar
      First step for generating host externals out of the function definition in `sr-io` (#3567) · 1450719a
      Bastian Köcher authored
      
      * Adds new wrapper traits for wasm executor
      
      * Add new crate `substrate-wasm-interface`
      
      Thew new crate holds types and traits for the communicating between the
      wasm runtime and the host.
      
      * Rewrite externals with new macro etc
      
      * Fix vec initialization
      
      * Make executor tests working
      
      * Remove unused code + warnings
      
      * Introduce `Pointer` and `WordSize` for working with wasm
      
      * Fix tests and compilation
      
      * Fix compilation
      
      * Apply suggestions from code review
      
      Co-Authored-By: default avatarSergei Pepyakin <sergei@parity.io>
      
      * Review feedback
      
      * Remove unused conversions
      
      * Make each host function its own struct
      
      `HostFunctions` now just returns these function structs. Each function
      can be executed by using one of the function structs. The inherent host
      functions are now moved to the "normal" host functions.
      
      * Remove byteorder
      
      * Add floating point types
      
      * Make pointer interface more safe
      
      * Add type alias for wasm-interface Result
      
      * More review comments
      1450719a
  12. Jul 25, 2019
    • Sergey Pepyakin's avatar
      Fair reusing of wasm runtime instances (#3011) · af914e9f
      Sergey Pepyakin authored
      * Add test from original bug report
      
      Original is from @pepyakin
      
       in 3d7b27f3421818e8d6de568e02fbc2947a06246b.
      I adapted it to work with the latest master.
      
      * No longer cleanup module instance
      
      * Replace runtime cache with synchronous clone
      
      * Fix test
      
      * Preserve initial runtime memory and restore it on fetch
      
      * Remove leftover comment
      
      * Fix style
      
      * Improve variable naming
      
      * Replace get_into() with get()
      
      * Handle missing memory export better
      
      * Return earlier when creating runtime first time
      
      * Improve comments
      
      * fmt
      
      * Fix #2967.
      
      * Eradicate `code` from `Error::InvalidCode`
      
      * tidy
      
      * A state snapshot doc.
      
      * Store multiple runtimes by hash.
      
      * Get rid of deref.
      
      * Docs
      
      * Use Self for instantiate_module
      
      * REVERT ME
      
      * Should be ok
      
      * Commit
      
      * Remove dbg
      
      * Use fast-memory's erase
      
      * Clean and undo hacks.
      
      * Introduce a dedicated error for heap_base
      
      * Ban the start function.
      
      * Clean, docs and refactor
      
      * Add rustflags.
      
      * Update Cargo.lock
      
      * Apply Basti's suggestions
      
      Co-Authored-By: default avatarBastian Köcher <bkchr@users.noreply.github.com>
      
      * Rename allocates_huge_stack_array
      
      * Extend TestClientBuilder with set_heap_pages
      
      * Update the test.
      
      * Update core/executor/src/wasm_executor.rs
      
      Co-Authored-By: default avatarBastian Köcher <bkchr@users.noreply.github.com>
      
      * Update core/executor/src/wasm_runtimes_cache.rs
      
      Co-Authored-By: default avatarBastian Köcher <bkchr@users.noreply.github.com>
      
      * Update core/executor/src/error.rs
      
      Co-Authored-By: default avatarBastian Köcher <bkchr@users.noreply.github.com>
      
      * Update core/executor/src/error.rs
      
      Co-Authored-By: default avatarBastian Köcher <bkchr@users.noreply.github.com>
      
      * Fix tests.
      
      * Update cargo-lock
      
      * Use wasmi master
      
      * Use master wasmi
      
      * Move tests.
      
      * Use wasmi crates.io
      
      * Update Cargo.lock
      
      * Fix build.rs
      
      * Bump runtime version
      
      * Revert initial_heap_pages renaming
      
      * Bump wasmi up to 0.5.0
      
      * Bump runtime version
      
      * Don't restore an instance every now and then
      
      * Update core/executor/src/wasm_runtimes_cache.rs
      
      Co-Authored-By: default avatarDemiMarie-parity <48690212+DemiMarie-parity@users.noreply.github.com>
      
      * Propagate error in CacheError
      
      * Clarify the get_heap_base call in instantiation
      
      * Supply --export=__heap_base
      
      See https://reviews.llvm.org/D62744
      
      Co-authored-by: default avatarJim Posen <jim.posen@gmail.com>
      
      * Bump version.
      
      * Use combinators for segments.
      
      * Fix build.rs
      
      * Fix build.rs for runtime-test
      af914e9f
    • DemiMarie-parity's avatar
      Include padding in heap size calculation (#3197) · cfd4ac75
      DemiMarie-parity authored
      Closes #3005
      cfd4ac75
  13. Jun 19, 2019
  14. May 29, 2019
    • DemiMarie-parity's avatar
      Introduce inherent digests (#2466) · c7d1204c
      DemiMarie-parity authored
      
      * Introduce inherent digests
      
      * Implement inherent digests
      
      * fix silly error
      
      * Implementation of inherent digests in BABE
      
      All tests pass. There are still limitations:
      
      1. The runtime strips out inherent digests, so BABE must re-add them.
      2. The test runtime checks that it can re-compute all digests.  It
         can’t, so I had to comment out that test.
      
      * Fix compilation and seal import
      
      Seals were not imported correctly: the pre-digest was imported twice,
      instead of both it and the seal being imported.  Also, other parts of
      the code did not compile due to incomplete refactoring.
      
      * Remove bogus assertion
      
      * Fix testsuite compilation
      
      * Remove unused import
      
      * Fix compiler diagnostics
      
      * Add inherent digest parameters to block constructors
      
      This enforces that inherent digests are added first.
      
      * Fixup Cargo.lock
      
      * Fix build errors
      
      * Re-add an incorrectly removed import
      
      * Bump primitive-types version
      
      * Update Cargo.lock
      
      * Refactoring
      
      * Use inherent digests for AuRa
      
      They do reach the runtime, but get stripped.  I have not figured out
      where.
      
      * Fix compilation errors
      
      * Fix compilation errors due to incorrect types
      
      * Fix whitespace
      
      Suggested-by: default avatarTomasz Drwiega <tomasz@parity.io>
      
      * Add preamble
      
      Suggested-by: default avatarTomasz Drwiega <tomasz@parity.io>
      
      * Fix silly compile error
      
      * Refactor pre-digest finding code into a separate function
      
      * Remove unwanted assertion
      
      It is too likely to bring down the entire blockchain.
      
      Suggested-by: default avatarTomasz Drwiega <tomasz@parity.io>
      
      * Use `find_pre_digest` after runtime, too
      
      Also, use `Member` trait rather than rolling our own requirements.
      
      Suggested-by: default avatarTomasz Drwiega <tomasz@parity.io>
      
      * Fix various warnings
      
      mostly due to upgrading the dependency on `error_chain`.
      
      * Pre-digests nearly complete
      
      This nearly completes the implementation of pre-runtime digests.
      
      * `Seal2` → `Seal` and fix test suite
      
      * Try to fix the storage error
      
      * Try to fix storage (again)
      
      * Fix tests
      
      * Hopefully finish pre-runtime digests
      
      The key is to pass *only* the pre-runtime digests to the runtime.  The
      others must be stripped out by `initialize_block`.
      
      * Fix silly typo
      
      * Fix another silly mistake
      
      * Remove unnecessary filtering of BABE pre-digests
      
      We no longer get duplicate BABE pre-digests, so if they appear, the
      header should be rejected outright.
      
      * Update Cargo.lock files
      
      * Reformatting
      
      * Fix silly typo in inherent digest code
      
      Also, revert `error.rs` files that contained calls to the `error_chain!`
      macro.
      
      * Try to keep the runtime from stripping pre-digests
      
      Currently runs into the “Storage root must match that calculated”
      assertion.
      
      * Don’t compute storage root until storage changes are done.
      
      Also, fix a compilation error.
      
      * Fix compile-time error
      
      * Fix compilation errors
      
      * Fix more compile errors
      
      * Hopefully it compiles this time…
      
      * Fix compilation and add docs
      
      * Prevent BABE from adding duplicate pre-runtime digests
      
      Found by comparing with the AuRa code.  I also did some refactoring.
      
      * Respond to review and fix some warnings
      
      * Delete some dead code introduced earlier
      
      * More dead code goes away
      
      * `ref mut` → `&mut`
      
      * Respond to review and fix some warnings
      
      * Fix compilation error
      
      * Remove unneeded `HashT` type parameter
      
      Suggested-by: default avatarRobert Habermeier <robert@parity.io>
      
      * Remove spurious #[allow(deprecated)]
      
      * Document inherent digest parameter to `build_block`
      
      * Delete `Simple` trait
      
      It wasn’t needed
      
      * delete wrongly added files
      
      * Fix trait bounds
      
      * Digest serialization tests
      
      I also did some reformatting and cleanup.
      
      * Apply suggestions from code review
      
      Reformatting
      
      Co-Authored-By: default avatarAndré Silva <andre.beat@gmail.com>
      
      * Swap two arguments to `propose` and `propose_with`
      
      Also, remove some needless unsafe code.
      
      * Remove bogus `#![allow(deprecated)]` annotations
      
      With the removal of the deprecated `Seal` variant, these are not needed.
      
      * Add a missing `#[allow(deprecated)]` in the AuRa tests
      
      * Fix silly compile error
      
      * Fix silly compiler error
      
      RLS did not tell me that I hadn’t fixed `babe/lib.rs`, so I missed it.
      
      * Fixes made automatically by Cargo
      c7d1204c
  15. Feb 10, 2019
    • Michael Müller's avatar
      Replace unwrap with expect (#1684) · de4bb87b
      Michael Müller authored
      * Replace unwrap with expect
      
      * Move expect to call sites
      
      * Bubble errors up and trap
      
      * Update wasm
      
      * Update invalid pointer
      
      * Remove test which makes problems in CI
      
      * Check for underflow
      de4bb87b
  16. Feb 04, 2019
    • Michael Müller's avatar
      Replace allocator with freeing-bump allocator (#1656) · bf49b00c
      Michael Müller authored
      * Link substrate issue tracker in panic
      
      * Replace allocator with freeing-bump allocator
      
      * Revert me: Panic on double allocate/free
      
      * Revert me: Add shallow benchmark for a first impression
      
      * Revert "Revert me: Add shallow benchmark for a first impression"
      
      This reverts commit 5f0d4df39395eb55c9ec2d6fe1ed992533475fec.
      
      * Revert "Revert me: Panic on double allocate/free"
      
      This reverts commit a114df7d6cfc21d60af396ccca02e5c8205db6ce.
      
      * Rename heap to FreeingBumpHeapAllocator
      
      * Rename heap.rs to allocator.rs
      
      * Use sandbox heap
      
      * Move functions
      
      * Move variables into constructor
      
      * Revert "Move variables into constructor"
      
      This reverts commit f46fa0d0cdf4ea97760ccce58003b0d33f433743.
      
      * Remove unnecessary casts
      
      * Add comment for new parameter
      
      * Improve typing
      
      * Move variables into constructor
      
      * Avoid dynamic allocation
      
      * Remove unused variables
      
      * Revert "Link substrate issue tracker in panic"
      
      This reverts commit 32dfa1d02bcf881d1d514a930fcc0fdf3c5f8e08.
      
      In the meantime this was fixed in https://github.com/paritytech/substrate/pull/1667.
      
      * Improve naming
      
      * Only assert in debug mode
      
      * Remove dynamic allocation
      bf49b00c