Stabil udgivelse af Wine 5.0

Efter et års udvikling og 28 eksperimentelle versioner præsenteret stabil udgivelse af den åbne implementering af Win32 API - Vin 5.0, som omfattede mere end 7400 ændringer. De vigtigste resultater af den nye version omfatter levering af indbyggede vinmoduler i PE-format, understøttelse af multi-monitor konfigurationer, en ny implementering af XAudio2 audio API og understøttelse af Vulkan 1.1 grafik API.

I Vin bekræftet fuld drift af 4869 (for et år siden 4737) programmer til Windows, andre 4136 (for et år siden 4045) programmer fungerer perfekt med yderligere indstillinger og eksterne DLL'er. 3635 programmer har mindre ydeevneproblemer, der ikke forstyrrer brugen af ​​grundlæggende applikationsfunktioner.

Nøgle innovationer Vin 5.0:

  • Moduler i PE-format
    • Med MinGW-kompileren er de fleste vinmoduler nu bygget i PE (Portable Executable, brugt på Windows) eksekverbare filformat i stedet for ELF. Brugen af ​​PE løser problemer med at understøtte forskellige kopibeskyttelsesordninger, der verificerer identiteten af ​​systemmoduler på disken og i hukommelsen;
    • PE-eksekverbare filer kopieres nu til mappen ~/.wine ($WINEPREFIX) i stedet for at bruge dummy DLL-filer, hvilket gør tingene mere lig rigtige Windows-installationer, på bekostning af at forbruge yderligere diskplads;
    • Moduler konverteret til PE-format kan bruge standard wchar C-funktioner og konstanter med Unicode (for eksempel L"abc");
    • Wine C runtime har tilføjet understøttelse for at linke med binære filer indbygget i MinGW, som bruges som standard i stedet for MinGW runtime, når der bygges DLL'er;
  • Grafik undersystem
    • Tilføjet understøttelse for at arbejde med flere skærme og grafikadaptere, herunder muligheden for dynamisk at ændre indstillinger;
    • Driveren til Vulkan grafik API er blevet opdateret til at overholde Vulkan 1.1.126 specifikationen;
    • WindowsCodecs-biblioteket giver mulighed for at konvertere yderligere rasterformater, inklusive formater med en indekseret palet;
  • Direct3D
    • Når du kører fuldskærms Direct3D-applikationer, blokeres pauseskærmopkaldet;
    • DXGI (DirectX Graphics Infrastructure) har tilføjet understøttelse til at informere en applikation, når dens vindue er minimeret, hvilket gør det muligt for applikationen at reducere ydeevnen af ​​ressourcekrævende operationer, når vinduet minimeres;
    • For programmer, der bruger DXGI, er det nu muligt at skifte mellem fuldskærms- og vinduestilstand ved hjælp af Alt+Enter-kombinationen;
    • Mulighederne for Direct3D 12-implementeringen er blevet udvidet, for eksempel er der nu understøttelse af skift mellem fuldskærms- og vinduestilstande, ændring af skærmtilstande, skalering af output og styring af gengivelsesbufferudskiftningsintervallet (swap-interval);
    • Forbedret håndtering af forskellige grænsesituationer, såsom brugen af ​​inputværdier uden for rækkevidde til gennemsigtighed og dybdetest, gengivelse med reflekterede teksturer og buffere og brug af forkerte DirectDraw-objekter clipper, oprettelse af Direct3-enheder til forkerte vinduer, ved hjælp af synlige områder, hvis minimumsparameterværdier er lig med maksimum osv.
    • Direct3D 8 og 9 giver mere nøjagtig sporing "snavset» områder med fyldte teksturer;
    • Størrelsen af ​​det nødvendige adresserum ved indlæsning af 3D-teksturer, der er komprimeret ved hjælp af S3TC-metoden, er blevet reduceret (i stedet for at indlæse helt, indlæses teksturer i bidder).
    • Interface implementeret ID3D11Multithread at beskytte kritiske sektioner i flertrådede applikationer;
    • Forskellige forbedringer og rettelser relateret til lysberegninger er blevet lavet til ældre DirectDraw-applikationer;
    • Implementerede yderligere opkald for at få information om shaders i API'et ShaderReflection;
    • Wined3d understøtter nu bleveter CPU-baseret til behandling af komprimerede ressourcer;
    • Databasen med grafikkort, der genkendes i Direct3D, er blevet udvidet;
    • Tilføjet nye registreringsnøgler HKEY_CURRENT_USER\Software\Wine\Direct3D: "shader_backend" (backend til at arbejde med shaders: "glsl" for GLSL, "arb" for ARB vertex/fragment og "none" for at deaktivere shader-understøttelse), "strict_shader_math" ( 0x1 - aktiver, 0x0 - deaktiver Direct3D shader-konvertering). Forældet "UseGLSL"-nøglen (skal bruge "shader_backend");
  • D3DX
    • Understøttelse af 3D-teksturkompressionsmekanismen S3TC (S3 Texture Compression) er blevet implementeret;
    • Tilføjet korrekte implementeringer af operationer såsom teksturfyldning og ukortlignelige overflader;
    • Der er foretaget forskellige forbedringer og rettelser til oprettelsesrammen visuelle effekter;
  • Kernel (Windows Kernel Interfaces)
    • De fleste af de funktioner, der bruges i Kernel32, er blevet flyttet til
      KernelBase, efter ændringer i Windows-arkitekturen;

    • Evne til at blande 32- og 64-bit DLL'er i mapper, der bruges til indlæsning. Sikrer, at biblioteker, der ikke matcher den aktuelle bitdybde, ignoreres (32/64), i tilfælde længere hen ad stien er det muligt at finde et bibliotek, der er korrekt for den aktuelle bitdybde;
    • For enhedsdrivere er emulering af kerneobjekter blevet forbedret;
    • Implementerede synkroniseringsobjekter, der arbejder på kerneniveau, såsom spin-låse, hurtige mutexes og variabler knyttet til en ressource;
    • Sikrer, at applikationer er korrekt informeret om batteristatus;
  • Brugergrænseflade og desktop-integration
    • Minimerede vinduer vises nu ved hjælp af en titellinje i stedet for et Windows 3.1-stilikon;
    • Tilføjet nye knapstile Split-knap (knap med en rulleliste over handlinger) og Kommandolinks (links i dialogbokse, der bruges til at flytte til næste trin);
    • Der er oprettet symbolske links til mapperne 'Downloads' og 'Skabeloner', der peger på de tilsvarende mapper på Unix-systemer;
  • Input enheder
    • Ved opstart installeres og indlæses de nødvendige Plug & Play-enhedsdrivere;
    • Forbedret understøttelse af spilcontrollere, herunder et mini-joystick (hattekontakt), rat, gas- og bremsepedaler.
    • Understøttelse af det gamle Linux joystick API brugt i Linux kerner før version 2.2 er blevet afbrudt;
  • . NET
    • Mono-motoren er blevet opdateret til udgivelse 4.9.4 og inkluderer nu dele af Windows Presentation Foundation (WPF) rammen;
    • Tilføjet muligheden for at installere tilføjelser med Mono og Gecko i én fælles mappe, placere filer i /usr/share/wine-hierarkiet i stedet for at kopiere dem til nye præfikser;
  • Netværksfunktioner
    • Wine Gecko-browsermotoren, som bruges i MSHTML-biblioteket, er blevet opdateret til udgivelse 2.47.1. Understøttelse af nye HTML API'er er blevet implementeret;
    • MSHTML understøtter nu SVG-elementer;
    • Tilføjet mange nye VBScript-funktioner (for eksempel fejl- og undtagelsesbehandlere, timer, dag, måned, streng, LBound, RegExp.Replace, РScriptTypeInfo_* og ScriptTypeComp_Bind* funktioner osv.);
    • Forudsat bevaring af kodetilstand i VBScript og JScript (script persistens);
    • Tilføjet en indledende implementering af HTTP-tjenesten (WinHTTP) og den tilhørende API (HTTPAPI) til klient- og serverapplikationer, der sender og modtager anmodninger ved hjælp af HTTP-protokollen;
    • Implementeret muligheden for at opnå HTTP proxy-indstillinger via DHCP;
    • Tilføjet support til omdirigering af godkendelsesanmodninger gennem Microsoft Passport-tjenesten;
  • Kryptografi
    • Implementeret understøttelse af elliptiske kurve kryptografiske nøgler (ECC) ved brug af GnuTLS;
    • Tilføjet muligheden for at importere nøgler og certifikater fra filer i PFX-format;
    • Tilføjet understøttelse af nøglegenereringsskemaet baseret på PBKDF2-adgangskoden;
  • Tekst og skrifttyper
    • DirectWrite API-implementeringen har tilføjet understøttelse af OpenType-funktioner relateret til glyfpositionering, som er aktiveret som standard for den latinske stil, inklusive kerning;
    • Forbedret sikkerhed til behandling af skrifttypedata ved at kontrollere rigtigheden af ​​forskellige datatabeller, før du bruger dem;
    • DirectWrite-grænseflader er blevet bragt i overensstemmelse med den seneste SDK;
  • Lyd og video
    • En ny implementering af lyd-API'en er blevet foreslået XAudio2, bygget på baggrund af projektet FAudio. Brug af FAudio i vin giver dig mulighed for at opnå højere lydkvalitet i spil og bruge funktioner såsom volumenmixing og avancerede lydeffekter;
    • En lang række nye opkald er blevet tilføjet til implementeringen af ​​Media Foundation-rammeværket, herunder understøttelse af indbyggede og tilpassede asynkrone køer, Source Reader API, Media Session mv.
    • Videooptagelsesfilteret er skiftet til at bruge v4l2 API i stedet for v4l1 API, som har udvidet rækken af ​​understøttede kameraer;
    • De indbyggede AVI, MPEG-I og WAVE dekodere er fjernet, i stedet for som systemet GStreamer eller QuickTime nu bruges;
    • Tilføjet et undersæt af VMR7-konfigurations-API'er;
    • Tilføjet støtte til justering af lydstyrken af ​​individuelle kanaler til lyddrivere;
  • Internationalisering
    • Unicode-tabeller opdateret til version 12.1.0;
    • Implementeret understøttelse af Unicode-normalisering;
    • Forudsat automatisk installation af det geografiske område (HKEY_CURRENT_USER\Control Panel\International\Geo) baseret på den aktuelle landestandard;
  • RPC/COM
    • Tilføjet understøttelse af komplekse strukturer og arrays til typelib;
    • Tilføjet indledende implementering af Windows Script runtime-bibliotek;
    • Tilføjet indledende implementering af ADO-biblioteket (Microsoft ActiveX Data Objects);
  • Installatører
    • Understøttelse af levering af patches (patchfiler) er blevet implementeret til MSI-installationsprogrammet;
    • WUSA (Windows Update Standalone Installer)-værktøjet har nu mulighed for at installere opdateringer i .MSU-format;
  • ARM platform
    • For ARM64-arkitekturen er understøttelse af stakafvikling blevet tilføjet til ntdll. Tilføjet understøttelse for tilslutning af eksterne libunwind-biblioteker;
    • For ARM64-arkitekturen er understøttelse af sømløse proxyer blevet implementeret til objektgrænseflader;
  • Udviklingsværktøjer / Winelib
    • Tilføjet muligheden for at bruge debuggeren fra Visual Studio til fjernfejlfinding af programmer, der kører i Wine;
    • DBGENG (Debug Engine) biblioteket er delvist implementeret;
    • Binære filer kompileret til Windows er ikke længere afhængige af libwine, hvilket tillader dem at køre på Windows uden yderligere afhængigheder;
    • Tilføjet '--sysroot' mulighed til Resource Compiler og IDL Compiler for at bestemme stien til header-filer;
    • Tilføjede muligheder '—target', '—wine-objdir', '—wine-objdir' til winegcc
      '—winebuild' og '-fuse-ld', som forenkler opsætningen af ​​miljøet for krydskompilering;

  • Indlejrede applikationer
    • Implementeret et CHCP-værktøj til at konfigurere konsolkodning;
    • MSIDB-værktøjet til at manipulere databaser i MSI-format er blevet implementeret;
  • Optimering af ydeevne
    • Forskellige timingfunktioner er blevet migreret til at bruge højtydende systemtimerfunktioner, hvilket reducerer overhead i gengivelsesløkken i mange spil;
    • Tilføjet muligheden for at bruge Ext4 i FS regime arbejde uden store og små bogstaver;
    • Ydeevnen for at behandle et stort antal elementer i listevisningsdialoger, der opererer i LBS_NODATA-tilstand, er blevet optimeret;
    • Tilføjet en hurtigere implementering af SRW-låse (Slim Reader/Writer) til Linux, oversat til Futex;
  • Eksterne afhængigheder
    • For at samle moduler i PE-format bruges MinGW-w64 krydskompileren;
    • Implementering af XAudio2 kræver FAudio-biblioteket;
    • Til at spore filændringer på BSD-systemer
      Inotify-biblioteket bruges;

    • For at håndtere undtagelser på ARM64-platformen kræves Unwind-biblioteket;
    • I stedet for Video4Linux1 er Video4Linux2-biblioteket nu påkrævet.

Kilde: opennet.ru

Tilføj en kommentar