Last Week in Pony April 2, 2023
There wasn’t a ton of “above ground” activity in Pony this week, although Sean and Joe have been working on fixing a couple of compiler bugs. While you wait for a Last Week in Pony that includes news of those bugs being fixed and the ponyc release that includes them, we offer you this smaller Last Week in Pony and suggest you get reading right after you put on some Aretha.
Items of Note
We have an open Zoom meeting every Friday for the community to get together and well, do whatever they want. In theory, Sean T. Allen “owns” the meeting and will often set an agenda. Anyone is welcome to show up and participate. Got a Pony related problem you need help solving and prefer to do it synchronously? Give Office Hours a try.
Office hours this week covered a few topics but most of the time was Sean, Adrian, Red, and Nicolai working to address two questions that remained unanswered in the beginner help Zulip stream.
Given that we generally don’t have a super detailed accounting of Office Hours (unless Adrian Boyko has the time to do an awesome write-up), you should join some time, there’s a calendar you can subscribe to to stay up-to-date with the schedule. We do our best to keep the calendar up-to-date.
And if it doesn’t sound interesting, you can join and steer the conversation in directions you find interesting, so really, there’s no excuse to not attend!
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 highlighting the Pony Tutorial; specifically we are going to look at Pony’s nominal versus structural typing!
Pony has two ways of subtyping: traits and interfaces, the former is nominal typing, while the latter is structural typing. But what does this mean? Nominal typing via a trait declares the relationship between the concrete class/type and the subtype trait at the definition site – we name the subtype as part of the definition, hence nominal typing. Meanwhile, structural typing via an interface declares what shape a concrete class must take in order to be treated like the subtype in specific instances. The trade off here is that of default methods versus an open world typing. A trait, by being nominal, is declared and therefore picks up on any default methods that are part of the trait (there is a useful pattern that uses default private methods). An interface, by being structural, allows defining only the relevant portions of a type so any number of concrete classes/types can be made compliant.
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!