0.31.0 Released

Saturday, August 31, 2019 | Posted in Release

Pony version 0.31.0 is now available. This is a “smaller” release than some recent ones. Most of the changes in Pony lately have been happening behind the scenes.

0.31.0 is a breaking release. There’s a small change to Map.sub that might break your code. Details follow. There are no serious bugs fixed in 0.31.0 so you can upgrade at your leisure.

Remove unnecessary argument to Map.sub


let m: Map[String, U32] = Map[String, U32]
m.insert("one", 1)
m.insert("two", 2)
let m2 = m - ("two", 3132047) // removes ("two", 2) from the Map


let m: Map[String, U32] = Map[String, U32]
m.insert("one", 1)
m.insert("two", 2)
let m2 = m - "two"

Add proxy_via(host: String, service: String): (String, String) to TCPConnectionNotify

This function is called before the initial TCP connection is made, allowing the TCPConnectionNotify to alter the target of the connection. This enables a TCPConnectionNotify implementation to handle the proxy handshake and redirect traffic via that proxy.

It is optional to implement, with the default changing nothing.

It is recommended that TCP client creators add a parameter to their constructors, with the default of NoProxy and to wrap their TCPConnectionNotify which enables users to use proxies.

actor MyClient
  new create(env: Env, host: String, service: String, proxy: Proxy = NoProxy) ? =>
    TCPConnection = TCPConnection.create(
        env.root as AmbientAuth,


  • Fix static linking issue by changing the link order (PR #3259)


  • Add --link-ldcmd command line argument for overriding the ld command used for linking (PR #3259)
  • Make builds with musl on glibc systems possible (PR #3263)
  • Add proxy_via(destination_host, destination_service) to TCPConnectionNotify to allow TCP handlers to change the hostname & service from a TCPConnectionNotify before connecting (PR #3230)
  • Add add and sub to collections/persistent/Map (PR #3275)


  • Remove unnecessary argument to Map.sub (PR #3275)
  • No longer supply AppImage as a release format (PR #3288)


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.