Pas një viti zhvillimi dhe 26 versioneve eksperimentale, u prezantua lëshimi i qëndrueshëm i implementimit të hapur të Win32 API — Wine 9.0, i cili përmban mbi 7000 ndryshime. Nga arritjet kryesore në versionin e ri, spikasin implementimi i arkitekturës WoW64 për ekzekutimin e programeve 32-bit në një mjedis 64-bit, integrimi i një drejtuesi për mbështetje të Wayland, mbështetje për arkitekturën ARM64, implementimi i API-së DirectMusic dhe mbështetje për karta inteligente.
Në Wine, është konfirmuar funksionimi i plotë të 5336 (një vit më parë 5266, dy vjet më parë 5156, tre vjet më parë 5049) programeve për Windows, 4397 (një vit më parë 4370, dy vjet më parë 4312, tre vjet më parë 4227) programe funksionojnë mirë me konfigurime të këndshme dhe DLL të jashtme. 3943 programeve (një vit më parë 3888, dy vjet më parë 3813, tre vjet më parë 3703) i janë vërejtur disa probleme të vogla në funksionim, të cilat nuk pengojnë përdorimin e funksioneve kryesore të aplikacioneve.
Novitetet kryesore të Wine 9.0:
- Shtuar driver-i winewayland.drv, i cili lejon përdorimin e Wine në mjedise të bazuara në protokollin Wayland pa përdorur XWayland dhe komponentët X11. Zhvillimi synon të sigurojë funksionimin e një mjedisi të pastër Wayland me mbështetje për ekzekutimin e aplikacioneve Windows, pa kërkuar instalimin e paketave të lidhura me X11, duke mundësuar kështu një performancë më të lartë dhe reagim më të shpejtë të lojërave për shkak të eliminimit të shtresave të panevojshme. Përdorimi i një mjedisi të pastër Wayland për Wine gjithashtu lejon elimimin e problemeve të sigurisë që lidhen me X11 (për shembull, lojërat e pasigurta për X11 mund të spiunojnë aplikacione të tjera sepse protokolli X11 lejon qasje në të gjithë ngjarjet e hyrjes dhe në përmbushjen e shtypjeve të simuluara të çelësve).
Drejti është shënuar si eksperimental dhe në zhvillim, megjithatë, ai tashmë ofron mbështetje për shumë funksionalitete, si menaxhimi i dritareve, përdorimi me monitorë të shumtë, mbështetje për shkallëzimin e daljes në ekrane me dendësi të lartë pikselash (high-DPI), përdorimi i koordinatave relative për gjurmimin e lëvizjes së mausit dhe mbështetje për API grafik Vulkan. Në mënyrë default, drejtori nuk është aktiv dhe për ta aktivizuar atë, duhet të shtoni "wayland" në parametrin e regjistrit "HKCU\Software\Wine\Drivers" dhe të siguroheni që variable e mjedisit DISPLAY të mos jetë e vendosur: wine reg.exe add HKCU\\Software\\Wine\\Drivers /v Graphics /d x11,wayland
- Është bërë përkthimi i të gjithë moduleve në ndërfaqen e thirrjeve sistemore NT, në vend që të bëhen thirrje të drejtpërdrejta midis niveleve PE dhe Unix, gjë që shënon përfundimin e një pune të gjatë për përkthimin e të gjithë bibliotekave DLL në përdorimin e formatit të skedarëve të ekzekutueshëm PE (Portable Executable).
- Është vazhduar zhvillimi i shtresës WoW64 (Windows-on-Windows 64-bit), e cila lejon ekzekutimin e aplikacioneve Windows 32-bit në sistemet Unix 64-bit. Në të gjitha modulat që ndërlidhen me bibliotekat Unix, janë përdorur konvertuesit e thirrjeve sistemore WoW64 (thunk), të cilat lejojnë modulave 32-bit në formatin PE të aksesojnë bibliotekat Unix 64-bit.
Është përmirësuar moda e re e ekzekutimit WoW64, në të cilën kodi 32-bit ekzekutohet brenda një procesi 64-bit (në modën e vjetër WoW64, aplikacionet 32-bit fillonin në procese Unix 32-bit). Është shtuar mbështetje për aplikimin e modës së re WoW64 në platformën macOS. Duke qenë se në modën e re WoW64 janë shënuar disa probleme, të tilla si mungesa e mbështetjes për modin 16-bit dhe ulja e performancës OpenGL për shkak të mungesës së mbështetjes për zgjerimin ARB_buffer_storage, ajo nuk është përfshirë ende si standard dhe kërkon ndërtim me opsionin «—enable-archs=i386,x86_64» në skenarin configure.
- Shtuar mundësia e ekzekutimit të skedareve ekzistues ekzekutivë Windows në sistemet me arkitekturë ARM64. Realizuar mundësia e ndërtimit të Wine për ABI ARM64EC (ARM64 Emulation Compatible) dhe mbështetje për ngarkimin e moduleve ARM64EC, të përdorura për lehtësimin e portimit të aplikacioneve për sisteme ARM64, që janë shkruar fillimisht për arkitekturën x86_64, duke ofruar mundësinë e ekzekutimit në mjedisin ARM64 të moduleve të veçanta me kod x86_64 përmes emulatorit. Shtuar mbështetje për formatin PE të skedarëve ARM64X, i cili lejon ngarkimin e një skedari ekzekutiv në proceset x64/Arm64EC dhe ARM64. Realizuar ndërfaqja për emulim të sistemeve 32-bit x86, por biblioteka me emulatorin akoma nuk është përfshirë në përbërjen kryesore të Wine (për të ekzekutuar kodin x86 në mjedisin ARM64, mund të përdoret emulatori i jashtëm FEX).
- Nënshkrimi grafik
- Drejtuesi PostScript është riparuar për të mbështetur skedaret spool në formatin Windows, në të cilat ruhen të dhëna për detyrat që shkruhen në printim. Janë eliminuar thirrjet direkte për drejtuesin nga mjedisi Unix.
- Temave të dizajnit WinRT i është shtuar mbështetje për modin e errët. Në WineCfg është shtuar një cilësim për aktivizimin e dizajnit të errët të ndërfaqes.
- Drejtori për API grafik Vulkan ka shtuar mbështetje për specifikimin Vulkan 1.3.272 (në Wine 8.0 mbështetje kishte për 1.3.237).
- Janë optimizuar funksionet e bibliotekës GdiPlus, duke rritur performancën në punën me grafikën.
- Direct3D
- Është siguruar pezullimi i analizës së rrjedhës shumëprurës të komandave në kushte ku nuk ka komanda për përpunim, duke lejuar uljen e konsumit të energjisë në nivelin e përpunimit njëprurës gjatë ekzekutimit të programeve që nuk përdorin të gjithë bandwidth-in e rrjedhës së komandave.
- Në Direct3D 10 është realizuar mbështetje për efekte shtesë.
- Janë bërë optimizime të performancës në kodin WineD3D dhe backendin që përdor API-në grafike Vulkan.
- Në kodin e vizatimit të bazuar në API Vulkan është shtuar kontrolli i mundësive të mbështetura nga pajisja dhe dalja e informacionit për aplikacionin mbi nivelin e disponueshëm të funksionalitetit të Direct3D.
- Janë realizuar funksionet D3DXFillTextureTX dhe D3DXFillCubeTextureTX.
- Në backendin klasik të shaderave OpenGL ARB është shtuar mbështetje për përcaktimin e hijeve përmes zgjerimit ARB_fragment_program_shadow.
- Në D3DXLoadMeshHierarchyFromX dhe funksione të ngjashme është shtuar mbështetje për ngarkimin e të dhënave të zakonshme përmes ndërfaqes ID3DXLoadUserData.
- Të dhënat dhe video
- Implementimi fillestar i API-së DirectMusic është propozuar. Shtuar mbështetje për koleksionet, instrumentet dhe mostra të tingujve në formatin SoundFont. Shtuar mbështetje për efektin Doppler. Janë realizuar teste për të verifikuar saktësinë e implementimit gjatë funksionimit të sekvencorit dmime dhe sintetizatorit MIDI dmsynth.
- Për përdorim në API-në DirectMusic, është e integruar biblioteka FluidSynth.
- Janë implementuar mbështetje për ngarkimin e fontëve të tingujve (SoundFont - formate për sintezë të bazuar në mostra, të përdorura për riprodhimin e skedarëve MIDI) në formatet DLS1 dhe DLS2, si dhe në formatin SF2, i përdorur në Linux.
- Shtuar mundësia e riprodhimit të përmbajtjes MIDI me anë të bibliotekës dmsynth, duke përdorur sintetizatorin programor FluidSynth dhe API-në DirectSound për daljen e tingullit.
- Shtuar një dekoder për video në formatin e kodekëve të videos Indeo IV50.
- DirectShow
- Janë realizuar komponenti DMO (DirectX Media Object) me dekoder të formatit WMV (Windows Media Video).
- Shtuar filtrin e kapjes së tingullit (DirectShow Audio Capture Filter).
- Në filtrin e ndarjes së rrjedhave MPEG-1 (DirectShow MPEG-1 Stream Splitter) përveç rrjedhave audio është shtuar mbështetje për rrjedhat video dhe rrjedhat shërbyese.
- Është implementuar një filtër për dekodimin e videos në formatin MPEG‑1 (DirectShow MPEG‑1 Video Decoder).
- Pajisjet hyrëse
- Në DirectInput është implementuar mbështetje për hartimin e veprimeve (action maps), duke lejuar lidhjen e butonave në kontrollorin e lojërave me veprime të caktuara në lojëra.
- Integrimi me desktopin
- Është siguruar eksportimi në mjedisin e përdoruesit kryesor të lidhjeve, duke lejuar thirrjen e aplikacioneve të drejtuara nga Wine si përpunues të protokolleve kur hapen URL (p.sh., nisja e spotify.exe kur hapen lidhjet e stilit «spotify:user:spotify:playlist:848218482355482821»).
- Është implementuar nxjerrja e të dhënave EDID (Të Dhënat e Identifikimit të Shfaqjes të Zgjatur) me informacion mbi parametrat e monitorit të lidhur, si emri dhe modeli i pajisjes.
- Është ofruar mundësia për të mbyllur dritaren e desktopit, e ndarë në modalitetin e plotë të ekranit, duke përdorur butonin «Exit desktop» në menunë «Start».
- Internacionalizimi
- Është zgjeruar mbështetja për IME (Redaktuesit e Metodave të Hyrjes). Është punuar për të siguruar kompatibilitet me realizimet native të Windows të IME dhe për të përmirësuar integrimin me IME të Linux.
- Generimi i databazës së lokalizimeve në formatin locale.nls nga databaza Unicode CLDR (Repozitori i të Dhënave të Përbashkëta të Locale) versioni 44. Shtuar mbështetje për lokalizimet e tjera bew-ID, blo-BJ, csw-CA, ie-EE, mic-CA, prg-PL, skr-PK, tyv-RU, vmw-MZ, xnr-IN dhe za-CN.
- Përkthimi i ndërfaqes në gjuhën gjeorgjiane është përfunduar. Përkthime të plota janë siguruar për 16 gjuhë, ndërsa të pjesshme për 31 gjuhë.
- Tabelat e simboleve Unicode janë përditësuar në versionin 15.1.0 të standardit. E kaluara e zonave të kohës është përditësuar.
- Kernel (ndërfaqet e kernelit Windows)
- Si version i paracaktuar të lëshuar të Windows është caktuar Windows 10.
- Për skedarët ekzekutivë në formatin PE është realizuar mbështetje për randomizimin e adresave të hapësirës (ASLR), por adresat e ngarkimit të kodit në memorie ende nuk janë randomizuar plotësisht.
- Është realizuar mbështetje për grumbullin e fragmentuar dobët (LFH, Low Fragmentation Heap), duke rritur performancën e operacioneve të alokimit të memories.
- Në mekanizmin për alokimin e memories virtuale është shtuar mbështetje për rezervimin e memories (placeholder), e cila i lejon aplikacionit të rezervojë një zonë të caktuar të memories virtuale për përdorim në të ardhmen.
- Ngarkuesit 64-bit (loader dhe preloader) të skedareve ekzekutues dhe librarive janë të mbledhur në formatin PIE (Position-Independent Executables) për të çliruar një pjesë të hapësirës adresore 32-bit.
- Sigurohet gjenerimi i saktë të stack-ut (stack unwinding) për thirrjet e sistemit NT dhe thirrjet kthimore të përdoruesit.
- Aftësitë rrjetërore
- Në motorin MSHTML është implementuar mbështetje për mekanizmin e mbledhjes së mbeturinave 'Cycle Collection'.
- Në MSHTML është shtuar mbështetje për modalitetin sinhron të përpunimit të kërkesave XMLHttpRequest.
- Në jscript.dll është shtuar mbështetje për objektin WeakMap për të punuar me koleksionin e çiftëve çelës/vlerë, ku çelësi është një objekt, të cilit mund t'i bashkangjitet një vlerë e çfarëdo lloji. Janë implementuar metodat WeakMap.get(), WeakMap.delete(), WeakMap.clear() dhe WeakMap.has().
- Moti i shfletuesit Gecko është përditësuar në versionin 2.47.4.
- Është implementuar mbështetje për njoftimet mbi ndryshimin e gjendjes së ndërfaqes rrjetërore.
- Kriptografia dhe siguria
- Në bibliotekën Winscard.dll është shtuar mbështetje për kartat inteligjente, e implementuar përmes bibliotekës sistemore PCSClite.
- Në BCrypt është shtuar mbështetje për protokollin e shkëmbimit të çelësave Diffie-Hellman.
- Paketa Negotiate është realizuar, duke ofruar një ndërfaqe për përdorimin e SSPI (Interfejsit të Mbështetjes së Sigurisë) për t'u drejtuar te ofruesit e SSP (Ofruesit e Mbështetjes së Sigurisë).
- Aplikacionet e integruara
- Në debugin Wine Debugger (winedbg) për disasëmblimin e instrukcioneve makinerike X86 është angazhuar biblioteka Zydis.
- Në ndërfaqen WineCfg është shtuar mundësia e vendosjes në platformat 64-bit të versioneve të vjetra të Windows (deri në XP), e cila lejon ekzekutimin e aplikacioneve të vjetra duke përdorur modalitetin WoW64.
- Në të gjitha aplikacionet grafike të integruara është realizuar shfaqja e informacionit për gabimet në një dialog të veçantë, në vend të shfaqjes së tyre në konsolë.
- Në programin systeminfo është siguruar shfaqja e informacionit nga Baza e të Dhënave WMI (Instrumentacioni i Menaxhimit të Windows).
- Është shtuar aplikacioni klist për shfaqjen e tiketeve Kerberos.
- Në aplikacionin taskkill është realizuar mundësia e përfundimit të detyrave nën proces.
- Në utilitarin start është shtuar parametrin "/machine" për të zgjedhur arkitekturën e përdorur gjatë ekzekutimit të skedarëve hibridë të ekzekutueshëm, që mbështesin x86 dhe ARM.
- Është realizuar një pjesë e madhe e funksionalitetit të programit tasklist.
- Është shtuar implementimi i bazës së aplikacionit findstr.
- Mjetet për zhvillim
- Në utilitarin WineDump është implementuar mundësia për të nxjerrë përmbajtjen e skedarëve të regjistrit të Windows (formati REGF), si dhe për të shfaqur të dhëna për të gjitha arkitekturët (x86/ARM64) që mbështeten në skedarët hibridë PE.
- Në kompilatorin IDL është shtuar mbështetje për atributet «composable», «default_overload», «deprecated» dhe «protected».
- Biblioteka libwine.so, e cila ishte shpallur e tejkaluar në versionin Wine 6.0 dhe nuk është përdorur për një kohë të gjatë në Wine, është hequr. Programet në formatin ELF, të ndërtuara në versionet e vjetra të Wine (5.0 dhe më parë) me libwine.so, kërkojnë ri-ndërtim për të funksionuar në Wine 9.0.
- Biblioteka të dëgjuara dhe varësi të jashtme
- Në paketë janë integruar bibliotekat FluidSynth 2.3.3, Musl 1.2.3 (vetëm funksionet matematikore) dhe Zydis 4.0.0.
- Komponentët 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 dhe Zlib 1.3 janë përmirësuar në versione të reja. Motorri Wine Mono me implementimin e platformës .NET është azhurnuar në versionin 8.1.0.
- Në drejtuesin winewayland.drv si varësi të jashtme është përfshirë biblioteka klienti Wayland, si dhe bibliotekat xkbcommon dhe xkbregistry.
- Për mbështetje të kartave inteligjente është përfshirë biblioteka e jashtme PCSClite (në macOS — PCSC).
- Për ndërtimin e skedarëve PE në platforma të tjera përveç i386, tani kërkohet një cross-compiler me mbështetje për direktivat "se" për përpunimin e përjashtimeve.
Burimi: opennet.ru
