Luminal — DLL境界対応の高性能軽量非同期ランタイム
概要
Luminalは、tokioと同等の高いパフォーマンスとAPI互換性を目指しつつ、DLL(動的ライブラリ)境界で安全に使えることを第一に考えたRust製の非同期ランタイムです。主な設計方針は「スレッドローカルストレージ(TLS)に依存しないこと」で、これによりランタイムを別のプロセスやプラグイン、動的にロードされるライブラリ間で安全に受け渡すことができます。実装は比較的コンパクトで、明示的なハンドル渡しと互換レイヤーによってtokio風のAPIを提供しようとしています。
リポジトリの統計情報
- スター数: 2
- フォーク数: 0
- ウォッチャー数: 2
- コミット数: 21
- ファイル数: 9
- メインの言語: Rust
主な特徴
- DLL境界で安全(TLSに依存しない設計)
- 明示的なランタイムハンドル渡しによるAPI設計
- tokio互換のAPIを目指した高性能実装
- 小規模で読みやすいコードベース(実験的/初期段階)
技術的なポイント
Luminalの最大の技術的ポイントは「TLS非依存であること」です。一般的なランタイム(例: tokio)はスレッドローカルに現在のランタイムやハンドルを置くことが多く、同一プロセス内でもDLLや動的にロードされるコンポーネント間でランタイムの状態を安全に共有できないケースがあります。Luminalはこれを回避するため、ランタイムインスタンスやexecutorの参照を暗黙ではなく明示的なハンドルとして渡す設計を採用しています。これにより、異なるバイナリ境界をまたいだ呼び出しでも未定義動作を起こしにくくなります。
また、パフォーマンス面ではtokioと同等の速度を目指しつつ、実装を軽量化することでオーバーヘッドを低減しています。RustのFuture/Wakerモデルを基盤に、効率的なタスクスケジューリングとイベント待ちの実装を行っていることが想定されます(READMEにパフォーマンス比較画像あり)。さらに、API互換性を意識しているため、既存の非同期コードやライブラリとの移植コストを抑えることが期待できます。一方で、コードベースは小規模で実験的な段階にあるため、エッジケースやプラットフォーム依存の挙動は今後の検証が必要です。
プロジェクトの構成
主要なファイルとディレクトリ:
- .gitignore: file
- Cargo.lock: file
- Cargo.toml: file
- LICENSE: file
- README.md: file
…他 4 ファイル
まとめ
DLLやプラグイン環境での利用を重視する用途に向いた、有望な実験的ランタイムです。
リポジトリ情報:
- 名前: Luminal
- 説明: A lightweight high-performance async runtime for Rust
- スター数: 2
- 言語: Rust
- URL: https://github.com/tristanpoland/Luminal
- オーナー: tristanpoland
- アバター: https://avatars.githubusercontent.com/u/34868944?v=4
READMEの抜粋:
Luminal
Luminal is a high-performance async runtime designed to solve tokio’s DLL boundary issues while maintaining similar performance and API compatibility.
Performance Comparison
Key Features
- DLL Boundary Safe: Unlike tokio, Luminal doesn’t rely on thread-local storage, making it 100% safe to pass across DLL boundaries
- Explicit Handle Passing: All r…