Nakon godinu dana razvoja i 30 eksperimentalnih verzija, predstavljeno je stabilno izdanje otvorene implementacije Win32 API-ja - Wine 7.0, u koje je ugrađeno više od 9100 promjena. Ključna postignuća nove verzije uključuju prijevod većine Wine modula u PE format, podršku za teme, proširenje stoga za joysticke i ulazne uređaje s HID sučeljem te implementaciju WoW64 arhitekture za pokretanje 32-bitnih programa u 64-bitno okruženje.
Wine je potvrdio puni rad 5156 (prije godinu dana 5049) programa za Windows, još 4312 (prije godinu dana 4227) programa radi savršeno s dodatnim postavkama i vanjskim DLL-ovima. 3813 programa (prije 3703 godine) ima manje probleme u radu koji ne ometaju korištenje glavnih funkcija aplikacija.
Ključne inovacije u Wineu 7.0:
- Moduli u PE formatu
- Gotovo svi DLL-ovi su pretvoreni u PE (Portable Executable, koristi se u sustavu Windows) format izvršne datoteke umjesto ELF-a. Korištenje PE-a rješava probleme s podrškom za različite sheme zaštite od kopiranja koje provjeravaju identitet modula sustava na disku iu memoriji.
- Implementirana je mogućnost interakcije PE modula s Unix bibliotekama korištenjem standardnog sistemskog poziva NT kernela, što vam omogućuje da sakrijete pristup Unix kodu od Windows programa za ispravljanje pogrešaka i nadgledate registraciju niti.
- Ugrađeni DLL-ovi sada se učitavaju samo ako postoji odgovarajuća PE datoteka na disku, bez obzira na to radi li se o pravoj biblioteci ili stubu. Ova promjena omogućuje aplikaciji da uvijek vidi ispravno vezanje na PE datoteke. Da biste onemogućili ovo ponašanje, možete koristiti varijablu okoline WINEBOOTSTRAPMODE.
- WoW64
- Implementirana je WoW64 arhitektura (64-bitni Windows-on-Windows) koja vam omogućuje pokretanje 32-bitnih Windows aplikacija u 64-bitnim Unix procesima. Podrška je implementirana kroz povezivanje sloja koji prevodi 32-bitne pozive NT sustava u 64-bitne pozive prema NTDLL-u.
- WoW64 slojevi pripremljeni su za većinu Unix biblioteka i omogućuju 32-bitnim PE modulima pristup 64-bitnim Unix bibliotekama. Nakon što se svi moduli pretvore u PE format, bit će moguće pokretati 32-bitne Windows aplikacije bez instaliranja 32-bitnih Unix biblioteka.
- Teme
- Implementirana je podrška za teme. Uključene su teme dizajna “Light”, “Blue” i “Classic Blue”, koje se mogu odabrati putem WineCfg konfiguratora.
- Dodana je mogućnost prilagodbe izgleda svih kontrola sučelja putem tema. Izgled elemenata automatski se ažurira nakon promjene teme dizajna.
- Podrška za teme dodana je svim ugrađenim Wine aplikacijama. Aplikacije su prilagođene ekranima visoke gustoće piksela (High DPI).
- Grafički podsustav
- Dodana je nova biblioteka Win32u koja uključuje dijelove biblioteka GDI32 i USER32 koji se odnose na obradu grafike i upravljanje prozorima na razini kernela. U budućnosti će započeti rad na prijenosu upravljačkih komponenti kao što su winex32.drv i winemac.drv na Win11u.
- Upravljački program Vulkan podržava specifikaciju Vulkan grafičkog API-ja 1.2.201.
- Omogućena podrška za ispis šrafiranih geometrijskih objekata putem Direct2D API-ja, uz mogućnost provjere je li klik pogodio (hit-test).
- Direct2D API pruža početnu podršku za vizualne efekte primijenjene pomoću sučelja ID2D1Effect.
- Direct2D API je dodao podršku za ID2D1MultiThread sučelje, koje se koristi za organiziranje ekskluzivnog pristupa resursima u aplikacijama s više niti.
- WindowsCodecs skup biblioteka pruža podršku za dekodiranje slika u WMP (Windows Media Photo) formatu i kodiranje slika u DDS (DirectDraw Surface) formatu. Više ne podržavamo kodiranje slika u ICNS formatu (za macOS), koji nije podržan u sustavu Windows.
- Direct3D
- Novi mehanizam za renderiranje značajno je poboljšan, prevodeći Direct3D pozive na Vulkan grafički API. U većini situacija, razina podrške za Direct3D 10 i 11 u motoru temeljenom na Vulkanu dovedena je u jednaku razinu sa starijim motorom temeljenim na OpenGL-u. Da biste omogućili mehanizam za prikazivanje Vulkan, postavite varijablu registra Direct3D "renderer" na "vulkan".
- Implementirane su mnoge značajke Direct3D 10 i 11, uključujući odgođene kontekste, objekte stanja koji rade u kontekstu uređaja, stalne pomake u međuspremnicima, brisanje pogleda teksture izvan reda, kopiranje podataka između resursa u formatima bez tipa (DXGI_FORMAT_BC3_TYPELESS, DXGI_FORMAT_R32G32B32A32_TYPELESS) itd. .
- Dodana podrška za konfiguracije s više monitora, što vam omogućuje odabir monitora za prikaz Direct3D aplikacije u načinu rada preko cijelog zaslona.
- DXGI API pruža gama korekciju zaslona, koju mogu koristiti aplikacije temeljene na Direct3D 10 i 11 za promjenu svjetline zaslona. Omogućeno dohvaćanje virtualnih brojača međuspremnika okvira (SwapChain).
- Direct3D 12 dodaje podršku za korijenske potpise verzije 1.1.
- U kodu za renderiranje putem Vulkan API-ja, poboljšana je učinkovitost obrade upita kada sustav podržava proširenje VK_EXT_host_query_reset.
- Dodana je mogućnost izlaza virtualnih međuspremnika okvira (SwapChain) putem GDI-ja ako se OpenGL ili Vulkan ne mogu koristiti za prikaz, na primjer, prilikom izlaza u prozor iz različitih procesa, na primjer, u programima koji se temelje na okviru CEF (Chromium Embedded Framework).
- Kada koristite GLSL shader backend, "precizni" modifikator je osiguran za shader upute.
- DirectDraw API dodaje podršku za 3D renderiranje u memoriju sustava pomoću softverskih uređaja kao što su "RGB", "MMX" i "Ramp".
- Karte AMD Radeon RX 3M, AMD Radeon RX 5500/6800 XT/6800 XT, AMD Van Gogh, Intel UHD Graphics 6900 i NVIDIA GT 630 dodane su u Direct1030D bazu podataka grafičkih kartica.
- Ključ “UseGLSL” je uklonjen iz registra HKEY_CURRENT_USER\Software\Wine\Direct3D, umjesto kojeg, počevši od Wine 5.0, morate koristiti “shader_backend”.
- Za podršku Direct3D 12 sada vam je potrebna barem verzija 3 biblioteke vkd1.2d.
- D3DX
- Implementacija D3DX 10 ima poboljšanu podršku za okvir vizualnih efekata i dodanu podršku za Windows Media Photo format slike (JPEG XR)
- Dodane su funkcije za stvaranje teksture u D3DX10, kao što je D3DX10CreateTextureFromMemory().
- Softverska sučelja ID3DX10Sprite i ID3DX10Font djelomično su implementirana.
- Zvuk i video
- GStreamer dodaci za DirectShow i okvir Media Foundation kombinirani su u jednu zajedničku WineGStreamer pozadinu, koja bi trebala pojednostaviti razvoj novih API-ja za dekodiranje sadržaja.
- Na temelju WineGStreamer pozadine, Windows Media objekti implementirani su za sinkrono i asinkrono čitanje.
- Implementacija okvira Media Foundation dodatno je poboljšana, dodana je podrška za funkcionalnost IMFPMediaPlayer i alat za dodjelu uzoraka, a poboljšana je podrška za međuspremnike za renderiranje EVR i SAR.
- Biblioteka wineqtdecoder, koja pruža dekoder za QuickTime format, je uklonjena (svi kodeci sada koriste GStreamer).
- Uređaji za unos
- Stog za ulazne uređaje koji podržavaju HID (Human Interface Devices) protokol značajno je poboljšan, pružajući mogućnosti kao što je analiziranje HID deskriptora, obrada HID poruka i pružanje mini-HID upravljačkih programa.
- U pozadinama drivera winebus.sys poboljšan je prijevod opisa uređaja u HID poruke.
- Dodan je novi DirectInput backend za joysticke koji podržavaju HID protokol. Implementirana je mogućnost korištenja povratnih efekata u joysticcima. Poboljšana upravljačka ploča joysticka. Optimizirana interakcija s uređajima kompatibilnim s XInputom. U WinMM-u je podrška za joystick premještena na DInput, umjesto korištenja pozadine evdev na Linuxu i IOHID na macOS IOHID. Stari upravljački program joysticka winejoystick.drv je uklonjen.
- Modulu DInput dodani su novi testovi koji se temelje na korištenju virtualnih HID uređaja i ne zahtijevaju fizički uređaj.
- Tekst i fontovi
- Dodan objekt Font Set u DirectWrite.
- RichEdit ispravno implementira TextHost sučelje.
- Kernel (Windows kernel sučelja)
- Prilikom pokretanja neidentificirane izvršne datoteke (kao što je 'wine foo.msi') u Wineu, sada se poziva start.exe, koji poziva rukovatelje povezane s vrstom datoteke.
- Dodana podrška za mehanizme sinkronizacije NtAlertThreadByThreadId i NtWaitForAlertByThreadId, slično futexima u Linuxu.
- Dodana podrška za NT debug objekte koji se koriste za debug funkcije jezgre.
- Dodana podrška za dinamičke ključeve registra za spremanje podataka o izvedbi.
- C Vrijeme izvođenja
- C runtime implementira cijeli skup matematičkih funkcija, koje su uglavnom prenesene iz Musl biblioteke.
- Sve CPU platforme pružaju ispravnu podršku za funkcije s pomičnim zarezom.
- Značajke umrežavanja
- Poboljšan način rada kompatibilnosti za Internet Explorer 11 (IE11), koji se sada prema zadanim postavkama koristi za obradu HTML dokumenata.
- Biblioteka mshtml implementira ES6 JavaScript mod (ECMAScript 2015), koji pruža podršku za značajke kao što su izraz let i objekt Map.
- Instalacija MSI paketa s dodacima Gecko motoru u Wine radni direktorij sada se vrši kada je to potrebno, a ne tijekom Wine ažuriranja.
- Dodana podrška za DTLS protokol.
- Implementirana je usluga NSI (Network Store Interface) koja pohranjuje i prenosi informacije o usmjeravanju i mrežnim sučeljima na računalu drugim servisima.
- WinSock API rukovatelji kao što su setsockopt i getsockopt premješteni su u NTDLL i upravljački program afd.sys radi usklađivanja s Windows arhitekturom.
- Datoteke Wineove vlastite mrežne baze podataka, kao što su /etc/protocols i /etc/networks, sada su instalirane u Wine radni direktorij, umjesto pristupa sličnim Unix bazama podataka.
- Alternativne platforme
- Dodana podrška za Apple opremu temeljenu na M1 ARM čipovima (Apple Silicon).
- Podrška za značajke BCrypt i Secur32 na macOS-u sada zahtijeva instalaciju biblioteke GnuTLS.
- 32-bitne izvršne datoteke za ARM platforme sada su izgrađene u načinu rada Thumb-2, slično Windowsu. Za učitavanje takvih datoteka koristi se predloader.
- Za 32-bitne ARM platforme implementirana je podrška za iznimke odmotavanja.
- Za FreeBSD, broj podržanih upita za sistemske informacije niske razine, kao što su status memorije i razina napunjenosti baterije, je proširen.
- Ugrađene aplikacije i razvojni alati
- Pomoćni program reg.exe dodao je podršku za 32- i 64-bitne preglede registra. Dodana podrška za kopiranje ključeva registra.
- Uslužni program WineDump dodao je podršku za izbacivanje Windows metapodataka i prikaz detaljnih informacija o unosima CodeView.
- Wine Debugger (winedbg) pruža mogućnost debugiranja 32-bitnih procesa iz 64-bitnog debuggera.
- IDL kompajleru (widl) dodana je mogućnost učitavanja biblioteka ugrađenih u PE datoteke, omogućena je podrška za atribute i konstrukcije specifične za WinRT, a implementirano je i pretraživanje biblioteka specifičnih za platformu.
- Montažni sustav
- U direktorijima specifičnim za arhitekturu, biblioteke se sada spremaju s nazivima koji odražavaju arhitekturu i vrstu izvršne datoteke, na primjer, 'i386-windows' za PE format i 'x86_64-unix' za unix biblioteke, dopuštajući podršku za različite arhitekture u jednu Wine instalaciju i omogućiti unakrsnu kompilaciju Wineliba.
- Za postavljanje opcije u zaglavljima PE datoteka koja kontrolira prijelaz na korištenje izvornih DLL-ova, zastavica '—prefer-native option' je dodana u winebuild (obrada DLL_WINE_PREATTACH u DllMain je zaustavljena).
- Dodana podrška za verziju 4 Dwarf formata podataka za otklanjanje pogrešaka, koji se sada koristi prema zadanim postavkama pri izgradnji Wine biblioteka.
- Dodana opcija izrade '—enable-build-id' za spremanje jedinstvenih identifikatora izrade u izvršne datoteke.
- Dodana podrška za korištenje Clang prevoditelja u MSVC kompatibilnom načinu rada.
- Miscelanea
- Imena tipičnih direktorija u korisničkoj ljusci (Windows Shell) dana su prema shemi koja se koristi počevši od Windows Vista, tj. Umjesto 'My Documents', sada se kreira direktorij 'Documents', a većina podataka sprema se u direktorij 'AppData'.
- Podrška za specifikaciju OpenCL 1.2 dodana je sloju knjižnice OpenCL.
- Upravljački program WinSpool dodao je podršku za različite veličine stranica prilikom ispisa.
- Dodana početna podrška za MSDASQL, pružatelja Microsoft OLE DB za ODBC upravljačke programe.
- Wine Mono engine s implementacijom .NET platforme ažuriran je na izdanje 7.0.0.
- Unicode podaci ažurirani su na Unicode 14 specifikaciju.
- Izvorno stablo uključuje biblioteke Faudio, GSM, LCMS2, LibJPEG, LibJXR, LibMPG123, LibPng, LibTiff, LibXml2, LibXslt i Zlib, koje su kompilirane u PE formatu i ne zahtijevaju verziju u Unix formatu. U isto vrijeme, te se biblioteke također mogu uvesti iz sustava za korištenje vanjskih sklopova umjesto ugrađenih PE opcija.
Izvor: opennet.ru