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 中將其新增為首選來源