平台

Viva 在 macOS、Windows、Linux 和浏览器上的构建方式。

Viva 在三个原生后端之上保持同一套公开 API。每个后端都使用操作系统自己的窗口、GPU 和文字服务;原生构建只链接系统框架和 Go 运行时。

macOS

使用 Cocoa、CAMetalLayer 和 Metal 绘制,CoreText 负责文字。

  • 原生文本输入,支持带候选窗的中文输入法组合。
  • 独立的语义树,映射为 NSAccessibility 元素。
  • 状态栏图标和弹出面板,状态项可以使用系统自己的 NSMenu。
  • 可打包为 .app、.zip 与 .dmg。程序默认面向 macOS 12 编译。

Windows

Win32 事件、带预编译着色器的 Direct3D 11、用于测量的 DirectWrite,以及用于标签的有界 GDI 纹理。原生构建不加载着色器编译器。

  • 支持 amd64 与 arm64 Windows。
  • 原生窗口、输入和系统文字。
  • 可打包为 NSIS 安装程序或 .zip。

Linux

通过动态加载的系统 XCB、Vulkan、Pango 和 Cairo 使用 X11,事件循环是阻塞式的,空闲时不重绘。

  • X11,使用系统自带的 XCB 和 Vulkan 库。
  • Pango 与 Cairo 负责文字。
  • 可打包为带安装脚本的 tar.gz 或 .deb。
  • 文件对话框、打开 URL 和通知使用已安装的桌面工具,见系统集成。

浏览器(可选)

次要目标:把同样的 Go 组件编译为 WebAssembly,用 Canvas2D 绘制。组件目录里的预览就用它。

  • 浏览器构建复用与原生后端相同的应用、布局和组件代码。
  • 剪贴板和文件选择器使用浏览器的异步 API。
  • 文本编辑已在 Input 示例中接通,使用与原生预览相同的 Go 编辑器。
  • WebGPU 是计划中的后端。

浏览器后端单独构建,绝不会让原生产物变大、变慢或变复杂。

不支持

iOS、iPadOS、Android 等移动系统不在范围内,触控优先的运行时也不是目标。桌面 API 不会为了给移动端留门而被削弱。