Po letu razvoja in 28 eksperimentalnih različic stabilna izdaja odprte različice Win32 API — , ki je vključevala več kot 7400 sprememb. Med ključnimi dosežki nove različice izstopa dobava vgrajenih modulov Wine v formatu PE, podpora za večmonitorne nastavitve, nova prenova zvočnega API XAudio2 in podpora za grafični API Vulkan 1.1.
V Wine ima zdaj polno delovanje 4869 (pred enim letom 4737) programov za Windows, dodatnih 4136 (pred enim letom 4045) programov deluje odlično ob dodatnih nastavitvah in zunanjih DLL-jih. Pri 3635 programih opazimo manjše težave pri delu, ki ne ovira uporabe osnovnih funkcij aplikacij.
Ključne Wine 5.0:
- Moduli v formatu PE
- Ob prisotnosti prevajalnika MinGW se zdaj večina modulov Wine sestavlja v formatu izvršljivih datotek PE (Portable Executable, uporablja se v Windows) namesto ELF. Uporaba PE rešuje težave s podporo različnim zaščitnim mehanizmom proti kopiranju, ki preverjajo identiteto sistemskih modulov na disku in v pomnilniku;
- Izvršljive datoteke PE se zdaj kopirajo v imenik ~/.wine ($WINEPREFIX) namesto da bi uporabljali lažne DLL-datoteke, kar napravo bolj približa realnim namestitvam Windows, ob ceni dodatnega prostora na disku;
- Moduli, pretvorjeni v format PE, lahko uporabljajo standardne C-funkcije in konstante z unikatnimi znaki (na primer, L"abc");
- V Wine C runtime je bila dodana podpora za povezovanje z binarnimi datotekami, zgrajenimi v MinGW, ki se pri sestavljanju DLL privzeto uporablja namesto MinGW runtime;
- Grafični sistem
- Dodana je bila podpora za delovanje z več monitorji in grafičnimi adapterji, vključno z možnostjo dinamične spremembe nastavitev;
- Posodobljen je bil gonilnik za grafični API Vulkan, ki je usklajen s specifikacijo Vulkan 1.1.126;
- V knjižnici WindowsCodecs je bila implementirana možnost pretvorbe dodatnih rastrskih formatov, vključno s formati z indekserano paleto;
- Direct3D
- Pri izvajanju aplikacij v celozaslonskem načinu je bila zagotovljena blokada klica varnostnega skrbnika;
- V DXGI (DirectX Graphics Infrastructure) je bila dodana podpora za obveščanje aplikacije o minimizaciji njenega okna, kar omogoča aplikaciji, da zmanjša izvajanje virov ob zmanjšanju okna;
- Za aplikacije, ki uporabljajo DXGI, je bila uvedena možnost preklapljanja med celozaslonskim in okenjskim načinom s kombinacijo Alt+Enter;
- Razširjene so možnosti izvajanja Direct3D 12, na primer, dodana je podpora za preklapljanje med celozaslonskim in okenjskim načinom, spremembo načinov zaslona, izhodom s skaliranjem in upravljanjem intervala izmenjave okvirjev (swap interval);
- Izboljšano je obravnavanje različnih robnih situacij, kot so uporaba izhodnih vrednosti, ki presegajo dovoljene razpone za teste prosojnosti in globine, izris z odraženimi teksturami in buferji, uporaba neveljavnih predmetov DirectDraw. , ustvarjanje naprav Direct3 za neveljavna okna, uporaba vidnih območij, katerih minimumi imajo enake maksimume itd.
- V Direct3D 8 in 9 je natančneje slediti "" območjem nalaganih tekstur;
- Zmanjšana je velikost potrebnega naslovnega prostora pri nalaganju 3D-tekstur, sklanjanih s metodo S3TC (namesto da bi se nalagale v celoti, se teksture nalagajo po delih).
- Uveden je vmesnik za zaščito kritičnih sekcij v večnitenjskih aplikacijah;
- Za stare aplikacije DirectDraw so bile uvedene različne izboljšave in popravki, povezani z izračunavanjem osvetlitve;
- Uvedeni so dodatni klici za pridobitev informacij o senčnikih v API-ju ;
- V wined3d je bila dodana podpora za obdelavo stisnjenih virov;
- Razširjena je baza podatkov grafičnih kartic, prepoznanih v Direct3D;
- Dodani so novi registrski ključi HKEY_CURRENT_USER\Software\Wine\Direct3D: "shader_backend" (baze za delo s senčniki: "glsl" za GLSL, "arb" za ARB vertex/fragment in "none" za izklop podpore senčnikom), "strict_shader_math" (0x1 — omogoči, 0x0 — izklopi pretvorbo senčnikov Direct3D). Ključ "UseGLSL" je razglašen za zastarelega (uporabiti je treba "shader_backend");
- D3DX
- Uvedena je podpora za mehanizem stiskanja 3D-tekstur S3TC (S3 Texture Compression);
- Dodane so pravilne implementacije takšnih operacij, kot sta polnjenje s teksturo in neodsevne (unmappable) površine;
- Vnesene so različne izboljšave in popravki v okviru ustvarjanja ;
- Jezgro (interfejsi jezgra Windows-a)
- Večina funkcij, ki se uporabljajo v Kernel32, je bila prenesena v
KernelBase, v skladu s spremembami v arhitekturi Windows; - Možnost mešanja 32- in 64-bitnih DLL-jev v imenikih, ki se uporabljajo za nalaganje. Zagotovljeno je ignoriranje knjižnic, ki ne ustrezajo trenutni bitni širini (32/64), za primer, če se na poti najde ustrezna knjižnica za trenutno bitno širino;
- Za gonilnike naprav je izboljšana emulacija jedrskih objektov;
- Izvedeni so jedrski objekti za sinhronizacijo, kot so spin zaklepi, hitri mutexi in spremenljivke, povezane z virom;
- Zagotovljeno je pravilno obveščanje aplikacij o stanju baterije;
- Večina funkcij, ki se uporabljajo v Kernel32, je bila prenesena v
- Uporabniški vmesnik in integracija s namizjem
- Minimizirana okna se zdaj prikazujejo z uporabo naslovne vrstice, ne pa ikone v slogu Windows 3.1;
- Dodani so novi slogi gumbov (gumb z razpoložljivim seznamom dejanj) in (povezave v pogovornih oknih, ki se uporabljajo za prehod na naslednjo stopnjo);
- Za mape 'Downloads' in 'Templates' so ustvarjene simbolne povezave, ki kažejo na ustrezne imenike v Unix sistemih;
- Ulazni uređaji
- Ob zagonu je zagotovljena namestitev in nalaganje potrebnih gonilnikov naprav Plug & Play;
- Izboljšana podpora za igralne krmilnike, vključno z mini-joystickom (hat switch), volanom, pedalom za plin in zavora.
- Podpora za staro Linux API interakcijo z joysticki, ki se je uporabljala v jedrih Linuxa do različice 2.2, je bila ukinjena;
- .NET
- Mono motor je posodobljen na različico 4.9.4 in zdaj vključuje dele ogrodja Windows Presentation Foundation (WPF);
- Dodana je možnost namestitve dodatkov z Mono in Gecko v eno skupno mapo s postavitvijo datotek v hierarhiji /usr/share/wine namesto kopiranja v nove prefiksne mape;
- Mrežne mogućnosti
- Brskalni motor Wine Gecko, ki se uporablja v knjižnici MSHTML, je posodobljen na različico 2.47.1. Izvedena je podpora za nove HTML API;
- V MSHTML je bila podpora za SVG elemente;
- Dodane so številne nove funkcije VBScript (na primer, obdelovalci napak in izjem, funkcije Hour, Day, Month, String, LBound, RegExp.Replace, RScriptTypeInfo_* in ScriptTypeComp_Bind* itn.);
- Obezbeđena je trajnost skripti kod VBScript i JScript (persistence script);
- Dodana je začetna izvedba HTTP storitev (WinHTTP) in povezanega API (HTTPAPI) za odjemalske in strežniške aplikacije, ki pošiljajo in sprejemajo zahteve preko protokola HTTP;
- Uvedena je možnost pridobivanja nastavitev HTTP proxy-ja preko DHCP;
- Dodana je podpora za preusmerjanje zahtevkov za avtentikacijo preko storitve Microsoft Passport;
- Kryptografija
- Podprta je uporaba kriptografskih ključev na osnovi eliptičnih krivulj (ECC) z GnuTLS;
- Dodana je možnost uvoza ključev in certifikatov iz datotek v formatu PFX;
- Podprta je shema generiranja ključev na osnovi gesla PBKDF2;
- Tekst i fontovi
- V implementaciji API DirectWrite je dodana podpora za OpenType funkcije, povezane z , ki so privzeto vključene za pisavo Latin, vključno s kerningom;
- Izboljšana je varnost obdelave pisav z verificiranjem pravilnosti različnih tabel podatkov pred njihovo uporabo;
- Vmesniki DirectWrite so usklajeni z novim SDK;
- Zvuk i video
- Predlagana je nova implementacija avdio API-ja , zgrajena na osnovi projekta . Uporaba FAudio v Wine omogoča dosego višje kakovosti zvoka v igrah in uporabo možnosti, kot so mešanje glasnosti in razširjeni zvočni učinki;
- Dodano je veliko novih klicev v implementacijo ogrodja Media Foundation, vključno s podporo za vgrajene in uporabniške asinhrone vrste, Source Reader API, Media Session itd.
- Filter za zajem videa je prešel na uporabni API v4l2 namesto v4l1 API, kar je omogočilo širšo podporo za kamere;
- Odstranjeni so vgrajeni dekoderji AVI, MPEG-I in WAVE, namesto katerih se zdaj uporabljajo sistemski GStreamer ali QuickTime;
- Dodano je podmnožje konfiguracijskih API-jev VMR7;
- V zvočne gonilnike je dodana podpora za nastavitev glasnosti posameznih kanalov;
- Mednarodna podpora
- Unicode tabele so posodobljene na različico 12.1.0;
- Podprta je normalizacija Unicode;
- Zagotovljena je samodejna nastavitev geografske regije (HKEY_CURRENT_USER\Control Panel\International\Geo) na podlagi trenutne lokalizacije;
- RPC\/COM
- V typelib je dodana podpora za kompleksne strukture in tabele;
- Dodana je začetna implementacija runtime knjižnice Windows Script;
- Dodana je začetna implementacija knjižnice ADO (Microsoft ActiveX Data Objects);
- Namestitveni programi
- Za namestitveni program MSI je podprta dostava popravkov (Patch Files);
- V orodju WUSA (Windows Update Standalone Installer) je omogočena namestitev posodobitev v formatu .MSU;
- Platforma ARM
- Za arhitekturo ARM64 je v ntdll dodana podpora za razvejavanje skladov (stack unwinding). Dodana je podpora za povezovanje zunanjih knjižnic libunwind;
- Za arhitekturo ARM64 je podprta implementacija brezšivnih proxyjev (stubless proxies) za vmesnike objektov;
- Orodja za razvoj / Winelib
- Dodana možnost uporabe razhajevalnika iz Visual Studio za oddaljeno razhajevanje aplikacij, zagnanih v Wine;
- Delno je implementirana knjižnica DBGENG (Debug Engine);
- Zbrani izvršljivi datoteki za Windows zdaj niso odvisni od libwine, kar dopušča, da jih zagnate v Windows brez dodatnih odvisnosti;
- V Resource Compiler in IDL Compiler je dodana možnost ‘—sysroot’ za določanje poti do mest razporeditve glavi;
- V winegcc so dodane možnosti ‘—target’, ‘—wine-objdir’,
‘—winebuild’ in ‘-fuse-ld’, ki poenostavljajo nastavitev okolja za križno prevajanje;
- Vgrajene aplikacije
- Implementirana je orodje CHCP za nastavitev kodiranja konzole;
- Implementirana je orodje MSIDB za manipulacijo z bazami v formatu MSI;
- Optimizacija zmogljivosti
- Različne funkcije dela s časom so bile prenesene na uporabo visoko zmogljivih sistemskih funkcij za delo s časovnikom, kar je zmanjšalo stroške v zanki risanja mnogih iger;
- Dodana je možnost uporabe v FS Ext4 dela brez upoštevanja velike začetnice;
- Izvedena je optimizacija zmogljivosti pri obdelavi velikega števila elementov v dialogih za izhodne sezname, ki delujejo v načinu LBS_NODATA;
- Dodana je hitrejša implementacija SRW-zaklepov (Slim Reader/Writer) za Linux, prenesena na Futex;
- Zunanje odvisnosti
- Za zbiranje modulov v PE formatu je uporabljen križni prevajalnik MinGW-w64;
- Implementacija XAudio2 zahteva knjižnico FAudio;
- Za sledenje spremembam datotek na sistemih BSD
je uporabljena knjižnica Inotify; - Za obdelavo izjem na platformi ARM64 je potrebna knjižnica Unwind;
- Namesto Video4Linux1 zdaj zahteva knjižnico Video4Linux2.
Izvor: opennet.ru
