Skip to content

@SeanTAllen SeanTAllen released this Jun 10, 2018

Pony 0.23.0 is primarily a bug fix release but does also include some additional changes. Upgrading is recommended. There is a single breaking change caused by the implementation of RFC 56.

RFC 56: Make buffered.reader.line return String iso^

buffered.Reader.line() has been changed to return a String iso^ instead of a String val. This is more powerful as it allows you to mutate the lines returned in place, which was impossible with String val. Nonetheless this is a breaking change. It will break code that relies on type inference, avoiding stating the type for the variable the line is assigned to:

let line = reader.line()?
process_line(line)

These code bases need to adapt in one of two ways:

  • mark the line variable explicitly as String val:

    let line: String val = reader.line()?
    process_line(line)
  • consume the variable upon usage, as it is iso now:

    let line = reader.line()?
    process_line(consume line)

[0.23.0] - 2018-06-10

Fixed

  • Fix File.writev and File.flush in cases where the IO vector exceeds IOV_MAX. (PR #2771)
  • Fix incorrect tuple handling (PR #2763)
  • Fix Promise bug where join() element's reject doesn't reject the entire join (PR #2770)

Added

  • Add Integer.bit_reverse, exposing the llvm.bitreverse intrinsic. (PR #2710)

Changed

  • RFC 56: Make buffered.reader.line return String iso^ (PR #2756)
Assets 2