Nakon godinu dana razvoja i 29 eksperimentalnih verzija, predstavljena je stabilna verzija otvorene implementacije Win32 API-ja — Wine 10.0, koja obuhvaća više od 6000 promjena. Ključna postignuća nove verzije uključuju potpunu podršku za ARM64EC arhitekturu, skaliranje na ekranima s visokom gustoćom piksela, uključivanje Wayland drajvera prema zadanim postavkama, implementaciju panela za prilagodbu ekrana i joysticka, alternativni multimedijski backend temeljen na FFmpeg-u, Bluetooth drajver, podršku za Vulkan 1.4 i mogućnost emulacije prebacivanja video modova.
U Wine-u je potvrđena puna funkcionalnost 5372 programa za Windows (prije godinu dana 5336, prije dvije godine 5266, prije tri godine 5156), još 4435 programa (prije godinu dana 4397, prije dvije godine 4370, prije tri godine 4312) besprijekorno radi uz dodatne postavke i vanjske DLL-ove. Kod 4020 programa (prije godinu dana 3943, prije dvije godine 3888, prije tri godine 3813) primjećeni su manji problemi u radu, koji ne ometaju korištenje osnovnih funkcija aplikacija.
Ključne novine Wine 10.0:
- ARM64
- Osigurana je potpuna podrška za ARM64EC arhitekturu (ARM64 Emulation Compatible), a nivo podrške u Wine-u je dostigao paritet s ARM64 arhitekturom. ARM64EC arhitektura je razvijena radi olakšavanja portiranja aplikacija, koje su prvotno napisane za x86_64 sustave, na ARM64 sustave, i omogućuje izvršavanje pojedinih modula s x86_64 kodom u ARM64 okruženju pomoću emulatora.
- Osigurana je potpuna podrška za PE format ARM64X datoteka, što omogućava kombiniranje koda za ARM64EC i ARM64 arhitekture u jednom izvršnom datoteci. Za izgradnju Wine-a u ARM64X formatu potrebno je instalirati LLVM iz Git-a (neophodna funkcionalnost će biti uključena u LLVM 20) i prilikom pokretanja skripte »configure« navesti opciju »—enable-archs=arm64ec,aarch64«.
- Implementirano je sučelje za emulaciju 64-bitnih x86 sustava. Kada se koristi ARM64EC, sam Wine radi onako kako jeste, a emulacija se primjenjuje samo na x86-64 kod aplikacija. Biblioteka s emulatorom još uvijek nije uključena u osnovni sastav Wine-a, ali se za pokretanje x86-64 koda u ARM64 okruženju može koristiti vanjski emulator FEX, koji je izgrađen s podrškom za ARM64EC.
- Za podršku ARM64 potrebno je koristiti 4KB stranice memorije u sustavu, kako to zahtijeva ABI Windows (pokretanje u okruženjima s Linux kernelima koji koriste 16K ili 64K stranice memorije trenutno nije podržano).
- Grafički podsustav
- Implementirano je preciznije skaliranje na ekranima s visokom gustoćom piksela (High-DPI). Osigurana je podrška za način DPI Awareness koji organizira prikaz aplikacija na ekranima s visokom gustoćom piksela, uzimajući u obzir podržava li aplikacija prilagodbu promjeni DPI-a ili ne (aplikacije koje ne uzimaju u obzir DPI automatski se skaliraju). Dodane su opcije za prepisivanje podrške za High-DPI u vezi s pojedinačnim aplikacijama ili Wine prefiksima.
- U drajver za grafički API Vulkan dodana je podrška za specifikaciju Vulkan 1.4 (u Wine 9.0 podržan je Vulkan 1.3.272). Dodana je podrška za Vulkan ekstenzije za kodiranje i dekodiranje videa.
- Prilikom korištenja X11 backend-a realizirana je mogućnost prikazivanja podprozora Vulkan za aplikacije koje koriste takve prozore za prikaz 3D sadržaja (ranije je takva mogućnost bila dostupna samo za OpenGL).
- U biblioteku GdiPlus dodana je podrška za mehanizam povezivanja fontova («Font Linking»), koji omogućuje korištenje više fontova prilikom prikazivanja teksta, ako pojedinačni fontovi ne pokrivaju sve simbole koji se pojavljuju u tekstu.
- Wayland
- U osnovnoj konfiguraciji aktiviran je drajver winewayland.drv, koji omogućava korištenje Wine-a u okruženjima temeljenim na Wayland protokolu bez korištenja XWayland i X11 komponenti. Wine pokreće aplikacije po defaultu na Wayland izravno samo ako XWayland nije dostupan, inače ostaje prioritetno pokretanje koristeći XWayland. Za prisilnu aktivaciju Waylanda možete koristiti varijablu okruženja DISPLAY, ili dodati ključ u registar stvaranjem datoteke file.reg: Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Wine\Drivers] «Graphics»=»wayland» i primjenjujući ga naredbom: $ WINEPREFIX=\/putanja\/do\/prefiksa wine regedit \/putanja\/do\/file.reg
- U drajver winewayland.drv dodana je podrška za OpenGL i pBuffer-e.
- Rješeni su problemi s pozicioniranjem iskačućih prozora u okruženjima temeljenim na Waylandu.
- Prilikom korištenja Waylanda implementirana je podrška za automatsko ponavljanje pritiska tipki pri zadržavanju.
- Integracija s radnom površinom
- Dodana je eksperimentalna mehanizam emulacije «modesetting», koja omogućava emulaciju prebacivanja video modova bez stvarne promjene postavki ekrana. Vidljivost promjene rezolucije ekrana bez prebacivanja video moda postiže se proširenjem i povećanjem prozora.
- Dodana je nova aplikacija Desktop Control Panel (desk.cpl) s implementacijom sučelja za upravljanje postavkama zaslona (na primjer, možete mijenjati virtualnu rezoluciju desktopa ili konfigurirati emulirane parametre zaslona).
- Dodana je mogućnost vraćanja postavki ekrana na zadane vrijednosti u slučaju nemogućnosti vraćanja stanja nakon iznenadnog završetka procesa.
- Dodana je podrška za isključivanje prikaza ikona u sistemskom okviru (u «HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer» treba postaviti «NoTrayItemsDisplay=1»).
- Dodana je podrška za isključivanje Shell launcheva u desktop režimu (u «HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer» treba postaviti «NoDesktop=1»).
- Direct3D
- Za iscrtavanje korištenjem OpenGL sada je potrebna podrška za GLSL 1.20, kao i ekstenzije EXT_framebuffer_object i ARB_texture_non_power_of_two. Podrška za stari backend ARB shader i postavke OffscreenRenderingMode je ukinuta.
- Za Direct3D 9 i starije verzije dodan je grafički cjevovod fiksnih funkcija (u starijim direktivama Direct3D pružane su samo unaprijed definirane grafičke operacije koje nije bilo moguće mijenjati), implementiran pomoću HLSL jezika šifri i omogućava emulaciju fiksnih funkcija prilikom iscrtavanja putem API-ja Vulkan ili OpenGL.
- Prilikom iscrtavanja korištenjem Vulkan aktivirani su Vulkan-extensions za dinamičku promjenu stanja grafičkog cjevovoda, što omogućava smanjenje zamrzavanja u igrama.
- Dodan je alternativni backend glsl-vkd3d za GLSL shadre, koji koristi vkd3d-shader.
- Osigurana je osnovna podrška za kompajliranje efekata Direct3D koristeći vkd3d-shader.
- U biblioteci D3DX9 implementirana je mogućnost generiranja MIP-tikstura (MipMap) prilikom učitavanja voluminoznih tekstura. Dodana je podrška za formate prikaza boje 64bpp RGBA i 48bpp RGB u PNG slikama, kao i formate X8L8V8U8, A2W10V10U10, A8P8, V16U16 i Q16W16V16U16.
- Zvuk i video
- Kao alternativu GStreamer bBackendu implementiran je novi multimedijski backend, zasnovan na FFmpeg-u i prikladan za rad s Media Foundation framework-om. Za aktivaciju alternativnog backenda u registru „HKCU\Software\Wine\MediaFoundation“ treba postaviti „DisableGstByteStreamHandler=1“.
- Unaprijeđena je implementacija API-ja Media Foundation, koja se sada bolje integrira s aplikacijama ovisnim o komponentama demultiplexinga i dekodiranja.
- API DirectMusic sada podržava učitavanje MIDI datoteka.
- Uređaji za ulaz
- Dodana je početna verzija Bluetooth drajvera.
- Dodana je aplikacija Joystick Control Panel (joy.cpl) s implementacijom postavki za joystick.
- Unaprijeđena su poboljšanja vezana uz uređaje za pokazivanje (tastature, miševi) koji koriste HID (Human Interface Device) protokol. Dodan je drajver mouhid.sys za HID uređaje. Implementirano je ispravno tumačenje složenih ulaznih uređaja i omogućena je njihova informacija o prijenosu u Windows aplikacije kao odvojeni uređaji.
- Za X11 backend dodana je podrška za dodirne ekrane i implementirana je mogućnost korištenja multitouch moda putem obrade WM_POINTER* poruka (WM_POINTERENTER, WM_POINTERLEAVE itd.).
- Realizirano je smještanje nekih internih struktura biblioteke user32 u zajedničku memoriju, što je poboljšalo performanse i smanjilo opterećenje Wine servera.
- U winex11 dodana je podrška za obradu XInput2 događaja vezanih uz zasebne prozore.
- Implementirana je ispravna podrška za tipkovnice s Dvorak rasporedom.
- Jezgro (Windows jezgreni interfesi)
- Dodana je podrška za povećanje privilegija procesa (procesu koji je izvorno pokrenut kao obični korisnik mogu se dodijeliti administratorske privilegije). Prilikom stvaranja serverskih procesa (msi akcijski server), kao i procesa koji pozivaju funkcije RtlCreateUserProcess() i CreateProcessInternal(), prema zadanim postavkama koristi se ograničeni administrator token.
- Prilikom prikupljanja informacija o oznakama diskova, kada je to moguće, koristi se pristup sistemskim uslugama putem DBus-a, umjesto pokušaja izravnog pristupa uređaju.
- Jednosmjerni mehanizam međuprocesne komunikacije (IPC) Mailslots sada je implementiran izravno u Wine serveru, što je omogućilo punu podršku za Windows semantiku.
- Implementirano je asinkrono čekanje na događaje serijskog porta.
- Dodana je puna podrška za procesorske ekstenzije XSTATE u kontekstu niti, što omogućava korištenje novih vektorskih ekstenzija poput AVX-512.
- Ugrađene aplikacije
- Prepisan je motor za obradu ulaznih podataka koji se koristi u komandnom interpreteru cmd.exe. U cmd.exe dodana je podrška za operacije «||» i «&&».
- U alat findstr dodana je podrška za regularne izraze i pretraživanje bez obzira na velika/mala slova.
- Alatima regsvr32 i rundll32 dodana je mogućnost registracije ARM64EC modula.
- Dodati su alati: sort za sortiranje ulaznih podataka, fc za usporedbu datoteka i where za pretraživanje datoteka.
- U aplikaciji wmic implementiran je interaktivni režim rada.
- U Exploreru je dodana opcionalna podrška za izbornik Start i alatnu traku. Omogućeno je pokretanje explorer.exe s ograničenim pravima pristupa.
- Alati za razvoj
- U winebuild dodana je opcija «-marm64x» za generiranje hibridnih biblioteka ARM64X.
- U winegcc dodana je opcija «-marm64x», koja omogućava kompilaciju za ARM64X.
- U datotekama generiranim pomoću jezika za opisivanje sučelja IDL (Interface Definition Language) korišteni su komponenti koji potpuno podržavaju izvođenje u načinu interpretacije.
- U kompajleru jezika za opisivanje sučelja IDL (Interface Definition Language) dodana je podrška za generiranje biblioteka tipova (TypeLib) u starom formatu (SLTG).
- U alat winedump dodana je podrška za spremanje ispušnih dumpova minidump, informacija o iznimkama C++ i resursa typelib.
- Razno
- Poboljšana je podrška za protokol razmjene ključeva Diffie-Hellman (DH). Dodana je mogućnost konfiguracije i dobivanja DH parametara. Implementirane su obrade za stvaranje parova između javnog i privatnog ključa.
- Osigurana je upotreba dodavnog punjenja OAEP (Optimal Asymmetric Encryption Padding) zajedno s algoritmom RSA.
- U API-ju DirectPlay implementirana je podrška za mrežne seanse.
- Uspostavljen je procesiranje stanja asinkronog ulaza/izlaza kada se radi u režimu WoW64 (64-bit Windows-on-Windows), što omogućava pokretanje 32-bitnih Windows aplikacija u 64-bitnim Unix sustavima.
- Dodana je podrška za učitavanje ODBC drajvera za baze podataka, sastavljene za Windows.
- Za platformu ARM implementirana je puna podrška za RPC/COM, C++ RTTI (Run-Time Type Information) i C++ iznimke.
- U C runtime-u u ANSI funkcijama implementirana je podrška za UTF-8 kodiranje.
- Proširene mogućnosti MSHTML motora. Dodana podrška za prototipove i konstruktore objekata. U JavaScript motor dodan je novi interfejs za povezivanje objekata za MSHTML. Ugrađene MSHTML funkcije pretvorene su u ispravne JavaScript objekte. Poboljšan je sakupljač smeća za JavaScript, koji sada pokriva sve kontekste izvršenja skripti u niti. Dodana je podrška za JavaScript objekte ArrayBuffer i DataView.
- Sustavu neprekidne integracije temeljenoj na Gitlabu dodana je podrška za statičku analizu koristeći Clang i JUnit izvještaje o prolaznosti testova.
- U sastav je ugrađena biblioteka Capstone 5.0.3, putem koje je realizirano disasemblirnje u debuggeru WineDb.
- Ažurirane su komponente na nove verzije: Vkd3d 1.14, Faudio 24.10, FluidSynth 2.4.0, LDAP 2.5.18, LCMS2 2.16, LibJpeg 9f, LibMPG123 1.32.9, LibPng 1.6.44, LibTiff 4.7.0, LibXml2 2.12.8, LibXslt 1.1.42 i Zlib 1.3.1.
Izvor: opennet.ru
