Efter ett Ă„r av utveckling och 30 experimentella versioner har den stabila versionen av den öppna implementeringen av Win32 API â Wine 7.0 presenterats, som innehĂ„ller mer Ă€n 9100 förĂ€ndringar. Bland de viktigaste framstegen i den nya versionen kan nĂ€mnas översĂ€ttning av majoriteten av Wine-modulerna till PE-format, stöd för teman, utvidgning av stacken för joystickar och inmatningsenheter med HID-grĂ€nssnitt, samt implementeringen av WoW64-arkitekturen för att köra 32-bitarsprogram i en 64-bitarsmiljö.
I Wine bekrÀftas att 5156 (mot 5049 för ett Är sedan) Windows-program fungerar fullt ut, medan ytterligare 4312 (mot 4227 för ett Är sedan) program fungerar utmÀrkt med ytterligare instÀllningar och externa DLL:er. 3813 program (mot 3703 för ett Är sedan) uppvisar smÄ problem i prestationen, vilket dock inte hindrar anvÀndning av programmets grundlÀggande funktioner.
Nyckelinnovationer i Wine 7.0:
- PE-formatmoduler
- NÀstan alla DLL-bibliotek har översatts för att anvÀnda formatet för körbara filer PE (Portable Executable, som anvÀnds i Windows) istÀllet för ELF. AnvÀndningen av PE löser problem med stöd för olika kopieringsskyddsscheman som verifierar identiteten hos systemmoduler pÄ disken och i minnet.
- Det har blivit möjligt att interagera med PE-moduler och Unix-bibliotek med hjÀlp av standard systemanrop i NT-kÀrnan, vilket gör att anrop till Unix-kod kan döljas frÄn Windows-debuggers och övervaka registreringen av trÄdar.
- Inbyggda DLL:er laddas nu endast om den motsvarande filen i PE-format finns pÄ disken, oavsett om det Àr ett verkligt bibliotek eller en platshÄllare. Denna Àndring gör att applikationen alltid ser korrekt bindning till PE-filer. För att avaktivera detta beteende kan miljövariabeln WINEBOOTSTRAPMODE anvÀndas.
- WoW64
- WoW64-arkitekturen (64-bit Windows-on-Windows) har implementerats, vilket möjliggör körning av 32-bitars Windows-applikationer i 64-bitars Unix-processer. Stödet har genomförts genom att ansluta 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. Efter att alla moduler har översatts till PE-format kommer det att bli möjligt att köra 32-bitars Windows-applikationer utan att installera 32-bitars Unix-bibliotek.
- Teman
- Stöd för teman har implementerats. Teman som "Light", "Blue" och "Classic Blue" ingÄr, vilka kan vÀljas via WineCfg-konfiguratorn.
- Möjlighet att anpassa utseendet pÄ alla grÀnssnittskomponenter via teman har lagts till. Automatisk uppdatering av utseendet pÄ komponenterna vid temaÀndring sÀkerstÀlls.
- Stöd för teman har lagts till i alla inbyggda Wine-applikationer. Applikationerna har anpassats för skÀrmar med hög pixeltÀthet (High DPI).
- Grafiksubsystem
- En ny Win32u-bibliotek har lagts till, dÀr delar av GDI32 och USER32-biblioteken som Àr kopplade till grafikhantering och fönsterhantering pÄ kÀrnnivÄ har flyttats. Framöver kommer arbetet med att överföra komponenter frÄn drivrutiner som winex11.drv och winemac.drv till Win32u att pÄbörjas.
- I Vulkan-drivrutinen har stöd för grafik-API-specifikationen Vulkan 1.2.201 implementerats.
- Stöd för att Äterge randiga geometriska objekt via Direct2D API har tillhandahÄllits, med möjlighet för att kontrollera trÀffar (hit-test).
- Initialt stöd för visuella effekter som anvÀnds med ID2D1Effect-grÀnssnittet har implementerats i Direct2D API.
- Stöd för ID2D1MultiThread-grÀnssnittet har lagts till i Direct2D API, vilket anvÀnds för att organisera exklusiv Ätkomst till resurser i flertrÄdade applikationer.
- I WindowsCodecs-biblioteken har stöd för avkodning av bilder i WMP (Windows Media Photo) format och kodning av bilder i DDS (DirectDraw Surface) format implementerats. Stöd för kodning av bilder i ICNS-format (för macOS), som inte stöds av Windows, har upphört.
- Direct3D
- Den nya renderingsmotorn, som översÀtter Direct3D-anrop till grafik-API Vulkan, har genomgÄtt betydande förbÀttringar. I de flesta situationer har nivÄn av stöd för Direct3D 10 och 11 i Vulkan-baserade motorn nÄtt parity med den gamla motorn baserad pÄ OpenGL. För att aktivera renderingsmotorn via Vulkan ska registervariabeln Direct3D "renderer" stÀllas in pÄ "vulkan".
- MÄnga funktioner för Direct3D 10 och 11 har implementerats, inklusive fördröjda kontexter (Deferred Contexts), arbete i enhetskontexter, tillstÄndsobjekt, konstant offset i buffertar, rensning av oordnade texturrepresentationer, kopiering av data mellan resurser i typfria format (DXGI_FORMAT_BC3_TYPELESS, DXGI_FORMAT_R32G32B32A32_TYPELESS) och sÄ vidare.
- Stödt för flera skÀrmkonfigurationer har lagts till, vilket gör det möjligt att vÀlja skÀrm för att visa Direct3D-programmet i helskÀrmslÀge.
- API:et DXGI har implementerat gamma-korrigering av skÀrmen, vilket kan anvÀndas av applikationer baserade pÄ Direct3D 10 och 11 för att justera skÀrmens ljusstyrka. Det har möjliggjort extraktion av virtuella framebuffer-kontroller (SwapChain).
- Stöd för root-signaturer version 1.1 har lagts till i Direct3D 12.
- Effektiviteten i förfrÄgningar har ökat i rendering av kod via API:et Vulkan nÀr systemet stöder tillÀgget VK_EXT_host_query_reset.
- Möjligheten att exportera virtuella framebuffers (SwapChain) via GDI har lagts till, om OpenGL eller Vulkan inte kan anvÀndas för visning, till exempel vid utdelning i fönster frÄn olika processer i program baserade pÄ CEF (Chromium Embedded Framework).
- Vid anvÀndning av backend för GLSL-shaders har modifieraren "precise" tillÀmpats för shaderinstruktioner.
- API:et DirectDraw har fÄtt stöd för 3D-rendering i systemminnet med hjÀlp av programvaruenheter som "RGB", "MMX" och "Ramp".
- AMD Radeon RX 5500M, AMD Radeon RX 6800/6800 XT/6900 XT, AMD Van Gogh, Intel UHD Graphics 630 och NVIDIA GT 1030 har lagts till i Direct3Ds grafikkortsdatabas.
- Nyckeln "UseGLSL" har tagits bort frÄn registret HKEY_CURRENT_USER\Software\Wine\Direct3D, och frÄn och med Wine 5.0 bör "shader_backend" anvÀndas istÀllet.
- För att stödja Direct3D 12 krÀvs nu biblioteket vkd3d i minst version 1.2.
- D3DX
- I implementeringen av D3DX 10 har stödet för visual effects framework förbÀttrats och stöd för bildformatet Windows Media Photo (JPEG XR) har lagts till.
- Funktioner för att skapa texturer, sÄsom D3DX10CreateTextureFromMemory(), har lagts till i D3DX10.
- De programgrÀnssnitt som ID3DX10Sprite och ID3DX10Font har delvis implementerats.
- Ljud och video
- GStreamer-tillÀgg för DirectShow och Media Foundation har sammanfogats i en gemensam backend WineGStreamer, vilket bör förenkla utvecklingen av nya API:er för innehÄllsdekodning.
- Windows Media-objekt har implementerats pÄ backend av WineGStreamer för synkron och asynkron lÀsning.
- Arbetet med implementationen av Media Foundation-failen har fortsatt, och stöd för funktioner IMFPMediaPlayer, sample allocator och förbÀttrat stöd för EVR och SAR-renderingsbuffertar har lagts till.
- Biblioteket wineqtdecoder, som tillhandahöll en dekoder för QuickTime-format, har tagits bort (GStreamer anvÀnds nu för alla codec).
- Inmatningsenheter
- Stödet för inmatningsenheter som anvÀnder HID-protokollet (Human Interface Devices) har betydligt förbÀttrats, med funktioner som parsing av HID-deskriptorer, bearbetning av HID-meddelanden och tillhandahÄllande av HID-minidrivrutiner.
- ĂversĂ€ttningen av enhetsbeskrivningar till HID-meddelanden har förbĂ€ttrats i backenddrivrutinen winebus.sys.
- En ny DirectInput-backend för joysticks som stöder HID-protokollet har lagts till. Möjligheten att anvÀnda Äterkopplings-effekter i joysticks har implementerats. kontrollpanel Optimalt samarbete med enheter som Àr kompatibla med XInput har förbÀttrats. I WinMM har stödet för joysticks övergÄtt till DInput, istÀllet för att anvÀnda evdev-backend i Linux och IOHID i macOS. Den gamla joystickdrivrutinen winejoystick.drv har tagits bort.
- Nya tester har lagts till i DInput-modulen, baserade pÄ anvÀndning av virtuella HID-enheter och som inte krÀver att en fysisk enhet Àr ansluten.
- Text och typsnitt
- En Font Set-objekt har lagts till i DirectWrite.
- TextHost-grÀnssnittet har implementerats korrekt i RichEdit.
- KÀrnan (Windows kernelgrÀnssnitt)
- Vid körning av en okÀnd exekverbar fil i Wine (till exempel 'wine foo.msi') anropas nu start.exe, som aktiverar hanterare relaterade till filtypen.
- Stöd för synkroniseringsmekanismerna NtAlertThreadByThreadId och NtWaitForAlertByThreadId, som liknar futexar i Linux, har lagts till.
- Stöd för NT-debbugeringsobjekt som anvÀnds för att debugga kernel-funktioner har lagts till.
- Stöd för dynamiska registernycklar för att spara prestandadata har lagts till.
- C Runtime
- C-runtime har implementerat en fullstÀndig uppsÀttning matematiska funktioner, framför allt överförda frÄn Musl-biblioteket.
- Korrekt stöd för flyttalsberÀkningar har sÀkerstÀllts för alla CPU-plattformar.
- NĂ€tverksfunktioner
- KompatibilitetslÀget med Internet Explorer 11 (IE11) har förbÀttrats och anvÀnds nu som standard för att bearbeta HTML-dokument.
- JavaScript-lÀget ES6 (ECMAScript 2015) har implementerats i mshtml-biblioteket, vilket ger stöd för funktioner som let-uttal och Map-objekt.
- Installation av Wine MSI-paket med tillÀgg till Gecko-motorn utförs nu vid behov i arbetskatalogen, snarare Àn under uppdateringen av Wine.
- Stöd för DTLS-protokollet har lagts till.
- NSI-tjÀnsten (Network Store Interface) har implementerats, som lagrar och överför information om routning och nÀtverksgrÀnssnitt pÄ datorn till andra tjÀnster.
- API-handlar WinSock, sÄsom setsockopt och getsockopt, har flyttats till biblioteket NTDLL och drivrutinen afd.sys för att motsvara Windows-arkitekturen.
- Egenfiler med nÀtverksdatabaser, sÄsom /etc/protocols och /etc/networks, installeras nu i arbetskatalogen för Wine istÀllet för att referera till motsvarande Unix-databaser.
- Alternativa plattformar
- Stöd för Apple-hÄrdvara baserad pÄ ARM-chip M1 (Apple Silicon) har lagts till.
- För att stödja funktionerna BCrypt och Secur32 pÄ macOS krÀvs nu installation av GnuTLS-biblioteket.
- 32-bitars körbara filer för ARM-plattformar kompilieras nu i Thumb-2-lÀge, liknande Windows. En preloader anvÀnds för att ladda sÄdana filer.
- Stöd för undantagsupprullning (unwinding) har implementerats för 32-bitars ARM-plattformar.
- Antalet stödja lÄg-nivÄsysteminformationförfrÄgningar, som minnesstatus och batterinivÄ, har utökats för FreeBSD.
- Inbyggda applikationer och utvecklingsverktyg
- Verktyget reg.exe har fÄtt stöd för 32- och 64-bitars registreringspresentat. Stöd för att kopiera registreringsnycklar har lagts till.
- Verktyget WineDump har fÄtt stöd för utmatning av dump av Windows-metadata och visning av detaljerad information om CodeView-poster.
- I Wine Debugger (winedbg) har möjligheten att debugga 32-bitarsprocesser frÄn 64-bitarsdebuggern implementerats.
- I IDL-kompilatorn (widl) har möjligheten att ladda bibliotek inbÀddade i PE-filer lagts till, stöd för WinRT-specifika attribut och konstruktioner har implementerats, samt har sökning av bibliotek kopplats till plattformen genomförts.
- Byggsystem
- I arkitekturspecifika kataloger sparas nu bibliotek med namn som Äterspeglar arkitekturen och typen av körbara filer, till exempel 'i386-windows' för PE-format och 'x86_64-unix' för unix-bibliotek, vilket möjliggör stöd för flera arkitekturer i en enda Wine-installation och underlÀttar korskompilering av Winelib.
- För att stÀlla in alternativ i PE-filer för att styra övergÄngen till anvÀndning av inhemska DLL-bibliotek har flaggan '--prefer-native option' lagts till i winebuild (behandling av DLL_WINE_PREATTACH i DllMain har avbrutits).
- Stöd för den fjÀrde versionen av Dwarf-debuggingdataformatet, som nu anvÀnds som standard vid kompilering av Wine-bibliotek, har lagts till.
- En byggalternativ '--enable-build-id' har lagts till för att spara unika byggidentifikatorer i körbara filer.
- Stöd för anvÀndning av Clang-kompilatorn i MSVC-kompatibilitetslÀge har lagts till.
- Olika
- Namnen pÄ standardkatalogerna i anvÀndargrÀnssnittet (Windows Shell) har anpassats till det schema som anvÀnds sedan Windows Vista, vilket innebÀr att istÀllet för 'My Documents' skapas nu katalogen 'Documents', och en stor del av data sparas i katalogen 'AppData'.
- I lagret för OpenCL-biblioteket har stöd för OpenCL 1.2-specifikationen lagts till.
- I WinSpool-drivrutinen har stöd för olika sidstorleksalternativ vid utskrift lagts till.
- Inledande stöd för MSDASQL, Microsoft OLE DB-leverantören för ODBC-drivrutiner, har lagts till.
- Wine Mono-motorn med .NET-plattformen har uppdaterats till version 7.0.0.
- Unicode-data har uppdaterats till Unicode 14-specifikationen.
- I trÀdstrukturen för kÀllkoder har biblioteken Faudio, GSM, LCMS2, LibJPEG, LibJXR, LibMPG123, LibPng, LibTiff, LibXml2, LibXslt och Zlib integrerats; dessa kompileras i PE-format och krÀver inte Unix-formatversionen. Dessa bibliotek kan Àven importeras frÄn systemet för att anvÀnda externa samlingar istÀllet för de inbyggda PE-versionerna.
KĂ€lla: opennet.ru
