概要
Wyzer は、リソース指向・静的型付き・コンパイル型のプログラミング言語 Choreographic Programming と Perceusメモリモデル による分散安全性を実現 Rust の安全性を、よりシンプルな方法で分散システムにも拡張 一貫した所有権ルール でメモリ・スレッド・ネットワークを統一管理 コントリビューション やコミュニティ参加も歓迎
Wyzerとは何か
- Wyzer :静的型付き・コンパイル型・リソース指向プログラミング言語
- Choreographic Programming による分散安全性
- Perceusメモリモデル による高速・単純なメモリ管理
- 単一の所有権ルール でメモリ、スレッド、ネットワークを安全に管理
- 分かりやすさ と 明示的な記述 を重視した設計
Wyzerを作る動機
- Rust はプロセス内のメモリ安全性を保証
- ただし、 分散デッドロック や プロトコルミスマッチ、 クロスサービス整合性 は保証しない
- Wyzer はこれら分散システム特有の問題を Choreographic Programming で解決
- 所有権ルール を統一的にネットワークや並列処理にも適用
Wyzerの特徴的な設計
- Perceus方式参照カウント :KokaやLean 4から着想、Rustより単純なメモリ管理
- Choreographic Programming :ネットワーク通信の安全性を型で保証し自動検証
- 明示的なエラー処理 :例外ではなくResult型とmatch式で明示的に処理
- 暗黙的な制御フロー排除 :async/awaitなどの分岐はなし、すべて型と所有権で表現
Wyzerの基本的な文法例
- 変数と型
- すべての値は明示的な型を持つ
- デフォルトでイミュータブル、変更にはvarを使用
- コンパイル時定数はconstで定義
fn main() {
const MAX: u32 = 100;
let x: u32 = 10;
var y: u32 = 20;
y = y + x;
std::io::println(y);
}
- 構造体とデータ
- 独自のデータ構造を定義し、フィールドへ直接アクセス
struct Point { x: u32, y: u32 }
fn main() {
let p: Point = Point { x: 10, y: 20 };
std::io::println(p.x);
}
- 制御フロー
- if/else、while、forループをサポート
- 条件式に括弧不要
fn main() {
var i: u32 = 0;
while i < 3 {
std::io::println(i);
i = i + 1;
}
}
- エラー処理とmatch
- 失敗可能な関数はResult<T, E>を返す
- match式でOkとErrを安全に処理
fn main() {
let result: Result<u32, str> = Ok(42);
match (result) {
Ok(value) => std::io::println(value),
Err(err_msg) => std::io::println(0)
};
}
Wyzerのコアデザイン原則
- 一つの書き方を徹底 :同じことを二通りで書ける場合は一方を排除
- 隠れたマジックなし :重要な処理はコード上で見える形に
- コンパイラに仕事を任せる :ただし複雑さが増す場合は明示的に
- 未解決問題は正直に明示 :未完成部分は明確に記載
Wyzerのコアセマンティクス
- メモリ管理 :基本は関数型、単一所有時はC並みの高速性
- 所有権ルール :一度使ったリソースは再利用不可
- ネットワーク安全性 :型で所有権を示し、コンパイラが通信ルールを検証
- エラー処理 :例外ではなくResult型、非同期分岐も非採用
FAQ
- WyzerはRustの発展版?
- いいえ。Rustの安全性をより簡単な方法で実現、ネットワーク安全性も統合
- Choreographic Programmingは新しい?
- 数学的には確立済みだが、実用言語への応用は希少
- なぜGCやasync/awaitを使わない?
- Wyzerは一つの所有権ルールですべてを解決することを目指す
- 完成度や実用性は?
- まだ研究段階、未解決の課題あり
- エレベーターピッチは?
- メモリ・スレッド・ネットワークを一つの所有権ルールで安全管理。GCも複雑な借用チェッカーも不要
コントリビューションとコミュニティ
- RESEARCH.md を参照し、貢献を歓迎
- Discordサーバ で議論・参加可能
- 公式ドキュメント やサンプルコードも用意
- 例:donut.wyz(有名なドーナツ描画プログラム)
開発の背景と今後
- プロジェクト開始の動機 :Rustの分散安全性不足への不満から
- Wyzerの目標 :Choreographic Programmingを実用的な高水準言語へ
- 所有権ルールとPerceus参照カウント で、LSPや開発ツールにも優しい設計
- 5ヶ月の研究と数週間の開発 を経て、 バージョン0.1.0 リリース予定
- 貢献者・コラボレーターを広く募集中
参考・名言
- "Simplicity is not the absence of power. It is power without pretense." — Atiksh Sharma
まとめ
- Wyzer は分散・並列・メモリ安全性を単一ルールで達成する新しい言語
- Rust の安全性の良さを活かしつつ、より簡単で分散にも強い設計
- コミュニティ・コントリビューション を重視したオープンな開発体制