Stabilno izdanje Wine 5.0

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

U Vinu potvrdio puni rad 4869 (prije godinu dana 4737) programa za Windows, još 4136 (prije godinu dana 4045) programa radi savršeno s dodatnim postavkama i vanjskim DLL-ovima. 3635 programa ima manje probleme s performansama koji ne ometaju korištenje osnovnih funkcija aplikacije.

Ključ inovacije Wine 5.0:

  • Moduli u PE formatu
    • Uz MinGW kompajler, većina Wine modula sada je izgrađena u PE (Portable Executable, koristi se u Windows) formatu izvršne datoteke umjesto ELF. 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;
    • PE izvršne datoteke sada se kopiraju u direktorij ~/.wine ($WINEPREFIX) umjesto korištenja lažnih DLL datoteka, čineći stvari sličnijima stvarnim Windows instalacijama, po cijenu trošenja dodatnog prostora na disku;
    • Moduli pretvoreni u PE format mogu koristiti standard wchar C funkcije i konstante s Unicodeom (na primjer, L"abc");
    • Wine C runtime je dodao podršku za povezivanje s binarnim datotekama ugrađenim u MinGW, koji se koristi prema zadanim postavkama umjesto MinGW runtimea prilikom izgradnje DLL-ova;
  • Grafički podsustav
    • Dodana podrška za rad s više monitora i grafičkih adaptera, uključujući mogućnost dinamičke promjene postavki;
    • Upravljački program za Vulkan grafički API je ažuriran kako bi bio u skladu sa specifikacijom Vulkan 1.1.126;
    • Biblioteka WindowsCodecs pruža mogućnost pretvaranja dodatnih rasterskih formata, uključujući formate s indeksiranom paletom;
  • Direct3D
    • Prilikom pokretanja Direct3D aplikacija preko cijelog zaslona, ​​poziv čuvara zaslona je blokiran;
    • DXGI (DirectX Graphics Infrastructure) je dodao podršku za obavještavanje aplikacije kada je njezin prozor minimiziran, što aplikaciji omogućuje smanjenje performansi operacija koje zahtijevaju velike resurse prilikom minimiziranja prozora;
    • Za aplikacije koje koriste DXGI, sada je moguće prebacivati ​​između cijelog zaslona i načina rada s prozorima pomoću kombinacije Alt+Enter;
    • Mogućnosti implementacije Direct3D 12 su proširene, na primjer, sada postoji podrška za prebacivanje između načina rada preko cijelog zaslona i načina rada s prozorima, mijenjanje načina rada zaslona, ​​skaliranje izlaza i upravljanje intervalom zamjene međuspremnika za renderiranje (interval zamjene);
    • Poboljšano rukovanje raznim graničnim situacijama, kao što je upotreba ulaznih vrijednosti izvan raspona za testove prozirnosti i dubine, renderiranje s reflektiranim teksturama i međuspremnicima i upotreba netočnih DirectDraw objekata kliper, stvaranje Direct3 uređaja za netočne prozore, korištenje vidljivih područja čije su minimalne vrijednosti parametara jednake maksimumu itd.
    • Direct3D 8 i 9 pružaju točnije praćenje "prljavi» područja učitanih tekstura;
    • Smanjena je veličina potrebnog adresnog prostora pri učitavanju 3D tekstura komprimiranih metodom S3TC (umjesto učitavanja u cijelosti, teksture se učitavaju u komadima).
    • Implementirano sučelje ID3D11Višenit za zaštitu kritičnih odjeljaka u aplikacijama s više niti;
    • Za starije DirectDraw aplikacije napravljena su različita poboljšanja i popravci koji se odnose na izračune osvjetljenja;
    • Implementirani dodatni pozivi za dobivanje informacija o shaderima u API-ju ShaderReflection;
    • wined3d sada podržava blitter Temeljen na procesoru za obradu komprimiranih resursa;
    • Baza podataka grafičkih kartica prepoznatih u Direct3D je proširena;
    • Dodani su novi ključevi registra HKEY_CURRENT_USER\Software\Wine\Direct3D: “shader_backend” (pozadina za rad s shaderima: “glsl” za GLSL, “arb” za ARB vertex/fragment i “none” za onemogućavanje podrške shadera), “strict_shader_math” ( 0x1 - omogući, 0x0 - onemogući pretvorbu Direct3D shadera). Zastario ključ "UseGLSL" (trebao bi koristiti "shader_backend");
  • D3DX
    • Implementirana je podrška za mehanizam kompresije 3D teksture S3TC (S3 Texture Compression);
    • Dodane ispravne implementacije operacija kao što su punjenje teksturom i nepreslikane površine;
    • Napravljena su različita poboljšanja i popravci okvira za izradu vizualni efekti;
  • Kernel (Windows kernel sučelja)
    • Većina funkcija korištenih u Kernelu32 premještena je u
      KernelBase, nakon promjena u Windows arhitekturi;

    • Mogućnost miješanja 32- i 64-bitnih DLL-ova u direktorijima koji se koriste za učitavanje. Osigurava da se biblioteke koje ne odgovaraju trenutnoj dubini bita zanemaruju (32/64), u slučaju da je dalje duž staze moguće pronaći biblioteku koja je ispravna za trenutnu dubinu bita;
    • Za upravljačke programe uređaja poboljšana je emulacija objekata jezgre;
    • Implementirani sinkronizacijski objekti koji rade na razini jezgre, kao što su spin zaključavanja, brzi muteksi i varijable pripojene resursu;
    • Osigurava da su aplikacije ispravno informirane o statusu baterije;
  • Korisničko sučelje i integracija radne površine
    • Minimizirani prozori sada se prikazuju pomoću naslovne trake umjesto ikone stila Windows 3.1;
    • Dodani novi stilovi gumba SplitButton (gumb s padajućim popisom radnji) i Zapovjedne veze (linkovi u dijaloškim okvirima koji se koriste za prelazak na sljedeću fazu);
    • Stvorene su simboličke veze za mape 'Preuzimanja' i 'Predlošci', koje upućuju na odgovarajuće direktorije na Unix sustavima;
  • Uređaji za unos
    • Prilikom pokretanja instalirani su i učitani potrebni Plug & Play upravljački programi uređaja;
    • Poboljšana podrška za kontrolere igara, uključujući mini-joystick (prekidač šešira), upravljač, papučice gasa i kočnice.
    • Podrška za stari Linux joystick API koji se koristio u Linux kernelima prije verzije 2.2 je prekinuta;
  • NET.
    • Motor Mono je ažuriran na izdanje 4.9.4 i sada uključuje dijelove okvira Windows Presentation Foundation (WPF);
    • Dodana je mogućnost instaliranja dodataka s Mono i Gecko u jednom zajedničkom direktoriju, smještajući datoteke u hijerarhiju /usr/share/wine umjesto da ih kopirate u nove prefikse;
  • Značajke umrežavanja
    • Wine Gecko preglednik, 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;
    • Dodano mnogo novih VBScript funkcija (na primjer, rukovatelji pogreškama i iznimkama, funkcije Sat, Dan, Mjesec, String, LBound, RegExp.Replace, RScriptTypeInfo_* i ScriptTypeComp_Bind* itd.);
    • Omogućeno očuvanje stanja koda u VBScriptu i JScriptu (postojanost skripte);
    • Dodana početna implementacija HTTP usluge (WinHTTP) i povezanog API-ja (HTTPAPI) za klijentske i poslužiteljske aplikacije koje šalju i primaju zahtjeve pomoću HTTP protokola;
    • Implementirana mogućnost dobivanja HTTP proxy postavki putem DHCP-a;
    • Dodana podrška za preusmjeravanje zahtjeva za autentifikaciju putem usluge Microsoft Passport;
  • Kriptografija
    • Implementirana podrška za kriptografske ključeve eliptične krivulje (ECC) kada se koristi GnuTLS;
    • Dodana mogućnost uvoza ključeva i certifikata iz datoteka u PFX formatu;
    • Dodana podrška za shemu generiranja ključeva na temelju PBKDF2 lozinke;
  • Tekst i fontovi
    • Implementacija API-ja DirectWrite dodala je podršku za značajke OpenType koje se odnose na pozicioniranje glifa, koji su prema zadanim postavkama omogućeni za latinski stil, uključujući kerning;
    • Poboljšana sigurnost za obradu podataka fontova provjerom ispravnosti različitih podatkovnih tablica prije njihove uporabe;
    • DirectWrite sučelja usklađena su s najnovijim SDK-om;
  • Zvuk i video
    • Predložena je nova implementacija zvučnog API-ja XAudio2, izgrađen na temelju projekta FAudio. Korištenje FAudija u Wineu omogućuje postizanje veće kvalitete zvuka u igrama i korištenje značajki kao što su miješanje glasnoće i napredni zvučni efekti;
    • Velik broj novih poziva dodan je implementaciji okvira Media Foundation, uključujući podršku za ugrađene i prilagođene asinkrone redove čekanja, Source Reader API, Media Session, itd.
    • Filtar za video snimanje prebačen je na korištenje v4l2 API-ja umjesto v4l1 API-ja, što je proširilo raspon podržanih kamera;
    • Ugrađeni AVI, MPEG-I i WAVE dekoderi su uklonjeni, umjesto kojih se sada koristi sustav GStreamer ili QuickTime;
    • Dodan podskup VMR7 konfiguracijskih API-ja;
    • Dodana podrška za podešavanje glasnoće pojedinačnih kanala zvučnim drajverima;
  • Internacionalizacija
    • Unicode tablice ažurirane na verziju 12.1.0;
    • Implementirana podrška za Unicode normalizaciju;
    • Omogućena automatska instalacija geografske regije (HKEY_CURRENT_USER\Control Panel\International\Geo) na temelju trenutne lokalne postavke;
  • RPC/COM
    • Dodana podrška za složene strukture i nizove u typelib;
    • Dodana početna implementacija Windows Script runtime knjižnice;
    • Dodana početna implementacija biblioteke ADO (Microsoft ActiveX Data Objects);
  • Instalateri
    • Implementirana je podrška za isporuku zakrpa (Patch Files) za MSI instalater;
    • WUSA (Windows Update Standalone Installer) uslužni program sada ima mogućnost instaliranja ažuriranja u .MSU formatu;
  • ARM platforma
    • Za arhitekturu ARM64, podrška za odmotavanje stoga dodana je u ntdll. Dodana podrška za povezivanje vanjskih libunwind biblioteka;
    • Za arhitekturu ARM64 implementirana je podrška za besprijekorne proxyje za objektna sučelja;
  • Razvojni alati / Winelib
    • Dodana je mogućnost korištenja alata za ispravljanje pogrešaka iz Visual Studija za daljinsko ispravljanje pogrešaka u aplikacijama koje se izvode u Wineu;
    • Djelomično je implementirana biblioteka DBGENG (Debug Engine);
    • Binarne datoteke kompajlirane za Windows više ne ovise o libwineu, što im omogućuje izvođenje na Windowsima bez dodatnih ovisnosti;
    • Dodana opcija '--sysroot' Resource Compiler-u i IDL Compiler-u za određivanje staze za datoteke zaglavlja;
    • Dodane opcije '—target', '—wine-objdir', '—wine-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 uslužni program MSIDB za manipuliranje bazama podataka u MSI formatu;
  • Optimiziranje performansi
    • Različite vremenske funkcije migrirane su za korištenje sistemskih vremenskih funkcija visokih performansi, smanjujući opterećenje u petlji renderiranja mnogih igara;
    • Dodana mogućnost korištenja Ext4 u FS-u režim rad bez osjetljivosti na velika i mala slova;
    • Izvedba obrade velikog broja elemenata u dijalozima prikaza popisa koji rade u LBS_NODATA modu je optimizirana;
    • Dodana brža implementacija SRW zaključavanja (Slim Reader/Writer) za Linux, prevedena na Futex;
  • Vanjske ovisnosti
    • Za sastavljanje modula u PE formatu koristi se unakrsni kompajler MinGW-w64;
    • Implementacija XAudio2 zahtijeva FAudio knjižnicu;
    • Za praćenje promjena datoteka na BSD sustavima
      koristi se biblioteka Inotify;

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

Izvor: opennet.ru

Dodajte komentar