„Bottles“ kūrėjai neseniai tinklaraščio įraše atskleidė informaciją apie darbą, kurį jie atliks su „Bottles Next“ – iniciatyva, kuria siekiama visiškai pertvarkyti projekto architektūrą ir kodo bazę.
Pareiškime minima, kad dabartinė „Bottles“ versija, parašyta Python kalba su GTK pagrindu sukurta sąsaja, susiduria su dideliais apribojimais , kurie trukdo integruoti naujas funkcijas, tokias kaip „macOS“ palaikymas, ir kelia problemų, kurias galima išspręsti tik iš esmės pakeitus struktūrą.
Daugiau nei prieš metus paskelbėme Bottles Next, visiškai perrašytą Bottles projektą. Iš pradžių buvo siekiama panaudoti žiniatinklio technologijas, kad būtų pasiekta patirtis, kurią numatėme savo vartotojams. Tačiau, kaip dažnai nutinka, buvo atlikti išsamūs tyrimai, diskusijos, eksperimentai ir nuolatinis pakartotinis vertinimas.
Kam išgyventi visas šias bėdas? Na, kad įsitikintume, jog priimame teisingus sprendimus.
Po pranešimo pradėjome eksperimentuoti su daugeliu technologijų, bet visų pirma įsiklausėme į bendruomenės atsiliepimus, ypač susijusius su „Electron“. Tai paskatino mus ieškoti kitų būdų, dėl kurių sukūrėme pagrindinius prototipus, pritaikytus konkretiems „Bottles Next“ poreikiams.
Ir štai mes šiandien.
Todėl naujasis požiūris padalija programą į tris pagrindinius komponentus:
- Klientas: atsakingas už grafinę sąsają
- Serveris: atsakingas už programų paleidimo ir „Wine“ prefiksų valdymo logiką
- Agentas: veikia „Wine“ ir tiesiogiai sąveikauja su „Windows“ API.
Nors iš pradžių buvo svarstoma klientą įdiegti naudojant žiniatinklio technologijas, tokias kaip „Electron“ ir „VueJS“, o serverį kurti naudojant „Go“, bendruomenės reakcija ir prototipų rezultatai paskatino kūrėjus atsisakyti šios idėjos.
Todėl galiausiai buvo nuspręsta naudoti „Rust“ tiek klientui, tiek serveriui, o grafinė sąsaja būtų pagrįsta „libcosmic“ sistema. Ši sistema, naudojama COSMIC darbalaukio aplinkoje, yra „iced“ bibliotekos plėtinys , kuris palengvina modernių ir keičiamo dydžio grafinių sąsajų kūrimą. „Libcosmic“ taiko reaktyvaus programavimo modelį ir laikosi architektūros, panašios į deklaratyviosios „Elm“ kalbos, todėl kūrėjams, susipažinusiems su šiuo metodu, ją lengviau suprasti.

Nors kūrėjai būtų pageidavę dirbti su „Go“ kalba, galiausiai jie pasirinko „Rust“ dėl riboto aukštos kokybės įrankių, skirtų grafinėms sąsajoms kurti „Go“ kalba, prieinamumo. Nepaisant šio perėjimo, naujoje architektūroje taip pat numatyti planai išlaikyti klasikinę sąsajos versiją kaip papildomą variantą, siūlant vartotojams pažįstamą patirtį ir prisitaikant prie naujų standartų bei technologijų.
Kalbant apie atvaizdavimą, „Bottles Next“ palaikys tokius variklius kaip „Vulkan“, „Metal“, DX12, „OpenGL 2.1+“ ir „OpenGL ES 2.0+“, užtikrindamas platų pritaikymą skirtingoms sistemoms ir techninei įrangai. Šis atnaujinimas žada pagerinti našumą, išplėsti suderinamumą tarp platformų ir sukurti tvirtesnį pagrindą būsimam „Bottles“ kūrimui.
Šis naujinimas turi įtakos ir Bottles Legacy (dabartinė Bottles versija), ir Bottles Next. Per ateinančias savaites bus baigta pirmoji cpak versija. Tai yra nešiojamas, iš karto pašalintas programinės įrangos platinimo formatas, pagrįstas tik OCI vaizdais.
Taip pat paminėta, kad „Bottles Next“ agentas, veikiantis „Wine“ sukurtoje „Windows“ aplinkoje, bus parašytas C# kalba naudojant .NET. Šis pasirinkimas atitinka specifinius „WineBridge“ paslaugos poreikius, kuriems reikalinga efektyvi integracija su „Windows“ API emuliuojamoje aplinkoje.
Kalbant apie kūrimą, tikimasi, kad po kelių savaičių bus išleistas konteineris, skirtas testuoti pradinį „Bottles Next“ prototipą, parašytą vien tik „Rust“ kalba . Kol kas galima įsigyti tik pagrindinę demonstracinę versiją, leidžiančią vartotojams susidaryti preliminarų vaizdą apie projekto galimybes ir kryptį. Šis perėjimas prie „Bottles Next“ žada reikšmingus funkcionalumo, suderinamumo ir našumo patobulinimus.
Galiausiai, jei norite sužinoti daugiau apie tai , galite rasti išsamią informaciją šioje nuorodoje.