概要
libghosttyは、あらゆるアプリケーションに組み込める高速・高機能なターミナルエミュレータライブラリの実現を目指すプロジェクト。 最初の提供コンポーネントはlibghostty-vtで、依存ゼロのターミナルシーケンス解析APIを持つ。 現時点ではZig APIでテスト可能、C APIも近日公開予定。 libghosttyは多くの現場で発生するターミナルエミュレーション問題を、再利用可能な形で根本解決する狙い。 開発者からのフィードバックを募集しており、今後多機能化・多プラットフォーム対応も計画中。
libghostty構想と背景
- libghostty は、どんなアプリケーションにも 高速・高機能なターミナルエミュレータ を埋め込むためのライブラリ構想
- ターミナルエミュレータは Ghostty, Kitty, iTerm2 などの専用アプリだけでなく、 tmux, zellij のようなマルチプレクサやエディタ組み込みでも多数実装
- 多くのWebサービスやアプリも、ログ表示やコマンド出力のために 簡易的なターミナルエミュレーション を独自実装
- これらの多くは アドホックな一度きりの実装 で、共通ライブラリや再利用可能なコードベースを使っていない現状
- ターミナルエミュレーションは 一見単純だが、実際は複雑でバグやパフォーマンス問題が多発 しやすい領域
libghostty-vtの特徴と狙い
- libghostty-vt は、 依存ゼロ(libcすら不要) のターミナルシーケンス解析・状態管理APIを提供
- カーソル位置、スタイル、テキスト折返し などの状態管理や、 ターミナルシーケンス解析 が主な機能
- Ghostty本体のコアロジック を抽出し、 SIMD最適化パース、高度なUnicode対応、メモリ効率、堅牢なテスト済みコード を継承
- Kitty Graphics ProtocolやTmux Control Mode など、現代的な機能にも高い互換性
- macOS・Linux(x86_64/aarch64) を初期ターゲットとし、将来的に WindowsやWASM、組み込みデバイス にも対応予定
libghosttyの長期展望
- libghostty-vt は出発点であり、今後は 入力処理(キーボードエンコード)、GPUレンダリング(OpenGL/Metal)、GTKウィジェットやSwiftフレームワーク など、機能ごとに分割したライブラリ群を提供予定
- 依存性・コードサイズ・保守コスト最小化 を重視した設計方針
- 安定化後はさらに多様な機能追加 を継続
現状のステータスと今後
- Zigモジュールとしてlibghostty-vtを公開、最小限のサンプルプログラムも提供
- C APIは現在開発中、近日中にテスト可能になる見込み
- API設計のフィードバックを広く募集、実際の利用者の意見を重視した開発体制
- libghosttyのバージョン管理はGhostty本体と分離、今後6ヶ月以内にタグ付きバージョンのリリースを目指す
- "alpha"段階であり、APIの安定性は未保証 だが、コアロジックは実運用で実証済み
開発者・コミュニティへの呼びかけ
- libghosttyのAPI設計に参加・意見提供してくれる開発者を募集中
- Ghostty Discordでの議論・コラボレーション を推奨、メールでも連絡可能
- API自体はα品質 だが、コアロジックは商用利用実績もあり安定
libghosttyの意義と今後
- Ghostty本体の安定化と並行して、libghosttyの開発が本格化
- libghosttyの普及により、Ghostty自体もより高機能・安定化
- アプリやサービスのターミナルエミュレーション問題を根本から解決するインフラ提供 が最終目標
参考
- 多くの既存実装やWebサービスでの問題例 (Jeditermのバグ、Apple Terminal.appのDCSシーケンス処理不備等)
- Xterm.jsやlibvteのような既存共有ライブラリも一部利用されているが、カバー範囲は限定的
- ターミナルエミュレーションは予想以上に難易度が高い分野
まとめ libghosttyは、あらゆるアプリケーションに 正確・高速・再利用可能なターミナルエミュレーション機能 を提供するための根本的なソリューション。今後の進化・多機能化に期待。