Choreographic Programming in Rust

(github.com)

32 points | by o8vm 1 day ago

7 comments

  • zanderwohl 2 hours ago
    I would really like the README to be revised in human English. Claudish makes my brain averse to absorbing the information.
    • rhodey 47 minutes ago
      IMO the README is not Claudish, this project is in an area that is more "computer science" than "coding" and there is simply a high bar on whats needed for prior knowledge. I think you could say ELI5 "Explain Like I'm 5" and it probably is possible to do so, but I don't think its correct to say "claudish".
      • snitty 29 minutes ago
        Pangram rates it (up to "This README is arranged by responsibility:") as 100% AI generated. I'm struggling to disagree.
      • zanderwohl 44 minutes ago
        I read it and I understand it, but the style of the writing is anathema to me.
      • xhevahir 35 minutes ago
        I'm noticing an awful lot of tricolon, i.e., naming things in threes. Ive gotten the impression that LLMs are really fond of that device.
    • amelius 1 hour ago
      Can't they train these LLMs to produce human-readable English?

      And human-readable code, for that matter.

    • the__alchemist 54 minutes ago
      I have no idea what this project does, and parsed none of the readme!
      • zanderwohl 45 minutes ago
        It essentially lets you define a communication protocol where things have to happen in a certain order. At compile-time, your ordering is checked against certain rules, and certain classes of deadlocks and hangs can be avoided. The order of actions is then enforced at runtime.
        • the__alchemist 42 minutes ago
          Sounds similar to imperative programming!
    • taylorius 1 hour ago
      "It's some form of Claudish, I can't read it."

      "There are few who can. The language is that of Opus 5, which I will not utter here... In the common tongue it says... err.. actually I don't know what it says."

      • boredatoms 1 hour ago
        we need an AI generated movie remix video for this one
    • tensegrist 2 hours ago
      that's astrish not claudish
  • ch4s3 1 hour ago
    This seems to be a popular idea recently. After reading this paper[1] I ended up building this into my actor based language[2]. It makes a lot of sense in actor based concurrency, I'd be curious to know what rust devs think of this since it's a bit different from how they often do concurrency.

    [1] https://simonjf.com/writing/eventactors.pdf

    [2] https://march-lang.org/docs/choreography/

    • giancarlostoro 1 hour ago
      Have you looked at Microsoft Orleans by chance? I'm curious what you think of it. The concept is Virtual Actors by Microsoft research.

      https://www.microsoft.com/en-us/research/project/orleans-vir...

      I had Claude implement a similar one for me in Rust which I'm pausing for now, I'm prototyping a simpler version of Orleans in Go that I eventually want to port over to Rust as my v2 from scratch. The ideas in Virtual Actors reminded me a lot of Erlang, but simple to use in a language like C# I'm still surprised it didn't take off in other languages.

      Honestly, if Go supported message passing between processes and over the network out of the box, it would make for a slightly more interesting language, I still love Go though.

      • ch4s3 55 minutes ago
        This is an interesting question! I'm not an expert in Orleans but I have looked at it alongside koka. The user defined key vs pid distinction is important and using a user defined key like in Orleans has advantages for keeping track of their virtual actors(grains). Their automatic lifecycle management is nice, but you really have to trust the runtime to know when something is really idle. I think their failure handling with auto state restoration is a mistake, recreating an actor with bad state is a recipe for crashes.

        What I have that Orleans is missing is compile time protocol checking, typesd and hash checked remote calls, capability management, cluster authentication, and no stop the world GC. Orleans doesn't have choreography per se, they have sagas as a convention.

        Yeah, GO routines are meant to solve different problems than share nothing actors.

  • ashton314 30 minutes ago
    If one of the humans involved shows up here, I have a few questions:

    How are you doing endpoint projection?

    What is your KoC strategy?

    What existing research systems (Choral, MultiChor, Chorex, etc.) did you take as inspiration?

    What benefits does your system have over ChorRus?

    • ashton314 11 minutes ago
      Also: is this actually a choreography? Or are you doing runtime monitoring to ensure deadlock freedom?
  • snitty 27 minutes ago
    Yes, but what does any of this mean?
  • Smoofer 59 minutes ago
    multiparty session types are relevant to this: https://dl.acm.org/doi/10.1007/978-3-030-50029-0_8
  • o8vm 1 day ago
    Hibana now has the capability to build QUIC/HTTP3 in the manner of Hibana Choreography. Check it out here: https://github.com/hibanaworks/hibana-quic
  • latencyharbor 2 minutes ago
    [flagged]