Stabil utgåva av Wine 7.0

Efter ett års utveckling och 30 experimentella versioner presenterades en stabil version av den öppna implementeringen av Win32 API - Wine 7.0, som innehöll mer än 9100 64 ändringar. Nyckelprestationerna med den nya versionen inkluderar översättningen av de flesta vinmoduler till PE-format, stöd för teman, utökning av stacken för joysticks och inmatningsenheter med ett HID-gränssnitt och implementering av WoW32-arkitekturen för att köra 64-bitarsprogram i en XNUMX-bitars miljö.

Wine har bekräftat den fullständiga driften av 5156 (för ett år sedan 5049) program för Windows, ytterligare 4312 (för ett år sedan 4227) program fungerar perfekt med ytterligare inställningar och externa DLL:er. 3813 3703 program (XNUMX XNUMX år sedan) har mindre driftsproblem som inte stör användningen av applikationernas huvudfunktioner.

Viktiga innovationer i Wine 7.0:

  • Moduler i PE-format
    • Nästan alla DLL-filer har konverterats till att använda PE (Portable Executable, används på Windows) körbara filformat istället för ELF. Användningen av PE löser problem med att stödja olika kopieringsskyddssystem som verifierar identiteten för systemmoduler på disk och i minne.
    • Möjligheten att interagera PE-moduler med Unix-bibliotek med hjälp av standardanropet för NT-kärnan har implementerats, vilket gör att du kan dölja åtkomst till Unix-kod från Windows-felsökare och övervaka trådregistrering.
    • Inbyggda DLL-filer laddas nu bara om det finns en motsvarande PE-fil på disken, oavsett om det är ett riktigt bibliotek eller en stubb. Denna ändring gör att applikationen alltid kan se den korrekta bindningen till PE-filer. För att inaktivera detta beteende kan du använda miljövariabeln WINEBOOTSTRAPMODE.
  • WoW64
    • WoW64-arkitekturen (64-bitars Windows-på-Windows) har implementerats, vilket gör att du kan köra 32-bitars Windows-applikationer i 64-bitars Unix-processer. Stöd implementeras genom anslutning av ett lager som översätter 32-bitars NT-systemanrop till 64-bitars anrop till NTDLL.
    • WoW64-lager är förberedda för de flesta Unix-bibliotek och tillåter 32-bitars PE-moduler att komma åt 64-bitars Unix-bibliotek. När alla moduler har konverterats till PE-format kommer det att vara möjligt att köra 32-bitars Windows-applikationer utan att installera 32-bitars Unix-bibliotek.
  • teman
    • Temastöd har implementerats. Designteman "Light", "Blue" och "Classic Blue" ingår, som kan väljas via WineCfg-konfiguratorn.
    • Lade till möjligheten att anpassa utseendet på alla gränssnittskontroller genom teman. Utseendet på element uppdateras automatiskt efter ändring av designtema.
    • Temastöd har lagts till i alla inbyggda Wine-applikationer. Applikationerna har anpassats till skärmar med hög pixeltäthet (High DPI).
  • Grafiskt delsystem
    • Ett nytt Win32u-bibliotek har lagts till, vilket inkluderar delar av GDI32- och USER32-biblioteken relaterade till grafikbearbetning och fönsterhantering på kärnnivå. I framtiden kommer arbetet att påbörjas med att portera drivrutinskomponenter som winex32.drv och winemac.drv till Win11u.
    • Vulkan-drivrutinen stöder Vulkan graphics API-specifikation 1.2.201.
    • Erbjudit stöd för utmatning av streckade geometriska objekt via Direct2D API, med möjlighet att kontrollera om ett klick träffar (träff-test).
    • Direct2D API ger initialt stöd för visuella effekter som appliceras med ID2D1Effect-gränssnittet.
    • Direct2D API har lagt till stöd för ID2D1MultiThread-gränssnittet, som används för att organisera exklusiv åtkomst till resurser i flertrådade applikationer.
    • WindowsCodecs-biblioteken ger stöd för avkodning av bilder i WMP-format (Windows Media Photo) och kodning av bilder i DDS-format (DirectDraw Surface). Vi stöder inte längre kodning av bilder i ICNS-formatet (för macOS), som inte stöds på Windows.
  • Direct3D
    • Den nya renderingsmotorn har förbättrats avsevärt och översätter Direct3D-anrop till Vulkans grafik-API. I de flesta situationer har nivån av stöd för Direct3D 10 och 11 i den Vulkan-baserade motorn bringats till paritet med den äldre OpenGL-baserade motorn. För att aktivera Vulkan-renderingsmotorn, ställ in Direct3D-registervariabeln "renderer" till "vulkan".
    • Många funktioner i Direct3D 10 och 11 är implementerade, inklusive uppskjutna kontexter, tillståndsobjekt som verkar i enhetssammanhang, beständiga förskjutningar i buffertar, rensa texturvyer som inte fungerar, kopiering av data mellan resurser i typlösa format (DXGI_FORMAT_BC3_TYPELESS, DXGI_FORMAT_R32G32G32TYPELESSA32_XNUMXTYP, etc.), etc. .
    • Tillagt stöd för konfigurationer med flera bildskärmar, så att du kan välja en bildskärm för att visa en Direct3D-applikation i helskärmsläge.
    • DXGI API tillhandahåller skärmgammakorrigering, som kan användas av Direct3D 10- och 11-baserade applikationer för att ändra skärmens ljusstyrka. Aktiverade hämtning av virtuella rambufferträknare (SwapChain).
    • Direct3D 12 lägger till stöd för version 1.1 rotsignaturer.
    • I renderingskoden via Vulkan API har effektiviteten av frågebehandlingen förbättrats när systemet stöder tillägget VK_EXT_host_query_reset.
    • Lade till möjligheten att mata ut virtuella rambuffertar (SwapChain) via GDI om OpenGL eller Vulkan inte kan användas för visning, till exempel vid utmatning till ett fönster från olika processer, till exempel i program baserade på ramverket CEF (Chromium Embedded Framework).
    • När du använder GLSL shader backend säkerställs den "precisa" modifieraren för shader instruktioner.
    • DirectDraw API lägger till stöd för 3D-rendering i systemminnet med hjälp av mjukvaruenheter som "RGB", "MMX" och "Ramp".
    • AMD Radeon RX 3M, AMD Radeon RX 5500/6800 XT/6800 XT, AMD Van Gogh, Intel UHD Graphics 6900 och NVIDIA GT 630-kort har lagts till i Direct1030D-grafikkortsdatabasen.
    • Nyckeln "UseGLSL" har tagits bort från registret HKEY_CURRENT_USER\Software\Wine\Direct3D, istället för vilket du, från och med Wine 5.0, måste använda "shader_backend".
    • För att stödja Direct3D 12 behöver du nu minst version 3 av vkd1.2d-biblioteket.
  • D3DX
    • Implementeringen av D3DX 10 har förbättrat stöd för ramverket för visuella effekter och lagt till stöd för bildformatet Windows Media Photo (JPEG XR)
    • Lade till funktioner för att skapa textur i D3DX10, såsom D3DX10CreateTextureFromMemory().
    • Programvarugränssnitten ID3DX10Sprite och ID3DX10Font har delvis implementerats.
  • Ljud och video
    • GStreamer-tillägg för DirectShow och Media Foundation-ramverket kombineras till en gemensam WineGStreamer-backend, vilket borde förenkla utvecklingen av nya innehållsavkodnings-API:er.
    • Baserat på WineGStreamer-backend, implementeras Windows Media-objekt för synkron och asynkron läsning.
    • Implementeringen av Media Foundation-ramverket har förfinats ytterligare, stöd för IMFPMediaPlayer-funktionaliteten och sampelfördelaren har lagts till, och stödet för EVR- och SAR-renderingsbuffertar har förbättrats.
    • Wineqtdecoder-biblioteket, som tillhandahåller en avkodare för QuickTime-formatet, har tagits bort (alla codecs använder nu GStreamer).
  • Ange enheter
    • Stacken för indataenheter som stöder HID-protokollet (Human Interface Devices) har förbättrats avsevärt, vilket ger möjligheter som att analysera HID-deskriptorer, bearbeta HID-meddelanden och tillhandahålla mini-HID-drivrutiner.
    • I backends av winebus.sys-drivrutinen har översättningen av enhetsbeskrivningar till HID-meddelanden förbättrats.
    • Lade till en ny DirectInput-backend för joysticks som stöder HID-protokollet. Möjligheten att använda feedbackeffekter i joysticks har implementerats. Förbättrad joystick kontrollpanel. Optimerad interaktion med XInput-kompatibla enheter. I WinMM har joystick-stödet flyttats till DInput, istället för att använda evdev-backend på Linux och IOHID på macOS IOHID. Den gamla joystick-drivrutinen winejoystick.drv har tagits bort.
    • Nya tester har lagts till i DInput-modulen, baserade på användningen av virtuella HID-enheter och inte kräver en fysisk enhet.
  • Text och typsnitt
    • Lade till Font Set-objekt till DirectWrite.
    • RichEdit implementerar TextHost-gränssnittet korrekt.
  • Kernel (Windows Kernel Interfaces)
    • När du kör en oidentifierad körbar fil (som 'wine foo.msi') i Wine, anropas nu start.exe, vilket anropar hanterare som är associerade med filtypen.
    • Tillagt stöd för synkroniseringsmekanismerna NtAlertThreadByThreadId och NtWaitForAlertByThreadId, liknande futexes i Linux.
    • Lade till stöd för NT-felsökningsobjekt som används för att felsöka kärnfunktioner.
    • Lagt till stöd för dynamiska registernycklar för att spara prestandadata.
  • C Körtid
    • C runtime implementerar en full uppsättning matematiska funktioner, som huvudsakligen överförs från Musl-biblioteket.
    • Alla CPU-plattformar ger korrekt stöd för flyttalfunktioner.
  • Nätverksfunktioner
    • Förbättrat kompatibilitetsläge för Internet Explorer 11 (IE11), som nu används som standard för bearbetning av HTML-dokument.
    • mshtml-biblioteket implementerar ES6 JavaScript-läge (ECMAScript 2015), som ger stöd för funktioner som let-uttrycket och Map-objektet.
    • Installation av MSI-paket med tillägg till Gecko-motorn i Wine-arbetskatalogen görs nu när det behövs, och inte under en Wine-uppdatering.
    • Lade till stöd för DTLS-protokoll.
    • Tjänsten NSI (Network Store Interface) har implementerats, som lagrar och överför information om routing och nätverksgränssnitt på datorn till andra tjänster.
    • WinSock API-hanterare som setsockopt och getsockopt har flyttats till NTDLL och afd.sys-drivrutinen för att överensstämma med Windows-arkitekturen.
    • Wines egna nätverksdatabasfiler, såsom /etc/protocols och /etc/networks, är nu installerade i Wine-arbetskatalogen, istället för att komma åt liknande Unix-databaser.
  • Alternativa plattformar
    • Tillagt stöd för Apple-utrustning baserad på M1 ARM-chips (Apple Silicon).
    • Stöd för funktionerna BCrypt och Secur32 på macOS kräver nu installation av GnuTLS-biblioteket.
    • 32-bitars körbara filer för ARM-plattformar är nu byggda i Thumb-2-läge, liknande Windows. En preloader används för att ladda sådana filer.
    • För 32-bitars ARM-plattformar har stöd för avveckling av undantag implementerats.
    • För FreeBSD har antalet stödda frågor för systeminformation på låg nivå, såsom minnesstatus och batteriladdningsnivå, utökats.
  • Inbyggda applikationer och utvecklingsverktyg
    • Verktyget reg.exe har lagt till stöd för 32- och 64-bitars registervyer. Lagt till stöd för kopiering av registernycklar.
    • Verktyget WineDump har lagt till stöd för att dumpa Windows-metadata och visa detaljerad information om CodeView-poster.
    • Wine Debugger (winedbg) ger möjlighet att felsöka 32-bitars processer från en 64-bitars debugger.
    • Möjligheten att ladda bibliotek inbyggda i PE-filer har lagts till i IDL-kompilatorn (widl), stöd för WinRT-specifika attribut och konstruktioner har tillhandahållits och en plattformsspecifik bibliotekssökning har implementerats.
  • Monteringssystem
    • I arkitekturspecifika kataloger sparas biblioteken nu med namn som återspeglar arkitekturen och den körbara typen, såsom 'i386-windows' för PE-formatet och 'x86_64-unix' för unix-bibliotek, vilket möjliggör stöd för olika arkitekturer i ett enda vin installation och tillhandahålla korskompilering av Winelib.
    • För att ställa in ett alternativ i PE-filers rubriker som styr övergången till att använda inbyggda DLL-filer, har flaggan '--prefer-native option' lagts till i winebuild (DLL_WINE_PREATTACH-bearbetning i DllMain har stoppats).
    • Lade till stöd för version 4 av Dwarfs felsökningsdataformat, som nu används som standard när man bygger vinbibliotek.
    • Lade till byggalternativ '—enable-build-id' för att spara unika byggidentifierare i körbara filer.
    • Lade till stöd för att använda Clang-kompilatorn i MSVC-kompatibilitetsläge.
  • Miscellanea
    • Namnen på typiska kataloger i användarskalet (Windows Shell) ges till det schema som används från och med Windows Vista, dvs. Istället för "Mina dokument" skapas nu en "Dokument"-katalog, och det mesta av data sparas i "AppData"-katalogen.
    • Stöd för OpenCL 1.2-specifikationen har lagts till i OpenCL-bibliotekslagret.
    • WinSpool-drivrutinen har lagt till stöd för olika sidstorlekar vid utskrift.
    • Lade till initialt stöd för MSDASQL, Microsofts OLE DB-leverantör för ODBC-drivrutiner.
    • Wine Mono-motorn med .NET-plattformsimplementering har uppdaterats till release 7.0.0.
    • Unicode-data har uppdaterats till Unicode 14-specifikationen.
    • Källträdet inkluderar biblioteken Faudio, GSM, LCMS2, LibJPEG, LibJXR, LibMPG123, LibPng, LibTiff, LibXml2, LibXslt och Zlib, som är kompilerade i PE-format och inte kräver en version i Unix-format. Samtidigt kan dessa bibliotek också importeras från systemet för att använda externa sammanställningar istället för inbyggda PE-alternativ.

Källa: opennet.ru

Lägg en kommentar