Skip to content
  1. Oct 25, 2023
    • Liam Aharon's avatar
      Small optimisation to `--profile dev` wasm builds (#1851) · ff3a3bca
      Liam Aharon authored
      `wasm-builder` was adjusted to default to building wasm blobs in
      `release` mode even when cargo is in `debug` because `debug` wasm is too
      slow.
      
      A side effect of this was `.compact` and `.compact.compressed` getting
      built when the dev is running build in `debug`, adding ~5s to the build
      time of every wasm runtime.
      
      I think it's reasonable to assume if the dev is running `debug` build
      they want to optimise speed and do not care about the size of the wasm
      binary. Compacting a blob has negligible impact on its actual
      performance.
      
      In this PR, I adjusted the behavior of the wasm builder so it does not
      produce `.compact` or `.compact.compressed` wasm when the user is
      running in `debug`. The builder will continue to produce the bloaty wasm
      in release mode unless it is overriden with an env var.
      
      As suggested by @koute in review, also refactored the
      `maybe_compact_wasm_and_copy_blobs` into multiple funuctions, and
      renamed things to better support RISC-V in the future.
      
      ---
      
      There is no `T-runtime` label so @KiChjang
      
       told me to put `T1-FRAME` :)
      
      ---------
      
      Co-authored-by: default avatarKoute <[email protected]>
      ff3a3bca
  2. Oct 24, 2023
    • Brian Anderson's avatar
      Update wasm-opt to 0.116 (#1995) · 39c04fdd
      Brian Anderson authored
      Just keeping wasm-opt up to date.
      
      I don't see anything in the [binaryen
      changelog](https://github.com/WebAssembly/binaryen/blob/main/CHANGELOG.md)
      that should affect substrate.
      
      This release includes dwarf passes that were accidentally omitted from
      previous versions of the wasm-opt crate. I suspect this will not affect
      substrate as their omission hasn't been noticed until recently.
      39c04fdd
  3. Oct 23, 2023
    • aj3n's avatar
      wasm-builder: manually set CARGO_TARGET_DIR (#1951) · 38c3c625
      aj3n authored
      ✄
      -----------------------------------------------------------------------------
      
      Thank you for your Pull Request! 🙏 Please make sure it follows the
      contribution guidelines outlined in
      [this
      document](https://github.com/paritytech/polkadot-sdk/blob/master/docs/CONTRIBUTING.md)
      and fill
      out the sections below. Once you're ready to submit your PR for review,
      please
      delete this section and leave only the text under the "Description"
      heading.
      
      # Description
      
      *Please include a summary of the changes and the related issue. Please
      also include relevant motivation and context,
      including:*
      
      - What does this PR do?
      
      make 'substrate-wasm-builder' manually set 'CARGO_TARGET_DIR' to
      '$project_dir/target' while building instead of unset
      'CARGO_TARGET_DIR';
      
      - Why are these changes needed?
      
      If you using this in the `build.rs` with following content in your
      `~/.cargo/config.toml':
      
          [build]
          target-dir = "target"
      
      the build process will stuck because of dead lock -- two `cargo build`
      on same target directory in the same time.
      There is already an attempt to avoid such dead lock by unset the
      `CARGO_TARGET_DIR`, but for users with config above in his build
      enviroment (like me), this workaround won't work.
      
      - How were these changes implemented and what do they affect?
      
      Instead of unset 'CARGO_TARGET_DIR', we set 'CARGO_TARGET_DIR' to
      '$project/target/', which is already assumed to be true by rest of the
      code.
      
      *Use [Github semantic
      
      linking](https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword)
      to address any open issues this PR relates to or closes.*
      
      Fixes # (issue number, *if applicable*)
      
      Closes # (issue number, *if applicable*)
      
      # Checklist
      
      - [x] My PR includes a detailed description as outlined in the
      "Description" section above
      - [ ] My PR follows the [labeling requirements](CONTRIBUTING.md#Process)
      of this project (at minimum one label for `T`
        required)
      - [ ] I have made corresponding changes to the documentation (if
      applicable)
      - [ ] I have added tests that prove my fix is effective or that my
      feature works (if applicable)
      
      You can remove the "Checklist" section once all have been checked. Thank
      you for your contribution!
      
      ✄
      -----------------------------------------------------------------------------
      
      I have built my project with this fix, there's still some warnings with
      `build.target-dir` set but the building process won't hang.
      I haven't found related issue in this repo. But I did find one issue
      [here](https://github.com/substrate-developer-hub/substrate-node-template/issues/116).
      38c3c625
  4. Sep 13, 2023
  5. Sep 04, 2023
    • Chevdor's avatar
      Markdown linter (#1309) · a30092ab
      Chevdor authored
      
      
      * Add markdown linting
      
      - add linter default rules
      - adapt rules to current code
      - fix the code for linting to pass
      - add CI check
      
      fix #1243
      
      * Fix markdown for Substrate
      * Fix tooling install
      * Fix workflow
      * Add documentation
      * Remove trailing spaces
      * Update .github/.markdownlint.yaml
      
      Co-authored-by: default avatarOliver Tale-Yazdi <[email protected]>
      * Fix mangled markdown/lists
      * Fix captalization issues on known words
      a30092ab
  6. Aug 29, 2023
  7. Aug 25, 2023
  8. Aug 16, 2023
  9. Jul 17, 2023
  10. Jul 03, 2023
    • Bastian Köcher's avatar
      wasm-builder: Make `hash` and `date` optional (#14490) · 42243fb3
      Bastian Köcher authored
      * wasm-builder: Make `hash` and `date` optional
      
      Apparently there are installations where the `hash` and `date` is optional.
      
      Closes: https://github.com/paritytech/substrate/issues/14335
      
      * ".git/.scripts/commands/fmt/fmt.sh"
      
      ---------
      
      Co-authored-by: command-bot <>
      42243fb3
  11. Jun 29, 2023
  12. May 28, 2023
    • Bastian Köcher's avatar
      wasm-builder: Enforce `runtime_version` wasm section (#14228) · 6947b334
      Bastian Köcher authored
      * wasm-builder: Enforce `runtime_version` wasm section
      
      This pr changes the `wasm-builder` to enforce the `runtime_version` wasm section. This wasm section
      is being created by the `sp_version::runtime_version` attribute macro. This attribute macro now
      exists since quite some time and `runtime_version` also is the only way for parachains to support
      reading the `RuntimeVersion` from the runtime.
      
      \# Disabling the check
      
      By default the `WasmBuilder` will now check for this wasm section and if not found, exit with an
      error. However, there are situations where you may want to disable this check (like for tests). In
      this case there exists the `disable_runtime_version_section_check` function.
      
      ```
      WasmBuilder::new()
         ...
         ...
         ...
         .disable_runtime_version_section_check()
         .build()
      ```
      
      By using this method you get back the old behavior.
      
      * Review comment
      
      * Fix
      
      * Fix issue with `enum-as-inner`
      6947b334
  13. May 05, 2023
  14. Apr 14, 2023
  15. Apr 13, 2023
  16. Apr 03, 2023
  17. Mar 30, 2023
  18. Mar 29, 2023
    • Bastian Köcher's avatar
      Support stable rust for compiling the runtime (#13580) · d338e9a1
      Bastian Köcher authored
      * Support stable rust for compiling the runtime
      
      This pull request brings support for compiling the runtime with stable Rust. This requires at least
      rust 1.68.0 to work on stable. The code is written in a way that it is backwards compatible and
      should automatically work when someone compiles with 1.68.0+ stable.
      
      * We always support nightlies!
      
      * 🤦
      
      
      
      * Sort by version
      
      * Review feedback
      
      * Review feedback
      
      * Fix version parsing
      
      * Apply suggestions from code review
      
      Co-authored-by: default avatarKoute <[email protected]>
      
      ---------
      
      Co-authored-by: default avatarKoute <[email protected]>
      d338e9a1
  19. Feb 21, 2023
    • Vivek Pandya's avatar
      Remove years from copyright notes. (#13415) · bc53b9a0
      Vivek Pandya authored
      * Change copyright year to 2023 from 2022
      
      * Fix incorrect update of copyright year
      
      * Remove years from copy right header
      
      * Fix remaining files
      
      * Fix typo in a header and remove update-copyright.sh
      bc53b9a0
  20. Feb 06, 2023
  21. Jan 24, 2023
  22. Jan 06, 2023
  23. Dec 13, 2022
    • Bastian Köcher's avatar
      Fixup some wrong dependencies (#12899) · c0c8d630
      Bastian Köcher authored
      * Fixup some wrong dependencies
      
      Dev dependencies should not appear in the feature list. If features are required, they should be
      directly enabled for the `dev-dependency`.
      
      * More fixups
      
      * Fix fix
      
      * Remove deprecated feature
      
      * Make all work properly and nice!!
      
      * FMT
      
      * Fix formatting
      c0c8d630
  24. Dec 07, 2022
    • João Paulo Silva de Souza's avatar
      Implement crate publishing on CI (#12768) · 8751f88f
      João Paulo Silva de Souza authored
      
      
      * implement crate publishing from CI
      
      * fix indentation
      
      * use resource_group for job exclusivity
      
      ensure that at most one instance of the publish-crates job is running at any given time to prevent race conditions
      
      * correct publish = false
      
      * Remove YAML anchors as GitLab's `extends:` doesn't need it
      
      * Temporarily force cache upload for the new jobs
      
      * Revert `RUSTY_CACHIER_FORCE_UPLOAD`
      
      * pin libp2p-tcp=0.37.0 for sc-telemetry
      
      * Revert "pin libp2p-tcp=0.37.0 for sc-telemetry"
      
      This reverts commit 29146bfad6c31e8cf0e2f17ad92a71bb81a373af.
      
      * always collect generated crates
      
      * increase timeout for publish-crates-template
      
      * Force upload the new job cache again
      
      * Revert "Force upload the new job cache again"
      
      This reverts commit 5a5feee1b2c51fdef768b25a76be4c3949ec1c99.
      
      * reformat
      
      * improve timeout explanation
      
      * s/usual/average
      
      Co-authored-by: Vladimir Istyufeev's avatarVladimir Istyufeev <[email protected]>
      8751f88f
  25. Oct 30, 2022
    • Alexander Theißen's avatar
      WIP: Replace `wasm-gc` with `wasm-opt` (#12280) · 9c748c74
      Alexander Theißen authored
      * Use wasm-opt on runtime
      
      * Optimize for size
      
      * Simplify fn compact_wasm_file
      
      * Run a lighter pass for non production builds
      
      * Disable optimizations and keep name section
      
      * Update wasm-opt
      
      * Remove dward sections
      
      * Update wasm-opt
      
      * Update wasm-opt
      9c748c74
  26. Aug 02, 2022
  27. Jul 25, 2022
  28. Jun 22, 2022
  29. Jun 14, 2022
    • Bastian Köcher's avatar
      wasm-builder: Fix constant re-running of `build.rs` scripts. (#11624) · d70d5892
      Bastian Köcher authored
      Recently we added the wasm binaries to the `rerun-if-changed` list. The problem with that is that
      they have a later mtime than the `invoked.timestamp` file and this file's mtime is used to determine
      if the `build.rs` script needs to be re-run. The solution to this is that we copy the mtime of this
      `invoked.timestamp` file and add it to the wasm binaries. Then cargo/rustc doesn't constantly wants
      to rerun the `build.rs` script.
      d70d5892
  30. Jun 02, 2022
  31. May 04, 2022
  32. Apr 30, 2022
  33. Mar 19, 2022
  34. Feb 14, 2022
    • Bastian Köcher's avatar
      wasm-builder: Support latest nightly (#10837) · 47622d69
      Bastian Köcher authored
      * wasm-builder: Support latest nightly
      
      With latest nightly, aka rust version 1.60+ namespaced features are added. This changes the handling
      of optional dependencies. We currently have features that enable optional dependencies when `std` is
      enabled. This was before no problem, but now the wasm-builder detects them as enabled. To support
      the transition period until 1.60 is released as stable, this pr adds an heuristic to not enable these
      optional crates in the wasm build when they are enabled in the `std` feature. This heuristic fails
      when someones enables these optional dependencies from the outside as well as via the `std` feature,
      however we hope that no one is doing this at the moment. When namespaced features are enabled, these
      dependencies needs to be enabled using `dep:dependency-name` to solve this properly.
      
      https://doc.rust-lang.org/cargo/reference/unstable.html#namespaced-features
      
      * Remove accidentally added features
      47622d69
  35. Feb 02, 2022
  36. Jan 31, 2022
  37. Jan 22, 2022
  38. Jan 21, 2022
    • Bastian Köcher's avatar
      wasm-builder: Improve workspace handling (#10700) · f41ef340
      Bastian Köcher authored
      When building a wasm binary from a different repo inside a local workspace, we did not used the
      correct `Cargo.toml` to find the correct patches and features. The solution to this is to just walk
      up from the target directory until we find the workspace we are currently compiling. If this
      heuristic isn't working, we print a warning and let the user set an env variable
      `WASM_BUILD_WORKSPACE_HINT` to tell the `wasm-builder` where the actual workspace is.
      f41ef340
  39. Jan 03, 2022
  40. Nov 18, 2021