Nakon godinu dana razvoja i 26 eksperimentalnih verzija, predstavljeno je stabilno izdanje otvorene implementacije Win32 API-ja - Wine 9.0, u koje je ugrađeno više od 7000 promjena. Ključna postignuća u novoj verziji uključuju implementaciju WoW64 arhitekture za pokretanje 32-bitnih programa u 64-bitnom okruženju, integraciju upravljačkog programa za podršku Waylandu, podršku za ARM64 arhitekturu, implementaciju DirectMusic API-ja i podršku za pametne kartice.
Potvrđeno je da 5336 (5266 prije godinu dana, 5156 prije dvije godine, 5049 prije tri godine) programa ispravno rade u Wineu. WindowsDodatnih 4397 programa (4370 prije godinu dana, 4312 prije dvije godine, 4227 prije tri godine) radi dobro s dodatnim postavkama i vanjskim DLL-ovima. 3943 programa (3888 prije godinu dana, 3813 prije dvije godine, 3703 prije tri godine) imaju manje probleme koji ne ometaju osnovnu funkcionalnost aplikacija.
Ključne inovacije u Wineu 9.0:
- Dodan je upravljački program winewayland.drv koji omogućuje korištenje Winea u okruženjima temeljenim na Waylandu bez korištenja XWayland ili X11 komponenti. Cilj ovog razvoja je pružiti čisto Wayland okruženje s podrškom za pokretanje. Windows- aplikacije koje ne zahtijevaju instaliranje paketa povezanih s X11, što omogućuje veće performanse i responzivnost u igrama uklanjanjem nepotrebnih slojeva. Korištenje čistog Wayland okruženja za Wine također uklanja sigurnosne probleme svojstvene X11 (na primjer, nepouzdane X11 igre mogu špijunirati druge aplikacije jer X11 protokol omogućuje pristup svim ulaznim događajima i izvršavanje zamjene pritiska tipki).
Upravljački program je označen kao eksperimentalni i u razvoju, ali, unatoč tome, već ima podršku za mnoge značajke, kao što je upravljanje prozorima, rad s više monitora, podrška za skaliranje izlaza na zaslonima visoke gustoće piksela (visoki DPI), rad s relativne koordinate pri praćenju kretanja miša i podrška za Vulkan graphics API. Prema zadanim postavkama, upravljački program nije aktivan i da biste ga omogućili, trebali biste dodati “wayland” u parametar registra “HKCU\Software\Wine\Drivers” i provjerite da varijabla okruženja DISPLAY nije postavljena: wine reg.exe add HKCU\ \Software\\Wine\\Drivers /v Graphics /d x11,wayland
- Svi moduli su pretvoreni u NT sučelje za pozive sustava, umjesto da prave izravne pozive između PE i Unix slojeva, označavajući završetak dugogodišnjeg rada na pretvorbi svih DLL-ova za korištenje PE (Portable Executable) formata izvršne datoteke.
- Razvoj WoW64 sloja (64-bitni) je nastavljen Windows-na-Windows), što vam omogućuje pokretanje 32-bitnih Windows- aplikacije na 64-bitnim Unix sustavima. Svi moduli koji pristupaju Unix bibliotekama koriste WoW64 prevoditelje sistemskih poziva (thunks), što omogućuje 32-bitnim modulima u PE formatu pristup 64-bitnim Unix bibliotekama.
Novi način pokretanja WoW64 je poboljšan, omogućujući izvođenje 32-bitnog koda unutar 64-bitnog procesa (u starom WoW64 načinu rada, 32-bitne aplikacije su se pokretale u 32-bitnim Unix procesima). Dodana je podrška za korištenje novog WoW64 načina rada na platformi. macOSBudući da novi WoW64 mod ima neke manje greške, poput nedostatka 16-bitne podrške i smanjenih OpenGL performansi zbog nedostatka podrške za ARB_buffer_storage ekstenziju, još nije omogućen prema zadanim postavkama i zahtijeva izgradnju s opcijom "--enable-archs=i386,x86_64" u skripti za konfiguraciju.
- Dodana je mogućnost izvršavanja postojećih izvršnih datoteka Windows Na sustavima s ARM64 arhitekturom. Wine se sada može izgraditi za ARM64EC (ARM64 Emulation Compatible) ABI, a mogu se učitati i ARM64EC moduli. Ovi moduli se koriste za pojednostavljenje prenošenja aplikacija izvorno napisanih za x86_64 arhitekturu na ARM64 sustave omogućujući izvršavanje pojedinačnih x86_64 kodnih modula u ARM64 okruženju pomoću emulatora. Dodana je podrška za ARM64X PE format datoteke, koji omogućuje učitavanje jedne izvršne datoteke u procesima x64/Arm64EC i ARM64. Implementirano je sučelje za emulaciju 32-bitnih x86 sustava, ali biblioteka emulatora još nije uključena u glavnu Wine distribuciju (vanjski FEX emulator može se koristiti za pokretanje x86 koda u ARM64 okruženju).
- Grafički podsustav
- PostScript upravljački program je redizajniran kako bi podržavao spool datoteke u formatu Windows, koji pohranjuju podatke o ispisnim zadacima. Izravni pozivi upravljačkom programu iz Unix okruženja su isključeni.
- Podrška za tamni način rada dodana je WinRT temama. Postavka je dodana u WineCfg za omogućavanje tamnog dizajna sučelja.
- Upravljački program za grafički API Vulkan dodao je podršku za specifikaciju Vulkan 1.3.272 (8.0 je podržan u Wineu 1.3.237).
- Funkcije GdiPlus biblioteke su optimizirane, omogućujući poboljšane grafičke performanse.
- Direct3D
- Raščlanjivanje višenitnog toka naredbi obustavljeno je kada se ne obrađuju naredbe za renderiranje, što omogućuje smanjenje potrošnje energije na razinu jednonitne obrade pri izvođenju programa koji ne zauzimaju cijelu propusnost toka naredbi.
- Direct3D 10 uključuje podršku za dodatne efekte.
- Napravljene su optimizacije performansi WineD3D koda i pozadine pomoću grafičkog API-ja Vulkan.
- Kod za renderiranje temeljen na Vulkan API-ju sada provjerava koje mogućnosti uređaj podržava i govori aplikaciji koja je razina Direct3D funkcionalnosti dostupna.
- Implementirane su funkcije D3DXFillTextureTX i D3DXFillCubeTextureTX.
- Klasični OpenGL ARB shader backend ima dodatnu podršku za definiranje sjena pomoću ekstenzije ARB_fragment_program_shadow.
- D3DXLoadMeshHierarchyFromX i slične funkcije dodale su podršku za učitavanje korisničkih podataka pomoću sučelja ID3DXLoadUserData.
- Zvuk i video
- Predložena je početna implementacija DirectMusic API-ja. Dodana podrška za zbirke, instrumente i uzorke zvuka u formatu SoundFont. Dodana podrška za Doppler efekt. Provedeni su testovi za provjeru ispravne implementacije pri radu s dmime sekvencerom i dmsynth MIDI sintesajzerom.
- Knjižnica FluidSynth ugrađena je u DirectMusic API za korištenje.
- Implementirana je podrška za učitavanje zvučnih fontova (SoundFont - formati za sintezu temeljenu na uzorcima koji se koriste za reprodukciju MIDI datoteka) u DLS1 i DLS2 formatima, kao i u SF2 formatu koji se koristi u Linux.
- Dodana je mogućnost reprodukcije MIDI sadržaja pomoću biblioteke dmsynth, pomoću softverskog sintesajzera FluidSynth i API-ja DirectSound za audio izlaz.
- Dodan je dekoder za video u formatu video kodeka Indeo IV50.
- DirectShow
- Implementirana je DMO (DirectX Media Object) komponenta s dekoderom WMV formata (Windows Medijski video).
- Dodan filtar za snimanje zvuka (DirectShow Audio Capture Filter).
- Uz audio streamove, MPEG‑1 Stream Splitter (DirectShow MPEG‑1 Stream Splitter) sada podržava video streamove i servisne streamove.
- Implementiran je filtar za dekodiranje videa u MPEG‑1 formatu (DirectShow MPEG‑1 Video Decoder).
- Uređaji za unos
- DirectInput podržava mapiranje radnji, što vam omogućuje vezanje gumba na kontroleru igre za određene radnje u igrama.
- Integracija s radnom površinom
- Vezovi su izvezeni u glavno korisničko okruženje, dopuštajući da se aplikacije koje se izvode pod Wineom pozivaju kao rukovatelji protokola prilikom otvaranja URL-a (na primjer, pokretanje spotify.exe prilikom otvaranja poveznica poput “spotify:user:spotify:playlist:848218482355482821”).
- Implementirano izdvajanje EDID (Extended Display Identification Data) podataka s informacijama o parametrima povezanog monitora, kao što su naziv i model uređaja.
- Moguće je zatvoriti prozor radne površine postavljen u načinu rada preko cijelog zaslona pomoću gumba "Izlaz s radne površine" u izborniku "Start".
- Internacionalizacija
- Proširena je podrška za IME-ove (uređivače metoda unosa). Obavljen je rad na osiguravanju kompatibilnosti s izvornim Windows Implementacije IME-a i poboljšana integracija s Linux EMI
- Generiranje baza podataka o lokalitetima u formatu locale.nls iz baze podataka Unicode CLDR (Unicode Common Locale Data Repository) verzije 44 pružena je podrška za dodatne lokalizacije bew-ID, blo-BJ, csw-CA, ie-EE, mic-CA. , prg-PL je dodan, skr-PK, tyv-RU, vmw-MZ, xnr-IN i za-CN.
- Sučelje je prevedeno na gruzijski. Puni prijevodi dostupni su za 16 jezika, a djelomični prijevodi za 31 jezik.
- Unicode tablice znakova ažurirane su na standardnu verziju 15.1.0. Baza podataka vremenskih zona je ažurirana.
- Jezgra (jezgrena sučelja Windows)
- Kao izdana verzija Windows definirano prema zadanim postavkama Windows 10.
- Za izvršne datoteke u PE formatu implementirana je podrška za randomizaciju adresnog prostora (ASLR), ali adrese za učitavanje koda u memoriju još nisu potpuno randomizirane.
- Implementirana je podrška za slabo fragmentiranu hrpu (LFH, Low Fragmentation Heap), što je povećalo performanse operacija dodjele memorije.
- Podrška za rezervaciju memorije (placeholder) dodana je mehanizmu dodjele virtualne memorije, omogućujući aplikaciji da rezervira određeno područje virtualne memorije za buduću upotrebu.
- 64-bitni učitavači (učitavač i predučitavač) izvršnih datoteka i biblioteka kompilirani su u formatu PIE (Izvršne datoteke neovisne o položaju) kako bi se oslobodio dio 32-bitnog adresnog prostora.
- Ispravno odmotavanje stoga omogućeno je za NT sistemske pozive i povratne pozive korisnika.
- Značajke umrežavanja
- MSHTML mehanizam podržava mehanizam skupljanja smeća "Cycle Collection".
- MSHTML je dodao podršku za sinkronu obradu XMLHttpRequest zahtjeva.
- jscript.dll dodaje podršku za objekt WeakMap za rad s kolekcijom parova ključ/vrijednost u kojoj je ključ objekt koji može imati proizvoljnu vrijednost pridruženu sebi. Implementirane metode WeakMap.get(), WeakMap.delete(), WeakMap.clear() i WeakMap.has().
- Mehanizam preglednika Gecko ažuriran je na verziju 2.47.4.
- Implementirana je podrška za obavijesti o promjenama stanja mrežnog sučelja.
- Kriptografija i sigurnost
- Podrška za pametne kartice dodana je biblioteci Winscard.dll, implementiranoj kroz biblioteku sustava PCSClite.
- BCrypt je dodao podršku za protokol za razmjenu ključeva Diffie-Hellman.
- Implementiran je paket Negotiate koji pruža sloj za korištenje sučelja SSPI (Security Support Provider Interface) za pristup pružateljima SSP (Security Support Provider).
- Ugrađene aplikacije
- Wine Debugger (winedbg) koristi biblioteku Zydis za rastavljanje X86 strojnih instrukcija.
- Sučelje WineCfg-a ažurirano je kako bi podržavalo starije verzije na 64-bitnim platformama. Windows (prije XP-a), što vam omogućuje pokretanje starijih aplikacija pomoću WoW64 načina rada.
- Sve ugrađene grafičke aplikacije sada prikazuju informacije o pogrešci u zasebnom dijaloškom okviru, umjesto da ih prikazuju u konzoli.
- Program systeminfo omogućuje prikaz informacija iz WMI baze podataka (Windows Instrumentacija upravljanja).
- Dodana klist aplikacija za prikaz Kerberos ulaznica.
- Taskkill aplikacija implementira mogućnost prisilnog prekidanja podređenih procesa.
- Dodana je opcija "/machine" uslužnom programu za pokretanje za odabir arhitekture koja se koristi pri pokretanju hibridnih izvršnih datoteka koje podržavaju x86 i ARM.
- Implementirana je većina funkcionalnosti programa za popis zadataka.
- Dodana je osnovna implementacija aplikacije findstr.
- Razvojni alati
- Uslužni program WineDump ima mogućnost prikaza sadržaja datoteka registra. Windows (REGF format), kao i prikaz podataka za sve arhitekture (x86/ARM64) podržane u hibridnim PE datotekama.
- IDL kompajler je dodao podršku za atribute "composable", "default_overload", "deprecated" i "protected".
- Uklonjen libwine.so, koji je zastario u Wineu 6.0 i odavno se više ne koristi u Wineu. Programi u ELF formatu ugrađeni u starije verzije Winea (5.0 i starije) s libwine.so zahtijevaju ponovnu izgradnju za rad u Wineu 9.0.
- Ugrađene biblioteke i vanjske ovisnosti
- U paket su integrirane biblioteke FluidSynth 2.3.3, Musl 1.2.3 (samo matematičke funkcije) i Zydis 4.0.0.
- Komponente 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 ažurirane su na nove verzije. Wine Mono engine s implementacijom .NET platforme ažuriran je na izdanje 8.1.0.
- Pokretač winewayland.drv koristi klijentsku biblioteku Wayland kao vanjske ovisnosti, kao i biblioteke xkbcommon i xkbregistry.
- Za podršku pametnim karticama koristi se vanjska PCSClite biblioteka (u macOS — PCSC).
- Izrada PE datoteka na platformama koje nisu i386 sada zahtijeva unakrsni kompajler s podrškom za ".seh" direktive za rukovanje iznimkama.
Izvor: opennet.ru
