Hacker News 中文摘要

RSS订阅

凤凰:用Zig语言从零编写的现代X服务器 -- Phoenix: A modern X server written from scratch in Zig

文章摘要

Phoenix是一个用Zig语言从头编写的现代X服务器,旨在替代Xorg服务器。目前处于开发阶段,仅支持嵌套运行简单图形应用。其目标是简化X11协议,仅支持现代应用和硬件,并通过Zig语言特性提升安全性,默认隔离应用间的交互。

文章总结

凤凰X服务器:用Zig语言重写的现代X11服务端

项目概述

Phoenix是一个用Zig语言从零开发的X服务器(非Xorg分支),旨在为Xorg提供现代化替代方案。该项目目前处于开发阶段,支持在现有X服务器中以嵌套模式运行支持GLX/EGL/Vulkan的应用程序。

核心目标

  1. 精简架构

    • 仅支持近20年现代应用所需的X11协议子集
    • 仅兼容近15年支持Linux DRM/Mesa GBM的硬件
    • 采用类似Wayland合成器的工作模式
  2. 安全增强

    • 自动解析协议消息
    • 利用Zig语言的ReleaseSafe选项捕获越界等非法行为
    • 默认应用隔离机制,需授权才能跨应用交互
    • 全局快捷键需配合修饰键使用
  3. 现代技术支持

    • 多显示器独立刷新率/VRR支持
    • HDR显示技术
    • 默认启用无撕裂的内建合成器
  4. 协议扩展

    • 开发新标准(如每显示器DPI属性)
    • 按需扩展X11协议(如HDR支持)
    • 未来可能原生支持Wayland或通过桥接方案兼容

技术特性

  • 字符串编码:默认使用UTF-8(原X11协议使用ISO Latin-1)
  • 嵌套支持:可在X11/Wayland下硬件加速运行,便于调试开发
  • 图形处理:合成器可根据外置合成器/全屏应用自动禁用

非目标范畴

  • 不追求完全替代Xorg(保留对旧协议/硬件的支持)
  • 不支持多X11屏幕(但支持多显示器)
  • 不实现GrabServer功能
  • 暂不支持字节序交换的客户端/服务端
  • 不提供间接GLX远程渲染

构建安装

```bash

安装

zig build -Doptimize=ReleaseSafe sudo zig build install -p /usr/local -Doptimize=ReleaseSafe

开发构建

zig build # 生成debug版本 zig build run # 构建并运行

协议文档生成

zig build -Dgenerate-docs=true ```

依赖环境

  • Zig 0.14.1
  • 嵌套模式依赖:xcb(X11)、wayland-client/wayland-egl(Wayland)
  • 独立运行依赖:libdrm/gbm(暂未支持)
  • 图形支持:libglvnd(OpenGL/EGL)

(注:原文中关于卸载方式、协议差异等次要细节已适当精简,保留了核心技术特性和项目目标)

评论总结

以下是评论内容的总结:

  1. 关于项目定位与兼容性

    • 有评论质疑项目放弃X11绘图操作和XRender支持的意义(评论5):
      "If you are not going to implement X11 drawing ops and XRender... what's even the point?"
      "Any 'modern' program that only does client-side rendering already supports Wayland."
    • 也有观点认为这种"类Wayland"的X服务器设计合理(评论6):
      "Pretty interesting approach to make an X server that is essentially 'Wayland-like'"
      "a fairly reasonable set of choices"
  2. 与其他项目的关系

    • 被拿来与XLibre(X11活跃分支)比较(评论3):
      "XLibre is trying to advance the existing implementation... whereas Phoenix is writing a new server from scratch"
    • 有用户提到Zig语言的X11客户端库zigx(评论9):
      "Compared to libX11, it avoids dynamic dependencies, uses less memory"
  3. 功能需求讨论

    • 多显示器支持被列为非目标引发担忧(评论8):
      "Would that prevent its usage with window managers which support virtual desktops?"
    • 关于垂直同步与合成器的技术讨论(评论1):
      "why would vsync being enabled mean that the desktop compositor needs to stick around"
  4. 命名混淆问题

    • 有用户指出项目名称易产生歧义(评论4):
      "First my mind went to Phoenix (elixir framework), then to X (twitter)"
  5. 社区反响

    • 支持者认为这是X11现代化的正确方向(评论10/7):
      "I’d prefer to see from X preservationists"(评论10)
      "An X11 rewrite with some security baked in is an awesome approach"(评论7)
    • 也有幽默回应(评论11):
      "It's christmas and not april fools!"
  6. 开发细节

    • 关于Zig构建模式的说明(评论12):
      "the author of Phoenix wants to choose ReleaseSafe as the official release mode"

(注:所有评论均无评分信息,因此未体现认可度差异)