Hibana brings choreographic programming to Rust with runtime enforcement
Choreographic Programming in Rust
Hibana is a choreography-derived runtime enforcement kernel for Rust that lets programs execute finite multiparty protocols from a single global choreography. It projects the choreography into compact role programs, enforces each send, receive, or route step before committing progress, and supports up to 256 roles with asynchronous operations. Unconditionally no_std and allocator-free, it keeps endpoint types small by using descriptors instead of per-state continuations, and integrates with any transport via a single trait.
Hibana does not implement a network stack or a distributed algorithm. It enforces the protocol at each attached endpoint and states the carrier, deployment, codec, and scheduling conditions needed to lift that local result to a distributed guarantee.
- sebastianconcpt
I really wish our culture to explain the applicability of the things we invent would be way way waaaay stronger.
Abstractions should be earned.
Not because executing them is expensive but because understanding them is.
- ch4s3
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.
- zanderwohl
I would really like the README to be revised in human English. Claudish makes my brain averse to absorbing the information.
- dplyukhin
Curious how this compares to Rust's existing choreographic programming library, ChoRus [1]. Those of you asking for motivation might enjoy the accompanying paper [2], which is really well written. Lindsey Kuper's group has done a ton of great work popularizing choreographic programming as a DSL.
You can get even more power if you integrate choreographic programming directly into the compiler - for an example of that you can see Choral, an extension of Java that I've been contributing to for a few years [3].
[1]: https://github.com/lsd-ucsc/ChoRus
- 6gvONxR4sf7o
I hope that eventually choreographic programming is baked into language runtimes to the point that it feels like manually placing certain data on certain parts of RAM/cache. It's one of those ideas that's great, but manual implementations always seem like a mess.