Etter et år med utvikling og 28 eksperimentelle versjoner presentert stabil utgivelse av den åpne implementeringen av Win32 API - Wine 5.0, som inkluderte mer enn 7400 endringer. Nøkkelprestasjonene til den nye versjonen inkluderer levering av innebygde vinmoduler i PE-format, støtte for multimonitorkonfigurasjoner, en ny implementering av XAudio2 audio API og støtte for Vulkan 1.1 grafikk API.
I vin bekreftet full drift av 4869 (for et år siden 4737) programmer for Windows, ytterligere 4136 (for et år siden 4045) programmer fungerer perfekt med tilleggsinnstillinger og eksterne DLL-er. 3635 XNUMX programmer har mindre ytelsesproblemer som ikke forstyrrer bruken av grunnleggende applikasjonsfunksjoner.
Med MinGW-kompilatoren er de fleste Wine-moduler nå bygget i PE (Portable Executable, brukt på Windows) kjørbare filformat i stedet for ELF. Bruken av PE løser problemer med å støtte ulike kopibeskyttelsesordninger som bekrefter identiteten til systemmoduler på disk og i minne;
PE-kjørbare filer blir nå kopiert til ~/.wine ($WINEPREFIX)-katalogen i stedet for å bruke dummy DLL-filer, noe som gjør ting mer lik ekte Windows-installasjoner, på bekostning av å forbruke ekstra diskplass;
Moduler konvertert til PE-format kan bruke standard wchar C-funksjoner og konstanter med Unicode (for eksempel L"abc");
Wine C runtime har lagt til støtte for kobling med binærfiler innebygd i MinGW, som brukes som standard i stedet for MinGW runtime når du bygger DLL-er;
Grafisk delsystem
Lagt til støtte for arbeid med flere skjermer og grafikkadaptere, inkludert muligheten til å endre innstillinger dynamisk;
Driveren for Vulkan graphics API er oppdatert for å samsvare med Vulkan 1.1.126-spesifikasjonen;
WindowsCodecs-biblioteket gir muligheten til å konvertere flere rasterformater, inkludert formater med en indeksert palett;
Direct3D
Når du kjører fullskjerms Direct3D-applikasjoner, blokkeres skjermspareranropet;
DXGI (DirectX Graphics Infrastructure) har lagt til støtte for å informere en applikasjon når vinduet er minimert, noe som gjør at applikasjonen kan redusere ytelsen til ressurskrevende operasjoner når vinduet minimeres;
For applikasjoner som bruker DXGI, er det nå mulig å bytte mellom fullskjerm- og vindusmodus ved å bruke Alt+Enter-kombinasjonen;
Mulighetene til Direct3D 12-implementeringen har blitt utvidet, for eksempel er det nå støtte for å bytte mellom fullskjerms- og vindusmodus, endre skjermmoduser, skalere utdata og administrere gjengivelsesbufferutskiftingsintervallet (bytteintervall);
Forbedret håndtering av ulike grensesituasjoner, for eksempel bruk av inputverdier utenfor rekkevidde for gjennomsiktighets- og dybdetester, gjengivelse med reflekterte teksturer og buffere, og bruk av feil DirectDraw-objekter clipper, lage Direct3-enheter for feil vinduer, bruke synlige områder hvis minimumsparameterverdier er lik maksimum, etc.
Direct3D 8 og 9 gir mer nøyaktig sporing "skitne» områder med belastede teksturer;
Størrelsen på den nødvendige adresseplassen ved lasting av 3D-teksturer komprimert ved hjelp av S3TC-metoden er redusert (i stedet for å laste helt inn, lastes teksturer inn i biter).
Grensesnitt implementert ID3D11Multithread å beskytte kritiske seksjoner i flertrådede applikasjoner;
Ulike forbedringer og rettelser knyttet til lysberegninger er gjort for eldre DirectDraw-applikasjoner;
Implementerte tilleggskall for å få informasjon om shaders i API ShaderReflection;
Wined3d støtter nå blitter CPU-basert for behandling av komprimerte ressurser;
Databasen med grafikkort gjenkjent i Direct3D har blitt utvidet;
Lagt til nye registernøkler HKEY_CURRENT_USER\Software\Wine\Direct3D: “shader_backend” (backend for arbeid med shaders: “glsl” for GLSL, “arb” for ARB toppunkt/fragment og “none” for å deaktivere shader-støtte), “strict_shader_math” ( 0x1 - aktiver, 0x0 - deaktiver Direct3D shader-konvertering). Avviklet "UseGLSL"-nøkkelen (bør bruke "shader_backend");
D3DX
Støtte for 3D-teksturkomprimeringsmekanismen S3TC (S3 Texture Compression) er implementert;
Lagt til korrekte implementeringer av operasjoner som teksturfylling og ikke-kartleggbare overflater;
Forskjellige forbedringer og rettelser er gjort i rammeverket for opprettelse visuelle effekter;
Kjerne (Windows-kjernegrensesnitt)
De fleste funksjonene som brukes i Kernel32 er flyttet til
KernelBase, etter endringer i Windows-arkitekturen;
Evne til å blande 32- og 64-biters DLL-er i kataloger som brukes til lasting. Sikrer at biblioteker som ikke samsvarer med gjeldende bitdybde ignoreres (32/64), i tilfelle lenger langs banen er det mulig å finne et bibliotek som er riktig for gjeldende bitdybde;
For enhetsdrivere har emulering av kjerneobjekter blitt forbedret;
Implementerte synkroniseringsobjekter som fungerer på kjernenivå, for eksempel spinnlåser, raske mutexes og variabler knyttet til en ressurs;
Sikrer at applikasjoner er korrekt informert om batteristatus;
Brukergrensesnitt og skrivebordsintegrasjon
Minimerte vinduer vises nå ved hjelp av en tittellinje i stedet for et Windows 3.1-stilikon;
Lagt til nye knappestiler Split-knapp (knapp med en rullegardinliste over handlinger) og Kommandolenker (lenker i dialogbokser som brukes til å gå til neste trinn);
Symbolske lenker er opprettet for mappene 'Nedlastinger' og 'Maler', som peker til de tilsvarende katalogene på Unix-systemer;
Inngangsenheter
Ved oppstart installeres og lastes de nødvendige Plug & Play-enhetsdriverne;
Forbedret støtte for spillkontrollere, inkludert en mini-joystick (hattebryter), ratt, gass- og bremsepedaler.
Støtte for den gamle Linux-joystick-APIen som ble brukt i Linux-kjerner før versjon 2.2 er avviklet;
. NET
Mono-motoren er oppdatert til utgivelse 4.9.4 og inkluderer nå deler av rammeverket Windows Presentation Foundation (WPF);
Lagt til muligheten til å installere tilleggsprogrammer med Mono og Gecko i en felles katalog, og plassere filer i /usr/share/wine-hierarkiet i stedet for å kopiere dem til nye prefikser;
Nettverksfunksjoner
Wine Gecko-nettlesermotoren, som brukes i MSHTML-biblioteket, har blitt oppdatert til utgivelse 2.47.1. Støtte for nye HTML APIer er implementert;
MSHTML støtter nå SVG-elementer;
Lagt til mange nye VBScript-funksjoner (for eksempel feil- og unntaksbehandlere, time, dag, måned, streng, LBound, RegExp.Replace, РScriptTypeInfo_* og ScriptTypeComp_Bind* funksjoner, etc.);
Forutsatt bevaring av kodetilstand i VBScript og JScript (skriptvedvarende);
Lagt til en innledende implementering av HTTP-tjenesten (WinHTTP) og tilhørende API (HTTPAPI) for klient- og serverapplikasjoner som sender og mottar forespørsler ved hjelp av HTTP-protokollen;
Implementert muligheten til å få HTTP proxy-innstillinger via DHCP;
Lagt til støtte for å omdirigere autentiseringsforespørsler gjennom Microsoft Passport-tjenesten;
Kryptografi
Implementert støtte for elliptiske kurvekryptografiske nøkler (ECC) ved bruk av GnuTLS;
Lagt til muligheten til å importere nøkler og sertifikater fra filer i PFX-format;
Lagt til støtte for nøkkelgenereringsskjemaet basert på PBKDF2-passordet;
Tekst og fonter
DirectWrite API-implementeringen har lagt til støtte for OpenType-funksjoner relatert til glyphposisjonering, som er aktivert som standard for den latinske stilen, inkludert kerning;
Forbedret sikkerhet for behandling av fontdata ved å kontrollere riktigheten av ulike datatabeller før du bruker dem;
DirectWrite-grensesnitt har blitt brakt i tråd med den nyeste SDK;
Lyd og video
En ny implementering av lyd-API er foreslått XAudio2, bygget på grunnlag av prosjektet FAudio. Ved å bruke FAudio i Wine kan du oppnå høyere lydkvalitet i spill og bruke funksjoner som volummiksing og avanserte lydeffekter;
Et stort antall nye samtaler er lagt til implementeringen av Media Foundation-rammeverket, inkludert støtte for innebygde og tilpassede asynkrone køer, Source Reader API, Media Session, etc.
Videoopptaksfilteret har blitt byttet til å bruke v4l2 API i stedet for v4l1 API, som har utvidet utvalget av støttede kameraer;
De innebygde AVI-, MPEG-I- og WAVE-dekoderne er fjernet, i stedet for som nå brukes systemet GStreamer eller QuickTime;
Lagt til et undersett av VMR7-konfigurasjons-APIer;
Lagt til støtte for å justere volumet på individuelle kanaler til lyddrivere;
Internasjonalisering
Unicode-tabeller oppdatert til versjon 12.1.0;
Implementert støtte for Unicode-normalisering;
Forutsatt automatisk installasjon av den geografiske regionen (HKEY_CURRENT_USER\Control Panel\International\Geo) basert på gjeldende lokalitet;
RPC/COM
Lagt til støtte for komplekse strukturer og arrays til typelib;
Lagt innledende implementering av Windows Script runtime-bibliotek;
Lagt til første implementering av ADO-biblioteket (Microsoft ActiveX Data Objects);
Installatører
Støtte for levering av patcher (patchfiler) er implementert for MSI-installasjonsprogrammet;
WUSA (Windows Update Standalone Installer)-verktøyet har nå muligheten til å installere oppdateringer i .MSU-format;
ARM-plattform
For ARM64-arkitekturen er støtte for stabelavvikling lagt til i ntdll. Lagt til støtte for å koble til eksterne libunwind-biblioteker;
For ARM64-arkitekturen har støtte for sømløse proxyer blitt implementert for objektgrensesnitt;
Utviklingsverktøy / Winelib
Lagt til muligheten til å bruke debuggeren fra Visual Studio for å eksternt feilsøke applikasjoner som kjører i Wine;
DBGENG (Debug Engine)-biblioteket er delvis implementert;
Binærfiler kompilert for Windows er ikke lenger avhengige av libwine, og lar dem kjøre på Windows uten ytterligere avhengigheter;
Lagt til '--sysroot'-alternativet til Resource Compiler og IDL Compiler for å bestemme banen for header-filer;
Lagt til '—target', '—wine-objdir'-alternativer til winegcc
'—winebuild' og '-fuse-ld', som forenkler oppsett av miljøet for krysskompilering;
Innebygde applikasjoner
Implementerte et CHCP-verktøy for å konfigurere konsollkoding;
MSIDB-verktøyet for å manipulere databaser i MSI-format er implementert;
Optimalisering av ytelse
Ulike tidsfunksjoner har blitt migrert for å bruke høyytelses systemtimerfunksjoner, noe som reduserer overhead i gjengivelsessløyfen til mange spill;
Lagt til muligheten til å bruke Ext4 i FS regime arbeid uten store og små bokstaver;
Ytelsen til å behandle et stort antall elementer i listevisningsdialoger som opererer i LBS_NODATA-modus er blitt optimalisert;
Lagt til en raskere implementering av SRW-låser (Slim Reader/Writer) for Linux, oversatt til Futex;
Eksterne avhengigheter
For å sette sammen moduler i PE-format brukes MinGW-w64 krysskompilatoren;
Implementering av XAudio2 krever FAudio-biblioteket;
For å spore filendringer på BSD-systemer
Inotify-biblioteket brukes;
For å håndtere unntak på ARM64-plattformen kreves Unwind-biblioteket;
I stedet for Video4Linux1 kreves nå Video4Linux2-biblioteket.