Etter et år med utvikling og 26 eksperimentelle versjoner ble en stabil utgivelse av den åpne implementeringen av Win32 API presentert - Wine 9.0, som inneholdt mer enn 7000 endringer. Nøkkelprestasjonene i den nye versjonen inkluderer implementeringen av WoW64-arkitekturen for å kjøre 32-biters programmer i et 64-bits miljø, driverintegrasjon for å støtte Wayland, støtte for ARM64-arkitekturen, implementering av DirectMusic API og støtte for smartkort.
5336 (5266 for et år siden, 5156 for to år siden, 5049 for tre år siden) programmer har blitt bekreftet å fungere skikkelig i Wine. WindowsYtterligere 4397 programmer (4370 for et år siden, 4312 for to år siden, 4227 for tre år siden) fungerer fint med tilleggsinnstillinger og eksterne DLL-er. 3943 programmer (3888 for et år siden, 3813 for to år siden, 3703 for tre år siden) har mindre problemer som ikke forstyrrer den grunnleggende funksjonaliteten til applikasjonene.
Viktige innovasjoner i Wine 9.0:
- Driveren winewayland.drv er lagt til, slik at Wine kan brukes i Wayland-baserte miljøer uten bruk av XWayland- eller X11-komponenter. Denne utviklingen har som mål å tilby et rent Wayland-miljø med oppstartsstøtte. Windows– applikasjoner som ikke krever installasjon av X11-relaterte pakker, noe som gir høyere ytelse og respons i spill ved å eliminere unødvendige lag. Å bruke et rent Wayland-miljø for Wine eliminerer også sikkerhetsproblemer som er iboende i X11 (for eksempel kan upålitelige X11-spill spionere på andre applikasjoner fordi X11-protokollen gir tilgang til alle input-hendelser og utfører tastetrykk-erstatning).
Driveren er merket som eksperimentell og under utvikling, men likevel har den allerede støtte for mange funksjoner, for eksempel vindusbehandling, arbeid med flere skjermer, støtte for skalering av utdata på skjermer med høy pikseltetthet (høy-DPI), arbeid med relative koordinater ved sporing av musebevegelser og støtte for Vulkan grafikk API. Som standard er ikke driveren aktiv, og for å aktivere den bør du legge til "wayland" til registerparameteren "HKCU\Software\Wine\Drivers" og sørge for at DISPLAY miljøvariabelen ikke er satt: wine reg.exe add HKCU\ \Software\\Wine\\Drivere /v Graphics /d x11,wayland
- Alle moduler har blitt konvertert til NT-systemanropsgrensesnittet, i stedet for å ringe direkte mellom PE- og Unix-lagene, noe som markerer fullføringen av mange års arbeid med å konvertere alle DLL-er til å bruke PE (Portable Executable) kjørbare filformater.
- Utviklingen av WoW64-laget (64-bit) fortsatte Windows-på-Windows), som lar deg kjøre 32-bit Windows- applikasjoner på 64-bits Unix-systemer. Alle moduler som har tilgang til Unix-biblioteker bruker WoW64-systemkalloversettere (thunks), som lar 32-bits moduler i PE-format få tilgang til 64-bits Unix-biblioteker.
Den nye WoW64-oppstartsmodusen er forbedret, slik at 32-biters kode kan kjøres i en 64-biters prosess (i den gamle WoW64-modusen kjørte 32-biters applikasjoner i 32-biters Unix-prosesser). Støtte for bruk av den nye WoW64-modusen på plattformen er lagt til. macOSSiden den nye WoW64-modusen har noen mindre feil, som mangel på 16-bits støtte og redusert OpenGL-ytelse på grunn av manglende støtte for ARB_buffer_storage-utvidelsen, er den ennå ikke aktivert som standard og krever bygging med alternativet "--enable-archs=i386,x86_64" i konfigurasjonsskriptet.
- Lagt til muligheten til å kjøre eksisterende kjørbare filer Windows På systemer med ARM64-arkitekturen kan Wine nå bygges for ARM64EC (ARM64 Emulation Compatible) ABI, og ARM64EC-moduler kan lastes inn. Disse modulene brukes til å forenkle porteringen av applikasjoner som opprinnelig ble skrevet for x86_64-arkitekturen til ARM64-systemer ved å muliggjøre kjøring av individuelle x86_64-kodemoduler i ARM64-miljøet ved hjelp av en emulator. Støtte er lagt til for ARM64X PE-filformatet, som tillater at en enkelt kjørbar fil lastes inn i både x64/Arm64EC- og ARM64-prosesser. Et grensesnitt for emulering av 32-biters x86-systemer er implementert, men emulatorbiblioteket er ennå ikke inkludert i hoveddistribusjonen av Wine (den eksterne FEX-emulatoren kan brukes til å kjøre x86-kode i ARM64-miljøet).
- Grafisk delsystem
- PostScript-driveren har blitt redesignet for å støtte spolefiler i formatet Windows, som lagrer data om utskriftsjobber. Direkte kall til driveren fra Unix-miljøet er ekskludert.
- Mørk modus-støtte er lagt til WinRT-temaer. En innstilling er lagt til WineCfg for å aktivere mørk grensesnittdesign.
- Driveren for Vulkan graphics API har lagt til støtte for Vulkan 1.3.272-spesifikasjonen (8.0 ble støttet i Wine 1.3.237).
- Funksjonene til GdiPlus-biblioteket har blitt optimalisert, noe som gir økt grafikkytelse.
- Direct3D
- Parsing av en flertråds kommandostrøm suspenderes når det ikke er noen gjengivelseskommandoer som behandles, noe som gjør det mulig å redusere energiforbruket til nivået for enkelttrådsbehandling ved utføring av programmer som ikke opptar hele kommandostrømmens båndbredde.
- Direct3D 10 inkluderer støtte for tilleggseffekter.
- Gjorde ytelsesoptimaliseringer til WineD3D-koden og backend ved hjelp av Vulkan graphics API.
- Den Vulkan API-baserte gjengivelseskoden sjekker nå hvilke funksjoner enheten støtter og forteller applikasjonen hvilket nivå av Direct3D-funksjonalitet som er tilgjengelig.
- Funksjonene D3DXFillTextureTX og D3DXFillCubeTextureTX er implementert.
- Den klassiske OpenGL ARB shader-backend har lagt til støtte for å definere skygger ved å bruke utvidelsen ARB_fragment_program_shadow.
- D3DXLoadMeshHierarchyFromX og lignende funksjoner har lagt til støtte for å laste brukerdata ved å bruke ID3DXLoadUserData-grensesnittet.
- Lyd og video
- En innledende implementering av DirectMusic API er foreslått. Lagt til støtte for samlinger, instrumenter og lydeksempler i SoundFont-formatet. Lagt til støtte for Doppler-effekten. Tester har blitt implementert for å verifisere riktig implementering når du bruker dmime sequencer og dmsynth MIDI synthesizer.
- FluidSynth-biblioteket er innebygd i DirectMusic API for bruk.
- Implementerte støtte for lasting av lydfonter (SoundFont - formater for samplebasert syntese brukt til å spille av MIDI-filer) i DLS1- og DLS2-formatene, samt i SF2-formatet som brukes i Linux.
- Lagt til muligheten til å spille av MIDI-innhold ved å bruke dmsynth-biblioteket, ved å bruke FluidSynth-programvaresynthesizeren og DirectSound API for lydutgang.
- Lagt til en dekoder for video i videokodekformatet Indeo IV50.
- Direct
- DMO-komponenten (DirectX Media Object) med en WMV-formatdekoder er implementert (Windows Medievideo).
- Lagt til et lydopptaksfilter (DirectShow Audio Capture Filter).
- I tillegg til lydstrømmer støtter MPEG‑1 Stream Splitter (DirectShow MPEG‑1 Stream Splitter) nå videostrømmer og tjenestestrømmer.
- Et filter for dekoding av video i MPEG-1-format (DirectShow MPEG-1 Video Decoder) er implementert.
- Inngangsenheter
- DirectInput støtter handlingskartlegging, som lar deg binde knapper på en spillkontroller til spesifikke handlinger i spill.
- Desktop-integrasjon
- Bindinger har blitt eksportert til hovedbrukermiljøet, slik at applikasjoner som kjører under Wine kan kalles som protokollbehandlere når du åpner en URL (for eksempel lansering av spotify.exe når du åpner lenker som "spotify:user:spotify:playlist:848218482355482821").
- Implementerte utvinning av EDID-data (Extended Display Identification Data) med informasjon om parametrene til den tilkoblede skjermen, for eksempel navn og modell på enheten.
- Det er mulig å lukke et skrivebordsvindu distribuert i fullskjermmodus ved å bruke "Avslutt skrivebord"-knappen i "Start"-menyen.
- Internasjonalisering
- Støtte for IME-er (Input Method Editors) er utvidet. Det er arbeidet med å sikre kompatibilitet med native systemer. Windows IME-implementeringer og forbedret integrasjon med Linux IME
- Generering av lokalitetsdatabaser i locale.nls-format fra Unicode CLDR (Unicode Common Locale Data Repository) versjon 44-databasen har blitt gitt Støtte for ytterligere lokaliteter bew-ID, blo-BJ, csw-CA, dvs.-EE, mic-CA. , prg-PL er lagt til , skr-PK, tyv-RU, vmw-MZ, xnr-IN og za-CN.
- Grensesnittet er oversatt til georgisk. Fullstendige oversettelser tilbys for 16 språk, og delvise oversettelser for 31 språk.
- Unicode-tegntabeller er oppdatert til standardversjon 15.1.0. Tidssonedatabasen er oppdatert.
- Kjerne (kjernegrensesnitt Windows)
- Som den utgitte versjonen Windows definert som standard Windows 10.
- For kjørbare filer i PE-formatet er støtte for adresseromsrandomisering (ASLR) implementert, men adressene for innlasting av kode i minnet er ennå ikke fullstendig randomisert.
- Støtte for en svakt fragmentert haug (LFH, Low Fragmentation Heap) er implementert, noe som har økt ytelsen til minneallokeringsoperasjoner.
- Støtte for minnereservasjon (plassholder) er lagt til den virtuelle minneallokeringsmekanismen, slik at en applikasjon kan reservere et spesifikt område av virtuelt minne for fremtidig bruk.
- 64-biters lastere (laster og forhåndslaster) av kjørbare filer og biblioteker er kompilert i PIE-formatet (Position-Independent Executables) for å frigjøre deler av 32-biters adresseplass.
- Riktig stabelavvikling er gitt for NT-systemanrop og tilbakeringing av brukere.
- Nettverksfunksjoner
- MSHTML-motoren støtter søppelinnsamlingsmekanismen "Cycle Collection".
- MSHTML har lagt til støtte for synkron behandling av XMLHttpRequest-forespørsler.
- jscript.dll legger til støtte for et WeakMap-objekt for å fungere med en samling nøkkel/verdi-par der nøkkelen er et objekt som kan ha en vilkårlig verdi knyttet til seg. Implementerte WeakMap.get(), WeakMap.delete(), WeakMap.clear() og WeakMap.has() metoder.
- Nettlesermotoren Gecko har blitt oppdatert til versjon 2.47.4.
- Støtte for varsler om endringer i tilstanden til nettverksgrensesnittet er implementert.
- Kryptografi og sikkerhet
- Støtte for smartkort er lagt til Winscard.dll-biblioteket, implementert gjennom PCSClite-systembiblioteket.
- BCrypt har lagt til støtte for Diffie-Hellman nøkkelutvekslingsprotokoll.
- Forhandlingspakken er implementert, og gir et lag for bruk av SSPI-grensesnittet (Security Support Provider Interface) for å få tilgang til SSP-leverandører (Security Support Provider).
- Innebygde applikasjoner
- Wine Debugger (winedbg) bruker Zydis-biblioteket til å demontere X86-maskininstruksjoner.
- WineCfg-grensesnittet er oppdatert for å støtte eldre versjoner på 64-biters plattformer. Windows (før XP), som lar deg kjøre eldre applikasjoner ved hjelp av WoW64-modus.
- Alle innebygde grafiske applikasjoner viser nå feilinformasjon i en egen dialog, i stedet for å vise dem i konsollen.
- Systeminfo-programmet viser informasjon fra WMI-databasen (Windows Administrasjonsinstrumenter).
- Lagt til klist-applikasjon for å vise Kerberos-billetter.
- Taskkill-applikasjonen implementerer muligheten til å tvangsavbryte underordnede prosesser.
- Lagt til "/machine"-alternativet til startverktøyet for å velge arkitekturen som brukes når du kjører hybride kjørbare filer som støtter x86 og ARM.
- Det meste av funksjonaliteten til oppgavelisteprogrammet er implementert.
- Lagt til en grunnleggende implementering av findstr-applikasjonen.
- Utviklingsverktøy
- WineDump-verktøyet har muligheten til å vise innholdet i registerfiler. Windows (REGF-format), samt visning av data for alle arkitekturer (x86/ARM64) som støttes i hybrid PE-filer.
- IDL-kompilatoren har lagt til støtte for attributtene "composable", "default_overload", "deprecated" og "protected".
- Fjernet libwine.so, som ble avviklet i Wine 6.0 og lenge ikke lenger har vært brukt i Wine. Programmer i ELF-format bygget i eldre versjoner av Wine (5.0 og eldre) med libwine.so krever ombygging for å kjøre i Wine 9.0.
- Innebygde biblioteker og eksterne avhengigheter
- Bibliotekene FluidSynth 2.3.3, Musl 1.2.3 (kun matematiske funksjoner) og Zydis 4.0.0 er integrert i pakken.
- Komponentene 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 new til Lib1.1.38Xslt. Wine Mono-motoren med implementering av .NET-plattformen har blitt oppdatert til utgivelse 1.3.
- Driveren winewayland.drv bruker Wayland-klientbiblioteket som eksterne avhengigheter, så vel som xkbcommon og xkbregistry-bibliotekene.
- For å støtte smartkort brukes det eksterne PCSClite-biblioteket (i macOS — PCSC).
- Å bygge PE-filer på ikke-i386-plattformer krever nå en krysskompilator med støtte for ".seh"-direktiver for å håndtere unntak.
Kilde: opennet.ru
