Wails v3.0.0 正式发布。作者 Lea 在发布说明里写得很直接:第一个 v3 alpha 标签发出去是在 2023 年 1 月,从那时起,很多人一路构建、测试、弄坏再修好。他把这段路称为"a long road"。
![]()
对不熟悉这个项目的人:Wails 让 Go 程序员用自己已经会的 Web 前端工具做桌面应用,各平台走原生 WebView,而不是塞一个内嵌浏览器。后端写 Go,界面写 HTML、CSS、JavaScript 或任意框架,Wails 把它们打包成单个原生应用。
v2 让"Go 后端 + 现代 Web 前端"这件事变得简单,也服务了不少应用。但它的单窗口、上下文驱动的运行时,让一些日常桌面开发比本该的更难。v3 换了模型:应用、窗口、服务、事件和平台能力都是显式对象。你创建应用、注册服务、创建窗口,跟拥有所需行为的对象对话。应用变大时更容易跟,多窗口成了模型里的正常部分,而不是绕路方案。
v3.0.0 里有什么
- 多窗口:运行时创建、管理、关闭窗口,每个窗口有自己的配置和生命周期。
- 系统托盘:菜单、明暗图标、macOS 模板图标,还能把窗口挂到托盘图标上。
- 原生菜单和对话框:各平台的应用菜单、上下文菜单和原生对话框。
- 服务与生成的绑定:后端仍是普通 Go 代码,绑定通过静态源码分析生成,注释和有意义的参数名会带到前端,一条 wails3 generate bindings 命令搞定。
- 看得见的构建系统:项目用基于 Taskfile 的构建,可以检查、扩展、调试,而不是一条不透明的命令。
- 跨平台:Windows(amd64 和 arm64)、macOS(Intel 和 Apple Silicon)、Linux(amd64 和 arm64),Linux 默认 GTK4 和 WebKitGTK 6.0,旧的 GTK3 栈可用 -tags gtk3 保留到 v3.1。
- iOS 和 Android:同一份 main.go 和前端可以跑在移动端。文档里移动支持仍标为实验性,作者的说法是"拿来探索和反馈,而不是稳定承诺"。
- 用 Go 1.26 构建。
- 应用内更新器:可插拔提供方、加密验证、原子替换,以及一个可换主题或替换的默认 UI。
- 打包与签名:各平台代码签名指南、安装器和 MSIX 打包。
- 服务端构建:同一套应用和服务可以作为 HTTP 服务器运行,不需要原生窗口。
beta 之后补了什么
beta 公告发于 8 月 2 日,此后变更日志一直很忙。作者点名的几项:新的文档站跑在自家文档工具 M-Press 上,社区翻译完成并迁移过来,英文文档仍是唯一事实来源;Windows 体验更硬,WebView2 进程失败后能恢复,不再留一个白窗口,顺带修了一批 WebView2 COM 生命周期问题;macOS 上字母快捷键跟随 AZERTY、QWERTZ、Dvorak 等布局的标注键;更新器加固,包括 Linux 跨文件系统替换二进制和 AppImage 更新;wails3 setup 向导完成,wails3 dev 在应用退出时会停掉后台进程;macOS 26 及以后支持原生 Liquid Glass 效果,更早版本有回退方案。
从 v2 迁过来
v3 是新的主版本,迁移是一次真正的移植,不是改个版本号。主要变化在应用和窗口生命周期、用服务替代绑定上下文的绑定、用应用和窗口的直接 API 替代 v2 的 runtime 包,以及重新生成前端绑定。迁移指南给了前后对照的例子。作者的建议是:有意识地移植,边改边测,v3 应用没准备好之前把 v2 留着。
v2 不会消失,继续接收关键更新。新项目用 v3.0.0。两个 CLI 是分开的二进制(wails 和 wails3),模块导入路径也不同,一台机器上可以同时装。
安装方式:go install github.com/wailsapp/wails/v3/cmd/wails3@v3.0.0,然后跑 wails3 setup 向导检查环境、处理依赖,再用 wails3 init 建第一个项目。
发布节奏也改了
作者承认项目增长远超预期,issue 和 PR 的数量一度跟不上,发布有时是临时安排的,修复和贡献要等太久才到用户手里。现在他们上了系统,把分诊和发布准备里的基础工作更多自动化。v3.0.0 之后转向带日期标签的 nightly 预发布,例如 v3.1.0-nightly.20261026,同时保持每周小版本,例如 v3.1.0、v3.2.0。nightly 让近期修复更快可用,周更提供有规律的、经过测试的更新节奏。
报可复现的 bug 请附上 wails3 doctor 的输出和最小示例;想提新能力或改公开行为,先开一个 WEP(Wails Enhancement Proposal)草案 PR,而不是功能请求 issue。
翻译这块,作者对帮过 v2 文档翻译的人专门致谢,同时说明 Crowdin 管理起来特别难用,已经停用。从 v3 起文档自动翻译,译文和英文页面一起放在仓库里。缺的语言或译错的条目,开 issue 告诉他们。
致谢名单里,作者首先感谢维护者 Atterpac 在开发工具、Linux 桌面集成和社区支持上的工作;特别感谢 Fabio Massaioli(fbbdev)做的静态源码分析器和绑定生成器——普通 Go 服务变成 JavaScript 和 TypeScript API,类型和文档一路带到前端,这是 v3 能成立的一大部分。其余被点名的还有 Travis McLane 的早期平台工作、Stffabi 的资源服务器和原生平台基础、Zach Botterman(popaprozac)的通知与 Dock 集成、Ian VanSchooten(IanVS)的类型化事件和运行时改进、Lyimmi 的 Linux 工作。赞助方里特别提到 JetBrains、ZSA,以及用代码审查支持项目的 CodeRabbit。
作者最后说,手头已经堆了不少活,但先得让 v3 成为一个可以依赖的稳定基础,这排在推出新东西之前。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.