7月17日、Geir Iseneが「Frame - the first Linux Assembly X server」と題した記事を公開した。Xサーバーをゼロからアセンブリ言語で自作し、実際にデイリードライバーとして運用するまでの取り組みを詳しく紹介している。
X11は400万行のコードを抱える巨大なプロジェクトだ。その全体を理解していると言える人間はほとんどいない。コミュニティ全体がWaylandへの移行を進めるなか、Iseneはそのどちらにも踏み込む代わりに、自分でXサーバーをアセンブリ言語で書いた。それが**Frameだ。依存ライブラリなし、ガベージコレクタなし、外部への依存は一切ない。コード量は約2万行**。既製のX11の200分の1以下の規模だ。
単なる実験ではなく、現在Iseneの実マシンで動いている。Firefox、GIMPも含めたデスクトップ全体が、このアセンブリ製Xサーバーの上で動作している。バッテリー駆動時の計測では、アイドル時のCPU使用率でXorgがFrameの約3倍を消費することが確認された。パネルやWi-Fiがワット数の大半を占めるため消費電力自体は両者で大差ないが、CPU負荷の差は明確だ。ウィンドウマネージャーのtileとターミナルのglassに至っては、3分間の計測で使用時間がゼロミリ秒だったと報告している。「ラップトップにファンがまだついているかどうかわからなくなった」という一文が、その静粛さを端的に表している。
なぜC言語でもRustでもなくアセンブリか。アセンブリはランタイムもガベージコレクタも持たず、OSとハードウェアの間に余計な層を一切挟まない。「アイドル時には完全に静止する。話しかけられるまで黙っている。私の好きなソフトウェアだ」とIseneは書いている。肥大化したソフトウェアへのアンチテーゼとして、アセンブリという選択は一種の必然だったとも言える。
Frameはそれ単体の話ではない。Iseneは**CHasmというプロジェクトとして、デスクトップスタック全体をアセンブリで自作している。現在の構成はカーネルにLinux、XサーバーにFrame、ウィンドウマネージャーにtile(情報バー strip 込み)、ターミナルにglass、シェルにbare、グリーター(ログイン画面)にBolt(gdmを置き換え)という構成だ。CHasm全体で約10万行。これが置き換えた既存スタック(gdm、X11、i3、conky、wezterm、zsh)は、その50倍以上**のコード量だという。すべてパブリックドメインで公開されている。
興味深いのは、このアセンブリプロジェクトの開発にClaude Code(AnthropicのAIコーディングアシスタント)を活用していることだ。アセンブリをAIで書くという逆説的な組み合わせで、「カーソル描画、GPUハンドオフ、イベントウォッチャーについて、計画以上のことを学んだ」と述べている。Xプロトコルの実装はまだ途中で、完成品ではなく現在進行形のプロジェクトだ。
Iseneが自作に踏み切った理由として明示しているのは、バッテリー駆動時間とソフトウェアの所有権だ。大きなオーディエンス向けに設計されたソフトウェアは「全員に少しずつフィットする」が、自作のものは「一人に完全にフィットする」と書いている。GUIアプリケーションとして現在も残っているのはFirefoxのみで、それ以外はすべて自作のターミナルインターフェースに統一されている。「デイリードライバーとして使えるか」という問いに対しては「十分に安定している。この記事もその上で書いた。たまに叫ぶことはあるが」と答えている。
詳細はFrame - the first Linux Assembly X serverを参照していただきたい。