返回

文章详情

与Mitchell Hashimoto关于Ghostty和Zig的采访

Hacker News2026年7月9日 17:17

与Mitchell Hashimoto的采访 2026年7月 - Alex Alejandre Mitchell Hashimoto是Vagrant、Packer、Consul、Terraform、Vault、Nomad、Waypoint的创始人,现在他正在开发Ghostty和Vouch。在这次采访中,我们讨论了终端、Zig和开源。你已经接受过很多采访了。为什么大家喜欢采访你?在采访中,每个人都是从不同的角度出发。许多人想知道软件工程师转型为商业创始人的心态是如何变化的。还有一些人对产品的内容感兴趣,尤其是我在Hashicorp或现在Ghostty工作的那部分。这里不同的是,双方都没有已知的议程;我们没有什么东西要出售。你觉得终端有什么乐趣?比如,为什么选择Ghostty?我花了大约15年时间构建CLI应用程序(不是我们现在看到的TUI)。在这个过程中,我无意中学会了如何给东西上色、移动光标等。离开Hashicorp后,我想磨练一下我的技术技能(因为长时间没有使用而变得迟钝),特别想从事:预AI GPU编程,桌面/单节点系统编程(花了太多时间在分布式方面,不用担心缓存局部性或向量操作,因为网络成本占主导)。我也非常想玩玩Zig。如果这三点都能实现,我就很满意。经过15年的CLI构建,我不了解终端仿真器是如何工作的。我知道终端的组成部分,但真的想了解它的工作原理,这也让我可以在GPU、桌面和Zig中工作。我的目标是运行vim和编译器,让它自己构建,然后把它丢掉。但是随着我对终端生态系统了解的加深,我发现没有什么能适合我想要的利基:快速、功能丰富和原生跨平台。我在Discord与几个朋友分享了它,他们问我是否可以与其他人分享,因为他们实际上每天都在使用它。Ghostty的Discord最开始只是我朋友们的聊天群,后来改成了这个用途。我不想发布,因为我的公众形象会引起太多不必要的关注,所以我进行了很长时间的私人测试。我们如何推动终端的发展?我不支持将终端推向极限。当然,它们是一个应用程序平台,能力与基于操作系统的其他应用程序平台(例如浏览器、旧Java应用程序运行环境)相同。你可以在终端中构建所有功能:视频和麦克风访问、响应式布局……你可以。但是浏览器擅长某些事情,桌面擅长其他事情,而基于文本(等宽网格)的应用程序在独特性方面也有强项。这些基于文本的应用程序应该快速实现,易于互动,安全模型明确。这个生态系统中有很多机会,我希望构建更多协议来实现这一目标。基于终端的应用程序比其他范式更容易组合。TUI不太一样,但大多数CLI工具都有机制(超出stdin和stdout)可以像函数一样使用它们(UNIX单功能哲学是极端的体现)。Neovim和AI工具提供了越来越多的命令行选项。更好的终端应用程序是更好的自动化、脚本化的世界。我想让终端成为应用程序的特殊场所。PTY的带内信号(一个带有转义序列的非结构化字节流)是一个大问题。Nushell生态系统试图通过另一层来解决这个问题,但我们需要根本性的改进。许多人不喜欢微软生态系统,但PowerShell在结构化数据方面做得很好。你对非遗留终端API怎么看?我的指导方针是,现在我们有多个主要的大型应用程序平台:浏览器、emacs、整个Apple生态系统、微软生态系统、Android、视频游戏控制台平台。这些生态系统各有优缺点,但它们的框架如何工作?在网络上,是DOM和JS API。在Apple上是AppKit、Cocoa和SwiftUI。在Windows上是Win32、WinUI等。在Linux上是GTK和Qt等。当有人说我们需要一种更好的访问剪贴板数据的方式时(历史协议只限文本,图像、多种MIME类型等在桌面上已经处理几十年),我会查询每个平台上剪贴板管理器的文档,看看我们已经达成了什么。我们没有理由在没有研究数十年先例的情况下,基于自己的理解构建某样东西。这是我在这里尝试的方法。我还没有介绍任何自定义协议。目前,终端有一个主屏幕和一个替代屏幕(有时称为主要和次要),它们具有不同的属性。主屏幕就像你的shell一样,支持滚动,而替代屏幕则像Neovim、大多数TUI等。只有两个,你要么开启模式,要么关闭模式,使你进入主要或次要状态(占用整个屏幕,失去滚动等)。我想引入一个n屏API,以创建和填充无限数量的屏幕。

赞助内容

NordVPN Next-gen Antivirus

本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。

请我喝杯咖啡