Show HN:Shitty – 快速终端。内存不安全,而且比你的更快

一个名为“shitty”的新开源终端模拟器声称,其文本渲染吞吐量显著高于 Ghostty、Kitty 和 GNOME Terminal 等流行工具,由此引发了关于这种性能提升在日常使用中是否重要的讨论。评论者将吞吐量与更直观的因素——如启动时间、窗口大小调整行为和按键延迟——进行对比,许多人表示自己几乎从未把终端当作瓶颈。该项目挑衅性的名字、大量使用 AI 生成代码,以及从基于 GPL 的代码库转向 MIT 许可的计划,引发了关于专业性、许可伦理和长期可维护性的更广泛争论。

项目与性能宣称

  • 一个新的跨平台终端模拟器,专注于最大吞吐量,并用 C++ 编写(明确“memory-unsafe”,也就是不是 Rust)。
  • 基准测试显示,其 ASCII 吞吐量显著高于一些流行终端(Ghostty、kitty、alacritty、GNOME Terminal 等)。
  • 使用了一个两个字母的二进制名 st,与现有终端重名,并引发了冲突担忧。

实际价值 vs. 过度优化

  • 许多评论者表示,他们很少会感觉终端性能受限,更看重功能、集成和稳定性。
  • 一些人认为,与切换终端的成本相比,更高吞吐量带来的终身时间节省微乎其微。
  • 也有人指出,在输出极其啰嗦的工作负载中(构建日志、调试转储、不小心 cat 巨型文件),终端吞吐量确实可能成为明显限制。

启动时间与延迟

  • 多位用户更关心启动时间和按键到屏幕的延迟,而不是原始吞吐量。
  • 有些人报告 xfce4-terminal、foot、xterm、kitty(单实例模式)几乎可瞬时启动,而 Ghostty 在某些系统上被描述为更慢。
  • 作者声称有非常细粒度的损坏跟踪和最小重绘工作,并根据实现断言其延迟达到同类最佳;但没有具体的延迟测量,而且这种“可证明的最小工作量”说法也受到质疑。

命名与采用

  • “shitty” 这个名字两极分化:有人觉得巧妙又好记;也有人认为它幼稚,并会阻碍企业采用。
  • 关于工具名称里避免粗话是否重要的争论:有人说自己不会在这成问题的地方工作,另一些人则强调专业性。
  • 两字母命令命名也被批评为不必要且会造成冲突。

AI 生成代码与质量

  • 代码的大部分(包括测试)由 LLM 生成,并经过人工审查、sanitizer(ASan/UBSan)、fuzzing 和覆盖率跟踪。
  • 有人认为这是高度专业、以测试驱动的做法;也有人质疑其“顶级 0.1%”的说法,并怀疑 AI 输出究竟被多彻底地审查过。

许可与 GPL 争议

  • 该项目起源于 GPL 许可的基线,并计划通过双重许可重写流程转向仅 MIT 的代码库。
  • 批评者认为这在法律或道德上都可疑,而且工作仍然源自 GPL;作者则引用法律建议,并坚持该流程有效。
  • 这引发了更广泛的关于 copyleft 与宽松许可证的争论:强制衍生作品开放是在保护社区互惠,还是在限制开发者自由。

功能、协议与架构

  • 目前缺少对现代图形和键盘协议的支持(例如 sixel、kitty graphics/keyboard);一些人认为这使与“现代”终端的比较并不完整。
  • 终端输出解析器实现为一个由 Ragel 生成的大型有限状态机,这种方法被称赞为优雅且高性能。
  • 架构据称清晰地分离了解析、终端状态机和渲染,使未来可能以库形式复用,不过目前还没有计划提供 libterminal API。