Skip to content

Last Week in Pony July 2, 2023

A slow lead up to a long weekend.

Items of Note

Pony Development Sync

There was no recorded development sync this past week although Sean, Adrian, Dipin, and Red did chat for a bit.

July 4th Pony Development Sync Cancelled

Next week’s Pony Development Sync would fall on a national holiday in the US. Given the likely very low turnout, we’ve cancelled the sync.

No ponyc Release This June

Normally we have a monthly release of ponyc. However, there’s not really any changes worth releasing at this point so, there won’t be a June release of ponyc. The next release is tentatively scheduled for the end of July assuming that:

  • No critical issues are fixed before the end of July
  • Something worth releasing is merged is merged before the end of July

Community Resource Highlight

We like to take a moment in each Last Week in Pony to highlight a community resource. There are many community resources that can go unappreciated until just the right time when someone hops into the Ponylang Zulip asking a question or facing a problem we have all had at one time or another. Well here in Last Week in Pony, we make it just the right time to highlight one of our excellent community resources.

This week we are going to look at one of the papers available at https://www.ponylang.io/community/#papers – specifically we are going to look at A String of Ponies!

This paper is focused on all aspects of what it would take to go from the Concurrent Pony of today to full-fledged Distributed Pony! It is well worth a full read, but today let’s focus on Distributed Pony Termination. As a reminder, Pony today terminates when it has reached a state of quiescence whereby there is no remaining work (see When do programs exit? for more information). This presents a major problem in a distributed environment: how do we differentiate between locally running out of work and globally running out of work? This is far from easy to fix. This section includes two attempts at designing a solution, the first is broken while the second work. As with many aspects of Pony, the working solution leverages message causality. By defining a termination detector and leveraging Pony’s existing causal messaging we can identify when to terminate the program. The result of this emphasis on causal messaging in a distributed system is a tree network topology – the chapter that directly follows from Termination, investigating this topic further is left as a exercise to the reader!


Last Week In Pony is a weekly blog post to catch you up on the latest news for the Pony programming language. To learn more about Pony, check out our website, our Twitter account @ponylang, or our Zulip community.

Got something you think should be featured? There’s a GitHub issue for that! Add a comment to the open “Last Week in Pony” issue.

Interested in making a change, or keeping up with changes to Pony? Check out the RFC repo. Contributors welcome!