Rustで振付プログラミングを実現するHibana、実行時検証でマルチパーティプロトコルを保証

Choreographic Programming in Rust

Hibanaは、単一のグローバルな振付からRustプログラムが有限のマルチパーティプロトコルを実行できるようにする。振付は各ロール用のコンパクトなプログラムに射影され、送信・受信・ルートの各ステップがそのプログラムと一致してから進行がコミットされる。no_stdでアロケータ不要、呼び出し側が提供するストレージを使用。最大256ロール、非同期send、seq、par、バイナリroute、ガード付きrollをサポートし、トランスポート中立な統合を提供する。

Hibanaはネットワークスタックや分散アルゴリズムを実装しない。各接続エンドポイントでプロトコルを強制し、そのローカルな結果を分散保証に持ち上げるために必要なキャリア、デプロイ、コーデック、スケジューリングの条件を明示する。
  1. sebastianconcpt

    私たちの文化が、発明したものの応用可能性を説明する力が、もっともっと、はるかに、めちゃくちゃ強ければいいのになあ。

    抽象化は勝ち取られるべきものだ。

    実行するのが高コストだからではなく、理解するのが高コストだからだ。

  2. dplyukhin

    Rustの既存の振付プログラミングライブラリChoRus[1]と比べてどうなのか気になる。動機が知りたいという人たちは、併せて公開されている論文[2]を楽しめるだろう。とてもよく書けている。Lindsey Kuperのグループは、振付プログラミングをDSLとして広める素晴らしい仕事をたくさんしてきた。

    振付プログラミングをコンパイラに直接統合すれば、さらに強力になる。その例としては、私が数年間貢献しているJavaの拡張であるChoral[3]を見てほしい。

    [1]: https://github.com/lsd-ucsc/ChoRus

    [2]: https://arxiv.org/pdf/2311.11472

    [3]: https://github.com/choral-lang/choral

  3. ch4s3

    最近人気のアイデアのようだ。この論文[1]を読んで、私は自分のアクターベース言語[2]にこれを組み込むことにした。アクターベースの並行性では非常に理にかなっている。Rust開発者がこれをどう思うか興味がある。彼らがよくやる並行性の方法とは少し違うからね。

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

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

  4. zanderwohl

    READMEを人間の英語で書き直してほしい。Claudishだと、情報を吸収しようという気が脳が起きなくなる。

  5. 6gvONxR4sf7o

    いずれ振付プログラミングが言語ランタイムに組み込まれて、特定のデータをRAMやキャッシュの特定の部分に手動で配置するのと同じ感覚になるといいな。素晴らしいアイデアの一つだけど、手動での実装はいつもめちゃくちゃに見える。

この日のほかの記事

2026-10-12