Stabilno izdanje Wine 5.0

Nakon godinu dana razvoja i 28 eksperimentalnih verzija predstavljen stabilno izdanje otvorene implementacije Win32 API-ja - vino 5.0, koji je uključivao više od 7400 izmjena. Ključna dostignuća nove verzije uključuju isporuku ugrađenih Wine modula u PE formatu, podršku za konfiguracije sa više monitora, novu implementaciju XAudio2 audio API-ja i podršku za Vulkan 1.1 grafički API.

In Wine potvrđeno pun rad 4869 (prije godinu dana 4737) programa za Windows, još 4136 (prije godinu dana 4045) programa rade savršeno sa dodatnim podešavanjima i eksternim DLL-ovima. 3635 programa ima manje probleme s performansama koji ne ometaju korištenje osnovnih funkcija aplikacije.

Ključ inovacije Vino 5.0:

  • Moduli u PE formatu
    • Sa MinGW kompajlerom, većina Wine modula je sada izgrađena u PE (Portable Executable, koristi se u Windowsima) izvršnom formatu datoteke umjesto ELF. Upotreba PE rešava probleme sa podrškom različitih šema zaštite od kopiranja koje verificiraju identitet sistemskih modula na disku iu memoriji;
    • PE izvršni fajlovi se sada kopiraju u ~/.wine ($WINEPREFIX) direktorijum umesto da koriste lažne DLL datoteke, čineći stvari sličnijim pravim Windows instalacijama, po cenu trošenja dodatnog prostora na disku;
    • Moduli pretvoreni u PE format mogu koristiti standardni wchar C funkcije i konstante sa Unicode-om (na primjer, L"abc");
    • Wine C runtime ima dodatnu podršku za povezivanje sa binarnim datotekama ugrađenim u MinGW, koji se podrazumevano koristi umesto MinGW vremena izvođenja kada se pravi DLL;
  • Grafički podsistem
    • Dodata podrška za rad sa više monitora i grafičkih adaptera, uključujući mogućnost dinamičke promjene postavki;
    • Drajver za Vulkan grafički API je ažuriran kako bi bio u skladu sa specifikacijom Vulkan 1.1.126;
    • WindowsCodecs biblioteka pruža mogućnost konverzije dodatnih rasterskih formata, uključujući formate sa indeksiranom paletom;
  • Direct3D
    • Prilikom pokretanja Direct3D aplikacija preko celog ekrana, poziv čuvara ekrana je blokiran;
    • DXGI (DirectX Graphics Infrastructure) ima dodatnu podršku za obavještavanje aplikacije kada je njen prozor minimiziran, što omogućava aplikaciji da smanji performanse resursno intenzivnih operacija prilikom minimiziranja prozora;
    • Za aplikacije koje koriste DXGI, sada je moguće prebacivanje između režima preko celog ekrana i režima prozora koristeći kombinaciju Alt+Enter;
    • Mogućnosti implementacije Direct3D 12 su proširene, na primer, sada postoji podrška za prebacivanje između režima preko celog ekrana i režima sa prozorima, promenu režima ekrana, skaliranje izlaza i upravljanje intervalom zamene bafera za renderovanje (swap interval);
    • Poboljšano rukovanje raznim graničnim situacijama, kao što je korištenje ulaznih vrijednosti izvan raspona za testove transparentnosti i dubine, renderiranje s reflektiranim teksturama i međuspremnicima i korištenje neispravnih DirectDraw objekata clipper, kreiranje Direct3 uređaja za neispravne prozore, korištenje vidljivih područja čije su minimalne vrijednosti parametara jednake maksimalnim itd.
    • Direct3D 8 i 9 pružaju preciznije praćenje "prljavo» područja učitanih tekstura;
    • Veličina potrebnog adresnog prostora pri učitavanju 3D tekstura komprimiranih pomoću S3TC metode je smanjena (umjesto potpunog učitavanja, teksture se učitavaju u komadima).
    • Interfejs implementiran ID3D11Multithread za zaštitu kritičnih sekcija u višenitnim aplikacijama;
    • Za starije DirectDraw aplikacije napravljena su razna poboljšanja i popravke u vezi sa proračunima osvjetljenja;
    • Implementirani dodatni pozivi za dobivanje informacija o shaderima u API-ju ShaderReflection;
    • wined3d sada podržava blitter CPU baziran za obradu komprimiranih resursa;
    • Baza podataka grafičkih kartica prepoznatih u Direct3D je proširena;
    • Dodati novi ključevi registra HKEY_CURRENT_USER\Software\Wine\Direct3D: “shader_backend” (pozadina za rad sa shaderima: “glsl” za GLSL, “arb” za ARB vrh/fragment i “none” za onemogućavanje podrške za shadere), “strict_shader_math” ( 0x1 - omogući, 0x0 - onemogući Direct3D konverziju shadera). Zastario ključ "UseGLSL" (treba koristiti "shader_backend");
  • D3DX
    • Implementirana je podrška za mehanizam kompresije 3D teksture S3TC (S3 Texture Compression);
    • Dodate ispravne implementacije operacija kao što su popunjavanje teksture i površine koje se ne mogu mapirati;
    • Različita poboljšanja i popravke su napravljene u okviru za kreiranje vizuelni efekti;
  • Kernel (Windows Kernel Interface)
    • Većina funkcija korištenih u Kernelu32 je premještena
      KernelBase, nakon promjena u arhitekturi Windowsa;

    • Mogućnost mešanja 32- i 64-bitnih DLL-ova u direktorijumima koji se koriste za učitavanje. Osigurava da se biblioteke koje ne odgovaraju trenutnoj dubini bita ignoriraju (32/64), u slučaju da je dalje duž putanje moguće pronaći biblioteku koja je ispravna za trenutnu dubinu bita;
    • Za drajvere uređaja, poboljšana je emulacija objekata kernela;
    • Implementirani objekti sinhronizacije koji rade na nivou kernela, kao što su zaključavanja okretaja, brzi muteksi i varijable prikačene na resurs;
    • Osigurava da su aplikacije ispravno obaviještene o statusu baterije;
  • Korisnički interfejs i integracija radne površine
    • Minimizirani prozori se sada prikazuju pomoću naslovne trake, a ne ikone u stilu Windows 3.1;
    • Dodani novi stilovi dugmadi SplitButton (dugme sa padajućom listom radnji) i Komandne veze (linkovi u dijaloškim okvirima koji se koriste za prelazak na sljedeću fazu);
    • Simboličke veze su kreirane za fascikle 'Preuzimanja' i 'Šablone', koje upućuju na odgovarajuće direktorijume na Unix sistemima;
  • Uređaji za unos
    • Prilikom pokretanja, potrebni upravljački programi Plug & Play uređaja se instaliraju i učitavaju;
    • Poboljšana podrška za kontrolere za igre, uključujući mini-džojstik (prekidač za šešir), volan, pedale za gas i kočnicu.
    • Podrška za stari Linux džojstik API koji se koristio u Linux kernelima prije verzije 2.2 je ukinut;
  • .NET
    • Mono motor je ažuriran na izdanje 4.9.4 i sada uključuje dijelove Windows Presentation Foundation (WPF) okvira;
    • Dodata mogućnost instaliranja dodataka sa Mono i Gecko u jednom zajedničkom direktoriju, stavljanjem datoteka u /usr/share/wine hijerarhiju umjesto kopiranja na nove prefikse;
  • Značajke umrežavanja
    • Wine Gecko pretraživač pretraživač, koji se koristi u MSHTML biblioteci, ažuriran je na izdanje 2.47.1. Implementirana je podrška za nove HTML API-je;
    • MSHTML sada podržava SVG elemente;
    • Dodane su mnoge nove VBScript funkcije (na primjer, obrađivači grešaka i izuzetaka, Sat, Dan, Mjesec, String, LBound, RegExp.Replace, RScriptTypeInfo_* i ScriptTypeComp_Bind* funkcije, itd.);
    • Obezbeđeno očuvanje stanja koda u VBScript i JScript (postojanost skripte);
    • Dodata početna implementacija HTTP usluge (WinHTTP) i pridruženog API-ja (HTTPAPI) za klijentske i serverske aplikacije koje šalju i primaju zahtjeve koristeći HTTP protokol;
    • Implementirana mogućnost dobivanja HTTP proxy postavki putem DHCP-a;
    • Dodata podrška za preusmjeravanje zahtjeva za autentifikaciju putem usluge Microsoft Passport;
  • Kriptografija
    • Implementirana podrška za kriptografske ključeve eliptičke krivulje (ECC) kada se koristi GnuTLS;
    • Dodata mogućnost uvoza ključeva i certifikata iz datoteka u PFX formatu;
    • Dodata podrška za šemu generisanja ključeva zasnovanu na PBKDF2 lozinki;
  • Tekst i fontovi
    • Implementacija DirectWrite API-ja je dodala podršku za OpenType funkcije vezane za pozicioniranje glifa, koji su podrazumevano omogućeni za latinski stil, uključujući kerning;
    • Poboljšana sigurnost za obradu podataka fontova provjeravanjem ispravnosti različitih tablica podataka prije njihove upotrebe;
    • DirectWrite interfejsi su usklađeni sa najnovijim SDK;
  • Zvuk i video
    • Predložena je nova implementacija zvučnog API-ja XAudio2, izgrađen na osnovu projekta FAudio. Korišćenje FAudio u Wine-u vam omogućava da postignete viši kvalitet zvuka u igrama i koristite funkcije kao što su miksovanje jačine zvuka i napredni zvučni efekti;
    • Veliki broj novih poziva je dodat implementaciji Media Foundation okvira, uključujući podršku za ugrađene i prilagođene asinkrone redove, API za čitanje izvora, sesiju medija itd.
    • Filter za video snimanje je prebačen na korištenje v4l2 API-ja umjesto v4l1 API-ja, što je proširilo raspon podržanih kamera;
    • Uklonjeni su ugrađeni AVI, MPEG-I i WAVE dekoderi, umjesto kojih se sada koriste sistemski GStreamer ili QuickTime;
    • Dodan podskup API-ja za konfiguraciju VMR7;
    • Dodata podrška za prilagođavanje jačine pojedinačnih kanala zvučnim drajverima;
  • Internacionalizacija
    • Unicode tabele ažurirane na verziju 12.1.0;
    • Implementirana podrška za Unicode normalizaciju;
    • Obezbeđena automatska instalacija geografskog regiona (HKEY_CURRENT_USER\Control Panel\International\Geo) na osnovu trenutnog lokaliteta;
  • RPC/COM
    • Dodata podrška za složene strukture i nizove u typelib;
    • Dodata početna implementacija Windows Script runtime biblioteke;
    • Dodata početna implementacija biblioteke ADO (Microsoft ActiveX Data Objects);
  • Instalateri
    • Implementirana je podrška za isporuku zakrpa (patch Files) za MSI instalater;
    • Uslužni program WUSA (Windows Update Standalone Installer) sada ima mogućnost instaliranja ažuriranja u .MSU formatu;
  • ARM platforma
    • Za ARM64 arhitekturu, podrška za odmotavanje steka je dodana u ntdll. Dodata podrška za povezivanje eksternih libunwind biblioteka;
    • Za arhitekturu ARM64 implementirana je podrška za bešavne proksije za objektna sučelja;
  • Razvojni alati / Winelib
    • Dodata mogućnost korištenja debuggera iz Visual Studio-a za daljinsko otklanjanje grešaka u aplikacijama koje rade u Wine-u;
    • Biblioteka DBGENG (Debug Engine) je djelimično implementirana;
    • Binarne datoteke kompajlirane za Windows više ne zavise od libwine-a, omogućavajući im da rade na Windows-u bez dodatnih ovisnosti;
    • Dodata opcija '--sysroot' kompajleru resursa i IDL kompajleru za određivanje putanje za datoteke zaglavlja;
    • Dodane opcije '—cilj', '—vino-objdir', '—vino-objdir' u winegcc
      '—winebuild' i '-fuse-ld', koji pojednostavljuju postavljanje okruženja za unakrsnu kompilaciju;

  • Ugrađene aplikacije
    • Implementiran CHCP uslužni program za konfiguriranje kodiranja konzole;
    • Implementiran je MSIDB uslužni program za manipulaciju bazama podataka u MSI formatu;
  • Optimizacija performansi
    • Različite funkcije za mjerenje vremena su migrirane da koriste funkcije sistemskog tajmera visokih performansi, smanjujući opterećenje u render petlji mnogih igara;
    • Dodata mogućnost korištenja Ext4 u FS režima rad bez osjetljivosti na velika i mala slova;
    • Optimizirane su performanse obrade velikog broja elemenata u dijalozima prikaza liste koji rade u LBS_NODATA modu;
    • Dodata brža implementacija SRW zaključavanja (Slim Reader/Writer) za Linux, prevedena na Futex;
  • Eksterne zavisnosti
    • Za sastavljanje modula u PE formatu koristi se unakrsni kompajler MinGW-w64;
    • Implementacija XAudio2 zahtijeva FAudio biblioteku;
    • Za praćenje promjena datoteka na BSD sistemima
      koristi se biblioteka Inotify;

    • Za rukovanje izuzecima na ARM64 platformi, potrebna je biblioteka Unwind;
    • Umjesto Video4Linux1, sada je potrebna biblioteka Video4Linux2.

izvor: opennet.ru

Dodajte komentar