Po letu razvoja in 26 eksperimentalnih različicah je predstavljen stabilen izid odprte implementacije Win32 API — Wine 9.0, ki vključuje več kot 7000 sprememb. Med ključnimi dosežki v novi različici izstopa uresničitev arhitekture WoW64 za zagon 32-bitnih programov v 64-bitnem okolju, integracija gonilnika za podporo Wayland, podpora arhitekturi ARM64, uresničitev API DirectMusic in podpora pametnim karticam.
V Wine je potrjena popolna funkcionalnost 5336 (pred letom 5266, pred dvema letoma 5156, pred tremi leti 5049) programov za Windows, še 4397 (pred letom 4370, pred dvema letoma 4312, pred tremi leti 4227) programov deluje odlično s dodatno konfiguracijo in zunanjimi DLL. Pri 3943 programih (pred letom 3888, pred dvema letoma 3813, pred tremi leti 3703) so opazne manjše težave pri delovanju, ki ne ovirajo osnovnih funkcij aplikacij.
Ključne novosti Wine 9.0:
- Dodano je gonilo winewayland.drv, ki omogoča uporabo Wine v okoljih, ki temeljijo na protokolu Wayland, brez uporabe XWayland in komponent X11. Razvoj je usmerjen v zagotavljanje delovanja čistega okolja Wayland s podporo za zagon Windows aplikacij, ki ne zahteva namestitve paketov, povezanih z X11, kar omogoča višjo učinkovitost in odzivnost iger s preprečevanjem dodatnih plasti. Uporaba čistih okolij Wayland za Wine prav tako omogoča odpravo težav s varnostjo, značilnih za X11 (na primer, nezanesljive igre za X11 lahko vohunjijo za drugimi aplikacijami, saj protokol X11 omogoča dostop do vseh vhodnih dogodkov in izvajanje nadomestnih pritisov tipk).
Gonilo je označeno kot eksperimentalno in se še razvija, vendar pa že vključuje podporo za mnoge funkcije, kot so upravljanje oken, delo z več monitorji, podpora za skaliranje izhoda na zaslonih z visoko gostoto pik (high-DPI), delo z relativnimi koordinatami pri sledenju gibanju miške in podpora grafičnemu API Vulkan. Privzeto gonilo ni aktivno in za njegovo omogočanje je treba dodati „wayland“ v parameter registra „HKCU\Software\Wine\Drivers“ ter zagotoviti, da spremenljivka okolja DISPLAY ni nastavljena: wine reg.exe add HKCU\\Software\\Wine\\Drivers /v Graphics /d x11,wayland
- Preveden je prevod svih modula na interfejs sistemskih poziva NT, umesto direktnog pozivanja između nivoa PE i Unix, što je označilo završetak višegodišnjeg rada na prevođenju svih DLL biblioteka na korišćenje formata izvršnih datoteka PE (Portable Executable).
- Nastavljena je izrada sloja WoW64 (64-bit Windows-on-Windows), koji omogućava izvršavanje 32-bitnih Windows aplikacija u 64-bitnim Unix sistemima. U svim modulima koji se obraćaju Unix bibliotekama korišćeni su konvertori sistemskih poziva WoW64 (thunk), koji omogućavaju 32-bitnim PE modulima pristup 64-bitnim Unix bibliotekama.
Usavršena je nova verzija režima pokretanja WoW64, u kojoj se 32-bitni kod izvršava unutar 64-bitnog procesa (u starom režimu WoW64 32-bitne aplikacije su pokretane u 32-bitnim Unix procesima). Dodata je podrška za primenu novog režima WoW64 na platformi macOS. S obzirom na to da novi režim WoW64 ima određene nedostatke, kao što su nedostatak podrške za 16-bitni režim i smanjenje performansi OpenGL usled odsustva podrške proširenja ARB_buffer_storage, za sada nije uključen po defaultu i zahteva kompilaciju sa opcionim „--enable-archs=i386,x86_64“ u configure skriptu.
- Dodana je mogućnost izvršavanja postojećih izvršnih datoteka Windows na sistemima sa ARM64 arhitekturom. Implementirana je mogućnost kompilacije Wine za ABI ARM64EC (ARM64 Emulation Compatible) i podržavanje učitavanja ARM64EC modula, korišćenih za olakšanje portovanja aplikacija na ARM64 sistemima, koje su prvobitno napisane za arhitekturu x86_64, kroz pružanje mogućnosti izvršavanja u okruženju ARM64 pojedinačnih modula sa x86_64 kodom pomoću emulatora. Dodana je podrška za PE format ARM64X datoteka, koji omogućava učitavanje jedne izvršne datoteke u x64/Arm64EC i ARM64 procesima. Implementiran je interfejs za emulaciju 32-bitnih x86 sistema, ali biblioteka sa emulatorom još nije uključena u osnovnu strukturu Wine (za pokretanje x86 koda u ARM64 okruženju može se koristiti eksterni emulator FEX).
- Grafični sistem
- PostScript drajver je preradeđen za podršku spool datoteka u Windows formatu, u kojima se čuvaju podaci o zadacima za štampanje. Isključeni su direktni pozivi ka drajveru iz Unix okruženja.
- U WinRT temama dodana je podrška za tamni režim. U WineCfg je dodata opcija za uključivanje tamnog dizajna korisničkog interfejsa.
- V gonik za grafični API Vulkan je bila dodana podpora za specifikacijo Vulkan 1.3.272 (v Wine 8.0 je bila podpora za 1.3.237).
- Optimizirane so bile funkcije knjižnice GdiPlus, kar je omogočilo povečanje zmogljivosti dela z grafiko.
- Direct3D
- Zagotovljena je bila prekinitev razčlenitve večnitnih tokov ukazov ob odsotnosti obdelanih ukazov risanja, kar omogoča zmanjšanje porabe energije na raven enonitnega obdelovanja pri izvajanju programov, ki ne zasedejo celotne pasovne širine toka ukazov.
- U Direct3D 10 implementirana je podrška za dodatne efekte.
- Izvedene so bile optimizacije zmogljivosti v kodi WineD3D in v ozadju, ki uporablja grafični API Vulkan.
- V kodi risanja na osnovi API Vulkan je bila dodana preverba možnosti, podprtih naprave, ter izhod aplikaciji podatkov o dostopni ravni funkcionalnosti Direct3D.
- Implementirane so funkcije D3DXFillTextureTX in D3DXFillCubeTextureTX.
- V klasični ozadju senčil OpenGL ARB je bila dodana podpora za določanje senc s pomočjo razširitve ARB_fragment_program_shadow.
- V D3DXLoadMeshHierarchyFromX in podobne funkcije je bila dodana podpora za nalaganje uporabniških podatkov preko vmesnika ID3DXLoadUserData.
- Zvuk i video
- Predlagana je bila začetna izvedba API DirectMusic. Dodana je podpora za zbirke, instrumente in vzorce zvokov v formatu SoundFont. Dodana je podpora za Doppler efekt. Implementirani so testi za preverjanje pravilnosti izvedbe pri delu sekvenčnega naprave dmime in MIDI-sintezatorja dmsynth.
- Za korišćenje u API-ju DirectMusic ugrađena je biblioteka FluidSynth.
- Implementirana je podpora za nalaganje zvočnih fontov (SoundFont – formati za sintezo na osnovi vzorcev, ki se uporabljajo za predvajanje MIDI-datotek) v formatih DLS1 in DLS2, pa tudi v formatu SF2, ki se uporablja v Linuxu.
- Dodana je možnost predvajanja MIDI-vsebine preko knjižnice dmsynth, z uporabo programski sintetizator FluidSynth in API DirectSound za izhod zvoka.
- Dodani so bili dekoderji za video v formatu videokodiranja Indeo IV50.
- DirectShow
- Implementirana je bila komponenta DMO (DirectX Media Object) z dekoderjem formata WMV (Windows Media Video).
- Dodani so bili filtri za zajem zvoka (DirectShow Audio Capture Filter).
- V filtri za deljenje tokov MPEG-1 (DirectShow MPEG-1 Stream Splitter) je bila poleg zvočnih tokov dodana podpora za video tokove in pomožne tokove.
- Implementiran je bil filter za dekodiranje videa v formatu MPEG-1 (DirectShow MPEG-1 Video Decoder).
- Ulazni uređaji
- V DirectInput je uvedena podpora mapiranja akcij (action maps), ki omogočajo povezovanje gumbov na igralnem krmilniku s specifičnimi akcijami v igrah.
- Integracija s delovno površino
- Zagotovljeno je izvažanje v osnovno uporabniško okolje povezav, ki omogoča zagon aplikacij, ki delujejo pod Wine, kot obdelovalcev protokolov ob odpiranju URL-jev (na primer zagon spotify.exe ob odpiranju povezav kot je «spotify:user:spotify:playlist:848218482355482821»).
- Uvedeno je črpanja podatkov EDID (Extended Display Identification Data) z informacijami o parametrih povezanega monitorja, kot so ime in model naprave.
- Zagotovljena je možnost zapiranja okna delovne površine, razširjeno v celozaslonskem načinu, z uporabo gumba «Exit desktop» v meniju «Start».
- Mednarodna podpora
- Razširjena je podpora IME (Input Method Editors). Izvedeno je delo na zagotavljanju združljivosti z izvirnimi rešitvami IME za Windows in izboljšanju integracije z Linuxovimi IME.
- Zagotovljena je generacija podatkovne baze lokalizacij v formatu locale.nls iz podatkovne baze Unicode CLDR (Unicode Common Locale Data Repository) različice 44. Dodana je podpora za dodatne lokalizacije bew-ID, blo-BJ, csw-CA, ie-EE, mic-CA, prg-PL, skr-PK, tyv-RU, vmw-MZ, xnr-IN in za-CN.
- Izveden je prevod vmesnika v gruzijski jezik. Zagotovljeni so popolni prevodi za 16 jezikov in delni za 31 jezik.
- Tabele znakov Unicode so posodobljene na različico standarda 15.1.0. Posodobljena je baza časovnih pasov.
- Jezgro (interfejsi jezgra Windows-a)
- Kot privzeta različica Windows je določena Windows 10.
- Za izvršljive datoteke v formatu PE je uvedena podpora za randomizacijo naslavljanja spomina (ASLR), vendar naslovi za nalaganje kode v pomnilnik še niso popolnoma randomizirani.
- Zagotovljena je podpora za slabo fragmentirano goro (LFH, Low Fragmentation Heap), kar je omogočilo povečanje zmogljivosti operacij dodeljevanja pomnilnika.
- V mehanizmu dodeljevanja virtualnega pomnilnika je dodana podpora za rezervacijo pomnilnika (placeholder), ki omogoča aplikaciji, da rezervira določen del virtualnega pomnilnika za prihodnjo uporabo.
- 64-bitni naložniki (loader in preloader) izvršljivih datotek in knjižnic so zgrajeni v formatu PIE (Position-Independent Executables) za sprostitev dela 32-bitnega naslavljanja.
- Zagotovljeno je pravilno odvijanje sklada (stack unwinding) za sistemske klice NT in uporabniške callback klice.
- Mrežne mogućnosti
- V motorju MSHTML je implementirana podpora za mehanizem za zbiranje smeti „Cycle Collection“.
- V MSHTML je dodana podpora za sinhroni način obdelave zahtevkov XMLHttpRequest.
- V jscript.dll je dodana podpora za objekt WeakMap, ki deluje s kolekcijo parov ključ/vrednost, kjer je ključ objekt, na katerega je mogoče pripeti poljubno vrednost. Implementirane so metode WeakMap.get(), WeakMap.delete(), WeakMap.clear() in WeakMap.has().
- Brskalni motor Gecko je posodobljen na različico 2.47.4.
- Implementirana je podpora za obvestila o spremembi stanja omrežnega vmesnika.
- Kriptografija in varnost
- V knjižnici Winscard.dll je dodana podpora za pametne kartice, implementirana preko sistemske knjižnice PCSClite.
- V BCrypt je dodana podpora za protokol izmenjave ključev Diffie-Hellman.
- Implementiran je paket Negotiate, ki ponuja plast za uporabo vmesnika SSPI (Security Support Provider Interface) za dostop do ponudnikov SSP (Security Support Provider).
- Vgrajene aplikacije
- V orodju Wine Debugger (winedbg) za razstavljanje strojnih ukazov X86 je vključena knjižnica Zydis.
- V vmesniku WineCfg je dodana možnost nastavitve starejših različic Windows (do XP) na 64-bitnih platformah, kar omogoča zagon zastarelih aplikacij v načinu WoW64.
- V vseh vgrajenih grafičnih aplikacijah je implementirana prikazovanje informacij o napakah v ločenem dialogu, namesto da bi jih prikazovali v konzoli.
- V programu systeminfo je omogočeno prikazovanje podatkov iz baze WMI (Windows Management Instrumentation).
- Dodana je aplikacija klist za prikazovanje Kerberosovih potrdil.
- V aplikaciji taskkill je dodana možnost prisilnega zaključevanja podrejenih procesov.
- V orodju start je dodana možnost „/machine“ za izbiro arhitekture, ki se uporablja pri zagonu hibridnih izvršnih datotek, ki podpirajo x86 in ARM.
- Implementirana je večina funkcionalnosti programa tasklist.
- Dodana je osnovna implementacija aplikacije findstr.
- Orodja za razvoj
- V orodju WineDump je omogočeno izhajanje vsebine datotek registra Windows (format REGF) ter prikaz podatkov za vse arhitekture (x86/ARM64), podprte v hibridnih PE-datotekah.
- V prevajalniku IDL je dodana podpora za atribute „composable“, „default_overload“, „deprecated“ in „protected“.
- Odstranjena je knjižnica libwine.so, koja je proglašena zastarjelom u izdanju Wine 6.0 i već dugo se ne koristi u Wineu. Programi u ELF formatu, sastavljeni u starem verzijama Winea (5.0 i starijim) s libwine.so, zahtijevaju ponovno sastavljanje za izvođenje u Wineu 9.0.
- Ugrađene knjižnice i vanjske zavisnosti
- U integraciju su uključene knjižnice FluidSynth 2.3.3, Musl 1.2.3 (samo matematičke funkcije) i Zydis 4.0.0.
- Ažurirani su na nove verzije komponenata Vkd3d 1.10, Faudio 23.12, OpenLDAP 2.5.16, LCMS2 2.15, LibMPG123 1.32.2, LibPng 1.6.40, LibTiff 4.6.0, LibXml2 2.11.5, LibXslt 1.1.38 i Zlib 1.3. Wine Mono engine s implementacijom .NET platforme ažuriran je na izdanje 8.1.0.
- U drajveru winewayland.drv kao vanjske zavisnosti koristi se klijentska knjižnica Wayland, kao i knjižnice xkbcommon i xkbregistry.
- Za podršku pametnim karticama koristi se vanjska knjižnica PCSClite (u macOS-u — PCSC).
- Za sastavljanje PE datoteka na platformama različitim od i386, sada je potrebna prisutnost cross-kompilatora s podrškom za direktive ".seh" za obradu izuzetaka.
Izvor: opennet.ru
