← 返回信息流
AI 资讯Hacker News·2 小时前

Frame:首个Linux汇编X服务器

原标题:Frame – the first Linux Assembly X server

速览

Frame是一款全新的X服务器,采用汇编语言编写,旨在提升性能与效率。这是Linux生态中首个完全用汇编实现的X服务器,可能对系统底层图形处理带来影响。该项目的出现展示了汇编语言在现代系统中的潜在用途。

AI 深度解读

背景

在追求完全掌控自己软件的过程中,作者发现一个基础组件始终无法绕开——X 服务器。X 服务器是底层图形引擎,负责将像素绘制到屏幕上。现有的 X11 实现拥有约 400 万行代码,体量庞大到几乎无人敢声称完全理解其内部逻辑。面对这种复杂性,作者决定采取一个看似极端但合乎逻辑的行动:用汇编语言从头编写自己的 X 服务器。这个项目被命名为 Frame,意为“框架”。

核心内容

Frame 是一个完全用汇编语言编写的 Linux X 服务器,目标是从根本上替换传统的 X11 实现(如 Xorg)。它的设计原则是极简主义:无依赖、无外部库、无垃圾回收器、无热路径、无不必要的唤醒。当系统空闲时,Frame 完全静止,除非被主动调用,否则不消耗任何资源。整个 Frame 代码量约为 2 万行,而它已经能够支持作者完整的桌面环境,包括运行 Firefox 和 GIMP 等日常应用程序。虽然目前只实现了部分 X 协议,但已经可以正常启动、绘制图形,甚至作者正在用 Frame 下的浏览器撰写这篇文章。

作者构建的完整软件栈如下:

  • 底层:Linux 内核
  • 之上:Frame(X 服务器)
  • 之上:窗口管理器 tile(带信息栏的平铺管理器)
  • 在 tile 内部运行终端仿真器 glass
  • 在 glass 中运行 shell bare
  • 屏幕锁程序 Bolt 被升级为登录管理器(greeter),取代了原本的 gdm

整个 CHasm 项目(包括 Frame、tile、glass、bare、Bolt 等)总代码量约 10 万行汇编。而它所替代的传统软件栈(gdm、X11、i3、conky、wezterm、zsh)的总代码量大约是前者的 50 倍以上。作者表示,做这一切的初衷是延长电池续航——新系统让笔记本的风扇几乎不再需要转动,除了作者本人(开玩笑地比喻自己成了“风扇”)。

作者还进行了性能实测:在电池供电、空闲状态下,Frame 和 Xorg 的功耗相同(因为面板和 Wi-Fi 才是主要耗电来源),但 Xorg 的 CPU 占用率几乎是 Frame 的 3 倍。在 3 分钟的测量时间内,tile 和 glass 的 CPU 占用为零毫秒。桌面在用户触摸之前完全静止。

除了桌面组件,作者还开发了一套名为 Fe₂O₃ 的 Rust 工具套件,已经替换了几乎所有之前使用的其他工具(除了 Firefox,那是作者日常使用的最后一个 GUI 应用)。其余所有交互均通过终端界面完成,统一了快捷键,且体积和功耗都比被替换的软件小得多。

关于稳定性:作者表示 Frame 足够稳定,可以日常使用,并用于撰写本文,偶尔会出现问题需要调试。当遇到 bug 或需要新功能时,作者会向 AI 助手 Claude 描述需求。Claude 从不疲倦、没有偏执,而且是一位很好的老师,帮助作者深入了解了硬件层级、光标绘制、GPU 移交和事件监听等知识。

作者还将同样的理念应用到了手机上:自研了启动器、每日个性化新闻摘要,以及一系列只服务于一个用户(自己)的应用程序。

所有代码均已发布到公共领域(Public Domain)。作者认为,为大众设计的软件只能让每个人“刚好能用”,而他的软件则“恰好适合一个人”——完全符合他个人的需求和控制欲。

关键要点

  • Frame 是第一个用汇编语言编写的 Linux X 服务器,代码量约 2 万行,无外部依赖。
  • 完整桌面栈(CHasm 项目)仅约 10 万行汇编,替换了传统堆栈(gdm、X11、i3、conky、wezterm、zsh)约 50 倍以上的代码量。
  • 空闲状态下 Frame 的 CPU 占用仅为 Xorg 的约三分之一,桌面组件(tile、glass)在空闲时 CPU 占用为零。
  • 作者通过 AI 助手 Claude 进行调试和学习,快速掌握底层硬件知识。
  • 手机端也采用了类似的自研软件策略,包括自启动器、新闻摘要和定制应用。
  • 所有代码均开源至公共领域,强调“软件只为一人精确适配”的理念。

意义与影响

Frame 项目的意义远超一次个人技术实验。它展示了在极端精简和控制欲驱动下,用底层语言(汇编)重写现代桌面基础设施的可能性。虽然 Frame 目前仅支持作者本人使用,但它证明了 X 服务器并非必须拥有数百万行代码——一个专注于核心功能、不兼容多余特性的实现,可以在功能性、性能和资源占用之间取得极佳平衡。

从更宏观的角度看,该项目对“软件臃肿”问题给出了一个尖锐的回应:传统桌面软件栈的代码量膨胀主要源于对大量硬件、协议、兼容性和历史负担的妥协。而如同一把“手术刀”般精确的定制化方案,可以大幅降低资源消耗,尤其对电池供电设备有显著优势。此外,作者利用 AI 辅助编程的方式也值得关注——Claude 作为结对编程伙伴,帮助作者快速跨越了底层汇编开发的陡峭学习曲线,这或许预示着未来个人开发者也能独立完成过去需要团队才能支撑的底层系统项目。

当然,Frame 的局限性也很明显:它仅支持作者个人配置的硬件和软件组合,无法作为通用 X 服务器替代 Xorg。但它的存在本身,就是对“复杂是不可避免的”这一假设的有力反驳,也为未来更轻量、更可控的图形系统提供了参考模型。

查看原文 →isene.org