r3bl-org/r3bl-open-core
TUI framework and developer productivity apps in Rust 🦀
何を解決するか
既存のターミナルユーザーインターフェース(TUI)ライブラリは、しばしばブロッキング操作に依存し、画面のちらつきを引き起こすか、ターミナルの挙動に対する制御が限られている。r3bl-open-core は、メインスレッドをブロッキングせずに、Linux、macOS、Windows でシームレスに動作する、現代的なCLIおよびTUIアプリケーションをRustで構築するための高パフォーマンスで完全に非同期なフレームワークを提供する。
動作方法
このプロジェクトは、即時モードのリアクティブUIを実装しており、すべての状態変更が再描画をトリガーする。状態の変更と描画を分離することで、描画の最適化を実現している。ダブルバッファリングされたコンポジターを使用し、変更部分のみを描画することで、パフォーマンスを最適化し、ちらつきを低減している。このフレームワークは以下のコアプリミティブで構成されている:
- 非同期Readline:ブロッキングせず、中断可能な行入力の実装。
- Applets:ライフサイクルにわたって状態を永続化・共有できる状態管理システム。
- FlexBox と CSS風のスタイル:現代のWeb開発(React、JSX、CSS)をインスパイアした宣言型レイアウトエンジンとスタイルシステム。
- TUIモード:「フルTUI」(ローモード、代替画面)、「部分TUI」(インタラクティブ選択や非同期REPL)、PTYを介したターミナルマルチプレクシングをサポート。
対象ユーザー
従来のブロッキングTUIライブラリの制限を抱えず、単純なインタラクティブプロンプトからフルスクリーンの生産性ツールまで、没入感があり、応答性が高く、複雑なターミナルアプリケーションを構築したいRust開発者。
主な特徴
- 完全に非同期:Tokioに基づき、メインイベントループとすべての操作がブロッキングしない。
- Webをインスパイアした使いやすさ:ターミナルにFlexBoxとCSS風の宣言型レイアウトをもたらす。
- クロスプラットフォーム:Windows、macOS、Linuxをネイティブでサポートし、SSH接続向けの最適化も提供。
- 豊富なコンポーネントライブラリ:シンタックスハイライト付きMarkdownパーサー、リッチテキストエディタ、ダイアログボックスなどを含む。
- 統合アプリ:
edi(Markdownエディタ)とgiti(インタラクティブなGitワークフロー)を参照実装として提供。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト