Bottles Dále bude přepsání Bottles na Rust používat libcosmic

Logo Bottles Next

Vývojáři projektu Bottles nedávno na blogu zveřejnili podrobnosti o práci, kterou budou vykonávat na projektu Bottles Next, což je iniciativa zaměřená na kompletní přepracování architektury a kódové základny projektu.

V prohlášení se uvádí, že současná verze Bottles, napsaná v Pythonu s rozhraním založeným na GTK, čelí významným omezením , která brání začlenění nových funkcí, jako je podpora macOS, a představuje problémy, které lze vyřešit pouze zásadní strukturální změnou.

Před více než rokem jsme oznámili Bottles Next, kompletní přepis projektu Bottles. Původně bylo myšlenkou využít webové technologie k dosažení zážitku, který jsme si pro naše uživatele představovali. Jak už to ale bývá, probíhaly rozsáhlé výzkumy, debaty, experimenty a neustálé přehodnocování.

Proč podstupovat všechny tyto potíže? Abychom se ujistili, že děláme správná rozhodnutí.

Po oznámení jsme začali experimentovat s mnoha technologiemi, ale především jsme naslouchali zpětné vazbě od komunity, zejména té, která se týkala Electronu. To nás přimělo prozkoumat další cesty, které nás vedly k vytvoření prototypů frameworku přizpůsobených specifickým potřebám Bottles Next.

A dnes jsme tady.

Proto nový přístup rozděluje aplikaci do tří hlavních komponent:

  • Klient: zodpovědný za grafické rozhraní
  • Server: má na starosti logiku spouštění aplikací a správu prefixů Wine
  • Agent: který funguje v rámci Wine a přímo interaguje s Windows API.

Ačkoli se zpočátku uvažovalo o implementaci klienta pomocí webových technologií, jako jsou Electron a VueJS, a vývoji serveru v jazyce Go, reakce komunity a výsledky dosažené s prototypy vedly vývojáře k opuštění této myšlenky.

Proto bylo nakonec rozhodnuto použít Rust pro klienta i server, zatímco grafické rozhraní by bylo založeno na frameworku libcosmic. Tento framework, používaný v desktopovém prostředí COSMIC, je rozšířením knihovny iced , která usnadňuje vytváření moderních a škálovatelných grafických rozhraní. Libcosmic využívá reaktivní programovací model a architekturu podobnou deklarativnímu jazyku Elm, což usnadňuje pochopení pro vývojáře, kteří jsou s tímto přístupem obeznámeni.

lahve-další-rez

Ačkoli by vývojáři raději pracovali s jazykem Go, nakonec se rozhodli pro Rust kvůli omezené dostupnosti vysoce kvalitních nástrojů pro vývoj grafických rozhraní v Go. Navzdory tomuto přechodu nová architektura také zahrnuje plány na zachování klasické verze rozhraní jako volitelné možnosti, která uživatelům nabízí známý zážitek a zároveň se přizpůsobuje novým standardům a technologiím.

Co se týče renderování, Bottles Next bude podporovat enginy jako Vulkan, Metal, DX12, OpenGL 2.1+ a OpenGL ES 2.0+, což zajistí širokou adaptabilitu na různé systémy a hardware. Tato přepracovaná verze slibuje lepší výkon, rozšíření kompatibility napříč platformami a robustnější základ pro budoucí vývoj Bottles.

Tato aktualizace se týká jak Bottles Legacy (aktuální verze Bottles), tak Bottles Next. V nadcházejících týdnech bude dokončena první verze cpak. Jedná se o přenosný, deduplikovaný formát distribuce softwaru založený výhradně na obrazech OCI.

Dále se uvádí, že agent Bottles Next, který pracuje v prostředí Windows generovaném Wine, bude napsán v jazyce C# s využitím .NET. Tato volba řeší specifické potřeby služby WineBridge, která vyžaduje efektivní integraci s Windows API v emulovaném prostředí.

Pokud jde o vývoj, očekává se , že během několika týdnů bude vydán kontejner pro testování počátečního prototypu Bottles Next, napsaného kompletně v Rustu . Prozatím je k dispozici pouze základní demo verze, která uživatelům umožňuje získat předběžnou představu o možnostech a směřování projektu. Tento přechod na Bottles Next slibuje výrazné zlepšení funkčnosti, kompatibility a výkonu.

A konečně, pokud se chcete o tomto tématu dozvědět více , podrobnosti naleznete na následujícím odkazu.


Přidat jako preferovaný zdroj v Googlu