Frame – 第一個以組合語言撰寫的 Linux X 伺服器 (★
87 分)
作者為了真正掌握自己的軟體,將目標延伸到圖形顯示層。X11(Unix/Linux 常見的圖形顯示系統與通訊協定)約有 400 萬行程式碼,作者認為規模過於龐大,因此以 Assembly(組合語言)自行打造名為 Frame 的 X 伺服器。他刻意不使用外部函式庫、垃圾回收器或其他相依元件,目前約 2 萬行,已能啟動桌面、繪製畫面,並執行 Firefox 與 GIMP;不過仍有許多 X 協定功能尚待實作。
作者的整套桌面環境以 Linux 核心為底,上層依序使用 Frame、視窗管理器 Tile、資訊列 Strip、終端機 Glass、命令列殼層 Bare,以及作為登入畫面的 Bolt,這些元件全都以 Assembly 撰寫。整個 CHasm 軟體堆疊約 10 萬行,取代原本由 gdm、X11、i3、conky、wezterm 與 zsh 組成、規模超過它 50 倍的環境。電池測試顯示,閒置時兩者的耗電量相近,因為顯示面板與 Wi-Fi 已主導耗電;但 Xorg 讓中央處理器(CPU)執行近 3 倍的工作,而 Frame 的桌面在三分鐘測量期間幾乎完全靜止,直到使用者操作才產生活動。
作者表示,自己的 Rust 工具組 Fe₂O₃ 已取代大多數日常工具,只留下 Firefox 作為主要圖形介面程式,其餘工作都改用共通按鍵配置的終端機工具。他認為 Frame 已穩定到足以每日使用,遇到問題或需要新功能時,便請 Claude(Anthropic 的人工智慧程式設計助理)協助,並藉此學到硬體分層、游標繪製、GPU(圖形處理器)交接與事件監看等知識。他也以同樣方式打造個人化手機環境,並將這些軟體全部釋出到公有領域(Public Domain),讓系統完全貼合自己的需求。
留言多半對成果感到佩服,但也指出 Frame 的輕量與速度不一定全是 Assembly 或 Claude 的功勞,關鍵可能在於它只實作作者桌面所需的 X11 子集,省略了數十年累積的相容性負擔。有人認為 X 伺服器的主要工作其實是繁瑣的協定處理,人工智慧很適合處理這類大量樣板程式;也有人分享以 Ruby 製作 X11 伺服器的經驗。實際測試則顯示,Frame 尚不是可直接取代 Xorg 的通用方案:有使用者以 dwm 和 alacritty 測試時遇到視窗無法取得焦點的問題,其他人則發現 Tile、Glass 等程式可正常使用,但部分終端機或應用程式無法運作。
對於以大型語言模型(LLM,Large Language Model)產生 Assembly,留言形成兩派。一派認為 Assembly 並不會自動帶來最佳效能,反而使程式更難檢查,也可能掩蓋安全問題;使用良好的巨集組譯器,能把繁瑣內容壓縮成更容易理解的形式。另一派則認為 LLM 能掌握程式意圖,在特定情況下產生比編譯器更有效率的機器碼,但這仍須在正確性與可維護性上接受嚴格驗證。至於電池續航,留言也提醒 Linux 的預設設定未必適合筆記型電腦,TLP 電源管理工具、韌體、顯示卡驅動程式、獨立 GPU 電源控制與核心參數都可能帶來顯著差異,因此 Frame 的成果更像是精簡軟體堆疊與細緻調校共同作用的結果。
👥
52 則討論、評論 💬
https://news.ycombinator.com/item?id=48948597