0.14.0 released

Saturday, May 06, 2017 | Posted in Release

0.14.0 closes many high priority bugs across all platforms. You should upgrade as soon as possible. This is a breaking release. You will need to update your code.

PR #1886 which fixes 3 “garbage collection” bugs. They were not, however, garbage collection bugs. This problem was a single error in the hashmap implementation that underlies much of the Pony runtime. Interested in learning more about the Pony runtime? The commit comment for the PR makes for interesting reading.

This release also includes RFC #23. RFC #23 changes the Pony standard library to force the implementation of network error handling code. From the RFC motivation:

Prevent Pony users from creating “silent failure” scenarios with their network code. TCPConnectionNotify, UDPNotify, and TCPListenNotify will all, by default, silently eat connection failures.

When you are upgrading, if you have any code that uses TCPConnectionNotify, UDPNotify, or TCPListenNotify and you didn’t implement:

  • TCPConnectionNotify.connect_failed
  • UDPNotify.not_listening
  • TCPListenNotify.not_listening

You will be required by the compiler to implement them. Adding something like:

fun ref connect_failed(conn: TCPConnection ref) =>
  """
  Intentionally ignoring the connection failing!
  WHEEEEEEEEEE! YOLO! Data loss is going to occur. ¯\_(ツ)_/¯
  """
  None

will get you the previous “silently eat errors” behavior. But, at least this time, you’ll be doing it intentionally.

Fixed

  • Compiler error instead of crash for invalid this-dot reference in a trait. (PR #1879)
  • Compiler error instead of crash for too few args to constructor in case pattern. (PR #1880)
  • Pony runtime hashmap bug that resulted in issues #1483, #1781, and #1872. (PR #1886)
  • Compiler crash when compiling to a library (Issue #1881)(PR #1890)

Changed

  • TCPConnectionNotify.connect_failed, UDPNotify.not_listening, TCPListenNotify.not_listening no longer have default implementation. The programmer is now required to implement error handling or consciously choose to ignore. (PR #1853)

AUTHOR

Sean T. Allen

Sean is a member of the Pony core team. His turn-ons include programming languages, distributed computing, Hiwatt amplifiers, and Fender Telecasters. His turn-offs include mayonnaise, stirring yogurt, and sloppy code. He is one of the authors of Storm Applied, and VP of Engineering at Wallaroo Labs.