Po letu razvoja in 29 eksperimentalnih različicah je bila predstavljena stabilna različica odprte izvedbe Win32 API — Wine 10.0, ki vključuje več kot 6000 sprememb. Med ključnimi dosežki nove različice izstopa popolna podpora za arhitekturo ARM64EC, skaliranje na zaslonih z visoko gostoto pikselov, privzeto vključitev Wayland gonilnika, implementacija plošč za prilagoditev zaslona in upravljalnika, alternativni multimedijski vmesnik na podlagi FFmpeg, gonilnik Bluetooth, podpora Vulkan 1.4 in možnost emulacije preklapljanja video načinov.
V Wine je potrjena popolna funkcionalnost 5372 programov za Windows (pred letom 5336, pred dvema letoma 5266, pred tremi leti 5156), še 4435 programov (pred letom 4397, pred dvema letoma 4370, pred tremi leti 4312) odlično deluje s dodatnimi nastavitvami in zunanjimi DLL. Pri 4020 programih (pred letom 3943, pred dvema letoma 3888, pred tremi leti 3813) so zaznane majhne težave pri delovanju, ki ne ovirajo osnovnih funkcij aplikacij.
Ključne novosti Wine 10.0:
- ARM64
- Zagotavljena je popolna podpora za arhitekturo ARM64EC (ARM64 Emulation Compatible), nivo podpore v Wine pa je dosegel pariteto z arhitekturo ARM64. Arhitektura ARM64EC je bila razvita za poenostavitev prenašanja aplikacij, napisanih za sisteme x86_64, na sisteme ARM64, in omogoča izvajanje posameznih modulov s kodo x86_64 v okolju ARM64 z emulatorjem.
- Izvedena je popolna podpora za format PE-datotek ARM64X, ki omogoča združevanje kode za arhitekturi ARM64EC in ARM64 v enem izvršnem programu. Za sestavljanje Wine v formatu ARM64X je potrebno namestiti LLVM iz Gita (potrebna funkcionalnost bo vključena v različico LLVM 20) in ob zagonu skripta 'configure' navesti opcijo '--enable-archs=arm64ec,aarch64'.
- Izveden je vmesnik za emulacijo 64-bitnih sistemov x86. Pri uporabi ARM64EC Wine deluje takšno, kakršno je, emulacija pa se uporablja samo za kodo aplikacij x86-64. Knjižnica z emulatorjem še ni vključena v glavni sklop Wine, vendar se za zagon kode x86-64 v okolju ARM64 lahko uporabi zunanji emulator FEX, sestavljen s podporo za ARM64EC.
- Za podporo ARM64 je potrebno v sistemu uporabljati strani pomnilnika velikosti 4KB, kot to zahteva ABI Windows (zagon v okoljih z jedri Linux, ki uporabljajo strani pomnilnika 16K ali 64K, zaenkrat ni podprt).
- Grafični sistem
- Implementirano je preciznije skaliranje na ekranima s visokom gustoćom piksela (High-DPI). Osigurana je podrška za DPI Awareness način za organizaciju prikaza aplikacija na ekranima s visokom gustoćom piksela, uzimajući u obzir podržava li aplikacija prilagodbu promjenama DPI-a ili ne (aplikacije koje ne uzimaju u obzir DPI automatski se skaliraju). Dodane su opcije za poništavanje podrške za High-DPI za određene aplikacije ili Wine prefikse.
- U drajver za grafički API Vulkan dodana je podrška za specifikaciju Vulkan 1.4 (u Wine 9.0 podržavan je Vulkan 1.3.272). Dodana je podrška za Vulkan ekstenzije za kodiranje i dekodiranje videa.
- Prilikom korištenja X11 backend-a implementirana je mogućnost crtanja podprozora Vulkana za aplikacije koje koriste takva okna za izvođenje 3D sadržaja (ranije je slična mogućnost bila dostupna samo za OpenGL).
- U GdiPlus biblioteku dodana je podrška mehanizma povezivanja fontova ('Font Linking'), koja omogućava korištenje više fontova prilikom prikazivanja teksta, ukoliko pojedini fontovi ne pokrivaju sve simbole u tekstu.
- Wayland
- U konfiguraciji po zadanom 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 zadanom na Wayland izravno samo ako XWayland nije dostupan, u protivnom, pokretanje korištenjem XWayland ostaje prioritetno. Za prisilno uključivanje Waylanda može se koristiti varijabla okruženja DISPLAY ili dodavanje ključa u registar stvaranjem datoteke file.reg: Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Wine\Drivers] 'Graphics'='wayland' i primjenom naredbom: $ WINEPREFIX=/putanja/do/prefiksa wine regedit /putanja/do/file.reg
- U drajver winewayland.drv dodana je podrška za OpenGL i pikselske bafer-e (pBuffer).
- Rešeni su problemi s pozicioniranjem iskačućih prozora u okruženjima temeljenim na Wayland-u.
- Prilikom korištenja Wayland-a implementirana je podrška za automatsko ponavljanje pritiska tipki prilikom držanja tipki.
- Integracija s delovno površino
- Dodana je eksperimentalna mehanizam emulacije 'modesetting', koji omogućava emulaciju prebacivanja video režima bez stvarne promjene postavki ekrana. Vidljivost promjene rezolucije ekrana bez prebacivanja video režima stvara se putem proširenja i skaliranja prozora.
- Dodana je nova aplikacija Desktop Control Panel (desk.cpl) s implementacijom sučelja za upravljanje postavkama prikaza (na primjer, možete promijeniti virtualnu razlučivost desktopa ili postaviti emulirane parametre prikaza).
- Dodana je mogućnost resetiranja 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 sustavnom trayu (u «HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer» treba postaviti «NoTrayItemsDisplay=1»).
- Dodana je podrška za isključivanje shell launcher-a u desktop modu (u «HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer» treba postaviti «NoDesktop=1»).
- Direct3D
- Za renderiranje uz korištenje OpenGL-a, sada je potrebna podrška za GLSL 1.20, kao i proširenja EXT_framebuffer_object i ARB_texture_non_power_of_two. Podržavanje starog backend-a ARB shader i postavke OffscreenRenderingMode je obustavljeno.
- Za Direct3D 9 i starije verzije dodan je grafički pipeline fiksnih funkcija (u starijim verzijama Direct3D su bile dostupne samo unaprijed definirane grafičke operacije koje nije moguće mijenjati), implementiran pomoću jezika shader-a HLSL koji omogućava emulaciju fiksnih funkcija pri renderiranju preko Vulkan ili OpenGL API-ja.
- Pri renderiranju uz korištenje Vulkan-a aktivirana su Vulkan proširenja za dinamičko mijenjanje stanja grafičkog pipeline-a, što omogućava smanjenje zastoja u igrama.
- Dodan je alternativni backend glsl-vkd3d za GLSL shadere, koristeći vkd3d-shader.
- Pružena je osnovna podrška za kompajliranje Direct3D efekata, koristeći vkd3d-shader.
- U D3DX9 biblioteci implementirana je mogućnost generiranja MIP tekstura (MipMap) prilikom učitavanja volumetrijskih tekstura. Dodana je podrška za formate prikaza boje 64bpp RGBA i 48bpp RGB u PNG slikama, kao i za formate X8L8V8U8, A2W10V10U10, A8P8, V16U16 i Q16W16V16U16.
- Zvuk i video
- Kao alternativa GStreamer backend-u, implementiran je novi multimedijski backend koji se temelji na korištenju FFmpeg-a i pogodnom za rad medijskog okvira Media Foundation. Za aktivaciju alternativnog backend-a u registru «HKCU\Software\Wine\MediaFoundation» treba postaviti «DisableGstByteStreamHandler=1».
- Poboljšana je implementacija API-ja Media Foundation, koja se sada bolje integrira s aplikacijama zavisnim od demultiplexing i dekodirnih komponenti.
- V API DirectMusic je dodana podpora za nalaganje MIDI datotek.
- Ulazni uređaji
- Dodana je začetna različica Bluetooth gonilnika.
- Dodan je aplet Joystick Control Panel (joy.cpl) s funkcionalnostmi za nastavitev joysticka.
- Izboljšave so bile uvedene v zvezi z napravami za kazanje (touchpad-i, miši), ki uporabljajo HID (Human Interface Device) protokol. Dodan je gonilnik mouhid.sys za HID naprave ter pravilno razumevanje sestavljenih vnosnih naprav in prenos informacij o njih v Windows aplikacije kot o ločenih napravah.
- Za backend X11 je dodana podpora za zaslone na dotik in omogočeno je delovanje več dotikov preko obdelave sporočil WM_POINTER* (WM_POINTERENTER, WM_POINTERLEAVE itd.).
- Nekatere notranje strukture knjižnice user32 so bile premeščene v deljeno pomnilnika, kar je povečalo zmogljivost in zmanjšalo obremenitev na Wine strežnik.
- V winex11 je dodana podpora za obdelavo dogodkov XInput2, vezanih na posamezna okna.
- Uvedena je bila pravilna podpora za tipkovnice z Dvorak postavitvijo.
- Jezgro (interfejsi jezgra Windows-a)
- Dodana je podpora za povišanje privilegijev procesov (proces, ki je prvotno zagnan pod običajnim uporabnikom, lahko dobi privilegije skrbnika). Pri ustvarjanju strežniških procesov (msi action server) in procesov, ki kličejo funkcije RtlCreateUserProcess() in CreateProcessInternal(), je privzeto uporabljen omejen токен skrbnika.
- Pri pridobivanju informacij o oznakah diskov se zdaj, kadar je to mogoče, uporablja klic k sistemskim storitvam preko DBus, namesto poskusa neposrednega dostopa do naprave.
- Enosmerni mehanizem medprocesnega komuniciranja (IPC) Mailslots je zdaj neposredno implementiran v Wine strežniku, kar omogoča popolno podporo Windows semantiki.
- Izvedeno je bilo čakanje na dogodke serijskega porta v asinhronem načinu.
- Dodana je bila popolna podpora za procesorske razširitve XSTATE v kontekstih niti, kar omogoča uporabo novih vektorskih razširitev, kot je AVX-512.
- Vgrajene aplikacije
- Motor za obdelavo vhodnih podatkov, uporabljen v ukaznem interpreterju cmd.exe, je bil prepisan. V cmd.exe je dodana podpora za operacije '||' in '&&'.
- V orodje findstr je bila dodana podpora za regularne izraze in iskanje brez upoštevanja velike/male črke.
- V orodja regsvr32 in rundll32 je bila dodana možnost registracije ARM64EC modulov.
- Dodane so orodja: sort za sortiranje vhodnih podatkov, fc za primerjavo datotek in where za iskanje datotek.
- V aplikaciji wmic je uveljavljen interaktiven način delovanja.
- U Exploreru je dodata opcionalna podrška za startni meni i toolbar. Omogućen je pokretanje explorer.exe sa smanjenim pristupnim pravima.
- Orodja za razvoj
- V winebuild je dodana možnost „-marm64x“ za generiranje hibridnih ARM64X knjižnic.
- V winegcc je dodana možnost „-marm64x“, ki omogoča sestavljanje za ARM64X.
- V datotekah, generiranih z uporabo jezika za opis vmesnikov IDL (Interface Definition Language), so vključene komponente, ki v celoti podpirajo izvajanje v interpretacijskem načinu.
- V prevajalnik jezika za opisovanje vmesnikov IDL (Interface Definition Language) je dodana podpora za generacijo knjižnic tipov (TypeLib) v starem formatu (SLTG).
- V orodje winedump je dodana podpora za shranjevanje minidump tabel, informacij o C++ izjemah in resursov typelib.
- Razno
- Izboljšana podpora za protokol izmenjave ključev Diffie-Hellman (DH). Dodana je možnost konfiguracije in pridobivanja parametrskih DH. Implementirani so obdelovalniki za ustvarjanje parov iz javnih in zasebnih ključev.
- Zagotavljena je uporaba dodatnega polnjenja OAEP (Optimal Asymmetric Encryption Padding) skupaj z algoritmom RSA.
- V API DirectPlay je uvedena podpora za omrežne seje.
- Urejena je obdelava stanj asinhonih vhodov/izhodov pri delu v načinu WoW64 (64-bit Windows-on-Windows), ki omogoča izvajanje 32-bitnih Windows aplikacij v 64-bitnih Unix sistemih.
- Dodana je podpora za nalaganje ODBC gonilnikov za DBMS, zgrajenih za Windows.
- Za platformo ARM je uvedena popolna podpora za RPC/COM, C++ RTTI (Run-Time Type Information) in C++ izjem.
- V C runtime so za ANSI funkcije uvedene podpora za UTF-8 kodiranje.
- Možnosti motorja MSHTML so razširjene. Dodana je podpora prototipov in konstruktorjev objektov. V JavaScript motor je dodan nov vmesnik za povezovanje objektov za MSHTML. Vgrajene MSHTML funkcije so spremenjene v pravilne JavaScript objekte. Izboljšan je zbiralnik odpadkov za JavaScript, ki zdaj pokriva vse kontekste izvajanja skriptov v niti. Dodana je podpora za JavaScript objekte ArrayBuffer in DataView.
- V sistem nenehne integracije temelječ na Gitlabu je dodana podpora za statično analizo z uporabo Clanga in poročil o uspešnosti testov JUnit.
- Vključena je knjižnica Capstone 5.0.3, prek katere je omogočeno razstavljanje v orodju za odpravljanje napak WineDb.
- Komponente so posodobljene na nove različice: 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 in Zlib 1.3.1.
Izvor: opennet.ru
