Stabil udgivelse af Wine 9.0

Efter et års udvikling og 26 eksperimentelle versioner er den stabile udgave af den åbne implementering af Win32 API — Wine 9.0 blevet præsenteret, som indeholder over 7000 ændringer. Blandt de vigtigste resultater i den nye version er implementeringen af WoW64-arkitekturen til kørsel af 32-bit programmer i et 64-bit miljø, integration af en driver til understøttelse af Wayland, understøttelse af ARM64-arkitektur, implementering af API'en DirectMusic og support for smartkort.

I Wine bekræftes den fulde funktionalitet af 5336 (5266 for et år siden, 5156 for to år siden, 5049 for tre år siden) Windows-programmer, mens yderligere 4397 (4370 for et år siden, 4312 for to år siden, 4227 for tre år siden) programmer fungerer glimrende med ekstra konfigurationer og eksterne DLL'er. Der observeres små problemer med 3943 programmer (3888 for et år siden, 3813 for to år siden, 3703 for tre år siden), som ikke forhindrer brugen af de grundlæggende funktioner i applikationerne.

Nøglefornyelser i Wine 9.0:

  • Driveren winewayland.drv er blevet tilføjet, hvilket muliggør anvendelse af Wine i miljøer baseret på Wayland-protokollen uden brug af XWayland og komponenter fra X11. Udviklingen sigter mod at sikre, at Windows-applikationer kan køre i et rent Wayland-miljø uden installation af pakker relateret til X11, hvilket giver højere ydeevne og responsivitet i spil ved at eliminere overflødige lag. At bruge et rent Wayland-miljø til Wine hjælper også med at undgå sikkerhedsproblemer, der er forbundet med X11 (for eksempel kan mistænkelige spil til X11 spionere på andre applikationer, da X11-protokollen giver adgang til alle inputbegivenheder og kan udføre simulerede tastetryk).

    Driveren er markeret som eksperimentel og under udvikling, men den har allerede understøttelse af mange funktioner, såsom vindueshåndtering, brug af flere monitore, understøttelse af skalering af output på skærme med høj pixel tæthed (high-DPI), brug af relative koordinater til at spore musebevægelser og understøttelse af grafisk API Vulkan. Som standard er driveren ikke aktiv, og for at aktivere den skal man tilføje «wayland» til registreringsparameteren «HKCU\Software\Wine\Drivers» og sikre, at miljøvariablen DISPLAY ikke er sat: wine reg.exe add HKCU\\Software\\Wine\\Drivers /v Graphics /d x11,wayland

  • Oversættelsen af alle moduler til NT-systemopkaldsgrænsefladen er gennemført, i stedet for direkte opkald mellem PE- og Unix-niveauerne, hvilket markerer afslutningen på mange års arbejde med at oversætte alle DLL-biblioteker til brug af PE (Portable Executable) filformatet.
  • Udviklingen af WoW64-lagret (64-bit Windows-on-Windows) fortsætter, hvilket muliggør kørsel af 32-bit Windows-applikationer i 64-bit Unix-systemer. I alle moduler, der henvender sig til Unix-biblioteker, er der implementeret WoW64 systemopkalds konvertere (thunk), der giver 32-bit PE-moduler mulighed for at få adgang til 64-bit Unix-biblioteker.

    Den nye WoW64 starttilstand er blevet forbedret, hvor 32-bit kode kører inden for en 64-bit proces (i den gamle WoW64 tilstand blev 32-bit applikationer startet i 32-bit Unix-processer). Der er tilføjet support for brugen af den nye WoW64-tilstand på macOS-platformen. Da der er enkelte mangler i den nye WoW64-tilstand, såsom manglende support for 16-bit tilstand og reduceret OpenGL ydeevne på grund af manglende støtte til ARB_buffer_storage-udvidelsen, er den endnu ikke aktiveret som standard og kræver kompilering med indstillingen ‘—enable-archs=i386,x86_64’ i configure-scriptet.

  • Muligheden for at køre eksisterende Windows eksekverbare filer på ARM64-arkitekturer er blevet tilføjet. Implementeret støtte til at kompilere Wine for ABI ARM64EC (ARM64 Emulation Compatible) og støtte til indlæsning af ARM64EC-moduler, der forenkler portering af applikationer, oprindeligt skrevet til x86_64 arkitekturen, til ARM64-systemer ved at give mulighed for at køre enkelte moduler med x86_64 kode i et ARM64-miljø via en emulator. Der er tilføjet støtte til ARM64X PE-filer, som muliggør indlæsning af én eksekverbar fil i x64/Arm64EC og ARM64-processer. Et interface til emulering af 32-bit x86-systemer er implementeret, men biblioteket med emulatoren er endnu ikke inkluderet i den primære Wine-samling (en ekstern emulator FEX kan anvendes til at køre x86-kode i ARM64-miljøet).
  • Grafikunderstøttelse
    • PostScript-driveren er redesignet til at understøtte spool-filer i Windows-format, hvor data om udskrivningsopgaver opbevares. Direkte henvendelser til driveren fra Unix-miljøet er blevet udelukket.
    • I WinRT-temaer er der tilføjet support til mørk tilstand. WineCfg har fået en indstilling til at aktivere mørk grænsefladeskabelon.
    • Drivveren til grafik API Vulkan har fået understøttelse af specifikationen Vulkan 1.3.272 (i Wine 8.0 blev 1.3.237 understøttet).
    • Optimeringer er blevet foretaget i funktionerne i GdiPlus-biblioteket, hvilket har øget ydeevnen ved arbejde med grafik.
  • Direct3D
    • Der er sikret en pause i analysen af den multitrådede kommando-strøm under betingelser med manglende behandlede tegnekommandoer, hvilket reducerer energiforbruget til niveauet for ensrettet behandling ved udførelse af programmer, der ikke bruger hele båndbredden af kommando-strømmen.
    • I Direct3D 10 er der implementeret understøttelse af ekstra effekter.
    • Ydeevneoptimeringer er blevet implementeret i koden til WineD3D og backend, der bruger grafik API Vulkan.
    • Der er tilføjet en kontrol af enhedens understøttede funktioner i rendering-koden baseret på API Vulkan, samt oplysning til applikationen om det tilgængelige niveau af Direct3D-funktionalitet.
    • Funktionerne D3DXFillTextureTX og D3DXFillCubeTextureTX er blevet implementeret.
    • I den klassiske backend for OpenGL ARB-shaderne er der tilføjet støtte til skyggebestemmelse ved hjælp af udvidelsen ARB_fragment_program_shadow.
    • I D3DXLoadMeshHierarchyFromX og lignende funktioner er der tilføjet understøttelse af indlæsning af brugerdata ved hjælp af ID3DXLoadUserData-grænsefladen.
  • Lyd og video
    • En grundlæggende implementering af API DirectMusic er blevet foreslået. Understøttelse af samlinger, instrumenter og lydprøver i SoundFont-formatet er blevet tilføjet. Effekten af Doppler er blevet tilføjet. Test er implementeret for at verificere korrektheden af implementeringen i sekvenser dmime og MIDI-synthesizer dmsynth.
    • I API'et DirectMusic er der integreret et FluidSynth-bibliotek.
    • Understøttelse af indlæsning af lydfonte (SoundFont — formater til samplesyntese, der bruges til afspilning af MIDI-filer) i DLS1, DLS2 og SF2 formaterne, der anvendes i Linux, er blevet implementeret.
    • Mulighed for at afspille MIDI-indhold ved hjælp af dmsynth-biblioteket er blevet tilføjet, hvilket benytter den softwarebaserede synthesizer FluidSynth og API DirectSound til lydoutput.
    • En dekoder til video i Indeo IV50 video codec-formatet er blevet tilføjet.
  • DirectShow
    • Der er implementeret en komponent DMO (DirectX Media Object) med en dekoder for WMV (Windows Media Video) formatet.
    • En lydoptagelsesfilter (DirectShow Audio Capture Filter) er blevet tilføjet.
    • I MPEG‑1-streamsplitterfilteret (DirectShow MPEG‑1 Stream Splitter) er der tilføjet støtte til videoer og service streams, ud over lydstreams.
    • Der er implementeret et filter til dekodning af video i MPEG‑1-formatet (DirectShow MPEG‑1 Video Decoder).
  • Input-enheder
    • I DirectInput er der implementeret support til action maps, der gør det muligt at binde knapper på en gaming-controller til specifikke handlinger i spil.
  • Integration med skrivebordet
    • Der er sikret eksport til det primære brugergrænseflade for bindings, der gør det muligt at kalde applikationer, der kører under Wine, som protokollbehandlere ved åbning af URL'er (f.eks. start spotify.exe ved åbning af links som «spotify:user:spotify:playlist:848218482355482821»).
    • Der er implementeret ekstraktion af EDID-data (Extended Display Identification Data) med information om parametrene for den tilsluttede skærm, såsom navn og model.
    • Muligheden for at lukke skrivebordsvinduet, der er udvidet i fuldskærmstilstand, er blevet givet ved at bruge knappen «Exit desktop» i menuen «Start».
  • Internationalisering
    • Støtten til IME (Input Method Editors) er blevet udvidet. Arbejdet har fokuseret på at sikre kompatibilitet med de native Windows-implementeringer af IME og forbedre integrationen med Linux IME.
    • Generering af lokaliseringers database i formatet locale.nls fra Unicode CLDR (Unicode Common Locale Data Repository) version 44 er sikret. Støtte til ekstra lokaliseringer som bew-ID, blo-BJ, csw-CA, ie-EE, mic-CA, prg-PL, skr-PK, tyv-RU, vmw-MZ, xnr-IN og za-CN er tilføjet.
    • Oversættelsen af brugergrænsefladen til georgisk sprog er gennemført. Fuldstændige oversættelser er blevet sikret for 16 sprog, mens partielle oversættelser er udført for 31 sprog.
    • Unicode-tegnlister er opdateret til standardversion 15.1.0. Tidzone-databasen er også blevet opdateret.
  • Kernen (Windows kernel interfaces)
    • Windows 10 er defineret som den standardversion af Windows, der udstedes.
    • For eksekverbare filer i PE-format er der implementeret støtte til Address Space Layout Randomization (ASLR), men adresserne til indlæsning af kode i hukommelsen er endnu ikke fuldt randomiserede.
    • Støtte til Low Fragmentation Heap (LFH) er implementeret, hvilket har øget ydeevnen for hukommelsesallokeringsoperationer.
    • Der er tilføjet støtte til hukommelsesreservationsmekanismen i det virtuelle hukommelsesallokeringssystem (placeholder), der gør det muligt for applikationen at reservere et specifikt område af virtuel hukommelse til fremtidig brug.
    • 64-bit loaders (loader og preloader) til eksekverbare filer og biblioteker er samlet i PIE-format (Position-Independent Executables) for at frigøre en del af det 32-bit adresserum.
    • Korrekt stack unwinding for NT-systemopkald og brugerdefinerede callback-opkald er blevet sikret.
  • Netværksfunktioner
    • MSHTML-motoren har fået implementeret støtte til garbage collection-mekanismen «Cycle Collection».
    • MSHTML har fået support til synkrone XMLHttpRequest-anmodningsbehandling.
    • I jscript.dll er der tilføjet støtte til WeakMap-objektet til håndtering af nøgle/værdi-par, hvor nøglen er et objekt, som kan vedhæftes en vilkårlig værdi. Metoderne WeakMap.get(), WeakMap.delete(), WeakMap.clear() og WeakMap.has() er implementeret.
    • Browser-motoren Gecko er blevet opdateret til version 2.47.4.
    • Support til meddelelser om ændringer i netværksinterface-status er implementeret.
  • Kryptografi og sikkerhed
    • I Winscard.dll er der tilføjet støtte til smartkort, implementeret gennem systembiblioteket PCSClite.
    • I BCrypt er der tilføjet støtte til Diffie-Hellman nøgleudvekslingsprotokollen.
    • Pakken Negotiate er implementeret, hvilket giver en mellemmand til brug af SSPI (Security Support Provider Interface) til at få adgang til SSP (Security Support Provider) leverandører.
  • Indbyggede applikationer
    • I Wine Debugger (winedbg) er Zydis-biblioteket blevet brugt til at disassemblere x86 maskinkoder.
    • WineCfg-grænsefladen har fået mulighed for at vælge ældre versioner af Windows (op til XP) på 64-bit platforme, hvilket muliggør kørsel af forældede applikationer ved brug af WoW64.
    • I alle indbyggede grafiske applikationer er der implementeret en visning af fejlmeddelelser i en separat dialog, i stedet for at de vises i konsollen.
    • I systeminfo-programmet vises oplysninger fra WMI (Windows Management Instrumentation) databasen.
    • Der er tilføjet klist-applikationen for at vise Kerberos-billetter.
    • Taskkill-applikationen har fået mulighed for tvangsafslutning af børneprocesser.
    • Start-utilityen har fået tilføjet parameteren '/machine' for at vælge arkitekturen, der anvendes ved start af hybride eksekverbare filer, der understøtter x86 og ARM.
    • Majoriteten af funktionaliteten i tasklist-programmet er implementeret.
    • Der er tilføjet en grundlæggende implementering af findstr-applikationen.
  • Udviklingsværktøjer
    • I WineDump-utilityen er der tilføjet mulighed for at outputte indholdet af Windows-registerfiler (REGF-format) samt vise data for alle arkitekturer (x86/ARM64), der understøttes i hybride PE-filer.
    • IDL-kompileren har fået understøttelse af attributter som "composable", "default_overload", "deprecated" og "protected".
    • Biblioteket libwine.so er blevet fjernet, da det blev erklæret forældet i Wine 6.0 og ikke har været i brug i lang tid i Wine. Programmer i ELF-format, der er bygget i ældre versioner af Wine (5.0 og ældre) med libwine.so, kræver en genbygning for at kunne køre i Wine 9.0.
  • Indbyggede biblioteker og eksterne afhængigheder
    • Integration inkluderer bibliotekerne FluidSynth 2.3.3, Musl 1.2.3 (kun matematiske funktioner) og Zydis 4.0.0.
    • Komponenterne 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 1.1.38 og Zlib 1.3 er blevet opdateret til nye versioner. Wine Mono-motoren med .NET platformimplementeringen er blevet opdateret til version 8.1.0.
    • I driveren winewayland.drv er klientbiblioteket Wayland samt bibliotekerne xkbcommon og xkbregistry blevet taget i brug som eksterne afhængigheder.
    • For at understøtte smartcards er den eksterne biblioteks PCSClite blevet anvendt (i macOS - PCSC).
    • For at bygge PE-filer på platforme forskelligt fra i386 kræves det nu, at der er en kryds-kompilator med støtte til ".seh" direktiver til behandling af undtagelser.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster