生态桌面应用

言台架构

言台 1.0 的 ABI v2、四套机器协议、资源配额与原生无障碍边界。

言台 1.0 把三套桌面系统收敛为版本化的平台原语。公开言序包装层调用一个 ABI v2 原生 模块;原生模块使用winit 0.30创建窗口和接收输入,使用softbuffer呈现 CPU 像素缓冲、 tiny-skia栅格化二维图形、cosmic-text完成字体回退与整形,并以 AccessKit 接通系统 无障碍服务。

言序应用/言界
      │ 资源、原生值、事件批次、语义树、YXDR 帧
      ▼
言台言序包装层
      │ ABI v2(11 个函数、41 项操作、5 类资源)
      ▼
Rust 公共后端
  ├─ winit:窗口、显示器、键盘、指针、IME、拖放
  ├─ softbuffer + tiny-skia:表面与 CPU 二维绘制
  ├─ cosmic-text:字体匹配、整形、测量、命中、字形
  ├─ AccessKit:UIA、NSAccessibility、AT-SPI
  └─ arboard / rfd:文字与图片剪贴板、文件对话框

协议

  • 平台 ABI 主版本为2;不匹配的主版本拒绝加载。
  • 平台协议为1.7,固定能力查询、帧反馈、运行诊断、配额和生命周期语义。
  • 事件协议为1.3,覆盖 39 种应用、窗口、输入、IME、拖放、帧和无障碍事件。
  • 无障碍协议为1.0,固定 38 个角色、18 个状态、15 个动作和有界语义树。
  • 每批事件有数量和字节上限;队列上限为 4096,高频状态在入队前合并。
  • 绘制协议YXDR 1.1使用一个完整二进制帧,支持清空、裁剪、变换、矩形、圆角、直线、圆、路径、阴影、文字、字形、图片、图层和透明度。
  • 协议解码器拒绝损坏缓冲、超限数据和未知主版本;可忽略兼容的未知次版本字段。

所有权与线程

应用是资源树根。窗口、计时器、字体和图片都是应用的直接子资源;句柄包含代际,释放后的 旧句柄不能访问复用槽位。应用可在创建首个子资源或首次运行前下调资源数、持有字节、帧和 无障碍树配额,之后配额永久冻结。关闭按子到父顺序执行且可重复调用,应用生命周期只沿 “就绪 → 运行中 → 退出请求 → 已退出 → 已关闭”前进。

原生事件循环只把事件投递到容量为 4096 的队列,所有言序回调都在 VM 所有者线程泵出。 离散事件超限会以稳定错误停止循环;指针移动、窗口尺寸和重绘请求会合并。每个窗口只保留 一个待呈现帧,新帧有界替换未呈现旧帧,并通过提交回执和帧呈现事件提供背压反馈。

生产可观测性

应用.调试快照()提供事件队列、资源、帧、无障碍桥、配额和生命周期的当前量、高水位、 累计量与拒绝统计,不包含窗口标题、用户文本、剪贴板内容或原生句柄。窗口语义树在首次 显示前接入 UIA、NSAccessibility 或 AT-SPI;焦点和动作请求返回事件循环后,会重新校验 树修订、节点身份、状态、参数和队列容量。

完整实现文档见言台架构、 平台 API、 1.0 协议冻结和 资源生命周期。