Tauri 2.0 发布候选版
我们非常自豪地宣布,塔乌里新重大版本的第一个候选版本终于发布了。
经过超过半年的测试版,继一年多的 alpha 版本之后,我们终于到了认为塔乌里 2 稳定下来,不再期望有破坏性更改的地步。
我们希望使用一个相对较短的同龄人候选期,专注于我们的文档和重要的错误修复,这些错误报告均来自我们出色的社区成员和工作组成员。
一个简化的TL;DR可以在此帖文的结尾找到。
走向稳定与更远之路
通过这个候选版本,我们想传达我们对稳定版本的期望和时间线。
我们无数次被问到“何时塔乌里 2.0?”,总是给出了广泛的回答。特别是在开源项目中,过度承诺可能会迅速耗尽开发者和维护人员的精力,或导致失望的采用者发表愤怒的评论。
这就是为何会有这么长的 alpha 和 beta 阶段,也是我们为什么要等待候选版本,因为我们要尽善尽美,使其易于使用。
另一个原因是,我们错误地将这个重大版本过度承诺为“移动作为一等公民”,并在过去的几个月里意识到,我们只能自己为移动构建基础,需要与社区和采用者一起迭代,才能做得正确。
这并不意味着移动有错误或不支持。我们在官方插件仓库中有移动插件,并看到开发者使用塔乌里在 Android 和 iOS 上构建了酷炫的应用。
我们的合作伙伴CrabNebula还就他们在为客户构建或支持移动应用时的开发体验(简单或复杂)提供了反馈。他们甚至贡献了多个移动插件(NFC,条形码扫描仪,生物识别,触觉,定位)作为他们工作的部分。
我们认为需要在移动版开发体验上做一些改进,并承认我们的一些桌面功能和插件尚未移植或适用于移动版。
因此,我们不想提高对塔乌里 2.0 将是“一等公民”移动版的期望,但我们想清楚地表明,您现在可以使用塔乌里开发生产级的移动应用。
从这个候选版本发布后,您可以期待稳定版本
- 更清晰、更全面的文档
- 更少的阻止生产使用的重大错误
我们计划在 8 月底发布 2.0 的稳定版本。在撰写本文时,这将允许大约 4 周的候选版本周期。
在稳定版本发布之后,我们的关注点将转移到尽可能提供功能一致性,并改进移动端开发过程。这将在 Tauri 的次要版本中得到实现。
功能一致性插件开发将与 Tauri 的主要版本保持一致,但将基本独立于 Tauri 核心功能,并在我们的 plugin-workspace 仓库中进行。
开发者体验是我们非常关注的话题。如果您有任何改进建议或想要自发改善现状,请毫不犹豫地通过 PR、问题或在我们的 Discord 服务器上友好交谈的方式与我们联系。
重大更改
在进入“不再有重大变更”的预期阶段之前,我们根据自身观点讨论和规划了一些必要的重大变更,这发生在一段时间之前。
这些变更会影响许多开发者,因此我们希望将它们打包在一起,并在将最新测试版升级到发布候选版或稳定版本时尽可能减少痛苦。
对于应用程序开发者,我们在权限中引用核心插件的方式上进行了重大变更。
您应该能够自动从最新测试版迁移到发布候选版。为了成功迁移,您必须确保使用的是 Tauri CLI 的最新(RC而非测试版)版本。
否则请阅读下方的详细部分 解释变更和手动迁移的方法。
对于作为库或应用程序开发者的 Tauri 下游消费者,我们有一个更大的 重构,您应该了解一下。
塔乌里核心插件
随着 Tauri 2.0 的推出,我们将 1.x 核心功能的绝大部分迁移到独立的插件中,这使得我们可以独立于 Tauri 核心 these 独立迭代,并降低了功能对首次贡献者的障碍。
这次迁移还包括保留一些功能在 Tauri 内部作为伪插件。完全资格的插件需要实现 Plugin Trait
并需要遵循 tauri-plugin-<plugin name>
命名方案作为单个容器。对于核心插件,第二个条件是不可能实现的,因为我们会在 Tauri 上形成循环依赖。因此,我们创建了伪插件,这些插件总是由 Tauri 本身初始化,并且仅实现插件特性。例如,这些是 window
、path
或 webview
。目前,这些可在 Tauri 应用程序的以下方式中允许在 能力 中使用
..."permissions": [ "path:default", "event:default", "window:default", "app:default", "image:default", "resources:default", "menu:default", "tray:default"]...
这有几个问题
- 任何具有冲突名称的插件容器都会破坏我们的构建过程(例如
tauri-plugin-window
容器)以及我们添加插件的 CLI(例如cargo tauri add window
) - 我们不能使用任何现有插件已经使用的核心伪插件命名(例如,如果我们想创建
tauri-plugin-mobile-core
而它已经被使用,我们将遇到第一个问题) - 在查看能力时,对开发者来说不清楚哪些是核心插件,哪些是专用插件
我们的方法是为核心插件使用一个固定的命名空间,该命名空间由 Tauri 核心文档化和强制。所有以 core:
或插件名称 core
开头的插件现在都被视为核心伪插件,它们只有在 Tauri 代码库中时才会初始化。
这将导致启用 Tauri 核心特性的所有功能的破坏性变化。上述示例将更改为以下这样:
..."permissions": [ "core:path:default", "core:event:default", "core:window:default", "core:app:default", "core:image:default", "core:resources:default", "core:menu:default", "core:tray:default"]...
我们还添加了一个新的特殊 core:default
权限集合,其中将包含所有核心插件的所有默认权限,因此您可以简化能力配置中的权限模板。
..."permissions": [ "core:default"]...
我们认为核心默认曝光是合理安全的,并且默认启用是安全的,在前端被破坏的情况下影响有限。
要从最新测试版迁移,您需要在您的能力标识符前添加 core:
或切换到 core:default
权限,并删除旧的核心插件标识符。
移动版开发服务器
我们介绍了内置开发服务器网络曝光的改变,包括 PR #10437 和 PR #10456。随着 Tauri CLI 2.0.0-rc.0 版本中发货的变化,当针对 Android 和 iOS(之前这仅在开发桌面应用程序时才有可能)时,我们可以连接到您运行的本地主机上的开发服务器。
这意味着您不再需要将开发服务器公开在公共网络上。
Rust API 表面重构
在多个工作组成员的共同努力下,我们部分改变了我们的 Rust API 曝光。这仅影响 Rust API 的消费者,并且应该对 Tauri 应用程序开发者没有破坏性变化的影响。
这动机来自最近的安全警告 CVE-2024-35222,因为修复需要将额外的字段引入一个直接公开曝光的结构,这导致一些项目和内部使用的破坏性变化。
我们得出结论,这种过度曝光将阻碍我们在未来的发展,并造成不必要的破坏性变化,因此我们决定从测试版到候选版将是我们在开始 Tauri 3.0 的道路之前的最后机会来实施。
我们减少了公开曝光的组件数量,这些组件是供内部使用的。此外,我们将公开曝光的实体变为非穷尽的或将其转换为曝光构建器模式或构造函数。在一些情况下,我们添加了一个新的 extend
字段,以允许未来动态添加。最后,我们确保记录哪些 Tauri 模块被认为是不可稳定的。
这将帮助我们在不破坏被视为稳定的接口的情况下提供(安全)修复或更改。
请仔细查看#10158拉取请求中介绍和讨论的更改。
外部安全审计
我们在此问题上一段时间以来一直保持沉默,因为我们一直忙于修复和讨论在测试版中发现的问题。
我们从未将2.0 beta版本作为生产版本进行推广,但我们知道有些应用程序已被部署到生产环境中。这导致我们宣布并分发了针对其中一个发现的CVE-2024-35222安全补丁,这个发现也是由Tauri社区成员独立发现的。
所有其他发现已在多个beta版本中修复,但我们并未为这些创建安全公告。我们得出结论,全面的安全通报可以等到候选版本,因为这些发现主要影响开发阶段或没有关键严重性。
随着候选版本的发布,我们将完整报告添加到我们的仓库中。请花时间阅读报告,了解@gronke和@pcwizz来自RadicallyOpenSecurity的出色工作。
整个审计由NLNet的出色人士资助,我们深感荣幸,能够获得全面资助的外部安全审计。
行动呼吁
以上所有主题都包含一个共同的主题。如果没有社区,我们的工作组以及其他努力改善现状的运动的持续支持,这些都是不可能的。
在我们发布Tauri 2.0之前,我们想确保您的声音被听到,您的PR被认可,文档对您有所帮助,这样您就可以构建下一代跨平台应用程序。
目前我们对GitHub的工作组中有30多人,但在我们的Discord中还有更多人参与。这些人大多数在业余时间从事Tauri工作,只是少数例外。我们目前看到许多问题、PR和讨论没有解决,比我们希望的开放时间更长。
为了改善这种情况,我们要求您参与Tauri项目。我们在各种情况下都能接受甚至最小的贡献。
如果您熟悉Tauri并已在旅途中使用了它,请花时间查看Github Discussions、Github Issues以及我们的Discord Support。也许您已经解决了Tauri新用户当前的体验问题。
如果您认为您遇到的一些问题很通用,应该在某处进行文档记录,我们可能在我们的官方文档中有完美的位置。
为了贡献改进或补充,我们在tauri-docs存储库中公开接受PR。不过请确保您已经阅读了贡献指南。
如果您有能力和翻译现有文档到您的母语,我们非常感谢内容翻译到我们的文档。
如果您已经跟踪我们的项目一段时间,但从未做出贡献,我们很乐意了解是什么阻止了您这样做,以及我们如何改进。请通过我们的 Discord 或 Github 讨论区 联系我们。
太长不看
- Tauri 2.0 RC 版本现已发布!
- 需要一些从测试版迁移的工作。请查看
tauri migrate
。 - 2.0 版本外部安全审核报告可在此处获取 这里
- 所有发现都已经修复,修复已经经过验证
- 文档工作是我们直到稳定发布的重点
- Tauri 正在寻找更多的贡献者和社区参与
© 2025 Tauri 贡献者。署名-相似方式-共享、麻省理工学院许可