Pärast aasta pikkust arendust ja 30 katseversiooni on välja antud avatud Win32 API rakendamise stabiilne versioon – Wine 7.0, mis sisaldab üle 9100 muudatuse. Uue versiooni peamiste saavutuste hulka kuulub enamikule Wine'i moodulitest ülemineku tegemine PE formaati, kasutajaliidese toetamine, joystickide ja HID-liidestega siseseadmete toote laienemine ning WoW64 arhitektuuri rakendamine, mis võimaldab 32-bitiste rakenduste käivitamist 64-bitises keskkonnas.
Wine'is on kinnitatud 5156 Windowsi programmi täielik töö (aasta tagasi 5049), veel 4312 (aasta tagasi 4227) programmi töötab suurepäraselt täiendavate seadistuste ja väliste DLL-idega. 3813 programmi (aasta tagasi 3703) puhul on ilmnenud väikseid probleeme, mis ei takista rakenduste põhitööde kasutamist.
Wine 7.0 peamised uudised:
- Moodulid PE formaadis
- Peaaegu kõik DLL-raamatukogud on üle viidud PE (Portable Executable) formaadi kasutamisele, mis on Windowsis rakendatav, ELF asemel. PE rakendamine lahendab erinevate koopiakaitsesüsteemide toetamisega seotud probleemid, mis kontrollivad süsteemimoodulite identiteeti nii kettal kui ka mälus.
- PE-moodulite integreerimise võimalus Unix'i raamatukogudega on realiseeritud, kasutades NT-i kernel'i süsteemikutset, mis võimaldab Windows'i silurite eest Unix'i koodi varjata ning jälgida lõimede registreerimist.
- Sisseehitatud DLL-e laaditakse nüüd ainult juhul, kui vastav PE-formaadis fail on kettal olemas, olenemata sellest, kas see on tõeline raamatukogu või tühimik. Antud muudatus võimaldab rakendusel alati näha õiget sidumist PE-failidega. Selle käitumise keelamiseks saab kasutada keskkonnaparameetrit WINEBOOTSTRAPMODE.
- WoW64
- WoW64 (64-bit Windows-on-Windows) arhitektuur on realiseeritud, võimaldades 32-bitiste Windows'i rakenduste käivitamist 64-bitistes Unix'i protsessides. Toetust pakutakse 32-bitiste NT-süsteemikutsede tõlkimise kaudu 64-bitistele NTDLL'ile pöördumistele.
- WoW64 kiht on ette valmistatud enamikuks Unix-raamatukogudest ja võimaldab 32-bitsetel PE-formaadis moodulitel pääseda 64-bitsetele Unix-raamatukogudele. Pärast kõigi moodulite tõlkimist PE-formaati saab 32-bitseid Windowsi rakendusi käitada ilma 32-bitsete Unix-raamatukogude installimiseta.
- Kujundusteemad
- Kujundusteemade tugi on rakendatud. Komplekt sisaldab 'Light', 'Blue' ja 'Classic Blue' kujundusteemasid, mida saab valida WineCfg konfigureerijast.
- Kõigi kasutajaliidese juhtselementide välimuse kohandamine läbi kujundusteemade on nüüd võimalik. Elementide välimus uuendatakse automaatselt, kui teema vahetatakse.
- Kujundusteemade tugi on lisatud kõikidesse sisseehitatud Wine rakendustesse. Rakendusi on kohandatud kõrge pikslitihedusega ekraanide jaoks (High DPI).
- Graafikasüsteem
- Lisatud uus Win32u raamatukogu, kuhu on viidud GDI32 ja USER32 raamatukogude osad, mis on seotud graafika töötlemise ja akende haldamisega tuumatasemel. Tulevikus alustatakse Win32u komponentide, nagu winex11.drv ja winemac.drv, üleviimist.
- Vulkani draiveris toetab graafilise API Vulkan 1.2.201 spetsifikatsiooni.
- API Direct2D kaudu on toetatud joonestatud geomeetriliste objektide väljundit, mis sisaldab kliki tabamise kontrollimise võimalust (hit-test).
- API Direct2D-sse on lisatud esmane toetus visuaalefektidele, mis rakendatakse kasutades liidest ID2D1Effect.
- API Direct2D-s on lisatud liidese ID2D1MultiThread tugi, mida kasutatakse eksklusiivsete juurdepääsude korraldamiseks ressurssidele mitme lõimega rakendustes.
- WindowsCodecs teeki on lisatud toetus WMP (Windows Media Photo) kujutiste dekodeerimiseks ja DDS (DirectDraw Surface) formaadis kujutiste kodeerimiseks. ICNS formaadi (macOS jaoks) pildikodeerimise toetus on lõpetatud, kuna see ei ole Windowsis toetatud.
- Direct3D
- Uus renderdamismootor, mis tõlgib Direct3D kutsed Vulkan graafilisse API-sse, on oluliselt paranenud. Enamikus olukordades on Direct3D 10 ja 11 tase Vulkanil põhinevas mootoris viidud tasemele, mis on võrreldav vana OpenGL-il põhineva mootori tasemega. Vulkan renderdamismootori aktiveerimiseks tuleb registreerimisvalikus Direct3D seada väärtuseks „vulkan“.
- Direct3D 10 ja 11 pakub mitmeid funktsioone, sealhulgas edasilükatud kontekste (Deferred Contexts), mis töötavad seadme kontekstis olekutega, pidevad nihked puhversalvestuses, mittesorteeritud tekstuuride esitluste puhastamine, andmete kopeerimine ressursside vahel tüübivabades formaatides (DXGI_FORMAT_BC3_TYPELESS, DXGI_FORMAT_R32G32B32A32_TYPELESS) jne.
- Tugevdatud mitme monitori konfiguratsiooni tugi, mis võimaldab valida monitori, millel Direct3D rakendust täisekraanirežiimis kuvada.
- DXGI API-s on lisatud võimalus ekraani gamma-korreksiooniks, mida saavad kasutada Direct3D 10 ja 11 rakendused ekraani heleduse muutmiseks. Samuti on tagatud virtuaalsete raamivaatide (SwapChain) loendite hankimine.
- Direct3D 12 toob uusi võimalusi 1.1 versiooni juursertifikaatide toetamiseks.
- Vulkan API kaudu renderdamiskoodis on suurenenud päringute töötlemise efektiivsus, kui süsteem toetab laiendust VK_EXT_host_query_reset.
- Lisatud on võimalus edastada virtuaalsetest raamivaadetest (SwapChain) läbi GDI, kui OpenGL või Vulkan ei saa kuvamiseks kasutada, näiteks kui andmed peavad olema erinevates protsessides aknasse edastatud, nagu CEF (Chromium Embedded Framework) põhinevates programmides.
- GLSL-ipekate jaoks mõeldud tagapinna kasutamise korral on tagatud modifikaatori «precise» rakendamine shaderi juhistes.
- DirectDraw API-sse on lisatud 3D-renderdamise tugi süsteemimäigkeiten, kasutades selliseid programmiseadmeid nagu «RGB», «MMX» ja «Ramp».
- Direct3D graafikakaartide andmebaasi on lisatud AMD Radeon RX 5500M, AMD Radeon RX 6800/6800 XT/6900 XT, AMD Van Gogh, Intel UHD Graphics 630 ja NVIDIA GT 1030 kaardid.
- HKEY_CURRENT_USER\Software\Wine\Direct3D registrist on eemaldatud võti «UseGLSL», mille asemel alates Wine 5.0 tuleb kasutada «shader_backend».
- Direct3D 12 toetamiseks on nüüd vajalik vkd3d raamatukogu vähemalt versioon 1.2.
- D3DX
- D3DX 10 rakenduses on parendatud visuaalefektide raamistiku toetust ja lisatud Windows Media Photo (JPEG XR) pildifailide formaadi tugi.
- D3DX10 sisaldab nüüd funktsioone tekstuuride loomiseks, näiteks D3DX10CreateTextureFromMemory().
- Osaliselt on rakendatud ID3DX10Sprite ja ID3DX10Font liideseid.
- Heli ja video
- WineGStreamer tagapinnas on ühendatud GStreamer-i laiendused DirectShow ja Media Foundation raamistiku jaoks, mis peaks uute API-de loomise lihtsamaks muutma.
- WineGStreamer tagapinna põhjal on ellu viidud Windows Media objektid sünkroonselt ja asünkroonselt lugemiseks.
- Media Foundation raamistikku täiendamine jätkub, IMFPMediaPlayeri funktsionaalsuse, näidiste allocator'i tugi on lisatud, EVR ja renderdamise SAR-pufferite tugi on paranenud.
- Eemaldatud on wineqtdecoder teek, mis pakub QuickTime formaadi dekooderit (kõikide koodekite jaoks kasutatakse nüüd GStreamer'it).
- Sisendi seadmed
- HID (Inimese kasutajaliidese seadmed) protokolli toetavate sisendi seadmete jaoks on tõhusalt parendatud alustehnoloogiat, sealhulgas HID-deskriptorite töötlemine, HID-sõnumite käitamine ja HID-mini-draiverite pakkumine.
- winebus.sys draiveri tagaplaanides on parendatud seadme kirjelduse tõlget HID-sõnumiteks.
- Uus DirectInput tagaplaan on lisatud HID protokolli toetavatele mängupultidele. Tagasiside efektide kasutamine mängupulkades on võimalik. Parendatud juhtpaneel mängupulkadega. XInputiga ühilduvate seadmete koostöö on optimeeritud. WinMM-i mängupulkade tugi on viidud DInput'ile, selle asemel et kasutada Linuxis evdev tagaplaani ja macOS-is IOHID-i. Eemaldatud on vana mängupulkade draiver winejoystick.drv.
- Modul DInput on saanud uusi teste, mis põhinevad virtuaalsete HID-seadmete kasutamisel ning ei vaja füüsilise seadme olemasolu.
- Tekst ja fondid
- DirectWrite'i on lisatud objekti Font Set.
- RichEditis on õigesti teostatud liides TextHost.
- Kernel (Windowsi tuumliideste)
- Wines nimetatud jõudude täitmine (näiteks 'wine foo.msi') kutsub nüüd välja start.exe, mis käivitab, seondub snnvaluga seotud töötlejad.
- Lisatud tuge NtAlertThreadByThreadId ja NtWaitForAlertByThreadId senkenle kohalsetesse mehhanismides, mis on sarnased Linuxi fjuutexitega.
- Lisatud tugi NT-lahenduse objektidele, mida kasutatakse tuumafunktsioonide tõrkeotsimiseks.
- Lisatud toend dünaamiliste registrivõtmete toetamiseks, et salvestada jõudlusandmeid.
- C Runtime
- C runtime'isse on rakendatud täislahendus matemaatiliste funktsioonide jaoks, mis on peamiselt kantud teegist Musl.
- Kõikide CPU platvormide jaoks on tagatud õige tugi ujuva komaga arvutuste funktsioonide jaoks.
- Võrguvõimalused
- Internet Explorer 11 (IE11) ühilduvuse režiimi on parendatud, mis on nüüd vaikimisi HTML-dokumendi töötlemiseks.
- Raamatukogus mshtml on rakendatud JavaScripti režiim ES6 (ECMAScript 2015), mis toetab selliseid funktsioone nagu let-lausung ja Map-objekt.
- Veini töökausta MSI-pakettide installimine, mis sisaldab Gecko mootori lisandusi, toimub nüüd vajaduse korral, mitte Wine'i värskendamise ajal.
- Lisatud DTLS-protokolli tugi.
- Rakendatud NSI (Network Store Interface) teenus, mis hoiab ja edastab teistele teenustele teavet marsruutimise ja arvuti võrguliideste kohta.
- API WinSock-i töötlejat, nagu setsockopt ja getsockopt, on kantud NTDLL raamatukogusse ja afd.sys draiverisse, et vastata Windowsi arhitektuurile.
- Veini töökausta installitakse nüüd oma failid võrguandmebaasidega, nagu /etc/protocols ja /etc/networks, selle asemel, et pöörduda sarnaste Unix-i andmebaaside poole.
- Alternatiivsed platvormid
- Lisatud Apple'i ARM-kiipidega (Apple Silicon) seadmete tugi.
- BCrypt ja Secur32 funktsioonide toetamiseks macOS platvormil on nüüd vajalik GnuTLS raamatukogu installimine.
- 32-bitised täidetavad failid ARM-plaatformidele kompileeritakse nüüd Thumb-2 režiimis, sarnaselt Windowsile. Selliste failide laadimiseks kasutatakse eelkoormajat.
- 32-bit ARM platvormide jaoks on rakendatud erindite lahtivõtmise tugi.
- FreeBSD-s on suurendatud madala taseme süsteemiinfot käsitlevate päringute hulka, sealhulgas mäluseisundi ja aku taseme andmed.
- Sisseehitatud rakendused ja arendustööriistad
- Reg.exe utiliiti on lisatud toetus 32- ja 64-bitiste registri väljaannete jaoks. Lisatud on registri võtmete kopeerimise toetus.
- WineDump utiliiti on lisatud Windowsi metaandmete väljavõtte tugi ja üksikasjaliku teabe kuvamise võimalus CodeView kirje kohta.
- Wine Debuggeris (winedbg) on rakendatud võimalus 64-bitise siluri kaudu 32-bitiste protsesside silumist.
- IDL (widl) kompilaatorisse on lisatud võimalus laadida PE-failidesse sisse ehitatud teeke, tagades WinRT-spetsiifiliste atribuutide ja konstruktsioonide toe ning teekide otsimise platvormi seotuse.
- Kogumissüsteem
- Riistatud riistvara arhitektuuride kataloogides salvestatakse raamatukogud nüüd nimede järgi, mis peegeldavad arhitektuuri ja käideldava faili tüüpi, näiteks 'i386-windows' PE formaadi jaoks ja 'x86_64-unix' unix-raamatukogude jaoks, mis võimaldab toetada erinevaid arhitektuure ühe Wine'i installatsiooni sees ja tagada Winelib'i ristkompileerimise.
- PE-failide päistele lisatud valik, mis juhib üleminekut kohalike DLL-raamatukogude kasutamisele, kasutab winebuild täiendavat lippu '—prefer-native option' (DLL_WINE_PREATTACH töötlemine DllMain'is on peatatud).
- Lisatud toe 4. versiooni Dwarf-i vormingu jaoks, mis nüüd on vaikimisi kasutusel Wine'i raamatukogude kompileerimisel.
- Lisatud kompileerimisvalik '—enable-build-id', et salvestada käideldavatesse failidesse unikaalsed kompileerimise id-d.
- Lisatud toetus Clang kompilaatori kasutamiseks MSVC-ga ühilduvas režiimis.
- Erinev
- Kasutajaliidese (Windows Shell) tüüpkataloogide nimetused on viidud vastavusse skeemiga, mis kehtib alates Windows Vista, st 'My Documents' asemel luuakse kataloog 'Documents', samas kui suurem osa andmeid salvestatakse katalooge 'AppData'.
- OpenCLi raamistiku jaoks on lisatud OpenCL 1.2 spetsifikatsiooni tugi.
- WinSpooli draiveris on lisatud tugi erinevate lehe suuruste variantide jaoks printimisel.
- MSDASQLi, Microsofti OLE DB pakkuja tugi ODBC draiverite jaoks on algselt lisatud.
- Wine Mono mootor, kus on rakendatud .NET platvorm, on uuendatud versioonile 7.0.0.
- Unicode andmed on ajakohastatud Unicode 14 spetsifikatsioonini.
- Allika puusse on integreeritud raamatukogud Faudio, GSM, LCMS2, LibJPEG, LibJXR, LibMPG123, LibPng, LibTiff, LibXml2, LibXslt ja Zlib, mis kompileeritakse PE formaadis ja ei vaja Unix-formaadis versiooni. Samuti võivad need raamatukogud olla importitud süsteemist, et kasutada väliseid kompilatsioone sisseehitatud PE variantide asemel.
Allikas: opennet.ru
