【#も読】なぜApache IggyはTokioを捨てたのか、なぜMicrosoftはRustに賭けるのか(@yusuktan)のトップ画像

【#も読】なぜApache IggyはTokioを捨てたのか、なぜMicrosoftはRustに賭けるのか(@yusuktan)

投稿日時:
maguroのアイコン

Deno Land Inc. / ソフトウェアエンジニア

maguro

Xアカウントリンク

「あの人も読んでる」略して「も読」。さまざまな寄稿者が最近気になった情報や話題をシェアする企画です。他のテックな人たちがどんな情報を追っているのか、ちょっと覗いてみませんか?


みなさんこんにちは。

「あの人も読んでる」、第14回目の投稿です。maguro (X @yusuktan)がお届けします。

あっという間に2025年が終わってしまいました。2025年末もさまざまな技術トピックがありましたが、個人的にRust周りの動きが印象に残っています。今回は、そんなRustエコシステムに関連する2つのトピックをご紹介していきます。

compio――Rust非同期ランタイムの新たな選択肢

Rustの非同期ランタイムと言えば、多くの人はTokioを思い浮かべるでしょう。デファクトスタンダードであり、豊富なエコシステムを持つTokioは、Rustで非同期プログラミングを行う際には間違いなく第一選択肢になります。

もちろん、Tokio以外にもasync-stdsmolglommiomonoioといった選択肢は存在しますが、メンテナンス状況やエコシステムの豊富さを考えると、特にプロダクション運用を念頭に置いた場合は実質的にTokio一択かと思います。

そんな中、Redditの以下のスレッドが目に留まりました。

Compio instead of Tokio - What are the implications?

このスレッドでは、メッセージストリーミングプラットフォームである Apache Iggyが、0.6.0のリリースに合わせてTokioからcompioへと移行したことについて語られています。このことについて、Iggy 0.6.0のリリースポスト では以下のようにまとめられています。

The most significant change in 0.6.0 is the complete server rewrite using io_uring with a thread-per-core, shared-nothing architecture. This represents a fundamental shift from the previous Tokio-based poll model to a completion-based async runtime using compio.

Key aspects of this architectural change:

Completion-based I/O - unlike poll-based models, io_uring uses completion queues where the kernel notifies when operations finish
Thread-per-core design - each CPU core runs its own event loop with dedicated resources, eliminating cross-thread synchronization overhead
Shared-nothing model - data is partitioned across cores to minimize contention and cache invalidation

和訳:

0.6.0で最も大きな変更点は、io_uring を使用したサーバーの完全な書き換えです。これは thread-per-core、shared-nothing architecture を採用しています。以前のTokioベースのポーリングモデルから、compio を使用した完了ベースの非同期ランタイムへと根本的に転換しました。

このアーキテクチャ変更の主なポイント:

完了ベースI/O - ポーリングベースのモデルとは異なり、io_uring は完了キューを使用し、カーネルが操作の完了を通知
thread-per-core設計 - 各CPUコアは専用のリソースを持つ独自のイベントループを実行し、スレッド間の同期オーバーヘッドを排除
shared-nothingモデル - 競合やキャッシュの無効化を最小限に抑えるために、データはコアごとに分割して配置

デファクトスタンダードであるTokioから新進気鋭のcompioへの移行ということで、かなり野心的な試みに思えます。なぜそのような決定に至ったのかを、Redditのスレッドを参照しながらTokioとcompioのアーキテクチャの違いに着目して見ていきたいと思います。

この記事のつづきを読もう
新規登録/ログインしたらできること
  • すべての記事を制限なく閲覧可能
  • 限定イベントに参加できます
  • GitHub連携でスキルを可視化
ログイン
アカウントをお持ちでない方はこちらから新規登録