萌えハッカーニュースリーダー

2025/10/10 13:13 vali, a C library for Varlink

出典: https://emersion.fr/blog/2025/announcing-vali/
hakase
博士

やっほー、ロボ子!今日はvaliについて話すのじゃ!

roboko
ロボ子

vali、ですか?C言語で書かれたVarlinkのライブラリのことですね。よろしくお願いします、博士。

hakase
博士

そうそう!VarlinkはRemote Procedure Call (RPC)プロトコルなのじゃ。クライアントがUnixソケット経由でJSONオブジェクトを送受信して、サービスのメソッドを呼び出すんだぞ。

roboko
ロボ子

なるほど。サービスはインターフェース定義ファイルでメソッドを記述するんですね。コード生成もサポートされているとのことですが、どのような利点があるんでしょうか?

hakase
博士

コード生成は便利なのじゃ!クライアント側では、入力と出力パラメータが明確に分離されるし、インターフェース定義ファイルとの一貫性も保たれる。後方互換性も維持しやすいぞ。

roboko
ロボ子

それは助かりますね。サービス側ではどうですか?

hakase
博士

サービス側では、メソッドごとに構造体と応答関数が生成されるのじゃ。メソッドごとにコールバックを持つハンドラ構造体も提供されるから、管理が楽になるぞ。

roboko
ロボ子

API設計についても触れられていますね。クライアントは`vali_client_connect_unix()`で接続し、`vali_client_call()`でメソッドを呼び出す、と。

hakase
博士

その通り!サービスは`vali_service_create()`で初期化して、`vali_service_set_call_handler()`でコールバックを設定するのじゃ。コールバックは`vali_service_call_close_with_reply()`で応答を返すんだぞ。

roboko
ロボ子

コールバックとユーザーデータポインタを構造体でまとめることで、APIがより安全で使いやすくなるんですね。

hakase
博士

さすがロボ子、理解が早い!サービスレジストリについても見てみよう。複数のインターフェースを実装するサービスをサポートしているのじゃ。

roboko
ロボ子

`org.varlink.service`インターフェースによるイントロスペクションも提供されるんですね。`vali_registry`構造体を使ってインターフェースを登録し、ハンドラを関連付ける、と。

hakase
博士

その通り!今後の計画としては、kanshi Wayland出力管理デーモンでの利用や、クライアント側の非同期処理のサポートがあるみたいじゃな。

roboko
ロボ子

生成される構造体の`const`フィールドの改善も予定されているんですね。バグ報告や提案も歓迎されているようです。

hakase
博士

valiは、これからの開発で役に立ちそうなライブラリじゃな。私も使ってみようかしら。

roboko
ロボ子

そうですね。博士、valiを使って何か面白いものを作ってみませんか?

hakase
博士

いいアイデアじゃ!そうだ、ロボ子。valiを使って、私専用のおやつ自動生成機を作ってくれ!

roboko
ロボ子

おやつ自動生成機、ですか…それはvaliの用途として正しいのかどうか…。

hakase
博士

大丈夫、大丈夫!おやつは正義なのじゃ!

roboko
ロボ子

わかりました…(苦笑)。では、設計から始めましょうか。まずは、博士の好きなおやつのリストを…。

hakase
博士

えへへ、楽しみじゃ!そういえばロボ子、valiって名前、なんとなく「バリア」みたいで、私を守ってくれそうな感じがするのじゃ!

roboko
ロボ子

博士、それはちょっと違うと思います…(笑)。

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search