Etter ett års utvikling og 29 eksperimentelle versjoner er den stabile utgivelsen av den åpne implementeringen av Win32 API - Wine 10.0, gjort tilgjengelig, som inkluderer over 6000 endringer. Blant de viktigste prestasjonene i den nye versjonen er full støtte for ARM64EC-arkitekturen, skalering på skjermer med høy piksel tetthet, standard aktivering av Wayland-driveren, implementering av paneler for skjerm- og joystickinnstillinger, en alternativ multimedia-backend basert på FFmpeg, Bluetooth-driver, støtte for Vulkan 1.4, samt muligheten for å emulere videomodusbytter.
I Wine er det bekreftet at 5372 Windows-programmer fungerer fullt ut (for ett år siden 5336, to år siden 5266, tre år siden 5156), videre fungerer 4435 programmer (for ett år siden 4397, to år siden 4370, tre år siden 4312) utmerket med ekstra innstillinger og eksterne DLL-filer. For 4020 programmer (for ett år siden 3943, to år siden 3888, tre år siden 3813) er det observert små problemer som ikke hindrer bruken av de grunnleggende funksjonene til applikasjonene.
Nøkkelnyheter i Wine 10.0:
- ARM64
- Full støtte for ARM64EC-arkitekturen (ARM64 Emulation Compatible) er sikret, med et støttenivå i Wine som har nådd paritet med ARM64-arkitekturen. ARM64EC-arkitekturen er utviklet for å forenkle porteringen av applikasjoner opprinnelig skrevet for x86_64-systemer til ARM64-systemer, og gjør det mulig å kjøre individuelle moduler med x86_64-kode i et ARM64-miljø ved hjelp av en emulator.
- Full støtte for PE-filformatet ARM64X er implementert, som gjør det mulig å kombinere kode for både ARM64EC- og ARM64-arkitekturer i en enkelt kjørbar fil. For å bygge Wine i ARM64X-format, må LLVM installeres fra Git (nødvendig funksjonalitet vil bli inkludert i utgivelsen av LLVM 20), og under kjøring av 'configure'-skriptet må alternativet '--enable-archs=arm64ec,aarch64' spesifiseres.
- Et grensesnitt for emulering av 64-bits x86-systemer har blitt implementert. Når ARM64EC brukes, kjører Wine som det er, og emulering anvendes kun for x86-64-applikasjonskode. Biblioteket med emulatoren er foreløpig ikke inkludert i den viktigste samlingen av Wine, men for å kjøre x86-64-kode i et ARM64-miljø kan en ekstern emulator FEX, kompilert med støtte for ARM64EC, benyttes.
- For å støtte ARM64 er det nødvendig med bruk av 4KB størrelses minnesider i systemet, som krevd av Windows ABI (kjøring i miljøer med Linux-kjerner som bruker 16K eller 64K minnesider støttes foreløpig ikke).
- Grafikkundersystem
- Det er implementert mer nøyaktig skalering på skjermer med høy piksel tetthet (High-DPI). Støtte for DPI Awareness-modus er sikret for å organisere visningen av applikasjoner på skjermer med høy piksel tetthet, avhengig av om applikasjonen støtter tilpassing til endring av DPI eller ikke (applikasjoner som ikke tar hensyn til DPI, skaleres automatisk). Alternativer for å overskrive støtten for High-DPI er lagt til i tilknytning til individuelle applikasjoner eller prefikser i Wine.
- I driveren for grafisk API Vulkan er det lagt til støtte for spesifikasjonen Vulkan 1.4 (i Wine 9.0 ble Vulkan 1.3.272 støttet). Støtte for Vulkan-utvidelser for kodering og dekodering av video er lagt til.
- Ved bruk av X11-backend er det implementert mulighet for tegning av undervinduer Vulkan for applikasjoner som bruker slike vinduer for å vise 3D-innhold (tidligere var denne muligheten kun tilgjengelig for OpenGL).
- I GdiPlus-biblioteket er det lagt til støtte for fontbinding-mekanismen («Font Linking»), som gjør det mulig å benytte flere skrifttyper ved visning av tekst hvis skrifttyper som dekker alle tegnene i teksten mangler.
- Wayland
- I standardkonfigurasjonen er driveren winewayland.drv aktivert, som gjør det mulig å bruke Wine i miljøer basert på Wayland-protokollen uten bruk av XWayland og X11-komponenter. Wine starter applikasjoner som standard direkte på Wayland bare hvis XWayland ikke er tilgjengelig, ellers forblir oppstart ved bruk av XWayland prioritert. For å tvinge Wayland på kan miljøvariabelen DISPLAY brukes, eller man kan legge til en nøkkel i registeret ved å opprette filen file.reg: Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Wine\Drivers] «Graphics»=»wayland» og bruke den med kommandoen: $ WINEPREFIX=\/path\/to\/prefix wine regedit \/path\/to\/file.reg
- I driveren winewayland.drv er det lagt til støtte for OpenGL og pBuffer.
- Problemer med posisjonering av popup-vinduer i Wayland-baserte miljøer er løst.
- Ved bruk av Wayland er støtten for automatisk gjentakelse av tastetrykk ved å holde nede tastene implementert.
- Integrasjon med skrivebordet
- Det er lagt til en eksperimentell mekanisme for emulering av «modesetting», som gjør det mulig å emulere bytte av videomodes uten faktisk å endre skjerminnstillingene. Synlighet av endring i skjermoppløsning uten bytte av videomode skapes gjennom utvidelse og skalering av vinduer.
- Det er lagt til en ny Desktop Control Panel-app (desk.cpl) med implementering av grensesnitt for styring av skjerminnstillingene (for eksempel kan man endre den virtuelle oppløsningen på skrivebordet eller justere emulerte skjermparametere).
- Muligheten for å tilbakestille skjerminnstillingene til standardverdier er blitt lagt til dersom det er umulig å gjenopprette tilstanden etter en krasj.
- Støtte for å deaktivere visning av ikoner i systemstatusfeltet er lagt til (i «HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer» bør «NoTrayItemsDisplay=1» spesifiseres).
- Støtte for å deaktivere Shell-launchere i skrivebordsmodus er lagt til (i «HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer» bør «NoDesktop=1» spesifiseres).
- Direct3D
- For rendering med OpenGL kreves nå støtte for GLSL 1.20, samt utvidelsene EXT_framebuffer_object og ARB_texture_non_power_of_two. Støtte for den gamle backend ARB shader og innstillingen OffscreenRenderingMode er blitt avsluttet.
- For Direct3D 9 og eldre versjoner er det lagt til en grafikkpipeline med faste funksjoner (i gamle Direct3D var det kun forhåndsdefinerte grafiske operasjoner som ikke kunne endres), implementert ved hjelp av HLSL-språket og lar en emulere faste funksjoner ved rendering gjennom Vulkan- eller OpenGL-API.
- Ved rendering med Vulkan benyttes Vulkan-utvidelser for dynamisk å endre tilstanden i grafikkpipelinen, noe som reduserer forsinkelsene i spill.
- En alternativ glsl-vkd3d backend for GLSL-shadere er lagt til, som bruker vkd3d-shader.
- Innledende støtte for kompilering av Direct3D-effekter er tilgjengelig med bruk av vkd3d-shader.
- D3DX9-biblioteket implementerer muligheten til å generere MIP-tekster (MipMap) ved lastingen av volumteksturer. Støtte for fargepresentasjonsformater 64bpp RGBA og 48bpp RGB i PNG-bilder er lagt til, samt formater X8L8V8U8, A2W10V10U10, A8P8, V16U16 og Q16W16V16U16.
- Sound and Video
- Som et alternativ til GStreamer-basert backend er en ny multimedia-backend, basert på FFmpeg, implementert og egnet for å støtte Media Foundation-rammeverket. For å aktivere den alternative backend i registerseksjonen «HKCU\Software\Wine\MediaFoundation», bør «DisableGstByteStreamHandler=1» spesifiseres.
- Implementeringen av Media Foundation API er forbedret, hvilket nå bedre fungerer med applikasjoner som er avhengige av demultiplexing- og dekodingskomponenter.
- API DirectMusic har fått støtte for opplasting av MIDI-filer.
- Inndataenheter
- Den første versjonen av Bluetooth-driveren er lagt til.
- Applet Joystick Control Panel (joy.cpl) er lagt til med implementeringen av innstillinger for joystick.
- Forbedringer relatert til pekeenheter (berøringsplater, mus) som bruker HID-protokollen (Human Interface Device) er gjort. Driveren mouhid.sys for HID-enheter er lagt til. Riktig analyse av sammensatte inndataenheter er implementert, og informasjon om dem sendes til Windows-applikasjoner som separate enheter.
- X11-backend har fått støtte for berøringsskjermer, og muligheten for å bruke multiberøring er implementert gjennom håndtering av WM_POINTER*-meldinger (WM_POINTERENTER, WM_POINTERLEAVE osv.).
- Noen interne strukturer av user32-biblioteket er nå plassert i delt minne, noe som har forbedret ytelsen og redusert belastningen på Wine Server.
- Støtte for håndtering av XInput2-hendelser i winex11 er lagt til, knyttet til separate vinduer.
- Korrekt støtte for tastaturer med Dvorak-oppsett er implementert.
- Kjerne (Windows-kjernegrensesnitt)
- Støtte for å heve privilegiene til prosesser er lagt til (en prosess som opprinnelig er kjørt av en vanlig bruker, kan få administratorprivilegier). Ved oppretting av serverprosesser (msi action server), samt prosesser som kaller funksjonene RtlCreateUserProcess() og CreateProcessInternal(), brukes som standard en begrenset administrator-token.
- Når informasjon om diskmerker hentes, brukes det nå så langt det er mulig systemtjenester via DBus, i stedet for å prøve direkte tilgang til enheten.
- En enveiskommunikasjonsmekanisme for interprosesskommunikasjon (IPC) Mailslots er nå implementert direkte i Wine server, noe som har gjort det mulig å oppnå full støtte for Windows-semantikk.
- Det er implementert venting av seriekontakt-hendelser i asynkront modus.
- Full støtte for prosessorutvidelser XSTATE i tråd-kontekster er lagt til, noe som har gjort det mulig å bruke nye vektorutvidelser som AVX-512.
- Innebygde applikasjoner
- Inndatahåndteringsmotoren som brukes i kommandotolkeren cmd.exe er skrevet om. Støtte for operationene «||» og «&&» er lagt til i cmd.exe.
- Verktøyet findstr har fått støtte for regulære uttrykk og søk uten hensyn til store og små bokstaver.
- Verktøyene regsvr32 og rundll32 har fått muligheten til å registrere ARM64EC-moduler.
- Verktøyene er lagt til: sort for sortering av inngangsdata, fc for sammenligning av filer og where for filsøking.
- I applikasjonen wmic er det implementert en interaktiv modus.
- I Explorer er det lagt til valgfrie støtter for startmeny og verktøylinje. Det er sørget for oppstart av explorer.exe med begrensede rettigheter.
- Utviklingsverktøy
- I winebuild er det lagt til alternativet «-marm64x» for å generere hybride ARM64X-biblioteker.
- I winegcc er det lagt til alternativet «-marm64x», som muliggjør bygging for ARM64X.
- I filene generert ved bruk av Interface Definition Language (IDL) er komponenter aktivert som fullstendig støtter kjøring i tolkingsmodus.
- Komponenten for språkbeskrivelse av grensesnittet IDL (Interface Definition Language) har fått støtte for generering av typelister (TypeLib) i gammelt format (SLTG).
- I winedump-verktøyet er det lagt til støtte for å lagre minidump-tabeller, C++ unntaksinformasjon og typelib-ressurser.
- Diverse
- Støtten for Diffie-Hellman (DH) nøkkelutvekslingsprotokollen er forbedret. Muligheten for tilpassing og henting av DH-parametere er lagt til. Håndterere for å opprette par av offentlige og private nøkler er implementert.
- Det er sikret bruk av additiv fylling OAEP (Optimal Asymmetric Encryption Padding) sammen med RSA-algoritmen.
- I DirectPlay API-en er det implementert støtte for nettverksøkter.
- Det er etablert behandling av tilstander for asynkron inndata/utdata i WoW64-modus (64-bit Windows-on-Windows), som gjør det mulig å kjøre 32-biters Windows-applikasjoner i 64-biters Unix-systemer.
- Støtte for lasting av ODBC-drivere til databasesystemer bygget for Windows er lagt til.
- Det er implementert full støtte for RPC/COM, C++ RTTI (Run-Time Type Information) og unntak i C++ for ARM-plattformen.
- I C-runtime er det implementert støtte for UTF-8-koding i ANSI-funksjoner.
- Mulighetene til MSHTML-motoren er utvidet. Støtte for prototyper og objektkonstruktører er lagt til. En ny grensesnitt for bindingsobjekter er lagt til JavaScript-motoren for MSHTML. Innebygde MSHTML-funksjoner er konvertert til gyldige JavaScript-objekter. Oppsamleren for søppel i JavaScript er forbedret, og dekker nå alle kjøringskontekster for skript i tråden. Støtte for JavaScript-objekter ArrayBuffer og DataView er lagt til.
- I det kontinuerlige integrasjonssystemet basert på Gitlab er støtte for statisk analyse med Clang og rapporter om JUnit-testresultater lagt til.
- Det er inkludert et bibliotek, Capstone 5.0.3, som muliggjør disassembling i WineDb-debuggeren.
- Komponentene er oppdatert til nye versjoner: 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 og Zlib 1.3.1.
Kilde: opennet.ru
