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
TCPListenNotify and you didn’t implement:
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.
- 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)
- 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)