Efter ett Ă„rs utveckling och 26 experimentella versioner har den stabila versionen av den öppna implementeringen av Win32 API â Wine 9.0, offentliggjorts, vilket innehĂ„ller mer Ă€n 7000 Ă€ndringar. Bland de viktigaste prestationerna i den nya versionen Ă€r implementeringen av WoW64-arkitekturen för att köra 32-bitarsprogram i en 64-bitarsmiljö, integrationen av en drivrutin för support av Wayland, stöd för ARM64-arkitekturen, implementeringen av API DirectMusic och stöd för smartkort.
I Wine bekrÀftas fullstÀndig funktionalitet för 5336 program (för ett Är sedan 5266, för tvÄ Är sedan 5156, för tre Är sedan 5049) för Windows, ytterligare 4397 program (för ett Är sedan 4370, för tvÄ Är sedan 4312, för tre Är sedan 4227) fungerar utmÀrkt med ytterligare instÀllningar och externa DLL-filer. 3943 program (för ett Är sedan 3888, för tvÄ Är sedan 3813, för tre Är sedan 3703) uppvisar smÄ problem i anvÀndningen, vilket inte hindrar anvÀndningen av programmets grundlÀggande funktioner.
Nyckelinnovationer i Wine 9.0:
- En drivrutin winewayland.drv har lagts till, vilket gör det möjligt att anvÀnda Wine i miljöer baserade pÄ Wayland-protokollet utan att anvÀnda XWayland och komponenter frÄn X11. Utvecklingen syftar till att sÀkerstÀlla att Windows-program kan köras i en ren Wayland-miljö utan installation av X11-relaterade paket, vilket möjliggör högre prestanda och responsivitet i spel genom att eliminera onödiga lager. AnvÀndningen av en ren Wayland-miljö för Wine eliminerar ocksÄ sÀkerhetsproblem som Àr förknippade med X11 (till exempel kan opÄlitliga spel för X11 spionera pÄ andra applikationer eftersom X11-protokollet ger Ätkomst till alla inmatningsevent och kan ersÀtta falska tangenttryckningar).
Drivrutinen anges som experimentell och under utveckling, men har redan stöd för mÄnga funktioner, sÄsom fönsterhantering, arbete med flera skÀrmar, stöd för skalning av utdata pÄ högupplösta skÀrmar (high-DPI), hantering av relativa koordinater vid spÄrning av musrörelser och stöd för grafiskt API Vulkan. Som standard Àr drivrutinen inaktiverad, och för att aktivera den mÄste "wayland" lÀggas till i registret under "HKCU\Software\Wine\Drivers" och se till att miljövariabeln DISPLAY inte Àr instÀlld: wine reg.exe add HKCU\\Software\\Wine\\Drivers /v Graphics /d x11,wayland
- ĂversĂ€ttning av alla moduler till NT-systemanropets grĂ€nssnitt har genomförts, istĂ€llet för att göra direkta anrop mellan PE- och Unix-nivĂ„erna, vilket markerade avslutningen av flera Ă„rs arbete med att översĂ€tta alla DLL-bibliotek till anvĂ€ndning av PE (Portable Executable) filformatet.
- Utvecklingen av WoW64-lagret (64-bitars Windows-on-Windows) har fortsatt, vilket möjliggör körning av 32-bitars Windows-applikationer pÄ 64-bitars Unix-system. I alla moduler som anropar Unix-bibliotek anvÀnds WoW64-systemanropsomvandlare (thunks), vilket tillÄter 32-bitars PE-moduler att anropa 64-bitars Unix-bibliotek.
Den nya WoW64-startlÀget har förbÀttrats, dÀr 32-bitars kod körs inuti en 64-bitars process (i det gamla WoW64-lÀget kördes 32-bitarsapplikationer i 32-bitars Unix-processer). Stöd för att anvÀnda det nya WoW64-lÀget pÄ macOS-plattformen har lagts till. Eftersom det nya WoW64-lÀget har vissa brister, sÄsom avsaknad av stöd för 16-bitarslÀge och minskad OpenGL-prestanda pÄ grund av avsaknad av stöd för ARB_buffer_storage-tillÀgget, Àr det inte aktiverat som standard och krÀver att kompileras med alternativet "--enable-archs=i386,x86_64" i konfigurationsscriptet.
- Möjligheten att köra befintliga Windows-exekverbara filer pÄ ARM64-arkitekturhar lagts till. Stöd för att bygga Wine för ABI ARM64EC (ARM64 Emulation Compatible) och stöd för laddning av ARM64EC-moduler som anvÀnds för att förenkla porteringen av x86_64-applikationer till ARM64-system har genomförts genom att möjliggöra körning i ARM64-miljö av enskilda moduler med x86_64-kod med hjÀlp av en emulator. Stöd för ARM64X PE-filformatet har lagts till, vilket gör det möjligt att ladda en exekverbar fil i x64/Arm64EC och ARM64-processer. Ett grÀnssnitt för emulering av 32-bitars x86-system har implementerats, men emulatorbiblioteket har Ànnu inte inkluderats i huvudversionen av Wine (för att köra x86-kod i ARM64-miljö kan en extern emulator FEX anvÀndas).
- Grafiksubsystem
- PostScript-drivrutinen har omarbetats för att stödja spool-filer i Windows-format, dÀr data om utskriftsjobb lagras. Direkt anrop till drivrutinen frÄn Unix-miljön har tagits bort.
- I WinRT-teman har stöd för mörkt lÀge lagts till. I WineCfg har en instÀllning för att aktivera mörkt grÀnssnitt tillsatts.
- Drivr ut för grafik-API:t Vulkan har fÄtt stöd för specifikationen Vulkan 1.3.272 (i Wine 8.0 stöddes 1.3.237).
- Optimering av funktionerna i GdiPlus-biblioteket har genomförts, vilket ökat prestandan vid grafikarbeten.
- Direct3D
- Möjligheten att pausa tolkningen av den flertrÄdade kommandoströmmen har sÀkerstÀllts under förutsÀttning av frÄnvaro av bearbetade ritningskommandon, vilket gör att energiförbrukningen kan sÀnkas till nivÄn för enkeltrÄdig bearbetning vid körning av program som inte anvÀnder hela bandbredden av kommandoströmmen.
- I Direct3D 10 har stöd för ytterligare effekter införlivats.
- Prestandaoptimeringar har införts i WineD3D-koden och backend som anvÀnder grafik-API:t Vulkan.
- Koden för rendering baserad pÄ API:t Vulkan har fÄtt en kontroll av kapabiliteter som stöds av enheten och tillhandahÄller information om den tillgÀngliga funktionalitetsnivÄn för Direct3D till applikationen.
- Funktionerna D3DXFillTextureTX och D3DXFillCubeTextureTX har införts.
- Den klassiska OpenGL ARB-backenden för shaders har fÄtt stöd för skuggdefinition med hjÀlp av ARB_fragment_program_shadow-tillÀgget.
- Stöd för att ladda anvÀndardata via grÀnssnittet ID3DXLoadUserData har lagts till i D3DXLoadMeshHierarchyFromX och liknande funktioner.
- Ljud och video
- En första implementation av DirectMusic API har föreslagits. Stöd för samlingar, instrument och ljudprover i SoundFont-format har lagts till. Dopplereffekten har införlivats. Tester för att verifiera korrektheten av implementationen vid anvÀndning av dmime-sekvenseraren och dmsynth MIDI-synthesizern har genomförts.
- FluidSynth-biblioteket har integrerats för anvÀndning i DirectMusic API.
- Stöd för att ladda ljudtyper (SoundFont â format för samplesyntes som anvĂ€nds för uppspelning av MIDI-filer) i DLS1- och DLS2-format samt i SF2-formatet som anvĂ€nds i Linux har införlivats.
- Möjligheten att spela upp MIDI-innehÄll med hjÀlp av dmsynth-biblioteket, med anvÀndning av mjukvarusyntesizern FluidSynth och DirectSound API för ljudutgÄng, har lagts till.
- En dekoder för video i Indeo IV50 videokodeksformat har lagts till.
- DirectShow
- En DMO (DirectX Media Object) komponent med en WMV (Windows Media Video) dekoder har implementerats.
- En ljudupptagningsfilter (DirectShow Audio Capture Filter) har lagts till.
- I MPEG-1 strömdelningsfiltret (DirectShow MPEG-1 Stream Splitter) har stöd för videoströmmar och styrströmmar lagts till utöver ljudströmmarna.
- Ett filter för avkodning av video i MPEG-1-format (DirectShow MPEG-1 Video Decoder) har implementerats.
- Inmatningsenheter
- I DirectInput har stöd för action maps, vilket tillÄter knappar pÄ spelkontroller att kopplas till specifika ÄtgÀrder i spel.
- Integration med skrivbordet
- Det finns stöd för att exportera bindningar till huvudanvÀndarmiljön, vilket gör det möjligt att starta Wine-baserade applikationer som protokollhanterare vid öppning av URL:er (till exempel starta spotify.exe nÀr man öppnar lÀnkar som «spotify:user:spotify:playlist:848218482355482821»).
- Det har implementerats datautvinning av EDID (Extended Display Identification Data) med information om anslutna monitorns instÀllningar, sÄsom namn och modell.
- Möjligheten att stÀnga fönstret för skrivbordet i helskÀrmslÀge genom att anvÀnda knappen «Exit desktop» i menyn «Start» har gjorts tillgÀnglig.
- Internationalisering
- Stödet för IME (Input Method Editors) har utvidgats. Arbete har genomförts för att sÀkerstÀlla kompatibilitet med Windows-inhemska implementationer av IME och förbÀttra integrationen med Linux IME.
- Genereringen av lokaliseringsdatabaser i formatet locale.nls frÄn Unicode CLDR (Unicode Common Locale Data Repository) version 44 har möjliggjorts. Stöd för ytterligare lokaler bew-ID, blo-BJ, csw-CA, ie-EE, mic-CA, prg-PL, skr-PK, tyv-RU, vmw-MZ, xnr-IN och za-CN har lagts till.
- ĂversĂ€ttningen av grĂ€nssnittet till det georgiska sprĂ„ket har genomförts. FullstĂ€ndiga översĂ€ttningar finns för 16 sprĂ„k och delvisa för 31 sprĂ„k.
- Unicode-teckentabeller har uppdaterats till standardversion 15.1.0. Tidszonens databas har uppdaterats.
- KÀrnan (Windows kernelgrÀnssnitt)
- Windows 10 har definierats som den förvalda versionen av Windows.
- För körbara filer i PE-format har stöd för address randomization (ASLR) implementerats, men laddningsadresserna för koden i minnet Àr fortfarande inte helt randomiserade.
- Stöd för lÄg fragmenteringshögar (LFH, Low Fragmentation Heap) har implementerats, vilket har ökat prestandan vid minnesallokering.
- Mekanismen för virtuell minnesallokering har fÄtt stöd för minnesreservation (placeholder), vilket gör att applikationen kan reservera ett visst omrÄde i det virtuella minnet för framtida anvÀndning.
- 64-bitars laddare (loader och preloader) för körbara filer och bibliotek har samlats i formatet PIE (Position-Independent Executables) för att frigöra en del av det 32-bitars adresseringsutrymmet.
- Korrekt stackunwindning (stack unwinding) har sÀkerstÀllts för NT-systemanrop och anvÀndarcallbacks.
- NĂ€tverksfunktioner
- I MSHTML-motorn har stöd för skrÀpsamlaren «Cycle Collection» implementerats.
- I MSHTML har stöd för synkront lÀge för hantering av XMLHttpRequest-förfrÄgningar lagts till.
- I jscript.dll har stöd för WeakMap-objekt lagts till för att arbeta med samlingar av nyckel/vÀrde-par dÀr nyckeln Àr ett objekt som kan kopplas till ett valfritt vÀrde. Metoderna WeakMap.get(), WeakMap.delete(), WeakMap.clear() och WeakMap.has() har implementerats.
- WebblÀsarmotorn Gecko har uppdaterats till version 2.47.4.
- Stöd för notifieringar om förÀndringar i nÀtverksgrÀnssnittets tillstÄnd har implementerats.
- Kryptografi och sÀkerhet
- I biblioteket Winscard.dll har stöd för smarta kort lagts till, implementerat via det systembiblioteket PCSClite.
- I BCrypt har stöd för Diffie-Hellman nyckelutbytesprotokollet lagts till.
- Paketet Negotiate har implementerats, vilket tillhandahÄller ett lager för att anvÀnda SSPI (Security Support Provider Interface) för att komma Ät SSP (Security Support Provider).
- Inbyggda applikationer
- I Wine Debugger (winedbg) för disassemblering av X86 maskininstruktioner har biblioteket Zydis aktiverats.
- I grÀnssnittet WineCfg har möjligheten att stÀlla in Àldre versioner av Windows (upp till XP) pÄ 64-bitars plattformar lagts till, vilket möjliggör körning av förÄldrade applikationer med WoW64-lÀget.
- I alla inbyggda grafiska applikationer har visning av felmeddelanden i en separat dialog istÀllet för i konsolen implementerats.
- I programmet systeminfo har visning av information frÄn WMI-databasen (Windows Management Instrumentation) sÀkerstÀllts.
- Applikationen klist för visning av Kerberos-biljetter har lagts till.
- I applikationen taskkill har möjligheten till tvÄngsavslutning av barnprocesser implementerats.
- I verktyget start har parametern '/machine' lagts till för att vÀlja arkitektur som anvÀnds vid körning av hybrida körbara filer som stöder bÄde x86 och ARM.
- En stor del av funktionaliteten i programmet tasklist har implementerats.
- En grundlÀggande implementation av applikationen findstr har lagts till.
- Utvecklingsverktyg
- I verktyget WineDump har möjligheten att visa innehÄllet i Windows-registerfiler (REGF-format) samt att visa data för alla arkitekturer (x86/ARM64) som stöds i hybrida PE-filer lagts till.
- I kompilatorn IDL har stöd för attributen 'composable', 'default_overload', 'deprecated' och 'protected' lagts till.
- Biblioteket libwine.so har tagits bort eftersom det förklarades som förÄldrat i utgÄvan Wine 6.0 och lÀnge inte har varit i anvÀndning i Wine. Program i ELF-format som kompilerades med gamla versioner av Wine (5.0 eller Àldre) med libwine.so krÀver omkompilering för att köra i Wine 9.0.
- Inbyggda bibliotek och externa beroenden
- Inkluderade bibliotek Àr FluidSynth 2.3.3, Musl 1.2.3 (endast matematiska funktioner) och Zydis 4.0.0.
- Komponenterna 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 och Zlib 1.3 har uppdaterats till nya versioner. Wine Mono-motorn med .NET-plattformsimplementation har uppdaterats till version 8.1.0.
- I drivrutinen winewayland.drv anvÀnds klientbiblioteket Wayland samt biblioteken xkbcommon och xkbregistry som externa beroenden.
- För stöd för smartkort anvÀnds det externa biblioteket PCSClite (i macOS - PCSC).
- För att bygga PE-filer pÄ plattformar som inte Àr i386 krÀvs nu en korskompilator som stöder direktiv " .seh " för att hantera undantag.
KĂ€lla: opennet.ru
