[HN Gopher] Pony, Actors, Causality, Types, and Garbage Collection
       ___________________________________________________________________
        
       Pony, Actors, Causality, Types, and Garbage Collection
        
       Author : pjmlp
       Score  : 51 points
       Date   : 2020-09-07 10:52 UTC (12 hours ago)
        
 (HTM) web link (www.infoq.com)
 (TXT) w3m dump (www.infoq.com)
        
       | Thaxll wrote:
       | What's the status with Wallaroo Labs and Pony, are they still
       | using the language?
        
       | posnet wrote:
       | https://github.com/WallarooLabs/wallaroo is probably the largest
       | example of an open source pony project.
        
       | ProfHewitt wrote:
       | Actors are described here:
       | 
       | https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3418003
        
       | devmunchies wrote:
       | Judging from github contributions and user profiles it looks like
       | the creator, Sylvan Clebsch, works in the Microsoft Research Lab,
       | but he isn't involved anymore. Someone else working at Microsoft,
       | Sean Allen, is the new owner?
       | 
       | https://github.com/ponylang/ponyc/graphs/contributors
       | 
       | Is MSFT involved with pony (that'd be huge) or is this just a
       | MSFT employee side project?
        
         | spooneybarger wrote:
         | Hi Sean Allen here. Pony core team member. Friends with Sylvan
         | since 1988.
         | 
         | Sylvan is still involved with Pony but he doesn't contribute
         | directly to the codebase these days.
         | 
         | Microsoft isn't involved with Pony- it's still an all-volunteer
         | project. A number of people associated with/working on Pony are
         | also part of the Verona project from Microsoft Research.
         | 
         | There's a lot of cross fertilization going on between Verona
         | and Pony. A number of interesting ideas from Verona will
         | probably find their way back into Pony (although many of them
         | are "below the covers" so folks probably won't be aware).
         | 
         | The current Pony core team can be seen here:
         | https://github.com/orgs/ponylang/teams/core/members
        
         | pjmlp wrote:
         | Sylvan Clebsch now is on Project Verona, alongside David
         | Chisnall that used to contribute to GNUStep and also researcher
         | on CHERI CPU.
         | 
         | https://www.microsoft.com/en-us/research/project/project-ver...
         | 
         | The Imperial College hosts a Microsoft Research unit.
        
           | devmunchies wrote:
           | wow so many languages being researched/developed at
           | microsoft. There's this one too:
           | https://www.microsoft.com/en-us/research/project/bosque-
           | prog...
        
       | ssivark wrote:
       | Is there a clear explanation of how Pony's concurrency (actor)
       | model is different from Erlang/Elixir, and what implications that
       | has in practice?
        
         | rkallos wrote:
         | Yes there is! https://www.youtube.com/watch?v=_0m0_qtfzLs
        
       | staticassertion wrote:
       | Pony is an amazing language, but I feel like it burned its entire
       | complexity budget. Reference capabilities are really great, but
       | they have this weird special syntax around them, and they're all
       | termed in a very unique way.
       | 
       | I very much want a language like Pony because, as this talk
       | demonstrates, it's doing some incredibly cool and powerful
       | things. But it's pretty confusing.
       | 
       | Rust types like Arc, Mutex, &, &mut, and affine, have been wayyyy
       | easier to learn for me because they aren't totally new concepts -
       | I know what Arc is, Mutex, references are, moves are new but
       | that's just one thing and it wasn't too crazy coming from C++. I
       | know how to convert between these types because they're regular
       | structures, with methods and documentation like all other
       | structures. This is in really direct contrast to my experience
       | with Pony where I had to learn like 6 new keywords, try to map
       | them back to my own reference model, and, worst of all, trying to
       | remember the strange incantation to map between them. I bet this
       | is a "learn it once" thing, and it would be fine if that were the
       | _only_ new thing, but it 's not - there are object capabilities,
       | actors, learning the runtime/GC, learning new libraries, etc -
       | there just isn't enough complexity budget in my brain for all of
       | these things.
       | 
       | I contrast this with Rust, which people consider quite hard to
       | learn, and Pony has just been way, way harder. It's a little "too
       | good" - nothing in Pony is unjustifiable, like not having
       | assertions/ failures, but I really want those things! Division by
       | 0 is a perfectly fine thing to define as returning 0, I seriously
       | don't even care, but it's just one more straw.
       | 
       | All in all, I was so hooked on learning Pony at first, totally
       | enamored, and then I just found that I couldn't justify putting
       | in the time.
       | 
       | I ended up writing an actor library inspired in part by Pony for
       | Rust, using macros, and I've been fairly satisfied - though
       | there's much more Pony offers, by far. I'd really like to see
       | more actor model languages crop up, and incorporating many
       | features that Pony has, but maybe making some 'worse is better'
       | decisions in a few places.
        
         | pjmlp wrote:
         | The team behind Pony are also the main designers on Project
         | Verona, so they are taking up on those learnings as well.
        
         | rkallos wrote:
         | I had the opposite experience to you. I found Pony much easier
         | to learn than Rust.
         | 
         | Reference types are probably the trickiest bit to learn,
         | especially in how they relate to Pony's generics. Everyone is
         | different, but I found learning the 6 reference capabilities to
         | be a lot easier than trying to understand borrowing and
         | lifetimes in Rust.
         | 
         | I readily accept other reasons not to pursue Pony; it's library
         | ecosystem is budding, the runtime is still a bit unstable, and
         | there is limited support for non-x86_64 architectures. However,
         | I invite anyone reading this comment to form their own opinion
         | of the language. I feel I've benefited greatly from learning
         | it.
         | 
         | Also, Pony has a pretty active community on Zulip, where you
         | will find people who will jump at the chance to help you get
         | unstuck while you're writing Pony.
         | https://ponylang.zulipchat.com/
        
       | the_duke wrote:
       | I was excited about Pony a few years ago.
       | 
       | But then the company went bust and development slowed down. I
       | checked it out again ~ 1 year ago and both language and ecosystem
       | did not look terribly healthy or active.
       | 
       | What's the current status?
       | 
       | ps: I love the video + synchronized slides side by side. I wish
       | this was more common for talks. There should be resizing
       | functionality though.
        
         | pjmlp wrote:
         | It is being researched at Imperial College London, which hosts
         | a Microsoft Research unit, it was brought there as Sylvan
         | Clebsch joined Microsoft.
         | 
         | https://www.microsoft.com/en-us/research/video/pony-co-desig...
         | 
         | https://www.microsoft.com/en-us/research/project/project-ver...
        
         | spooneybarger wrote:
         | Hi,
         | 
         | Excellent question. I can't address "healthy or active" as
         | those would really be your own metrics to decide.
         | 
         | We have a lot of things going on including:
         | 
         | Work on a new dependency manager:
         | https://github.com/ponylang/corral
         | 
         | Work on an installation tool to make it easier to get started
         | with Pony: https://github.com/ponylang/corral
         | 
         | A lot of work has gone into making our release process across
         | projects much easier to deal with as it was problematic before.
         | 
         | Joe, a core team member, has been working on ideas to address
         | problems that we've seen folks experience with Pony. He has a
         | semi-functional experimental compiler that will hopefully see
         | the light of day eventually.
         | 
         | We've been working on some runtime improvements that will
         | eventually see the light of day.
         | 
         | Most of the work that goes on these days is in repos other than
         | the ponyc repo that most people tend to look at.
         | 
         | In the end, the important thing to know is that Pony is a
         | volunteer driven project and thus, moves at a different
         | timeline than something like Go or Rust with a lot of backing.
         | 
         | Those of working on Pony are doing it because we believe that
         | in the long run, the time we put in outside of our jobs will be
         | worth it. But our timeline is probably a lot longer than other
         | folks.
         | 
         | -Sean, a Pony core team member.
        
       | smallstepforman wrote:
       | I've been following Pony for a couple of years, and fear they've
       | lost momentum and drive, which doesn't bode well for the future
       | of the language. My major grief is no support for "locked" (or
       | synchronous) patterns, ie. when actor#A needs to modify actor#B
       | and have the change accessable in the same Actor#A::Behaviour. In
       | my own Actor framework (C++), I'm forced to implement a
       | LockToWorkThread() pattern where I prohibit Actor#B from being
       | scheduled on other work threads while locked. This way 2 Actors
       | can interact from an "atomic" Behaviour() function. However, C++
       | doesnt protect against sharing pointers so I'm always on
       | eggshells.
        
         | ivanbakel wrote:
         | It seems like your major grief is at serious odds with the
         | design principles of the language itself.
         | 
         | It's very difficult to introduce any kind of synchronous
         | behaviour that doesn't also allow deadlocks. "Locking" an actor
         | to prevent it from processing messages would very trivially
         | allow for deadlocks - and since Pony intends to avoid them by
         | design, the language can't ever allow for it.
         | 
         | Why are promises not fit for your purpose?
        
           | spooneybarger wrote:
           | Verona has been exploring the idea of "behavior-oriented
           | programming" as compared to "actor-oriented" like we have in
           | Pony.
           | 
           | Verona's model allows for something along the lines of what
           | is being suggested. How that works out in the long run, we'll
           | see. It's still very early days for Verona.
           | 
           | A number of folks working on Pony also are associated with
           | Verona and vice-versa so there's a cross-polination of ideas
           | going on.
           | 
           | https://github.com/microsoft/verona
           | 
           | In particular see:
           | 
           | https://github.com/microsoft/verona/blob/master/docs/explore.
           | ..
           | 
           | and
           | 
           | https://github.com/microsoft/verona/blob/master/docs/explore.
           | ..
        
         | spooneybarger wrote:
         | I can't speak for everyone ever associated with Pony, but there
         | are several of us who continue to work on it and haven't lost
         | our drive.
        
       | spooneybarger wrote:
       | I'd like to extend an invitation to anyone who is interested in
       | learning more about Pony to join us in our community Zulip.
       | Various Pony core team members, committers, and other interested
       | folks are often on and regularly answer questions etc from people
       | who are interested in learning more.
       | 
       | https://ponylang.zulipchat.com/#
       | 
       | And you can find more Pony related content on the website:
       | 
       | Talks (and what-not): https://www.ponylang.io/community/planet-
       | pony/ Papers: https://www.ponylang.io/community/#papers
        
       ___________________________________________________________________
       (page generated 2020-09-07 23:00 UTC)