Last Week in Pony May 21, 2023
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 rambled on for a couple hours and we were kind of all over the place. Attendees were Sean T. Allen, Adrian Boyko, Red Davies, and Dipin Hora. When I say we were all over the place, I mean it. We jumped around across a variety of topics, from identifier rules in Pony and if they have “a reason” to Structuralism to if it is possible or desirable to add features to a programming language to make it popular to a discussion of Derek Sivers’ “How to Start a Movement” and still more.
Sometimes Office Hours is firmly locked in on Pony, sometimes it is mostly about helping someone with a problem, and sometimes, like this past week, it takes a more “philosophical bent”.
If you’d be interested in attending an Office Hours in the future, 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.
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 diving back into the Pony Tutorial, specifically we are going to look at Object Capabilities.
For those among us who are unfamiliar, Pony’s object capabilities are part of its security design. Simply put, having a reference to an object in Pony implies authority to use that object. Put with more nuance, since Pony has no pointer arithmetic and is both type-safe and memory-safe it is not possible to create objects out nothing – all objects must be created from some lineage of authority. Practically speaking this results in a pattern whereby a package designer will define reasonable levels of authority and users should use the most restrictive authority necessary. Why? From a package design perspective, we want to allow users options that match their needs (see
net/auth.pony for a good example of this). From a user perspective, we want to restrict what a package has the authority to do – if we never restrict authority we end up with
AmbientAuth everywhere which is effectively “no capability security” at all (looking again at
net/auth.pony you will see the “baseline” authority is
NetAuth named after
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!