Stabil utgivelse av Wine 5.0

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.

Nøkkel innovasjoner Vin 5.0:

  • Moduler i PE-format
    • 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.

Kilde: opennet.ru

Legg til en kommentar