Skip to content

2.1.0

Choose a tag to compare

@caffeine-ci-bot caffeine-ci-bot released this 21 Oct 15:23
· 15 commits to master since this release
9f81806
  • motoko (moc)

    • feat: added Prim.subnetSelfNodeCount() : Nat32 and
      Prim.costHttpRequestV2(params : Blob) : Nat, exposing
      ic0.subnet_self_node_count and ic0.cost_http_request_v2 for
      pay-as-you-go HTTPS outcall pricing (#6461).

    • bugfix: an await or await? of a future whose reply callback already
      trapped now runs the awaiting computation's finally clauses instead
      of suspending forever. This includes Candid decoding failures before
      a waiter was registered (#5909, #6469).

    • bugfix: timers no longer stop for good when a canister runs short of
      cycles. If the self-call that dispatches expired timers was rejected
      before it ran (for example, IC0207 out of cycles), no timer fired again,
      even after a top-up. A one-shot timer whose job was rejected that way is
      now retried instead of dropped (#6440).

    • bugfix: the compiler no longer crashes with "Ill-typed intermediate code
      after Async Lowering" when an async or async* value is widened, for
      example from async (Nat, Nat) to async Any, or from async* None to
      async* () as in await* async* throw e (#6451).

    • bugfix: fixed an out-of-bounds access in the upgrade compatibility check
      for a shared function stored in a mutable (aliased) position, such as a
      stable var of [var (shared R -> ())]. Its parameters are checked under
      type invariance, and the memoization cache indexed the old and new type
      tables transposed, which could read past the end of the cache or wrongly
      accept an incompatible upgrade once the two versions had different
      type-table sizes (#6463).

    • M0276 no longer reports a comparison whose operands both already have the
      single-valued type, such as status == #active with
      status : { #active }: the type was declared that way on purpose. It
      still reports operands of different types compared at Any or {}, and
      a literal compared with an Any value, as in x == 10. Its message now
      names the operand types (#6470).