După un an de dezvoltare și 28 de versiuni experimentale, a fost lansată versiunea stabilă a implementării open-source a Win32 API — Wine 8.0, care cuprinde peste 8600 de modificări. Realizarea cheie din noua versiune este finalizarea lucrării de migrare a modulelor Wine în format.
În Wine, 5266 de programe pentru Windows funcționează pe deplin (anul trecut 5156, acum doi ani 5049), iar 4370 de programe (anul trecut 4312, acum doi ani 4227) funcționează excelent cu setări suplimentare și DLL externe. La 3888 de programe (anul trecut 3813, acum doi ani 3703) se observă probleme minore, care nu împiedică utilizarea funcțiilor de bază ale aplicațiilor.
Noutățile cheie din Wine 8.0:
- Module în format PE
- După patru ani de muncă, a fost finalizată complet migrarea tuturor bibliotecilor DLL pentru a utiliza formatul executabil PE (Portable Executable, utilizat în Windows). Utilizarea PE permite folosirea depanatoarelor disponibile pentru Windows și rezolvă problemele de suport pentru diverse scheme de protecție împotriva copierii, care verifică identitatea modulelor de sistem pe disc și în memorie. De asemenea, s-au rezolvat problemele de funcționare a aplicațiilor pe 32 de biți pe gazde pe 64 de biți și a aplicațiilor x86 pe sisteme ARM. Printre sarcinile rămase care intenționează să fie soluționate în următoarele versiuni experimentale Wine 8.x este migrarea modulelor la interfața apelurilor de sistem NT în loc de apelurile directe între nivelurile PE și Unix.
- A fost implementat un dispatcher special pentru apelurile de sistem, folosit pentru a traduce apelurile din PE în biblioteci Unix, cu scopul de a reduce costurile suplimentare în timpul executării unui apel complet de sistem NT. De exemplu, optimizarea realizată a permis reducerea pierderii de performanță atunci când utilizează bibliotecile OpenGL și Vulkan.
- În aplicațiile Winelib, a fost păstrată capacitatea de a utiliza asamblări mixte de biblioteci Windows/Unix în format ELF (.dll.so), dar astfel de aplicații fără biblioteci pe 32 de biți nu vor susține funcționalitatea disponibilă prin interfața apelurilor de sistem NT, cum ar fi WoW64.
- WoW64
- Pentru toate bibliotecile Unix sunt furnizate straturi WoW64 (Windows-on-Windows 64-bit), permițând modulelor pe 32 de biți în format PE să acceseze bibliotecile Unix pe 64 de biți, ceea ce va permite execuția aplicațiilor Windows de 32 de biți fără a instala biblioteci Unix de 32 de biți, după eliminarea apelurilor directe PE/Unix.
- În absența unui încărcător Wine pe 32 de biți, este asigurat suportul pentru aplicațiile pe 32 de biți într-un nou mod experimental similar cu Windows, WoW64, în care codul pe 32 de biți este executat într-un proces pe 64 de biți. Modul se activează atunci când Wine este compilat cu opțiunea ‘—enable-archs’.
- Substanța grafică
- În configurația implicită este aplicat un tema deschisă de design («Light»). Schimbarea temei poate fi realizată prin utilitarul WineCfg.

- Drepoarele grafice (winex11.drv, winemac.drv, wineandroid.drv) sunt transformate pentru a executa apeluri de sistem Unix și pentru a accesa drepoarele prin biblioteca Win32u.

