爆速ターミナル「Ghostty」の秘密とは?開発者Mitchell Hashimotoに聞くZig採用の理由
Interview with Mitchell Hashimoto about Ghostty and Zig
Interview with Mitchell Hashimoto about Ghostty and Zig
話題の次世代ターミナルエミュレータ「Ghostty」の開発者、Mitchell Hashimoto氏へのインタビュー記事です。なぜRustやGoではなくZigを選択したのか、その技術選定の裏側や開発の舞台裏について語られています。
Rustのカルチャーが嫌い。これ以上の言いようがない。
これ、自分にはすごく奇妙に聞こえるんだよね。だって自分はZigに対して全く同じことを思うから。
Zigを始めようと思って、Loris Croがストリーミングしてた時にチャットで話したりもしたよ。自分のRustプロジェクトをZigでやったらどうなるか探りたかったんだけど、どうしても外せない機能が単純に欠けてたんだ。で、やり取りのほとんどが「Rustがいかにダメか」とか「Zigなら別のやり方ができる(こっちの質問を完全に誤解してて、実際の要件を探ろうとする気配もなかった)」みたいな話ばっかりでさ。
HNを見てて覚えてるんだけど、Rust関連の話題がトレンドになるたびに、その直後に必ずと言っていいほどZigを盛り上げようとする投稿が出てきてたよね。あれが4年くらいずっと続いてた。
別に自分はRustのコントリビューターじゃないし、Rust特有の課題なんてどうでもいいんだけど、Rustが成し遂げたことは素晴らしいと思ってるし、実際うまくやってると思うよ。当時はRustのコミュニティもZigに対して関心とリスペクトを持ってたから、議論はかなり一方的なものだったよ。
13時間前の関連投稿:
「BunのRust書き換えについての考え」 by Zigの作者 Andrew Kelley
個人的なものもメンテナンスされているものも含めて、もっとフォークがあるべきだというのは昔から思っていた。
フォークが増えないのは、一度フォークしたら同期の負担を背負い込むことになるか、アップストリームの将来的な恩恵を放棄することになるからだよ。Ghosttyに集中するために、Mitchellはクロスプラットフォーム対応を維持するという労力を引き受けている。もし自分がある特定の機能(あるいは複数の機能)を欲しくてカスタムフォークを作ったとしても、GTKがアップデートされたら、今度はその変更を自分でサポートしなきゃいけなくなる(それが自分や自分のユーザーコミュニティに関係ある場合だけど)。あるいは、Mitchellの変更を自分のフォークに統合する方法を考えなきゃいけない。そうでなきゃ、フォークとベースラインの差が大きすぎて、結局ベースラインまでロールバックせざるを得なくなって、自分のカスタマイズを失うリスクがあるしね。
もしシステムがうまく設計されていれば(libghosttyの取り組みがここで効いてくるんだけど)、フォークせずに共通のコアを維持したまま、周辺機能だけをフォークできるんだけどね。でも、「うまく設計されている」なんてことはめったにない。
[Rust]の哲学と言語自体は本当に素晴らしい。ただ、使いたくないだけ。
言うべきことはこれだけだよ。彼は余計なコメントを付け加えることで、自分自身や残りのZig「コミュニティ」を、Rust界隈の最悪な連中と同じくらい器の小さいものに見せてしまっている。一部の適当なやつらが言語をどう思おうが、なぜ気にする必要があるの?結局、使われるか使われないか、ただそれだけのこと。
いやー、こういうの読むと本当に嬉しいよ。自分のやってることを深く考えて大事にしていて、自分にとって正しいと思う現実的な判断を下し、なぜそうするのかを説明する。すごくモチベーションが上がるね。マジでソファから仕事机まで突き動かされたよ。
これだけは同意できないな:
PowerShellは構造化データに関して多くのことを正しくやっている。
CLIプログラムはテキストを扱うべきなんだ。解析やフォーマットをしたいならそうすればいいけど、デフォルトの出力モードはプレーンテキストであるべきだよ。そうすれば、grepやawkにパイプで流し込むのを迷わなくて済むからね。
AWS CLIがデフォルトでJSONを出力するのがずっとイライラするんだ。そんなのプログラムで使ってるやつなんて誰もいないだろ(そう願いたいけど…)。プログラムで使うならboto3とかがあるわけだし。人間が読むものなのに、わざわざデフォルトでjqを通さないとまともに読めないような形式にする理由って何?