Etter et år med utvikling og 25 eksperimentelle versjoner er den stabile utgivelsen av den åpne implementeringen av Win32 API - Wine 11.0, som har inkorporert over 6300 endringer og 600 feilrettinger, presentert. Blant de viktigste prestasjonene i den nye versjonen er full støtte for NTSYNC, implementering av Reparse Point-mekanismen og bruk av den nye WoW64-arkitekturen.
I Wine er det bekreftet at 5419 Windows-programmer fungerer fullt ut (i fjor 5372, for to år siden 5336, for tre år siden 5266), ytterligere 4500 programmer (i fjor 4435, for to år siden 4397, for tre år siden 4370) fungerer utmerket med ekstra konfigurasjoner og eksterne DLL-er. For 4086 programmer (i fjor 4020, for to år siden 3943, for tre år siden 3888) er det små problemer med funksjonaliteten, som ikke hindrer bruken av de grunnleggende funksjonene i applikasjonene.
Nøkkelnyheter i Wine 11.0:
- Full støtte for ntsync-driveren, som betydelig øker ytelsen til Windows-spill som kjøres ved hjelp av Wine. Driveren er en del av Linux-kjernen fra versjon 6.14 og implementerer det symbolske enheten /dev/ntsync og et sett med primitive for synkronisering, brukt i Windows NT-kjernen. Betydelig ytelsesøkning oppnås ved å fjerne overhead knyttet til bruk av RPC i brukerrommet.
- Mulighet for å justere trådprioriteter i Linux og macOS er lagt til.
- I ntdll er API-en for synkronisering «Synchronization barriers» lagt til, som gjør det mulig å suspendere utførelsen av flere tråder til alle trådene når et bestemt utførelsespunkt (for eksempel, vente på at alle tråder skal nå et bestemt stadium ved parallell kjøring av samme kode).
- Den nye implementeringen av WoW64-laget (64-bit Windows-on-Windows), som gjør det mulig å kjøre 32-biters Windows-programmer i 64-biters Unix-systemer, er nå fullstendig støttet. I motsetning til den gamle implementeringen av WoW64, der 32-biters programmer ble kjørt i 32-biters Unix-prosesser, gir den nye WoW64 muligheten til å kjøre 32-biters kode inne i 64-biters prosesser. Støtte for kjøring av 16-biters programmer i WoW64-modus er også implementert.
I alle moduler som bruker Unix-biblioteker, er det implementert systemkallstransformatorer for WoW64 (thunk) som lar 32-bits PE-moduler kommunisere med 64-bits Unix-biblioteker. Det er lagt til muligheten for å kjøre gamle WoW64-installasjoner i ny modus ved å sette miljøvariabelen «WINEARCH=wow64». 32-bits prefikser som opprettes ved å sette WINEARCH=win32 er nå utdaterte og støttes ikke i den nye WoW64-modusen. Den separate lastingeren wine64 er fjernet, og en universell lastingsprogramvare som identifiserer modusen basert på arkitekturen til den kjørte filen er nå brukt.
- Kjerne (Windows-kjernegrensesnitt)
- Reparse Point-mekanismen er implementert, som gjør det mulig å knytte ekstra data til filer og kataloger identifisert via etiketter. Typer som symboliske lenker og monteringspunkter støttes.
- For å forbedre ytelsen ved sporing av skriveoperasjoner i minnet, er mekanismen UFFD (userfaultfd) implementert, som gir muligheten til å opprette håndterere for tilgang til ikke-allokerte minnesider (page faults) i brukerrommet. I tester har bruken av UFFD redusert lastetiden for nivåer i spillet «Streets of Rage 4» fra 6-8 sekunder til 1.5-2 sekunder, noe som tilsvarer ytelsen på Windows-plattformen.
- Numrene for NT-systemkall, som er identiske med de nyeste Windows-versjonene, er brukt, noe som er nødvendig for å støtte applikasjoner som bruker hardkodede systemkallnummer.
- På ARM64-systemer er det implementert muligheter for å simulere minnesider på 4K i miljøer med Linux-kjerner som bruker større minnesider (16K eller 64K). Simuleringen gjør det mulig å kjøre enkle applikasjoner, mens for mer komplekse programmer anbefales det å bruke Linux-kjerner med 4-kilobyte minnesider.
- Grafikkundersystem
- På X11-systemer (winex11) for OpenGL er det som standard aktivert en rendering backend som bruker EGL. GLX-backend er utdatert, men forblir tilgjengelig som reserve og brukes hvis EGL ikke er tilgjengelig.
- Innført støtte for D3DKMT-objekter, som gir lavnivåtilgang til grafiske enheter fra brukermodus. Vulkan-utvidelsene VK_KHR_external_memory_win32, VK_KHR_external_semaphore_win32, VK_KHR_external_fence_win32 og VK_KHR_win32_keyed_mutex er implementert.
- I WoW64-modus (64-bit Windows-on-Windows) er det implementert støtte for minnekartlegging for OpenGL ved hjelp av Vulkan API, som gjør det mulig å akselerere ytelsen til 32-biters OpenGL-applikasjoner i Wine.
- Støtte for emulering av frontbuffer for OpenGL er implementert på plattformer uten innebygd støtte.
- Vulkan-driveren har fått støtte for Vulkan-spesifikasjonen 1.4.335.
- I WindowsCodecs-bibliotene er støtten for metadata i bildefiler utvidet, og det er implementert støtte for konvertering mellom heltalls fargeformat og flyttallsformater.
- Avhengigheten til OSMesa-biblioteket (Off-screen Mesa) er fjernet. Det er nå mulig å tegne bitmapper via OpenGL med bruk av maskinvareakselerert OpenGL-runtime.
- Integrasjon med skrivebordet
- I driveren winewayland.drv, som muliggjør bruk av Wine i Wayland-baserte miljøer uten XWayland og X11-komponenter, er det implementert støtte for utklippstavle, inngangsmetoder, ikke-rektangulære vinduer og gjennomsiktighet.
- Integrasjonen med X11 er forbedret: vindusbehandleren kan nå sende aktiveringsforespørsel og EWMH-protokollen er tatt i bruk for å koordinere tilstanden til aktive X11- og Win32-vinduer.
- Støtte for eksklusiv fullskjermmodus er implementert. Støtten for fullskjermmodus i D3D er forbedret, og ytelsen til gamle DDraw-baserte spill er forbedret.
- Ytelsen til noen vindusfunksjoner er økt. Delt minne benyttes for prosessinteraksjon.
- Direct3D
- I Direct3D 11 er støtte for maskinvareakselerert videodekoding i H.264-format implementert ved hjelp av Vulkan API.
- I Direct3D 11 er støtte for minmax-filtrering av teksturer implementert, ved å bruke OpenGL-utvidelsen GL_ARB_texture_filter_minmax eller Vulkan-utvidelsen VK_EXT_sampler_filter_minmax.
- I Direct3D 11 er funksjoner for lasting av teksturer implementert.
- En omfattende mengde Direct3D-funksjoner for rendering via Vulkan er implementert, inkludert vertex-blanding, flat skyggelegging, tilpassede klippflater og forskjellige ressursformater.
- I den innebygde kopien av vkd3d-shader er støtten for shader-modellene 1, 2 og 3 forbedret.
- Metoden D3DXSaveSurfaceToFileInMemory har fått støtte for PNG-, JPEG- og BMP-bilder.
- Direct3D 10 og 11 har fått støtte for komprimering og dekomprimering av formatene BC4 og BC5, samt generering av MIP-nivåer (MipMap) ved lasting av teksturer.
- Metodene ID3DXEffect::SetRawValue() og ID3DXSkinInfo::UpdateSkinnedMesh() er implementert.
- Inndataenheter
- Kompatibiliteten med spillkontrollere er forbedret ved bruk av hidraw-backend.
- Støtten for effekten av force feedback er forbedret ved bruk av spillratt og kontroller.
- Støtten for spillkontrollere i API-en Windows.Gaming.Input og ved bruk av evdev-backend er forbedret.
- Det er lagt til en fane for innstilling av Windows.Gaming.Input API i kontrollerstyringsapplet.
- Kompatibiliteten til DirectInput med gamle spill er forbedret.
- Bluetooth
- Driveren for Bluetooth har fått muligheten til å skanne, konfigurere oppdagelse og paring av enheter.
- Støtte for Bluetooth Low Energy-tjenester er lagt til.
- Applikasjoner får muligheten til å opprette lavnivå RFCOMM-tilkoblinger med eksterne enheter ved hjelp av Winsock API.
- Støtte for skannere
- Støtte for TWAIN 2.0 API er implementert, som gjør det mulig å få tilgang til skannere fra 64-bits applikasjoner.
- Komponenten DAT_IMAGENATIVEXFER for overføring av bilder fra skanner til applikasjon er implementert.
- Valgt skanner og skannerinnstillinger blir lagret i registeret.
- Støtte for flerside skanning og automatisk dokumentmater er lagt til.
- Blokkeringen av applikasjonen under scanning er fjernet.
- Støtte for å laste opp native Windows-drivere til skannere er lagt til.
- Internasjonalisering
- Generering av lokale databaser i formatet locale.nls fra Unicode CLDR (Unicode Common Locale Data Repository) versjon 48 er sikret. Ytterligere lokaliseringer bua-RU, bqi-IR, cop-EG, ht-HT, kek-GT, lzz-TR, mww-Hmnp-US, oka-CA, pi-Latn-GB, pms-IT, sgs-LT, suz-Deva-NP og suz-Sunu-NP er lagt til.
- Unicode-tegnsett har blitt oppdatert til standardversjon 17.0.0. Tidszone-databasen er oppdatert.
- Nettverksmuligheter
- I MSHTML-motoren i standardkompatibilitetsmodus er det sikret at elementattributter fungerer som fullverdige DOM-noder. DOMParser-, XDomainRequest- og msCrypto-objekter er implementert.
- I JavaScript er støtten for typed arrays lagt til.
- Ping-kommandoen er implementert for ICMPv6.
- DB
- MSADO-bibliotek (ActiveX Data Objects) har fått støtte for å lagre endringer i databasen. De fleste funksjonene i Recordset-objektet er implementert.
- I odbc32-biblioteket er støtten for ANSI win32-drivere som ikke er laget for Unicode forbedret. Funksjonene SQLDriverConnectA(), SQLSpecialColumnsW(), SQLGetInfoW(), SQLStatisticsW() og QLColumnsW() er implementert.
- Innebygde applikasjoner
- I WineCfg er det lagt til en fane for å konfigurere standard MIDI-enhet.
- Cmd-verktøyet har fått implementert autofullføring av filnavn i interaktiv modus, lagt til støtte for komplekse instruksjoner og implementert kommandoen «mklink /j» for å opprette Reparse Point.
- I conhost (Console Hosting)-verktøyet er det lagt til støtte for å få tilgang til historikken ved å trykke på F1 og F3-tastene.
- Kommandoene timeout, runas og subst er implementert.
- I find-verktøyet er det lagt til alternativene «/c» for å vise antall treff og «/i» for uavhengig av store og små bokstaver.
- I whoami-verktøyet er det nå mulig å tilpasse utskriftsformatet.
- Diverse
- I implementeringen av grensesnittbeskrivelsesspråket WIDL (Wine Interface Definition Language) er det lagt til støtte for generering av metadata for Windows Runtime (WinRT). Generering og installering av WinMD-filer (Windows Metadata) for WinRT API er sikret.
- I winedump-verktøyet er det lagt til støtte for dumping av MUI-ressurser, systemkallnummer, innebygde NE-moduler og store PDB-filer (> 4 GB).
- Common Control-implementeringen er refaktorert, og COMCTL32-biblioteket er delt opp i separate moduler for versjonene 5 og 6.
- I BCrypt er det lagt til støtte for nøkkelgenereringsstandarden PBKDF2.
- Støtte for katalogene UserProgramFiles, AccountPictures og Screenshots er lagt til.
- Bibliotekene LLVM Compiler-RT 8.0.1 og TomCrypt 1.18.2 er integrert i systemet. HwLoc-biblioteket brukes til å identifisere CPU på FreeBSD-plattformen.
- Komponentene Vkd3d 1.18, Faudio 25.12, FluidSynth 2.4.2, LCMS2 2.17, LibMPG123 1.33.0, Libpng 1.6.51, LibTiff 4.7.1 og LibXml2 2.12.10 er oppdatert til nye versjoner.
Kilde: opennet.ru
