După un an de dezvoltare și 28 de versiuni experimentale versiunea stabilă a implementării deschise Win32 API — , care a inclus peste 7400 de modificări. Printre realizările cheie ale noii versiuni se numără livrarea modulelor încorporate Wine în format PE, suport pentru configurații multi-monitor, o nouă implementare a API-ului audio XAudio2 și suport pentru API-ul grafic Vulkan 1.1.
În Wine funcționează 4869 (cu un an în urmă 4737) aplicații pentru Windows, alte 4136 (cu un an în urmă 4045) aplicatii funcționează excelent cu setări adiționale și DLL-uri externe. Există probleme minore cu 3635 de aplicații, care nu împiedică utilizarea funcțiilor principale.
Principalele Wine 5.0:
- Module în format PE
- Cu un compilator MinGW, majoritatea modulelor Wine sunt acum compilate în format de fișiere executabile PE (Portable Executable, folosit în Windows) în loc de ELF. Utilizarea PE rezolvă problemele legate de suportul diferitelor scheme de protecție împotriva copierii, care verificau identitatea modulelor sistemului pe disc și în memorie;
- Fișierele executabile PE sunt acum copiate în directorul ~/.wine ($WINEPREFIX) în loc de a folosi DLL-uri fictive, ceea ce face ca structura să fie mai asemănătoare cu instalările reale Windows, cu costul unui consum suplimentar de spațiu pe disc;
- Modulele convertite în format PE pot folosi funcții și constante C standard cu Unicode (de exemplu, L"abc"); A fost adăugat suport pentru lucrul cu mai multe monitoare și adaptoare grafice, inclusiv posibilitatea de a modifica dinamic setările;
- Driverul pentru API-ul grafic Vulkan a fost actualizat și adus în conformitate cu specificația Vulkan 1.1.126;
- Substanța grafică
- În biblioteca WindowsCodecs a fost implementată posibilitatea de a converti formate raster suplimentare, inclusiv formate cu paletă indexată;
- La rularea aplicațiilor în modul ecran complet Direct3D, a fost asigurată blocarea apelului protector al ecranului;
- În DXGI (DirectX Graphics Infrastructure) a fost adăugată suportul pentru informarea aplicației despre minimizarea ferestrei sale, ceea ce permite aplicației să reducă execuția operațiunilor consumatoare de resurse atunci când fereastra este minimizată;
- Direct3D
- При выполнении полноэкранных приложений Direct3D обеспечена блокировка вызова хранителя экрана;
- В DXGI (DirectX Graphics Infrastructure) добавлена поддержка информирования приложения о минимизации его окна, что позволяет приложению снизить выполнение ресурсоёмких операций при сворачивании окна;
- Pentru aplicațiile care utilizează DXGI, a fost implementată posibilitatea de a comuta între modul ecran complet și modul fereastră folosind combinația Alt+Enter;
- Capabilitățile de implementare a Direct3D 12 au fost extinse, de exemplu, a apărut suportul pentru comutarea între modul ecran complet și modul fereastră, schimbarea modurilor de afişare, ieșirea cu scalare și gestionarea intervalului de schimbare a tamponului de redare (swap interval);
- A fost îmbunătățită gestionarea diferitelor situații limită, cum ar fi aplicarea valorilor de intrare care ies din domeniile permise pentru testele de transparență și adâncime, redarea cu texturi și buffere reflectate, utilizarea obiectelor DirectDraw incorecte , crearea de dispozitive Direct3 pentru feronii incorecte, utilizarea zonelor vizibile, valorile minime ale parametrilor cărora le sunt egale valorile maxime etc.
- În Direct3D 8 și 9 s-a realizat o urmărire mai precisă a „» murdare ale texturilor încărcate;
- S-a redus dimensiunea spațiului de adresare necesar pentru încărcarea texturilor 3D, comprimate prin metoda S3TC (în loc să fie încărcate complet, texturile sunt încărcate în bucăți).
- A fost implementat interfața pentru protejarea secțiunilor critice în aplicațiile multi-threaded;
- Pentru aplicațiile mai vechi DirectDraw au fost aduse diverse îmbunătățiri și corecții legate de calcularea iluminării;
- Au fost implementate apeluri suplimentare pentru obținerea informațiilor despre shadere în API ;
- În wined3d a fost adăugat suportul pentru bazat pe CPU pentru procesarea resurselor comprimate;
- A fost extinsă baza de date a plăcilor grafice recunoscute în Direct3D;
- Au fost adăugate noi chei de registru HKEY_CURRENT_USER\Software\Wine\Direct3D: „shader_backend” (backend pentru lucrul cu shadere: „glsl” pentru GLSL, „arb” pentru ARB vertex/fragment și „none” pentru a dezactiva suportul shadere), „strict_shader_math” (0x1 — activat, 0x0 — dezactivat conversia shadere Direct3D). Cheia „UseGLSL” a fost declarată învechită (ar trebui folosită „shader_backend”);
- D3DX
- A fost implementat suportul pentru mecanismul de comprimare a texturilor 3D S3TC (S3 Texture Compression);
- Au fost adăugate implementări corecte ale unor operații precum umplerea cu textură și suprafețe ne-reflectante (unmappable);
- Au fost aduse diverse îmbunătățiri și corecții în cadrul de creare a ;
- Kernel (interfețe ale kernel-ului Windows)
- Cele mai multe funcții utilizate în Kernel32 au fost mutate în
KernelBase, conform schimbărilor din arhitectura Windows; - Posibilitatea de a amesteca DLL-uri pe 32 și 64 de biți în directoarele utilizate pentru încărcare. Asigurată ignorarea bibliotecilor care nu corespund arhitecturii curente (32/64) în cazul în care, ulterior pe cale, se găsește o bibliotecă corectă pentru arhitectura curentă;
- Pentru driverele de dispozitive, a fost îmbunătățită simularea obiectelor nucleu;
- Au fost implementate obiecte de sincronizare la nivel de nucleu, cum ar fi spin-locks, mutexuri rapide și variabile atașate resurselor;
- Asigurată informarea corectă a aplicațiilor despre starea acumulatorului;
- Cele mai multe funcții utilizate în Kernel32 au fost mutate în
- Interfața utilizatorului și integrarea cu desktopul
- Feronierile minime sunt acum afișate folosind un titlu, nu o pictogramă în stilul Windows 3.1;
- Au fost adăugate noi stiluri de butoane (buton cu o listă derulantă de acțiuni) și (linkuri în feronierile folosite pentru a trece la următoarea etapă);
- Pentru folderele 'Downloads' și 'Templates' au fost create linkuri simbolice care indică asupra directoarelor corespunzătoare în sistemele Unix;
- Dispozitive de intrare
- La pornire, asigurată instalarea și încărcarea driverelor necesare dispozitivelor Plug & Play;
- Suportul pentru controller-ele de jocuri a fost îmbunătățit, inclusiv mini-joystickul (hat switch), volanul, pedalele pentru accelerație și frâne;
- Suportul pentru vechiul API Linux de interacțiune cu joystick-urile, folosit în nucleele Linux până la versiunea 2.2, a fost întrerupt;
- .NET
- Motorul Mono a fost actualizat la versiunea 4.9.4 și acum include părți ale framework-ului Windows Presentation Foundation (WPF);
- Adăugată posibilitatea de a instala extensii cu Mono și Gecko într-un singur director comun, plasând fișierele în ierarhia /usr/share/wine în loc să fie copiate în prefixuri noi;
- Funcționalități de rețea
- Motorul browser-ului Wine Gecko, utilizat în biblioteca MSHTML, a fost actualizat la versiunea 2.47.1. A fost implementat suport pentru noi API HTML;
- În MSHTML a fost implementat suportul pentru elementele SVG;
- Adăugate multe funcții noi VBScript (de exemplu, gestionarii de erori și excepții, funcțiile Hour, Day, Month, String, LBound, RegExp.Replace, RScriptTypeInfo_* și ScriptTypeComp_Bind* și altele);
- S-a asigurat persistenta stării codului în VBScript și JScript (persistența scripturilor);
- Adăugată implementarea inițială a serviciului HTTP (WinHTTP) și API-ului asociat (HTTPAPI) pentru aplicațiile client și server care trimit și primesc cereri prin protocolul HTTP;
- Implementată posibilitatea de a obține parametrii de configurare HTTP-proxy prin DHCP;
- S-a adăugat suport pentru redirecționarea cererilor de autentificare prin serviciul Microsoft Passport;
- Criptografie
- Implementat suport pentru cheile criptografice bazate pe curbe eliptice (ECC) utilizând GnuTLS;
- A fost adăugată posibilitatea de a importa chei și certificate din fișiere în format PFX;
- A fost adăugat suport pentru schema de generare a cheii pe baza parolei PBKDF2;
- Text și fonturi
- În implementarea API-ului DirectWrite a fost adăugat suport pentru funcționalitățile OpenType legate de , care sunt activate în mod implicit pentru fonturile Latin, inclusiv kerning;
- Securitatea procesării datelor de fonturi a fost îmbunătățită prin verificarea corectitudinii diferitelor tabele de date înainte de utilizare;
- Interfețele DirectWrite au fost ajustate la noul SDK;
- Sunet și video
- A fost propusă o nouă implementare a API-ului audio , bazată pe proiectul . Utilizarea FAudio în Wine permite obținerea unei calități mai ridicate a sunetului în jocuri și activarea unor funcții precum mixarea volumului și efecte sonore avansate;
- Au fost adăugate un număr mare de noi apeluri în implementarea framework-ului Media Foundation, inclusiv suport pentru cozi asincrone încorporate și personalizate, API-ul Source Reader, Media Session etc.
- Filtrul de captură video a fost transformat pentru a utiliza API-ul v4l2 în loc de API-ul v4l1, ceea ce a extins gama camerelor acceptate;
- Decoderii încorporați AVI, MPEG-I și WAVE au fost eliminați, acum fiind folosiți GStreamer sau QuickTime de sistem;
- A fost adăugat un subgrup de API-uri de configurare VMR7;
- În driverele audio a fost adăugat suport pentru ajustarea volumului canalelor individuale;
- Internaționalizare
- Tabelele Unicode au fost actualizate la versiunea 12.1.0;
- A fost implementat suport pentru normalizarea Unicode;
- S-a asigurat configurarea automată a regiunii geografice (HKEY_CURRENT_USER\Control Panel\International\Geo) pe baza localei curente;
- RPC/COM
- În typelib a fost adăugat suport pentru structuri complexe și arii;
- A fost adăugată o implementare inițială a bibliotecii runtime Windows Script;
- A fost adăugată o implementare inițială a bibliotecii ADO (Microsoft ActiveX Data Objects);
- Instalatoare
- Pentru instalatorul MSI a fost implementat suportul pentru livrarea patch-urilor (Patch Files);
- Utilitarul WUSA (Windows Update Standalone Installer) a primit posibilitatea de a instala actualizări în format .MSU;
- Platforma ARM
- Pentru arhitectura ARM64, în ntdll a fost adăugată suportul pentru desfășurarea stivei (stack unwinding). A fost adăugat suport pentru conectarea bibliotecilor externe libunwind;
- Suport pentru proxii fără cusur (stubless proxies) pentru interfețele de obiecte a fost implementat pentru arhitectura ARM64;
- Instrumente pentru dezvoltare / Winelib
- A fost adăugată posibilitatea de a aplica debuggerul din Visual Studio pentru depanarea la distanță a aplicațiilor rulând în Wine;
- Biblioteca DBGENG (Debug Engine) a fost parțial implementată;
- Fișierele executabile compilate pentru Windows nu mai depind de libwine, permițându-le să ruleze în Windows fără dependențe suplimentare;
- În Resource Compiler și IDL Compiler a fost adăugată opțiunea ‘—sysroot’ pentru a specifica calea către fișierele header;
- În winegcc au fost adăugate opțiunile ‘—target’, ‘—wine-objdir’,
‘—winebuild’ și ‘-fuse-ld’, simplificând configurarea mediu de cross-compilare;
- Aplicații încorporate
- A fost implementat utilitarul CHCP pentru configurarea codării consolei;
- A fost implementat utilitarul MSIDB pentru manipularea bazelor în format MSI;
- Optimizarea performanței
- Diverse funcții de gestionare a timpului au fost migrate la utilizarea funcțiilor de sistem de înaltă performanță pentru temporizere, ceea ce a redus overhead-ul în bucla de redare a multor jocuri;
- A fost adăugată posibilitatea de utilizare în FS Ext4 de operare fără a ține cont de majuscule;
- A fost optimizată performanța procesării unui număr mare de elemente în dialogurile de afișare a listelor, care funcționează în modul LBS_NODATA;
- A fost adăugată o implementare mai rapidă a blocărilor SRW (Slim Reader/Writer) pentru Linux, portată pe Futex;
- Dependențe externe
- Pentru compilarea modulelor în format PE a fost utilizat compilatorul cross MinGW-w64;
- Implementarea XAudio2 necesită biblioteca FAudio;
- Pentru monitorizarea modificărilor fișierelor pe sistemele BSD
a fost utilizată biblioteca Inotify; - Pentru gestionarea excepțiilor pe platforma ARM64 este necesară biblioteca Unwind;
- În loc de Video4Linux1, acum este necesară biblioteca Video4Linux2.
Sursa: opennet.ro
