
2026/10/28 1:51
Ghostty 1.4
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
以下の改良された要約は、完備性を保ちつつ明確さを維持するために、すべての主要なポイントを統合したものです。
Improved Summary: Ghostty 1.4.0 は、完全な Kitty グラフィックス互換性の実装により転換点となるリリースであり、スクロールバック圧縮を通じたメモリ使用量の大幅な最適化および macOS I/O パフォーマンスの向上を実現しています。このバージョンは、公式 CVE ナンバーリングは待機中ですが、ペースト保護バイパス、悪意のあるグラフィックスによるクラッシュ、tmux 制御エクスプロイト、そして不安全なハイパーリンクを含む重大なセキュリティ脆弱性を解消しています。戦略的な大きな転換点は、ネイティブの Windows GUI ロードマップを断念し、代わりに Windows への導入がクロスプラットフォームの
libghostty-vt ライブラリに依存することにあります。このライブラリは macOS、Linux、Windows のサポートに加えられ、1.0 リリースを目指して更新されています。プロジェクトはまた、最初の 2 つの契約を通じて長期的な資金調達が完了しました。ただし、Ubuntu 24.04 ユーザーは厳格化された GTK 4.18 要件により即座の互換性の障壁に直面しており、旧バージョンの使用か Flatpak を通じて利用する必要があります。主要な新機能には、完全な Kitty クリップボードプロトコルサポート(画像/HTML)、プログラムステータス報告のための最初のターミナル仕様、ghostty +ssh を通じた強化された SSH 統合、および xterm/esctest 準拠の向上が含まれます。ビルドツールチェーンは Zig 0.17 に更新されました。macOS 27 (Golden Gate) のサポートが追加され、macOS 13 (Ventura) は 2025 年秋まで引き続きサポートされます。最後に、このリリースにはバスク語、ベラルーシ語、デンマーク語、セルビア語のローカライゼーションが含まれています。本文
Ghostty 1.4.0 リリースノート
Ghostty 1.4.0は、大幅なパフォーマンスとメモリの向上、キティ(Kitty)グラフィックプロトコルの完全実装、SSH インテグレーションの改善、そしてすべてのプラットフォームにおける多数の機能追加・修正が盛り込まれたメジャーリリースです。
本リリースには、172 名のコントリビューターによる 2,889 のコミットで集約された開発成果が反映されています。すべてのコントリビューター、保守者、コミュニティモデレーター、翻訳者、パッケージ化者、そしてユーザーの皆様に感謝いたします。
執筆注記: これらのリリースノートは、完全な変更ログを含む形で人間の手によって丁寧に作成されました(総執筆時間 16 時間以上)。ぜひ楽しんでください。🥰
🔒 セキュリティ関連のアドバイザリー
以下のセキュリティ脆弱性が修正されています。すべてユーザー操作(コピー・ペースト、クリックなど)によってのみトリガーされます。
- GHSA-4hwh-wx3w-3fqg: ペースト保護機能で改行コードが正しく認識されず、括弧付きペーストを使用していないプログラムにおいて、確認なしにコマンドを実行するリスクがありました。
- GHSA-mhff-mv4q-fp63: 悪意のあるキティグラフィックコマンドが Ghostty をクラッシュまたはハングさせたり、巨大なメモリ割り当てを強要したりする可能性があります。
- GHSA-hcr9-7hcr-mjm8: tmux コントロールモードによる悪意のあるターミナル出力が Ghostty をクラッシュさせるリスクがありました(tmux のインストールは必須ではありません)。Ghostty 1.3.0 および 1.3.1 に影響。
- GHSA-hp9c-qp4q-cpw3: tmux コントロールモードのレイアウトにおいて、ゼロサイズまたは oversized なペインを使用した場合に上記と同様の影響を与える可能性があります。Ghostty 1.3.0 および 1.3.1 に影響。
- GHSA-w9q4-5jvv-mcv4: スクロールバック履歴削除時のスタイル付け済みカーソルが含まれる処理でメモリ破損を引き起こす可能性があります(通常より小さいスクロールバック制限で発生)。デフォルト設定は安全。
- GHSA-2r63-vmw6-3m3c: 工作されたディレクトリ名により、zsh シェルインテグレーションが任意のエスケープシーケンスを送信するリスクがありました。bash はより限定された影響。
- macOS: GHSA-cw69-wm67-5pv8: 工作された OSC 8 ハイパーリンクのクリックで、不安全なローカルファイルやカスタム URL スキームを開き任意のコマンドを実行するリスクがありました。現在はブロックされ、表示時に確認が求められます。
- macOS: GHSA-mfw9-xcr3-7gfp: リンク設定で検出されたリンクについても同様の問題です。ユーザー操作(Cmd クリック)によってのみトリガーされます。
- macOS: GHSA-v8cw-fg4j-jcc4: ドラッグ&ドロップによるペースト保護のスキップリスク。ユーザー操作(ドラッグ&ドロップ)
注記: 上記の CVE 付与依頼を行いましたが、GitHub からまだ割り当てられていません。正式な CVE 番号が割り当てられた場合は追記します。
🍎 macOS 互換性(macOS 27 / Golden Gate)
Ghostty 1.4 では macOS 27(Golden Gate)が公式にサポートされます。大部分は互換性の修復です。
- ✅ タイトルバー内のタブ (
) の配置が正常に機能。macos-titlebar-style = tabs - 🎨 ネイティブのタブバーは灰色の実線で描画されず、新しいグラススタイルを背景と調和させるように変更。
- 🔍
かつ透明度低下設定でもトップラインが隠蔽される現象が解消。macos-titlebar-style = hidden - ✨ アプリケーションアイコンの薄い境界線が表示されなくなった。
- 🪟 「Shortcuts」の「新しいウィンドウ」アクションから二度ウィンドウが開かれる問題が修正された。
互換性: Ghostty 1.4 は macOS 13(Ventura)を含めた以前のバージョンについても引き続き完全に互換です。Ghostty 1.3.1 も動作しますが、灰色のタブバーなどの視覚的問題は残ります。
🎨 キティ(Kitty)グラフィックサポート
Ghostty は現在、キティグラフィックのアニメーションと相対位置指定をサポートしています。これらはキティプロトコルの最後の主要機能です。
- 🔴 アニメーション: 単なる静止画ではなく、実際のアニメーションを再生します。フレーム送信・コンポーザー処理・再生制御がサポートされ、ターミナルが表示されていない間は一時停止。
- 📍 相対位置指定: 画像が他の画像の配置に対して相対的に配置可能になり、子画像が親画像と連動して移動するようになります。
- ✅ 準拠性: 仕様との不整合(#4323, #6711 など)を修正し、公開された仕様の 100% をカバーしました(キティ以外で初の達成)。
- ⚡ パフォーマンス: SIMD を用いた一括解析により、大規模画像転送の解析速度が約 16 倍向上。描画コストも大幅に低減。
💾 スクロールバックの圧縮とメモリ削減
表示されていないスクロールバック履歴を自動的に圧縮し、典型的なテキスト主体の履歴において物理メモリの使用量を 70% から 90% 削減します。
- 📈 制限値の増加: 圧縮によりデフォルトのスクロールバック制限が 1 ターミナルあたり 10 MB から 50 MB に引き上げられました(完全履歴でも旧来より少ないメモリ使用)。
- 🖥️ プラットフォームサポート: macOS と 64 ビット Linux で利用可能です。仮想メモリではなくレジデンツ(物理)メモリの削減効果です。
メモリアイージ改善の詳細
- 🆕 新しい空のターミナルは、macOS 上で約 16 KiB のメモリを使用(Ghostty 1.3.1 の 128 KiB から削減)。
- 🗑️ スクロールバッククリア時に解放されるメモリは OS に返されます。
- 🔒 非表示のタブは GPU リソースを解放。20 つの非表示タブの場合、GPU メモリは約 385 MiB から 18 MiB に削減され、再構築は 1 ミリ秒未満。
🚀 全体的なパフォーマンス改善
以前のバージョンと比較して著しいパフォーマンス向上が見られました。
- I/O スループット(macOS): 解析スレッドと I/O ドレインを分離。M4 Max などでエンドツーエンドの I/O スループットが 25% から 55% 向上。
- VT 処理: ASCII テキストで 128 MB/s から 725 MB/s(約 5.7 倍)に改善。macOS で 150 MB ファイルの
は 1.5 秒から 566 ミリ秒 に短縮。cat - その他の改善:
- 🔄 リサイズ処理が約 6 倍速い。
- 🖼️ レンダリングでターミナルロック時間が大幅に減少。
- 📋 コピーと検索が 1.5 倍から 8 倍速くなった。
- ⏱️ ウィンドウ表示開始が約 15%、最初の描画フレームが約 27% 高速化。
🐧 GTK レンダリングパイプライン
GTK アプリには新しいレンダリングパイプラインが導入されました。
GtkGLArea を使用せず、独自のスレッドで EGL 上で描画し、DMABUF で GTK に渡す方式に変更。
- ✅ トリプルバッファリング: ティアリング(画像の縦断)が大幅に減少し、メインスレッド上の OpenGL コールがなくなり、回避策も削除できました。
- 📐 小数倍表示対応: 125% や 150% のスケール下でもテキストと描画文字がシャープになり、ぼやけが解消されました(#1938)。
- ⚙️ EGL の要件: システム EGL ライブラリが必要です。DMABUF エクスポート不可の場合は CPU 経由でフォールバック(動作は保証されますが遅くなります)。
📋 キティクリップボードプロトコル(OSC 5522)
macOS および GTK 双方でキティクリップボードプロトコルを実装。画像や HTML などあらゆる形式のクリップボードデータの読み書きが可能になりました。
- 🔗 機能: プログラムがペーストイベント(モード 5522)を有効にし、ペーストされた画像などを自動検出・表示できるようになります。
- ⚙️ 設定:
/clipboard-read
で制御。デフォルトでは読み取りに許可確認があり、書き込みは制限なし(またはclipboard-write
)。clipboard-write-limit-bytes = 64 MiB - 🔒 安全性: 新規設定により一度の書き込みサイズを制限し、過大なデータ転送を防ぎます。
🖱️ ドラッグ&ドロップ可能な分割(GTK 向け)
GTK 環境で、タブ内の分割がドラッグして再配置可能になりました。
- 🛠️ 機能: ハンドルを掴んで他の分割(他タブ・他ウィンドウ含む)にドロップすることでレイアウトを再編成できます。コンテンツやプロセスも移動します。
- ⚙️ 設定:
設定で表示を制御(drag-handle
: デフォルト,auto
,always
)。never - 📌 制限事項: 分割をドラッグアウトして新規タブを作る機能は macOS 限定 です。
🔧 コアターミナルエミュレーションの改善
xterm への準拠性と新しいシーケンスサポートが大幅に進みました。
- ✅ 準拠性:
を CI で実行し、マージン内のカーソル移動、タブストップ、文字セットなど多数の違いを修正。esctest - 🆕 新しいシーケンス: ソフトリセット(DECSTR)、拡張カーソル位置報告、バックアロウキーモード、文字数による画面サイズ報告などをサポート。
- 🔒 セキュリティデフォルト: 信頼性の低いプログラムからの悪用を防ぐため、以下をデフォルトで無効化しました。
- ウィンドウリサイズ許可(CSI 8 t):
vt-window-resize-allowed = false - 画面チェックサムの要求許可:
vt-xt-checksum-report = false
- ウィンドウリサイズ許可(CSI 8 t):
🔑 SSH シェルインテグレーション
Ghostty 1.4 では新しい
CLI アクションが追加され、SSH のラッパーとして動作します。ghostty +ssh
ghostty +ssh user@example.com # またはエイリアスで全 ssh 呼び出しをラップ alias ssh='ghostty +ssh --'
- 📦 セットアップ: 接続前にリモートホストに Ghostty の terminfo をインストール・キャッシュし、適切な
TERM を使用します。失敗時はxterm-ghostty
にフォールバック。xterm-256color - 🔗 統合:
,bash
,zsh
,fish
,elvish
などが同等に動作。スクリプトから直接呼び出せるように統合されました。Nushell - 💾 キャッシュ管理:
コマンドでキャッシュを管理可能。+ssh-cache
フラグを追加し、ホストとポートごとに区別してキャッシュします。--prune=30d
🛠️ 破断変更と廃止(Breaking Changes)
以下の動作が 1.4.0 で変更されました。設定変更が必要な場合があります。
copy-on-select
の再設計
copy-on-select- ⚙️ 値:
,none
,primary
,clipboard
を受け付けます。both - 📋 意味変化:
は以前はシステムクリップボードと選択クリップボードの両方にコピーしましたが、現在はシステムクリップボードのみです。旧来動作ならclipboard
を設定してください。both- macOS デフォルト:
となり(以前はnone
)、選択時にコピーされず、中クリックペーストも停止します。1.3 動作復元にはtrue
。copy-on-select = primary
- macOS デフォルト:
- ⚠️ 廃止予定: Linux/FreeBSD で
はcopy-on-select = true
に置き換えられ、macOS ではprimary
に置換されます(#12600)。clipboard
キーバインドの変更
- 🖱️ GTK デフォルト:
が現在のタブ移動 (ctrl+shift+page_up/down
) になり、Firefox/GNOME Terminal と整合します。move_tab - ⬆️⬇️ macOS キーバインド:
が再びプロンプトジャンプ (cmd+arrow_up/down
) に戻り、Terminal.app と整合しました(1.3 ではスクロール固定)。復元ならjump_to_prompt
など。keybind = cmd+arrow_up=scroll_to_top
設定サマリー: 廃止措置のタイムラインはありませんが、潜在的な妨害を避けるため新しい設定への移行をお勧めします。
🌐 ターミナル機能(vt)
キティグラフィックや他のシーケンスの対応がさらに強化されました。
- キティグラフィック: アニメーション制御、相対位置指定、一時画像驱逐戦略の最適化、可視性報告(モード 2033)、xterm CSI 8 リサイズ許可など。
- キティクリップボード: OSC 5522 の実装、サイズ制限、読み書き制御。
- 表示制御: 非表示時はレンダリング停止、ウィンドウリサイズの無効化設定サポート。
- OSC シーケンス: カラーパレット復元(OSC 4)、マウスポインタ形状戻り(OSC 22)、デスクトップ通知改善(OSC 9/777)。
- ユニコード対応: U+00FF 以上の文字の処理、結合コドポイントの適用修正、C1 制御コードの無視など。
- メモリ管理: キティグラフィックペイロード制限(65 MiB)、画像ストレージ制限などでメモリ枯渇防止。
🍎 macOS 向け改善(追加)
- 🔍 コマンドパレット: 一致するテキストハイライト、初期文字検索、結果のランク付け機能強化。
- 🔎 検索バー: 最後の検索記憶、システム検索ボードとの共有、IME 候補ブロック時の Enter キー動作改善。
- 🗑️ 終了処理: プロセス終了時はネイティブバー表示。異常終了は赤色でハイライト(#7649)。
- 💬 アクセシビリティ: VoiceOver 選択通知の最適化、AppleScript タブ・ターミナルへの PID/TTY 公開。
- 🎨 グラスエフェクト:
がグラスを背景色上にレイヤー化し、フォーカス状態による透明度変化を防ぐ。macos-glass-regular/clear - ⚡ パフォーマンス: メタルバッファの過剰割り当て防止、アイドル時のエネルギー効率向上。
- 🛠️ 設定エラーウィンドウ: Return キーで再読み込み、Escape キーで無視機能追加。
- 🔒 Sparkle 更新: セキュリティ修正(CVE-2026-47121/47122)。
🐧 GTK 向け改善(追加)
- 🛠️ EGL レンダリング:
から EGL + DMABUF へ移行。メインスレッド非依存化。GtkGLArea - 📐 小数倍対応: 真の小数倍スケーリングでシャープなテキストを実現。
- 🔄 タブレイアウト:
で閉じボタンの位置を先頭に移動可能。gtk-tabs-inverted - 🌍 ローカライゼーション: デフォルトコマンドパレットエントリの翻訳対応。
- 📜 通知: 同じテキストの通知は置換され、ターミナル閉鎖時に破棄される。
- 🔗 Dolphin インテグレーション: 実行中のインスタンス内で新しいウィンドウを開く。
📦 パッケージングとシステム要件の変更
macOS
- 最低要件は macOS 13(Ventura)のままで、互換性として macOS 27 も対応。Apple は 2025 年秋に macOS 13 セキュリティサポート終了予定。
GTK
- 必須ライブラリが GTK 4.18 および libadwaita 1.7 に更新されました(Ubuntu 24.04 LTS は満たしません)。古いバージョンは以前の Ghostty 版での動作を確認してください。
OpenGL (GTK)
- 必要な OpenGL の最低バージョンは 4.3 のままです。EGL を通じたレンダリングのため、GPU ドライバーが EGL をサポートしているか確認を。
Snap & Flatpak
- Snap: システムライブラリ(FreeType など)へのリンク強化でクラッシュ防止、GIO モジュールの優先順位整理。
- Flatpak: ホストプロセス終了時のクリーンアップ対応。
📜 ロッカライゼーション
Ghostty 1.4 はコマンドパレットの完全ローカライゼーションを導入し、以下の言語を追加しました:
- 🇧🇦 バスク語
- 🇧🇾 ベラルーシ語
- 🇩🇰 デンマーク語
- 🇷🇸 セルビア語(キリル文字およびラテン文字)
ボランティアコントリビューターにより管理されます。さらに貢献したい場合は GitHub でディスカッションを開いてください。
🔨 libghostty 更新
構築には Zig 0.17 が必要となり、GTK ビルドは GTK 4.18 / libadwaita 1.7 を要求します。
- 🌐 プラットフォーム: macOS, Linux, Windows, FreeBSD, Android, iOS, WebAssembly でのビルド・CI テストに対応。
- 📚 API 進化: C API がパーサーから始まり、完全なターミナルエミュレーター API に成長。数百万人が使用する数十のプロジェクトで採用済み。
- ⏳ 未来: ABI の再破断を計画し、libghostty 1.0 リリースを目指します。Windows サポートロードマップは GUI 版からは廃止され、libghostty で対応されます。
💰 スポンサーシップとチーム
Ghostty は非営利プロジェクトで HCB(Hack Club)の支援を受け、財務を公開しています。
- 支出: コントリビューターへの支払い $41,820、インフラ $1,260。
- 契約: 初の長期有給作業契約を 2 つ署名。
- @trag1c: オペレーション・コミュニティ管理・翻訳調整。
- @vancluever: Zig アップグレード・ビルド改善・z2d ライブラリ開発。
ロードマップは libghostty の機能、安定性、ポータビリティが焦点です。Ghostty 1.5 は 2027 年 3 月 に計画されています。