I enjoyed reading this, Pony seems like a useful language in the situations they describe.
As a meta thought: I would love to read some “we tried X and it was a big mistake” posts. They are kind of hard to write though because you inevitably get the 100s of “you’re using X wrong” comments. I could write a handful of posts why choosing Python or Java ended up being a poor decision but the slew of responses might just be more pain than it’s worth.
But on another topic, @SeanTAllen, do you have any comparison for your choice of Pony vs Erlang? I can see a few things you want that Erlang would not be great for, for example the FFI is kind of awkward. If you haven’t looked at Erlang deeply enough to say, that’s fine too, there are a lot more options to evaluate out there than time to evaluate them.
I love Erlang. It was definitely a consideration. We weren’t sure at the time how we were going to support different languages. One strike against Erlang was that uncertainy. The big strike though was talking about what we wanted to do performance wise with friends from Basho. They expressed doubt that we could get Erlang to do what we wanted. That was really what made us look elsewhere.
Looking back now, the interfacing with other languages is what would have caused us the most pain with Erlang.
Pony hasn’t been without pain for us. Really, we didn’t choose between Erlang and Pony. Our final decision was between Pony and using something like C/C++/Rust and writing a runtime ourselves.
On the other note, I’d love to see “we tried X and it was a big mistake” posts as well. Along with all the caveats that you mentioned. Some of my favorite offline conversations with colleagues are discussing scenarios where we used a great tool in a way it wasn’t good for and what we learned from the experience.
Do you know how well supported FreeBSD is with pony? I don’t see it in pkg but the source looks like it has capsacium support which is interesting to see.
As in, there’s no CI for it. We don’t do anything to intentionally break it.
But as far as I know, not a lot of people are using it on FreeBSD so breakage is always possible.
It’s definitely a “build from source” proposition at the moment. I’m very hopeful that someone can take on a more active Pony/FreeBSD role.
Cool, I’m playing with it now. No promises but I’ve verified all the tests pass :)
I wrote a small amount of pony, and it seems like an incredibly well designed language. The biggest downside to me was the awkwardness of having to fully unwind the stack to yield an actor, but for event driven programs it worked well, and it gives huge satisfaction knowing the code that compiles won’t crash.
I’ve read alot of the pony docs because I find it very interesting. But one high level question I have is does pony have any guarantees that are better than what you’d get with rust’s ownership system?
Because as cool as pony is, I’m trying to figure out how to allocate my free time and rust still seems to fill the “try out new languages with new ideas” bucket since due to a race-free type system combined with the funding and community that makes me think I’ll be able to use it at a job without feeling like I’ll leave the company high and dry in 12 months.
The guarantees are pretty similar but the two languages approach them from very different angles.
I’ve found Pony’s reference capabilities to be pretty easy to reason about from the time I picked it up. I can’t say the same for Rust’s ownership system. That said, in the end you can accomplish the same goals with them. How you get there is going to be rather different.
combining ‘rust like’ guarantees with a (fast actor local) garbage collector seems like a winning combination to me.
It’s not about expressiveness.
It’s not about expressiveness.
Doesn’t expressiveness come in handy when trying to solve hard problems?
Somehow disappointed the programming language wasn’t Wallaby or Kangaroo…