Skip to content

v1.6.0

Compare
Choose a tag to compare
@breathx breathx released this 24 Sep 10:45
· 50 commits to master since this release
7d1f0f9

Release v1.6.0 changes

  • Crates versions bumped to "v1.6.0", runtime spec version bumped to 1600 (#4249);
  • Weights of extrinsic and WASM calls WERE updated (#4245), schedule version bumped to 1600 (#4249).

Important

📖 With this release requirement to minimal stable rust version to compile gear crates (such as gstd) was bumped from v1.80 to v1.81 in order to fix panic info message parsing (#4098).

Tip

To update your stable compiler, run rustup update stable.

Update requirements

Name Character
JS clients 🟡 Recommended (calculate_reply call)
Programs 🟡 Recommended (gtest code)
Node bin 🟡 Recommended (modules serialisation)

Userspace

📚 gsdk and gclient now support voucher operations (#4129);

Tip

Usage example:

#[tokio::test]
async fn sample() -> Result<()> {
    // Creating gear api.
    let api = GearApi::dev().await?;

    // Issue voucher
    let (voucher_id, ..) = api.issue_voucher(/* voucher params */).await?;

    // Upload code with voucher
    let (code_id, _) = api
        .upload_code_with_voucher(voucher_id, WASM_BINARY)
        .await?;
}

📚 subxt dependency bumped to v0.37.0 (#4151);


📚 gear-wasm-builder now can check reentrancy of different versions of the same dependency gstd while building (#4159);

Tip

You can banned list with __GEAR_WASM_BUILDER_DENIED_DUPLICATE_CRATES env variable.


📚 gear-wasm-builder::build() now returns paths to artefacts (#4209);


📚 gsdk now based on builder pattern (#4225);

Tip

- Api::new_with_timeout(endpoint.as_deref(), timeout)

+ Api::builder()
+     .timeout(self.timeout())
+     .build(endpoint.as_deref())

📚gear-wasm-builder now builds WASMs with -Ctarget-cpu=mvp to match actual changes in executors, parsers and upcoming rust releases, solving problem of compiling with beta (#4247).

Runtime

📚 Added governance-ruled option to split gas fees between block producers and treasury (#3652);


📚 Modules serialisation on node side has been optimised (#4055);

Tip

This update will make computations easier for your machine.


📚 Now reservations that were just created and unreserved free locked gas back to execution (#4165);


📚 Previous pallet_gear_voucher::call_deprecated was totally removed from the runtime (#4168);


📚Syscalls that send input bytes now have more internal assertions and return error on out of bounds (#4186);


📚 Serialisation of payload bytes of ReplyInfo type, returned from gear_calculateReplyForHandle rpc call, replaced with hex (#4238).

Important

This may broke your clients, make sure to support hex parsing.

Key feature

🔥📖 gtest has received a significant update, matching it much closer to actual runtime:

  • It now uses real weights from runtime (#4148);
  • Block execution model refined with similar from runtime (#4119);

Tip

It's no longer execute message in place of its sending. You need to manually rotate blocks.

- let res = prog.send_bytes(from, b"Let's go!");
- assert!(!res.main_failed());

+ let mid = prog.send_bytes(from, b"Let's go!"); // send message
+ let res = system.run_next_block(); // run blocks to get run results 
+ assert!(res.succeed.contains(&mid)); // success assert 
  • Value and existential deposit management improved to match runtime (#4111);
  • Delayed sendings (dispatch stash), mailbox, waitlist, rent charging and message queue processing are also adjusted (#4157, #4193, #4194, #4200, #4207);
  • Reservations management now matches runtime (#4196);
  • Mocks bugs are fixed (#4220);
  • Usage panics are more user friendly (#4223).

Full Changelog: v1.5.0...v1.6.0