Efter et års udvikling og 25 eksperimentelle versioner er den stabile udgave af den åbne implementering af Win32 API blevet præsenteret – Wine 11.0, som omfatter mere end 6300 ændringer og 600 fejlrettelser. Blandt de vigtigste resultater i den nye version er fuld understøttelse af NTSYNC, implementering af Reparse Point-mekanismen og anvendelse af den nye WoW64-arkitektur.
I Wine er der bekræftet fuld funktionalitet for 5419 Windows-programmer (både 5372 for et år siden, 5336 for to år siden og 5266 for tre år siden), mens yderligere 4500 programmer (4435 for et år siden, 4397 for to år siden, 4370 for tre år siden) fungerer glimrende med ekstra konfigurationer og eksterne DLL-filer. 4086 programmer (4020 for et år siden, 3943 for to år siden, 3888 for tre år siden) har små funktionsproblemer, der ikke hindrer brugen af programmets grundlæggende funktioner.
Nøgleinnovationer i Wine 11.0:
- Fuld support af ntsync-driveren, som væsentligt forbedrer ydelsen af Windows-spil, der køres via Wine. Driveren er inkluderet i Linux-kernen siden version 6.14 og implementerer det symbolske enhed /dev/ntsync og en række primitive for synkronisering anvendt i Windows NT-kernen. En betydelig ydelsesforbedring opnås ved at undgå overhead i forbindelse med brugen af RPC i brugerrummet.
- Mulighed for at justere tråprioriteter i Linux og macOS er blevet tilføjet.
- I ntdll er der tilføjet en synkroniserings-API kaldet 'Synchronization barriers', som gør det muligt at pause eksekveringen af flere tråde indtil en bestemt udførelsespunkt er nået i alle tråde (f.eks. vente på at alle tråde når en bestemt fase ved parallelt at eksekvere den samme kode).
- Den nye implementering af WoW64-laget (64-bit Windows-on-Windows), der gør det muligt at køre 32-bit Windows-applikationer i 64-bit Unix-systemer, er blevet klassificeret som fuldt understøttet. I modsætning til den gamle WoW64-implementering, hvor 32-bit applikationer blev kørt i 32-bit Unix-processer, sikrer den nye WoW64 kørsel af 32-bit kode inden for 64-bit processer. Understøttelse af kørsel af 16-bit applikationer i WoW64-tilstand er blevet implementeret.
I alle moduler, der arbejder med Unix-biblioteker, er der implementeret WoW64-systemopkaldsomformere (thunk), der muliggør, at 32-bit PE-moduler kan tilgå 64-bit Unix-biblioteker. Der er tilføjet muligheden for at køre gamle WoW64-installationer i den nye tilstand ved at sætte miljøvariablen "WINEARCH=wow64". 32-bit præfikser, der skabes ved at sætte WINEARCH=win32, er erklæret forældede og understøttes ikke i den nye WoW64-tilstand. Den separate wine64-lader er blevet fjernet, og i stedet anvendes en universel loader, der bestemmer tilstand ud fra det kørende fils bitdybde.
- Kernen (Windows kernel interfaces)
- Reparse Point-mekanismen er blevet implementeret, hvilket giver mulighed for at vedhæfte yderligere data til filer og mapper, der identificeres via tags. Typerne af Reparse Point, der understøttes, inkluderer symboliske links og monteringspunkter.
- For at forbedre ydelsen ved overvågning af hukommelsesskrivningsoperationer er UFFD (userfaultfd) mekanismen blevet aktiveret, som muliggør oprettelse af håndteringsfunktioner for sidefejl i brugerens adresseområde. I udførte tests muliggør brugen af UFFD, at indlæsnings tiden for niveauerne i spillet "Streets of Rage 4" blev reduceret fra 6-8 sekunder til 1,5-2 sekunder, hvilket svarer til opstartstider på Windows-platformen.
- NT-systemopkaldsnumrene, der anvendes, er identiske med de nyeste versioner af Windows. Dette er nødvendigt for at understøtte applikationer, der bruger hårdkodede systemopkaldsnumre.
- På ARM64-systemer er der implementeret mulighed for at simulere hukommelsessider på 4K i miljøer med Linux-kerneller, der bruger større hukommelsessider (16K eller 64K). Simulationen muliggør kørsel af enkle applikationer, mens der til mere komplekse programmer anbefales at bruge Linux-kerneller med 4-kilobyte hukommelsessider.
- Grafikunderstøttelse
- I X11-systemer (winex11) er der for OpenGL som standard anvendt en rendering-backend, der bruger EGL. GLX-backend'en er blevet erklæret forældet, men er stadig tilgængelig som fallback og anvendes i fravær af EGL.
- Der er tilføjet indledende støtte til D3DKMT-objekter, der giver lavniveauadgang til grafiske enheder fra brugerens rum. Vulkan-udvidelserne VK_KHR_external_memory_win32, VK_KHR_external_semaphore_win32, VK_KHR_external_fence_win32 og VK_KHR_win32_keyed_mutex er blevet implementeret.
- I WoW64-tilstand (64-bit Windows-on-Windows) er der implementeret support til hukommelsesmapping for OpenGL ved hjælp af Vulkan-API'en, som gør det muligt at accelerere 32-bit OpenGL-applikationer i Wine.
- Der er implementeret emulering af front buffer for OpenGL på platforme uden indbygget support.
- Driveren til grafik-API'en Vulkan har fået tilføjet support til Vulkan-specifikationen 1.4.335.
- I WindowsCodecs-bibliotekerne er supporten til metadata i billedfiler blevet udvidet, samt der er implementeret konvertering mellem heltalsfarveformater og formater med flydende komma.
- Afhængigheden af OSMesa-biblioteket (Off-screen Mesa) er fjernet. Der er implementeret mulighed for at tegne bitmapper via OpenGL ved brug af hardwareaccelereret OpenGL-runtime.
- Integration med skrivebordet
- I driveren winewayland.drv, som muliggør brug af Wine i Wayland-baserede miljøer uden brug af XWayland og X11-komponenter, er der implementeret support til clipboard, inputmetoder, ikke-rektangulære vinduer og gennemsigtighed.
- Integration med X11 er forbedret: der er sikret, at vinduesmanageren modtager anmodninger om vinduesaktivering, og EWMH-protokollen er blevet brugt til at koordinere status for aktive vinduer mellem X11 og Win32.
- Der er implementeret support til eksklusiv fuldskærmstilstand. Supporten til fuldskærmstilstand i D3D er forbedret, og der er forbedret understøttelse af ældre spil baseret på DDraw.
- Ydeevnen for nogle vinduesfunktioner er blevet forbedret. Der er anvendt delt hukommelse til interprocesskommunikation.
- Direct3D
- I Direct3D 11 er der tilføjet support til hardwareaccelereret dekodning af video i H.264-format, implementeret via Vulkan-API'en.
- I Direct3D 11 er der implementeret support til minmax-filtering af teksturer ved brug af OpenGL-udvidelsen GL_ARB_texture_filter_minmax eller Vulkan-udvidelsen VK_EXT_sampler_filter_minmax.
- Der er implementeret funktioner til teksturlæsning i Direct3D 11.
- En række funktioner fra Direct3D er blevet implementeret ved rendering gennem Vulkan, såsom vertexblanding, flad skygge, brugerdefinerede klipplaner og forskellige ressourceformater.
- I den indbyggede version af vkd3d-shader er supporten for 1, 2 og 3 shadermodeller forbedret.
- I metoden D3DXSaveSurfaceToFileInMemory er supporten for PNG-, JPEG- og BMP-billeder blevet implementeret.
- Direct3D 10 og 11 har fået support til komprimering og dekomprimering af formaterne BC4 og BC5, samt generering af MIP-niveauer (MipMap) ved indlæsning af teksturer.
- Metoderne ID3DXEffect::SetRawValue() og ID3DXSkinInfo::UpdateSkinnedMesh() er blevet implementeret.
- Input-enheder
- Kompatibiliteten med joystick er forbedret ved brug af hidraw-backend.
- Understøttelsen af feedbackeffekt (Force feedback) er forbedret ved brug af spillekonsoller og joysticks.
- Understøttelsen af gamepads er forbedret i API'en Windows.Gaming.Input og ved brug af evdev-backend.
- Der er tilføjet en fane i applet til kontrol af spillekontrollere til konfiguration af API'en Windows.Gaming.Input.
- Kompatibiliteten af DirectInput med gamle spil er blevet forbedret.
- Bluetooth
- Bluetooth-driveren har fået tilføjet muligheden for scanning, indstilling af opdagelse og parring af enheder.
- Understøttelse af Bluetooth Low Energy tjenester er blevet tilføjet.
- Applikationer har nu mulighed for at oprette lave RFCOMM-forbindelser til eksterne enheder ved brug af Winsock API.
- Understøttelse af scannere
- Understøttelse af API'en TWAIN 2.0 er blevet implementeret for adgang til scannere fra 64-bit applikationer.
- Understøttelse af komponenten DAT_IMAGENATIVEXFER til overførsel af billeder fra scanner til applikationen er blevet implementeret.
- Der sikres bevarelse af den valgte scanner og scannerindstillinger i registreringsdatabasen.
- Understøttelse af fler-måneders scanning og automatisk dokumentføder er blevet tilføjet.
- Blokeringen af applikationen under scanninginterfaceopkald er blevet stoppet.
- Understøttelse af download af indfødte Windows-drivere til scannere er blevet tilføjet.
- Internationalisering
- Der genereres nu en locale.nls-database fra Unicode CLDR (Unicode Common Locale Data Repository) version 48. Der er tilføjet understøttelse for yderligere lokaliteter 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.
- Unicode-tegnsættene er blevet opdateret til standardversion 17.0.0. Tidszone-databasen er blevet opdateret.
- Netværksfunktioner
- I MSHTML-motoren i standardsamsvarsmodus er der sikret arbejde med elementattributter som fuldgyldige DOM-noder. DOMParser, XDomainRequest og msCrypto-objekter er blevet implementeret.
- JavaScript har fået tilføjet understøttelse af typede arrays.
- For ICMPv6 er der implementeret en ping-kommando.
- DB
- Der er tilføjet understøttelse af at skrive ændringer til databasen i MSADO (ActiveX Data Objects). Størstedelen af funktionerne i Recordset-objektet er blevet implementeret.
- I odbc32-biblioteket er understøttelsen af ANSI win32-drivere, der ikke er designet til Unicode, blevet forbedret. Funktionerne SQLDriverConnectA(), SQLSpecialColumnsW(), SQLGetInfoW(), SQLStatisticsW() og QLColumnsW() er blevet implementeret.
- Indbyggede applikationer
- I WineCfg er der tilføjet en fane til konfiguration af standard MIDI-enhed.
- I cmd-værktøjet er der implementeret automatisk fuldførelse af filnavne i interaktiv driftsmode, tilføjet support for komplekse instruktioner og implementeret kommandoen «mklink /j» til oprettelse af Reparse Point.
- I conhost-værktøjet (Console Hosting) er der tilføjet support for at hente historik med tasterne F1 og F3.
- Kommandoerne timeout, runas og subst er implementeret.
- I find-værktøjet er der tilføjet mulighederne «/c» for at vise antallet af match og /i for match uden hensyntagen til store og små bogstaver.
- I whoami-værktøjet er der nu mulighed for at konfigurere outputformatet.
- Diverse
- I implementeringen af interfacebeskrivelsessproget WIDL (Wine Interface Definition Language) er der nu support for generering af Windows Runtime (WinRT) metadata. Generering og installation af WinMD (Windows Metadata) filer til WinRT (Windows Runtime) API'er er sikret.
- I winedump-værktøjet er der tilføjet support for dump af MUI-ressourcer, systemkaldsnumre, indbyggede NE-moduler og store PDB-filer (> 4 GB).
- Der er foretaget refactoring af Common Control-implementeringen, og COMCTL32-biblioteket er opdelt i separate moduler for versioner 5 og 6.
- I BCrypt er der tilføjet support for standarden til nøglegenerering PBKDF2.
- Der er tilføjet support for mapperne UserProgramFiles, AccountPictures og Screenshots.
- Der er integreret LLVM Compiler-RT 8.0.1 og TomCrypt 1.18.2 biblioteker i samlingen. HwLoc-biblioteket bruges til at identificere CPU'en på FreeBSD-platformen.
- Komponenterne 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, LibXml2 2.12.10, LibXslt 1.1.43 er blevet opdateret til nye versioner.
Kilde: opennet.ru
