Bottles 接下来,将 Bottles 重写为 Rust 将使用 libcosmic

瓶子下一个标志

Bottles 的开发者最近通过一篇博客文章透露了他们将在 Bottles Next 上开展的工作的细节,这是一项旨在彻底重新设计该项目架构和代码库的计划。

声明中提到,当前版本的 Bottles是用 Python 编写的,采用基于 GTK 的接口,存在诸多限制,阻碍了新功能的加入,例如 macOS 支持,并且存在一些问题,这些问题只能通过深刻的结构性变革来解决。

一年前,我们宣布了 Bottles Next,这是对 Bottles 项目的完全重写。最初,我们的想法是利用网络技术来实现我们为用户设想的体验。然而,正如通常的情况一样,进行了广泛的研究、辩论、实验和不断的重新评估。

为什么要经历所有这些麻烦?嗯,为了确保我们做出正确的决定。

公告发布后,我们开始尝试许多技术,但最重要的是,我们听取了社区的反馈,特别是与 Electron 相关的反馈。这促使我们探索其他路径,从而创建适合 Bottles Next 特定需求的框架原型。

今天我们就到这里了。

因此,新方法将应用程序分为三个主要部分:

  • 客户端:负责图形界面
  • 服务器:负责运行应用程序和管理 Wine 前缀的逻辑
  • 代理:在 Wine 中运行以直接与 Windows API 交互。

虽然最初考虑使用Electron 和 VueJS 等 Web 技术实现客户端,并使用 Go 开发服务器,但社区的反应以及原型获得的结果使开发人员放弃了这个想法。

因此,最终决定客户端和服务端都使用 Rust,而图形界面则基于 libcosmic 框架。该框架用于 COSMIC 桌面环境,是iced库的扩展,后者能够简化创建现代化且可扩展的图形界面的过程。Libcosmic采用响应式编程模型,其架构与声明式 Elm 语言类似,这使得熟悉 Elm 的开发者更容易理解。

瓶子下一步生锈

尽管开发者们更倾向于使用 Go 语言,但由于 Go 语言中用于开发图形界面的高质量工具有限,他们最终选择了 Rust。即便如此,新的架构也计划保留经典版本的界面作为可选方案,在适应新标准和技术的同时,为用户提供熟悉的体验。

在渲染方面, Bottles Next将支持 Vulkan、Metal、DX12、OpenGL 2.1+ 和 OpenGL ES 2.0+ 等引擎,确保其能够广泛适配不同的系统和硬件。此次重新设计有望提升性能,扩展跨平台兼容性,并为 Bottles 的未来发展奠定更坚实的基础。

此更新同时影响 Bottles Legacy(Bottles 的当前版本)和 Bottles Next。在接下来的几周内,cpak 的第一个版本将完成。它是一种完全基于 OCI 映像的便携式、重复数据删除软件分发格式。

文中还提到,运行在 Wine 生成的 Windows 环境中的Bottles Next 代理将使用 .NET 和 C# 编写。这一选择满足了 WineBridge 服务的特定需求,即需要在模拟环境中与 Windows API 高效集成。

在开发方面,用于测试 Bottles Next 初始原型(完全用 Rust 编写)的容器预计将在几周内发布。目前,仅提供一个基础演示版本,使用户能够初步了解项目的功能和发展方向。此次向 Bottles Next 的过渡有望在功能、兼容性和性能方面带来显著提升。

最后,如果您有兴趣了解更多相关信息,可以点击以下链接查看详情。


在 Google 中将其添加为首选来源