Antiox — TypeScript向けのRust/Tokio風非同期プリミティブ
概要
Antioxは「RustやTokioにあるような非同期プリミティブ」をTypeScriptで再現するライブラリです。Promiseとasync/awaitの上に、チャネル(mpsc・oneshot)、ロック(Mutex・RwLock)、セマフォ、タイマー、タスク(JoinHandle)などの高水準な同期・非同期ツールをゼロコストに近い形で提供します。ランタイム非依存でNode・Deno・ブラウザに対応し、型安全で小さなバンドルサイズを目指す設計になっています。JS/TSの単一スレッド特性を踏まえつつ、Rustの設計思想を取り入れたAPIで並行処理パターンを扱いやすくしています。
リポジトリの統計情報
- スター数: 42
- フォーク数: 0
- ウォッチャー数: 42
- コミット数: 30
- ファイル数: 16
- メインの言語: TypeScript
主な特徴
- Rust/Tokioに触発された直感的で型安全な非同期プリミティブ群(チャネル、Mutex、Semaphoreなど)
- ランタイム非依存でNode/Deno/ブラウザに対応、軽量でツリーシェイカブルな実装
- Promise/async/awaitと密接に統合し「余分なスケジューラ」を持たないゼロコスト志向
- キャンセルやタイムアウト、select的な構成をサポートするユーティリティ
技術的なポイント
AntioxはJavaScriptの実行モデル(単一スレッドのイベントループとPromise)を前提に、Rust/TokioのAPI設計をTypeScriptで模倣することに注力しています。コア実装はネイティブのPromiseと非同期関数を基盤とし、待ち合わせや通知にはDeferredなPromiseやキューを用いた軽量なウェイカー実装を採用します。チャネルは内部的にメッセージキューと待機者リストを持ち、送信時/受信時に即時解決できるパスを設けることでオーバーヘッドを低減します。MutexやRwLockは排他を協調的に管理し、スレッド同期ではなく「タスク間の順序付け」を行うため、ロック待ちのためのブロッキングは行わず、待機タスクはPromiseで非同期に再スケジュールされます。キャンセルはAbortController/AbortSignalや独自のキャンセルトークンで扱い、select相當の組合せはPromise.raceや内部通知で公平性を考慮して実装されています。型定義を念入りに用意しており、ジェネリクスと型推論で安全なAPIが得られますが、JavaScriptの単一スレッド制約やGCの挙動は設計上の留意点であり、低レイテンシやハイスループットが必須のユースケースではネイティブコードとの差異に注意が必要です。
プロジェクトの構成
主要なファイルとディレクトリ:
- .claude: dir
- .github: dir
- .gitignore: file
- CLAUDE.md: file
- COMPATIBILITY.md: file
…他 11 ファイル
まとめ
Rust/Tokioの設計感をTypeScriptで再現し、型安全で軽量な非同期プリミティブを提供する実用的なライブラリ。
リポジトリ情報:
- 名前: antiox
- 説明: Rust- and Tokio-like async primitives for TypeScript.
- スター数: 42
- 言語: TypeScript
- URL: https://github.com/rivet-dev/antiox
- オーナー: rivet-dev
- アバター: https://avatars.githubusercontent.com/u/57733614?v=4
READMEの抜粋:
NPM | Documentation |...