Bottles Zatim, prepisivanje Bottles to Rust će koristiti libcosmic

Bottles Next logo

Programeri Bottles-a su nedavno , putem blog posta, otkrili detalje o radu koji će obavljati na Bottles Next-u, inicijativi koja ima za cilj potpuno redizajniranje arhitekture i kodne baze projekta.

U saopštenju se navodi da trenutna verzija Bottles-a, napisana u Pythonu sa GTK interfejsom, ima značajna ograničenja koja ometaju uključivanje novih funkcija, poput podrške za macOS, i predstavlja probleme koji se mogu riješiti samo kroz duboku strukturnu promjenu.

Prije više od godinu dana najavili smo Bottles Next, potpunu prepravku projekta Bottles. Prvobitno, ideja je bila iskoristiti web tehnologije za postizanje iskustva koje smo zamislili za naše korisnike. Međutim, kao što je to često slučaj, bilo je opsežnih istraživanja, debata, eksperimenata i kontinuiranog ponovnog vrednovanja.

Zašto prolaziti kroz sve ove nevolje? Pa, da budemo sigurni da donosimo prave odluke.

Nakon objave, počeli smo eksperimentirati sa mnogim tehnologijama, ali prije svega slušali smo povratne informacije iz zajednice, posebno one vezane za Electron. To nas je potaknulo da istražimo druge puteve, što nas je dovelo do stvaranja prototipova okvira prilagođenih specifičnim potrebama Bottles Next-a.

I evo nas danas.

Zato novi pristup dijeli aplikaciju na tri glavne komponente:

  • Klijent: odgovoran za grafički interfejs
  • Server: zadužen za logiku pokretanja aplikacija i upravljanje Wine prefiksima
  • Agent: koji radi u Wine-u kako bi direktno komunicirao sa Windows API-jem.

Iako je prvobitno razmatrano da se klijent implementira pomoću web tehnologija kao što su Electron i VueJS, a server razvije u Go-u, reakcija zajednice i rezultati dobijeni s prototipovima naveli su programere da napuste ovu ideju.

Stoga je na kraju odlučeno da se Rust koristi i za klijenta i za server, dok bi grafički interfejs bio zasnovan na libcosmic frameworku. Ovaj framework, koji se koristi u COSMIC desktop okruženju, predstavlja proširenje iced biblioteke , koja olakšava kreiranje modernih i skalabilnih grafičkih interfejsa. Libcosmic usvaja reaktivni model programiranja i prati arhitekturu sličnu deklarativnom Elm jeziku, što ga programerima koji su upoznati s ovim pristupom olakšava razumijevanje.

boce-sljedeća-rđa

Iako bi programeri radije radili s Go jezikom, na kraju su se odlučili za Rust zbog ograničene dostupnosti visokokvalitetnih alata za razvoj grafičkih interfejsa u Gou. Uprkos ovoj tranziciji, nova arhitektura također uključuje planove za zadržavanje klasične verzije interfejsa kao opcije, nudeći korisnicima poznato iskustvo uz prilagođavanje novim standardima i tehnologijama.

Što se tiče renderiranja, Bottles Next će podržavati engine-e kao što su Vulkan, Metal, DX12, OpenGL 2.1+ i OpenGL ES 2.0+, osiguravajući široku prilagodljivost različitim sistemima i hardveru. Ovaj redizajn obećava poboljšane performanse, proširenu kompatibilnost između platformi i robusniju osnovu za budući razvoj Bottles-a.

Ovo ažuriranje utiče i na Bottles Legacy (trenutnu verziju Bottles) i na Bottles Next. U narednim sedmicama će biti završena prva verzija cpak-a. To je prenosivi format za distribuciju softvera bez duplikata baziran u potpunosti na OCI slikama.

Također se spominje da će agent Bottles Next, koji radi unutar Windows okruženja generiranog Wine-om, biti napisan u C# koristeći .NET. Ovaj izbor adresira specifične potrebe WineBridge servisa, koji zahtijeva efikasnu integraciju s Windows API-jem u emuliranom okruženju.

Što se tiče razvoja, očekuje se da će kontejner za testiranje početnog prototipa Bottles Next-a, u potpunosti napisanog u Rustu, biti objavljen za nekoliko sedmica . Za sada je dostupna samo osnovna demo verzija, koja korisnicima omogućava da steknu preliminarnu predstavu o mogućnostima i smjeru projekta. Ovaj prelazak na Bottles Next obećava značajna poboljšanja u funkcionalnosti, kompatibilnosti i performansama.

Konačno, ako ste zainteresirani da saznate više o ovome , detalje možete pronaći na sljedećem linku.


Dodaj kao preferirani izvor na Googleu