Nakon godine razvoja i 30 eksperimentalnih verzija, predstavljena je stabilna verzija otvorene implementacije Win32 API-ja — Wine 7.0, koja sadrži više od 9100 promjena. Ključna dostignuća nove verzije uključuju prevođenje većine Wine modula u PE format, podršku za teme, proširenje stoga za joysticke i uređaje za unos s HID sučeljem, te implementaciju WoW64 arhitekture za pokretanje 32-bitnih programa u 64-bitnom okruženju.
U Wine-u je potvrđena potpuna funkcionalnost 5156 (prije godinu dana 5049) Windows programa, dodatnih 4312 (prije godinu dana 4227) programa djeluje odlično uz dodatne postavke i vanjske DLL-ove. Kod 3813 programa (prije godinu dana 3703) primjećeni su manji problemi u radu, koji ne ometaju korištenje osnovnih funkcija aplikacija.
Ključne novosti Wine 7.0:
- Moduli u PE formatu
- Gotovo sve DLL biblioteke su prebačene na korištenje PE formata izvršnih datoteka (Portable Executable, koristi se u Windows-u) umjesto ELF-a. Korištenje PE rješava probleme s podrškom različitih sustava zaštite od kopiranja koji provjeravaju identitet sistemskih modula na disku i u memoriji.
- Implemented is mogućnost interakcije PE modula s Unix bibliotekama koristeći standardni poziv sustava NT jezgre, što omogućava skrivanje poziva Unix kodu od debuggere Windows-a i praćenje registracije niti.
- Ugrađeni DLL-ovi se sada učitavaju samo ako postoji odgovarajući PE datoteka na disku, bez obzira na to da li je prava biblioteka ili zamjenska. Ova promjena omogućava aplikaciji da uvijek vidi ispravnu povezanost s PE datotekom. Za isključivanje ovog ponašanja može se koristiti varijabla okruženja WINEBOOTSTRAPMODE.
- WoW64
- Provedena je arhitektura WoW64 (64-bit Windows-on-Windows), koja omogućava pokretanje 32-bitnih Windows aplikacija u 64-bitnim Unix procesima. Podrška je implementirana putem sloja koji prevodi 32-bitne pozive NT sustava u 64-bitne zahtjeve prema NTDLL-u.
- WoW64 slojevi su pripremljeni za većinu Unix biblioteka i omogućuju 32-bitnim PE modulima pristup 64-bitnim Unix bibliotekama. Nakon završetka prevođenja svih modula u PE format, omogućit će se pokretanje 32-bitnih Windows aplikacija bez instalacije 32-bitnih Unix biblioteka.
- Teme
- Implementirana podrška za teme. Uključene su teme "Light", "Blue" i "Classic Blue", koje mogu biti odabrane putem WineCfg konfiguratora.
- Dodana je mogućnost prilagodbe izgleda svih elemenata korisničkog sučelja kroz teme. Osigurano je automatsko ažuriranje izgleda elemenata nakon promjene teme.
- Svim ugrađenim aplikacijama u Wine dodana je podrška za teme. Aplikacije su prilagođene ekranima s visokom gustoćom piksela (High DPI).
- Grafički podsustav
- Dodana nova biblioteka Win32u, u koju su premješteni dijelovi biblioteka GDI32 i USER32 vezani uz obradu grafike i upravljanje prozorima na razini jezgre. U budućnosti će započeti rad na prijenosu komponenti upravljačkih programa, kao što su winex11.drv i winemac.drv, u Win32u.
- U Vulkan drajveru implementirana je podrška za specifikaciju grafičkog API-a Vulkan 1.2.201.
- Osigurana je podrška za iscrtavanje prugastih geometrijskih objekata putem API-ja Direct2D, s mogućnošću provjere sudara (hit-test).
- U API-ju Direct2D implementirana je osnovna podrška za vizualne efekte koji se primjenjuju korištenjem sučelja ID2D1Effect.
- U API-ju Direct2D dodana je podrška za sučelje ID2D1MultiThread, koje se koristi za organiziranje ekskluzivnog pristupa resursima u višedretvenim aplikacijama.
- U setu biblioteka WindowsCodecs implementirana je podrška za dekodiranje slika u formatu WMP (Windows Media Photo) i kodiranje slika u formatu DDS (DirectDraw Surface). Prekida se podrška za kodiranje slika u formatu ICNS (za macOS), koji nije podržan na Windowsu.
- Direct3D
- Značajno je poboljšan novi motor za iscrtavanje, koji provodi translaciju poziva Direct3D u grafički API Vulkan. U većini situacija razina podrške za Direct3D 10 i 11 u motoru temeljenom na Vulkan-u dovedena je do pariteta s starim motorom temeljenim na OpenGL-u. Da biste omogućili motor iscrtavanja putem Vulkan-a, potrebno je postaviti registar Direct3D "renderer" na "vulkan".
- Implementirane su mnoge značajke Direct3D 10 i 11, uključujući odgođene kontekste (Deferred Contexts), rad u kontekstu uređaja, objekte stanja, stalna pomjeranja u baferima, čišćenje neuređenih prikaza tekstura, kopiranje podataka između resursa u beztipnim formatima (DXGI_FORMAT_BC3_TYPELESS, DXGI_FORMAT_R32G32B32A32_TYPELESS) i sl.
- Dodana podrška za višemonitorske konfiguracije koja omogućava odabir monitora za prikaz Direct3D aplikacija u fullscreen režimu.
- U API-ju DXGI implementirana je mogućnost gamma korekcije ekrana, što se može koristiti u aplikacijama zasnovanim na Direct3D 10 i 11 za promjenu osvijetljenosti ekrana. Omogućeno je pristupanje brojačima virtualnih frame buffera (SwapChain).
- U Direct3D 12 dodana podrška za korijenske potpise verzije 1.1.
- U kodu za iscrtavanje preko API-ja Vulkan povećana je učinkovitost obrade zahtjeva uz podršku za proširenje VK_EXT_host_query_reset u sustavu.
- Dodana je mogućnost prikaza virtualnih frame buffera (SwapChain) preko GDI-ja, kada se OpenGL ili Vulkan ne mogu koristiti za prikaz, na primjer, prilikom prikaza u prozoru iz različitih procesa, kao u aplikacijama temeljenim na CEF (Chromium Embedded Framework).
- Pri korištenju GLSL backend-a za špiralne instrukcije osigurano je korištenje modifikatora „precise”.
- U API-ju DirectDraw dodana je podrška za 3D renderiranje u sistemsku memoriju, koristeći softverske uređaje kao što su „RGB”, „MMX” i „Ramp”.
- U bazu grafičkih kartica Direct3D dodane su kartice AMD Radeon RX 5500M, AMD Radeon RX 6800/6800 XT/6900 XT, AMD Van Gogh, Intel UHD Graphics 630 i NVIDIA GT 1030.
- Iz registra HKEY_CURRENT_USER\Software\Wine\Direct3D uključen je ključ „UseGLSL”, umjesto kojeg se od Wine 5.0 treba koristiti „shader_backend”.
- Za podršku Direct3D 12 sada je potrebna biblioteka vkd3d minimum verzije 1.2.
- D3DX
- U implementaciji D3DX 10 poboljšana je podrška za okvir vizualnih efekata i dodana podrška za format slika Windows Media Photo (JPEG XR).
- Dodane su funkcije za stvaranje tekstura u D3DX10, kao što je D3DX10CreateTextureFromMemory().
- Djelomično su implementirani programski sučelja ID3DX10Sprite i ID3DX10Font.
- Zvuk i video
- Sveobuhvatni WineGStreamer backend ujedinjuje GStreamer dodatke za DirectShow i okvir Media Foundation, što bi trebalo pojednostaviti razvoj novih API-ja za dekodiranje sadržaja.
- Na bazi backend-a WineGStreamer implementirani su objekti Windows Media za sinkrono i asinkrono čitanje.
- Nastavljena je dorada implementacije okvira Media Foundation, dodana je podrška za funkcionalnosti IMFPMediaPlayer, alokator uzoraka (sample allocator), poboljšana podrška za EVR i bufferi za iscrtavanje SAR.
- Uklonjena je biblioteka wineqtdecoder koja je pružala dekoder za QuickTime format (svi kodeci sada koriste GStreamer).
- Uređaji za ulaz
- Significantly improved stack for input devices supporting the HID (Human Interface Devices) protocol, implementing features such as parsing HID descriptors, handling HID messages, and providing HID mini-drivers.
- Improvements in the winebus.sys driver backends for translating device descriptions into HID messages.
- A new DirectInput backend has been added for joysticks supporting the HID protocol. The capability to use feedback effects in joysticks has been implemented. Improved upravljačka ploča interaction with devices compatible with XInput. In WinMM, joystick support has been transitioned to DInput, instead of using the evdev backend in Linux and IOHID in macOS IOHID. The old joystick driver winejoystick.drv has been removed.
- The DInput module has new tests based on the application of virtual HID devices and does not require physical devices.
- Tekst i fontovi
- A Font Set object has been added to DirectWrite.
- The TextHost interface has been correctly implemented in RichEdit.
- Jezgro (Windows jezgreni interfesi)
- When starting an unidentified executable file in Wine (for example, 'wine foo.msi'), start.exe is now called, which invokes handlers associated with the file type.
- Support for synchronization mechanisms NtAlertThreadByThreadId and NtWaitForAlertByThreadId has been added, similar to futexes in Linux.
- Support for NT debug objects used for debugging kernel functions has been added.
- Support for dynamic registry keys for storing performance data has been added.
- C Runtime
- A complete set of mathematical functions has been implemented in the C runtime, mostly transferred from the Musl library.
- Correct support for floating-point computation functions has been provided for all CPU platforms.
- Mrežne mogućnosti
- Compatibility mode with Internet Explorer 11 (IE11) has been improved, which is now used by default for handling HTML documents.
- The mshtml library has implemented the ES6 (ECMAScript 2015) JavaScript mode, which supports features such as let expressions and the Map object.
- Installation of Wine MSI packages with Gecko engine add-ons in the working directory is now done as needed, rather than during Wine updates.
- Dodana podrška za DTLS protokol.
- The NSI (Network Store Interface) service has been implemented, which stores and transmits routing and network interface information on the computer to other services.
- API WinSock handleri, kao što su setsockopt i getsockopt, premješteni su u biblioteku NTDLL i drajver afd.sys kako bi se uskladili s arhitekturom Windows-a.
- U radni katalog Wine sada se postavljaju vlastite datoteke s mrežnim DB-ima, poput /etc/protocols i /etc/networks, umjesto pozivanja sličnih Unix DB-a.
- Alternativne platforme
- Dodana podrška za Apple hardver temeljenu na ARM čipovima M1 (Apple Silicon).
- Za podršku funkcijama BCrypt i Secur32 na macOS platformi sada je potrebna instalacija biblioteke GnuTLS.
- 32-bitne izvršne datoteke za ARM platforme sada se koriste u Thumb-2 režimu, sličnom Windows-u. Za učitavanje takvih datoteka koristi se preloader.
- Za 32-bitne ARM platforme implementirana je podrška za unrolling (rasvjetljavanje) izuzetaka.
- FreeBSD podržava veći broj niskonivojskih zahtjeva za sustavske informacije, kao što su podaci o stanju memorije i razini napunjenosti baterije.
- Integrirane aplikacije i alati za razvoj
- Alatu reg.exe dodana je podrška za 32- i 64-bitne prikaze registra. Dodana je podrška za kopiranje registarskih ključeva.
- Alatu WineDump dodana je podrška za ispis dumpa metapodataka Windows-a i prikaz detaljnih informacija o CodeView zapisima.
- U debageru Wine Debugger (winedbg) implementirana je mogućnost debagiranja 32-bitnih procesa iz 64-bitnog debuggera.
- U IDL kompajler (widl) dodana je mogućnost učitavanja biblioteka ugrađenih u PE datoteke, osigurana je podrška za specifične WinRT atribute i konstrukcije, kao i mogućnost pretrage biblioteka u vezi s platformom.
- Sistem izgradnje
- U specifičnim direktorijima za hardverske arhitekture, biblioteke se sada čuvaju s imenima koja odražavaju arhitekturu i tip izvršnih datoteka, na primjer, 'i386-windows' za PE format i 'x86_64-unix' za unix biblioteke, što omogućava podršku za različite arhitekture u jednoj Wine instalaciji i osigurava krosover prevod Winelib-a.
- Za postavljanje opcija u PE datoteke koje upravljaju prelaskom na korištenje domaćih DLL biblioteka, u winebuild je dodana zastavica '--prefer-native option' (obrada DLL_WINE_PREATTACH u DllMain je prekinuta).
- Dodana je podrška za 4. verziju formata debug podataka Dwarf, koja se sada koristi kao zadana prilikom gradnje Wine biblioteka.
- Dodana je opcija za gradnju '--enable-build-id' za pohranu jedinstvenih identifikatora gradnje u izvršne datoteke.
- Dodana podrška za korištenje Clang kompajlera u MSVC načinu rada.
- Razno
- Nazivi tipičnih direktorija u korisničkom sučelju (Windows Shell) usklađeni su s shemom koja se primjenjuje od Windows Vista, tj. umjesto 'My Documents' sada se stvara direktorij 'Documents', dok se većina podataka sprema u direktorij 'AppData'.
- U sloju za OpenCL biblioteku dodana podrška za OpenCL 1.2 specifikaciju.
- U WinSpool drajveru dodana podrška za razne veličine stranica prilikom ispisa.
- Dodana početna podrška za MSDASQL, Microsoft OLE DB provider za ODBC drajvere.
- Wine Mono engine s implementacijom platforme .NET ažuriran je na verziju 7.0.0.
- Unicode podaci ažurirani su na Unicode 14 specifikaciju.
- U izvorno stablo ugrađene su biblioteke Faudio, GSM, LCMS2, LibJPEG, LibJXR, LibMPG123, LibPng, LibTiff, LibXml2, LibXslt i Zlib, koje se kompiliraju u PE formatu i ne zahtijevaju Unix varijante. Također, te biblioteke mogu biti uvezene iz sustava za korištenje vanjskih kompilacija umjesto ugrađenih PE varijanti.
Izvor: opennet.ru
