Nakon godinu dana razvoja i 28 eksperimentalnih verzija stabilna verzija otvorene implementacije Win32 API — , koji uključuje više od 7400 izmjena. Među ključnim dostignućima nove verzije ističe se isporuka ugrađenih Wine modula u PE formatu, podrška za višemonitorske konfiguracije, nova implementacija zvučnog API-ja XAudio2 i podrška za grafički API Vulkan 1.1.
U Wine-u puno funkcionalno rad 4869 (prije godine 4737) programa za Windows, još 4136 (prije godine 4045) programa savršeno funkcionira uz dodatne postavke i vanjske DLL-ove. Kod 3635 programa zabilježeni su manji problemi u radu koji ne ometaju korištenje osnovnih funkcija aplikacija.
Ključne Wine 5.0:
- Moduli u PE formatu
- Uz prisustvo MinGW kompajlera, većina Wine modula sada se gradi u formatu izvršnih datoteka PE (Portable Executable, koristi se u Windowsu) umjesto ELF-a. Korištenje PE rješava probleme s podrškom za različite sheme zaštite od kopiranja, koje provjeravaju identitet sistemskih modula na disku i u memoriji;
- Izvršne datoteke PE sada se kopiraju u direktorij ~/.wine ($WINEPREFIX) umjesto korištenja lažnih DLL datoteka, što čini strukturu sličnijom pravim instalacijama Windowsa uz dodatno zauzimanje prostora na disku;
- Moduli, pretvoreni u PE format, mogu koristiti uobičajene C-funkcije i konstante s Unicodeom (na primjer, L"abc");
- U Wine C runtime dodana je podrška za povezivanje s binarnim datotekama, građenim u MinGW-u, koja se po defaultu koristi umjesto MinGW runtime-a prilikom izgradnje DLL-a;
- Grafički podsustav
- Dodana je podrška za rad s više monitora i grafičkih adaptera, uključujući mogućnost dinamičkog mijenjanja postavki;
- Ažuriran je drajver za grafički API Vulkan, koji je usklađen sa specifikacijom Vulkan 1.1.126;
- U biblioteci WindowsCodecs implementirana je mogućnost konverzije dodatnih raster formata, uključujući formate s indeksiranom paletom;
- Direct3D
- Prilikom izvršavanja aplikacija u punom ekranu, osigurana je blokada poziva čuvara ekrana;
- U DXGI (DirectX Graphics Infrastructure) dodana je podrška za obavještavanje aplikacije o minimiziranju njenog prozora, što omogućava aplikaciji da smanji izvođenje resursno zahtjevnih operacija prilikom smanjivanja prozora;
- Za aplikacije koje koriste DXGI, omogućeno je prebacivanje između punog ekrana i prozorskog moda pomoću kombinacije Alt+Enter;
- Proširene su mogućnosti implementacije Direct3D 12, na primjer, dodana je podrška za prebacivanje između punog ekrana i prozorskog moda, promjenu režima ekrana, izlaz s skaliranjem i upravljanje intervalom zamjene prikazivanja (swap interval);
- Poboljšano je rukovanje raznim rubnim situacijama, poput upotrebe izlaznih vrijednosti koje premašuju dozvoljene domete za testove transparentnosti i dubine, prikaz s reflektiranim teksturama i spremnicima, korištenje neispravnih DirectDraw objekata. , stvaranje Direct3 uređaja za neispravne prozore, korištenje vidljivih područja čije su minimalne vrijednosti parametara jednake maksimalnim i sl.;
- U Direct3D 8 i 9 osigurano je preciznije praćenje "" područja učitanih tekstura;
- Smanjena je veličina potrebnog adresnog prostora pri učitavanju 3D tekstura, komprimiranih metodom S3TC (umjesto potpunog učitavanja, teksture se učitavaju u komadima).
- Implementirano je sučelje za zaštitu kritičnih sekcija u višedretvenim aplikacijama;
- Za stare DirectDraw aplikacije unijeta su različita poboljšanja i ispravke vezane za izračun osvjetljenja;
- Implementirani su dodatni pozivi za dobivanje informacija o šejderima u API-ju ;
- U wined3d dodana je podrška na bazi CPU za obradu komprimiranih resursa;
- Proširena je baza podataka grafičkih kartica prepoznatljivih u Direct3D;
- Dodani su novi registri HKEY_CURRENT_USER\Software\Wine\Direct3D: „shader_backend“ (backend za rad sa šejderima: „glsl“ za GLSL, „arb“ za ARB vertex/fragment i „none“ za isključenje podrške za šejdere), „strict_shader_math“ (0x1 — uključiti, 0x0 — isključiti konverziju Direct3D šejdera). Oznaka „UseGLSL“ je označena kao zastarjela (treba koristiti „shader_backend“);
- D3DX
- Implementirana je podrška za mehanizam kompresije 3D tekstura S3TC (S3 Texture Compression);
- Dodane su ispravne implementacije takvih operacija, kao što su punjenje teksturom i neodrazive (unmappable) površine;
- Unesena su različita poboljšanja i ispravke u okviru za stvaranje ;
- Jezgro (Windows jezgreni interfesi)
- Većina funkcija korištenih u Kernel32 premještena je u
KernelBase, u skladu s promjenama u arhitekturi Windows; - Mogućnost kombiniranja 32- i 64-bitnih DLL datoteka u direktorijima koji se koriste za učitavanje. Osigurano je ignoriranje biblioteka koje ne odgovaraju trenutnoj bitnosti (32/64), u slučaju da se na putu uspije pronaći ispravna biblioteka za trenutnu bitnost;
- Za upravljačke programe uređaja poboljšana je emulacija objekata jezgre;
- Implementirani su objekti sinkronizacije na razini jezgre, kao što su spin-lockovi, brzi mutexi i varijable vezane uz resurs;
- Osigurano je točno obavještavanje aplikacija o stanju baterije;
- Većina funkcija korištenih u Kernel32 premještena je u
- Korisničko sučelje i integracija s radnom površinom
- Minimalizirana prozorska okna sada se prikazuju koristeći naslov umjesto ikone u stilu Windows 3.1;
- Dodani su novi stilovi gumba (gumb s padajućim popisom radnji) i (linkovi u dijaloškim prozorima korištenim za prelazak na sljedeću fazu);
- Za mape 'Downloads' i 'Templates' stvorene su simboličke veze koje upućuju na odgovarajuće direktorije u Unix sustavima;
- Uređaji za ulaz
- Pri pokretanju osigurana je instalacija i učitavanje potrebnih upravljačkih programa uređaja Plug & Play;
- Poboljšana je podrška za igraće kontrolere, uključujući mini-joystick (hat switch), volan, pedale za gas i kočnice.
- Prekinuta je podrška za stari Linux API za interakciju s joystickovima, korišten u jezgrama Linuxa do verzije 2.2;
- .NET
- Mono motor ažuriran je na verziju 4.9.4 i sada uključuje dijelove okvira Windows Presentation Foundation (WPF);
- Dodana je mogućnost instaliranja dodataka s Mono i Gecko u jedan zajednički direktorij s smještajem datoteka u hijerarhiji /usr/share/wine umjesto kopiranja u nove prefikse;
- Mrežne mogućnosti
- Web motor Wine Gecko, koji se koristi u biblioteci MSHTML, ažuriran je na verziju 2.47.1. Implementirana je podrška za nove HTML API;
- U MSHTML je implementirana podrška za SVG elemente;
- Dodane su mnoge nove funkcije VBScript-a (npr. rukovatelji pogreškama i iznimkama, funkcije Hour, Day, Month, String, LBound, RegExp.Replace, RScriptTypeInfo_* i ScriptTypeComp_Bind* itd.);
- Osigurano je očuvanje stanja koda u VBScript i JScript (script persistence);
- Dodana je osnovna implementacija HTTP servisa (WinHTTP) i povezanog API-ja (HTTPAPI) za klijentske i serverske aplikacije, koje šalju i primaju zahtjeve putem HTTP protokola;
- Implementirana je mogućnost dobivanja parametara za postavke HTTP proxyja putem DHCP;
- Dodana podrška za preusmjeravanje zahtjeva za autentifikaciju putem Microsoft Passport usluge;
- Kriptografija
- Implementirana podrška za kriptografske ključeve na bazi eliptičnih krivulja (ECC) prilikom korištenja GnuTLS;
- Dodana mogućnost uvoza ključeva i certifikata iz datoteka u PFX formatu;
- Dodana podrška za obrazac generiranja ključa temeljenog na lozinkama PBKDF2;
- Tekst i fontovi
- U implementaciji DirectWrite API-ja dodana podrška za OpenType mogućnosti vezane uz , koje su zadano uključene za latinično pismo, uključujući kerning;
- Povećana sigurnost obrade podataka o fontovima zahvaljujući provjeri ispravnosti različitih podataka prije njihove upotrebe;
- DirectWrite sučelja usklađena su s najnovijim SDK-om;
- Zvuk i video
- Predložena nova implementacija zvučnog API-ja , temeljena na projektu . Korištenje FAudio u Wine omogućuje postizanje bolje kvalitete zvuka u igrama i korištenje takvih mogućnosti kao što su miješanje glasnoće i prošireni zvučni efekti;
- Dodano je veliko broj novih poziva u implementaciju Media Foundation frameworka, uključujući podršku za ugrađene i korisničke asinkrone redove, Source Reader API, Media Session itd.
- Video snimač je prebačen na korištenje API-ja v4l2 umjesto v4l1 API-ja, što je proširilo opseg podržanih kamera;
- Uklonjeni su ugrađeni dekoderi AVI, MPEG-I i WAVE, umjesto njih sada se koriste sistemski GStreamer ili QuickTime;
- Dodano je podskup konfiguracijskih API-ja VMR7;
- U zvučne drajvere dodana je podrška za podešavanje glasnoće pojedinih kanala;
- Međunarodizacija
- Unicode tablice ažurirane su na verziju 12.1.0;
- Implementirana je podrška za normalizaciju Unicode;
- Osigurana je automatska postavka geografskog područja (HKEY_CURRENT_USER\Control Panel\International\Geo) temeljem trenutne lokalizacije;
- RPC/COM
- U typelib dodana je podrška za složene strukture i nizove;
- Dodana je osnovna implementacija runtime biblioteke Windows Script;
- Dodana je osnovna implementacija ADO biblioteke (Microsoft ActiveX Data Objects);
- Instalatori
- Za MSI instalator implementirana je podrška za isporuku zakrpa (Patch Files);
- U alatu WUSA (Windows Update Samostalni Instalator) dodana je mogućnost instalacije ažuriranja u .MSU formatu;
- ARM platforma
- Za ARM64 arhitekturu dodana je podrška za rasklapanje stoga (stack unwinding) u ntdll. Dodana je podrška za povezivanje vanjskih biblioteka libunwind;
- Za ARM64 arhitekturu implementirana je podrška za bešavne proxy (stubless proxies) za objekte sučelja;
- Alati za razvoj / Winelib
- Dodana je mogućnost korištenja Visual Studio debagera za daljinsko otklanjanje pogrešaka aplikacija pokrenutih u Wine;
- Djelomično je implementirana biblioteka DBGENG (Debug Engine);
- Izvršne datoteke sakupljene za Windows više ne ovise o libwine, što omogućuje njihovo pokretanje u Windows bez dodatnih ovisnosti;
- U Resource Compiler i IDL Compiler dodana je opcija ‘—sysroot’ za definiranje puta do zaglavnih datoteka;
- U winegcc dodane su opcije ‘—target’, ‘—wine-objdir’,
‘—winebuild’ i ‘-fuse-ld’, koje pojednostavljuju postavljanje okruženja za križnu kompilaciju;
- Ugrađene aplikacije
- Implementirana je CHCP alat za postavljanje kodiranja konzole;
- Implementiran je MSIDB alat za manipulaciju bazama u MSI formatu;
- Optimizacija performansi
- Različite funkcije rada s vremenom prebačene su na korištenje visokoučinkovitih sistemskih funkcija rada s tajmerom, što je smanjilo troškove u petlji prikazivanja mnogih igara;
- Dodana je mogućnost korištenja u Ext4 datotečnom sustavu rada bez obzira na veličinu slova;
- Provedena je optimizacija performansi obrade velikog broja elemenata u dijalozima za izbornike koji rade u LBS_NODATA načinu;
- Dodana je brža implementacija SRW zaključavanja (Slim Reader/Writer) za Linux, prebačena na Futex;
- Vanjske ovisnosti
- Za izgradnju modula u PE formatu korišten je križ-kompajler MinGW-w64;
- Implementacija XAudio2 zahtijeva biblioteku FAudio;
- Za praćenje promjena datoteka na BSD sustavima
koristi se biblioteka Inotify; - Za obradu iznimaka na ARM64 platformi potrebna je biblioteka Unwind;
- Umjesto Video4Linux1 sada je potrebna biblioteka Video4Linux2.
Izvor: opennet.ru