- A fost implementată o arhitectură de procesare a ieșirii la imprimare (Print Processor), utilizată pentru a evita apelurile directe între nivelele PE și Unix în driverul imprimantei.
- În API-ul Direct2D a fost implementat suportul pentru efecte.
- În API-ul Direct2D a fost adăugată capacitatea de a înregistra și reproduce liste de comenzi.
- În driverul pentru API-ul grafic Vulkan a fost adăugat suportul pentru specificația Vulkan 1.3.237 (în Wine 7 a fost suportat Vulkan 1.2).
- În configurația implicită este aplicat un tema deschisă de design («Light»). Schimbarea temei poate fi realizată prin utilitarul WineCfg.
- Direct3D
- A fost adăugat un nou compilator de shadere pentru limbajul HLSL (High-Level Shader Language), implementat pe baza bibliotecii vkd3d-shader. De asemenea, pe baza vkd3d-shader a fost pregătit un disassembler HLSL și un preprocesor HLSL.
- A fost implementat interfața Thread Pump, apărută în D3DX 10.
- În efectele Direct3D 10 a fost adăugat suport pentru multe expresii noi.
- În biblioteca auxiliară pentru D3DX 9 a fost implementat suportul pentru proiecția texturilor Cubemap.
- Sunet și video
- Pe baza cadrelor GStreamer a fost implementat suportul pentru filtrele de decodare a sunetului în format MPEG-1.
- A fost adăugat un filtru pentru citirea sunetului și video în flux în format ASF (Advanced Systems Format).
- Biblioteca intermediară OpenAL32.dll a fost eliminată, fiind înlocuită acum cu biblioteca Windows OpenAL32.dll, livrată cu aplicațiile.
- În Media Foundation Player a fost îmbunătățit tipul de detectare a conținutului.
- A fost implementată abilitatea de a controla viteza de transmisie a datelor (Rate control).
- A fost îmbunătățit suportul pentru mixer și renderer (presenter), propus în mod implicit în Enhanced Video Renderer (EVR).
- A fost adăugată implementarea inițială a API-ului Writer Encoding.
- A fost îmbunătățită suportul pentru încărcătorul de topologii.
- Dispozitive de intrare
- Suportul pentru conectarea rapidă a controlerelor a fost semnificativ îmbunătățit.
- A fost propusă o implementare îmbunătățită a codului pentru determinarea volanelor de joc, construită pe baza bibliotecii SDL.
- A fost îmbunătățită suportul pentru efectul de feedback prin vibrație (Force feedback) la utilizarea volanelor de joc.
- A fost implementată posibilitatea de a controla motoarele de vibrație stâng și drept, folosind specificația HID Haptic.
- Aspectul a fost modificat panoul de control cu joystick-ul.
- Prin utilizarea backend-ului hidraw, a fost asigurat suportul pentru controlerele Sony DualShock și DualSense.
- A fost propus un modul WinRT Windows.Gaming.Input cu implementarea unei interfețe pentru accesul la gamepad-uri, joystick-uri și volane de joc. Pentru noul API, printre altele, a fost implementată suportul pentru notificarea de conectare rapidă a dispozitivelor, efecte tactile și de vibrație.
- Internaționalizare
- A fost asigurată generarea unei baze de date corecte a localelor în format locale.nls din depozitul Unicode CLDR (Unicode Common Locale Data Repository).
- Funcțiile de comparare a șirurilor Unicode au fost traduse pentru a utiliza baza de date și algoritmul Windows Sortkey în loc de algoritmul Unicode Collation, ceea ce a apropiat comportamentul de Windows.
- În majoritatea funcțiilor a fost adăugat suportul pentru intervalele superioare de coduri (planuri) Unicode.
- A fost oferită posibilitatea de a utiliza UTF-8 ca codare ANSI.
- Tabelele de caractere au fost actualizate conform specificației Unicode 15.0.0.
- Text și fonturi
- Pentru majoritatea fonturilor de sistem a fost inclus legarea fonturilor, rezolvând problema absenței glifelor pe sistemele cu localizări chinezești, coreene și japoneze.
- A fost refăcută revenirea la fontul de rezervă în DirectWrite.
- Kernel (interfețe ale kernel-ului Windows)
- A fost implementată baza de date ApiSetSchema, care a înlocuit modulele api-ms-* și a permis reducerea consumului de disc și spațiu de adresare.
- A fost asigurat salvarea pe disc a atributelor de fișier DOS într-un format compatibil cu Samba, folosind pentru aceasta atributele extinse FS.
- Funcționalități de rețea
- A fost adăugat suportul pentru protocolul OCSP (Online Certificate Status Protocol), utilizat pentru verificarea certificatelor revocate.
- Sfera de capacități EcmaScript disponibile în modul de conformitate cu standardele JavaScript a fost extinsă.
- A fost implementat un colector de gunoi pentru JavaScript.
- În pachetul cu motorul Gecko au fost incluse instrumente pentru persoanele cu dizabilități.
- În MSHTML a fost adăugată suport pentru API-ul Web Storage, obiectul Performance și obiecte suplimentare pentru gestionarea evenimentelor.
- Aplicații încorporate
- Toate aplicațiile încorporate au fost migrate la utilizarea bibliotecii Common Controls 6, cu suport pentru teme de design și redare pentru ecrane cu densitate înaltă.
- Funcționalitățile de depanare a thread-urilor au fost extinse în depanatorul Wine Debugger (winedbg).
- În utilitarele pentru gestionarea registrului (REGEDIT și REG) a fost adăugat suport pentru tipul QWORD.
- În Notepad a fost adăugată o bară de stare cu informații despre poziția cursorului și funcția Goto Line pentru a trece la un anumit număr de linie.
- În consola încorporată s-a asigurat redarea datelor în codarea OEM.
- Utilitarul sc.exe (Service Control) a fost extins cu comanda 'query'.
- Sistem de construcție
- A fost oferită posibilitatea de a crea fișiere executabile în format PE pentru mai multe arhitecturi (de exemplu, '—enable-archs=i386,x86_64').
- Pe toate platformele cu tipul de long pe 32 de biți, tipurile de date definite în Windows ca long sunt acum redefinite în Wine ca ‘long’ în loc de ‘int’. În Winelib acest comportament poate fi dezactivat prin definirea WINE_NO_LONG_TYPES.
- A fost adăugată posibilitatea de a genera biblioteci fără utilizarea dlltool (activată prin setarea opțiunii '—without-dlltool' în winebuild).
- Pentru a îmbunătăți eficiența încărcării și a reduce dimensiunea bibliotecilor care nu conțin cod și includ doar resurse, winegcc a implementat opțiunea '—data-only'.
- Diverse
- Versiunile bibliotecilor încorporate Faudio 22.11, LCMS2 2.14, LibJPEG 9e, LibMPG123 1.31.1, LibPng 1.6.39, LibTiff 4.4.0, LibXml2 2.10.3, LibXslt 1.1.37, Zlib 1.2.13 au fost actualizate.
- Motorul Wine Mono cu implementarea platformei .NET a fost actualizat la versiunea 7.4.
- A fost implementat suportul pentru criptare pe baza algoritmului RSA și semnăturilor digitale RSA-PSS.
- A fost adăugată versiunea preliminară a API-ului UI Automation.
- Bibliotecile LDAP și vkd3d, care sunt compilate în format PE, au fost incluse în arborele de cod sursă, eliminând necesitatea furnizării versiunilor Unix pentru aceste biblioteci.
- Utilizarea bibliotecii OpenAL a fost întreruptă.
Sursa: opennet.ro


