После года разработки и 28 экспериментальных версий представлен стабильный релиз открытой реализации Win32 API — Wine 8.0, который вобрал в себя более 8600 изменений. Ключевым достижением в новой версии отмечается завершение работы по переводу модулей Wine в формат.
В Wine подтверждена полноценная работа 5266 (год назад 5156, два года назад 5049) программ для Windows, ещё 4370 (год назад 4312, два года назад 4227) программ прекрасно работают при дополнительных настройках и внешних DLL. У 3888 программ (года назад 3813, два года назад 3703) наблюдаются небольшие проблемы в работе, которые не мешают использованию основных функций приложений.
Ключевые новшества Wine 8.0:
- Moduli v formatu PE
- После четырёх лет работы полностью завершён перевод всех DLL-библиотек на использование формата исполняемых файлов PE (Portable Executable, применяется в Windows). Применение PE позволяет использовать доступные для Windows отладчики и решает проблемы с поддержкой различных схем защиты от копирования, осуществляющих сверку идентичности системных модулей на диске и в памяти. Также решены проблемы с работой 32-разрядных приложений на 64-разрядных хостах и x86-приложений на системах ARM. Из остающихся задач, которые планируют решить в последующих экспериментальных выпусках Wine 8.x, отмечается перевод модулей на интерфейс системных вызовов NT вместо осуществления прямых вызовов между уровнями PE и Unix.
- Реализован специальный диспетчер системных вызовов, используемый для трансляции обращений из PE в Unix-библиотеки с целью снижения накладных расходов при выполнении полного системного вызова NT. Например, выполненная оптимизация дала возможность снизить падение производительности при использовании библиотек OpenGL и Vulkan.
- В Winelib-приложениях сохранена возможность использования смешанных сборок Windows/Unix библиотек в формате ELF (.dll.so), но подобные приложения без 32-разрядных библиотек не будут поддерживать функциональность, доступную через интерфейс системных вызовов NT, такую как WoW64.
- WoW64
- Za vse Unix knjižnice so na voljo WoW64 sloji (64-bit Windows-on-Windows), ki omogočajo, da 32-bitni moduli v PE formatu dostopajo do 64-bitnih Unix knjižnic, kar po odstranitvi neposrednih klicev PE/Unix omogoča izvajanje 32-bitnih Windows aplikacij brez namestitve 32-bitnih Unix knjižnic.
- V odsotnosti 32-bitnega naložnika Wine omogoča zagon 32-bitnih aplikacij v novem eksperimentalnem Windows-podobnem načinu WoW64, kjer se 32-bitna koda zažene znotraj 64-bitnega procesa. Način se vključi pri sestavljanju Wine z možnostjo ‘—enable-archs’.
- Grafični sistem
- V privzeti konfiguraciji je uporabljena svetla tema oblikovanja („Light“). Zamenjavo teme je mogoče izvesti s pomočjo orodja WineCfg.

- Grafični gonilniki (winex11.drv, winemac.drv, wineandroid.drv) so bili pretvorjeni za izvajanje sistemskih klicev na ravni Unix in za dostop do gonilnikov preko knjižnice Win32u.

- Uvedena je arhitektura obdelovalnika tiskanja (Print Processor), ki se uporablja za izključitev neposrednih klicev med nivojema PE in Unix v gonilniku tiskalnika.
- V API Direct2D je bila uvedena podpora za učinke.
- V API Direct2D je bila dodana možnost snemanja in predvajanja seznamov ukazov.
- V gonilniku za grafični API Vulkan je bila dodana podpora za specifikacijo Vulkan 1.3.237 (v Wine 7 je bila podpora za Vulkan 1.2).
- V privzeti konfiguraciji je uporabljena svetla tema oblikovanja („Light“). Zamenjavo teme je mogoče izvesti s pomočjo orodja WineCfg.
- Direct3D
- Dodana je nova zbirka prevajalnika senčil za jezik HLSL (High-Level Shader Language), izvedena na osnovi knjižnice vkd3d-shader. Prav tako je na osnovi vkd3d-shader pripravljen disassembler HLSL in predprocesor HLSL.
- Uveden je vmesnik Thread Pump, ki se je pojavil v D3DX 10.
- V učinkih Direct3D 10 je bila dodana podpora za številne nove izraze.
- V pomožni knjižnici za D3DX 9 je bila uvedena podpora za projekcijo tekstur Cubemap.
- Zvuk i video
- Na osnovi ogrodja GStreamer je bila uvedena podpora za filtre za dekodiranje zvoka v formatu MPEG-1.
- Dodan je filter za branje pretočnega zvoka in videa v formatu ASF (Advanced Systems Format).
- Odstranjena je bila vmesna knjižnica-sloj OpenAL32.dll, namesto katere se zdaj uporablja domača Windows knjižnica OpenAL32.dll, ki jo dobimo z aplikacijami.
- V Media Foundation Player je izboljšana določitev vrste vsebine.
- Uvedena je možnost nadzora hitrosti prenosa podatkov (Rate control).
- Izboljšana je podpora mešalnika in predstavitvenega mehanizma (presenter), ki sta na voljo privzeto v Enhanced Video Renderer (EVR).
- Dodana je začetna implementacija API Writer Encoding.
- Izboljšana podpora za nalagalnike topologij.
- Ulazni uređaji
- Znatno izboljšana podpora za vroče povezovanje krmilnikov.
- Predlagana izboljšana implementacija kode za prepoznavanje igralnih volanov, zgrajena na osnovi knjižnice SDL.
- Izboljšana podpora za učinek vibroodziva (Force feedback) pri uporabo igralnih volanov.
- Izvedena je bila možnost upravljanja z levim in desnim vibracijskim motorjem, ki uporabljata specifikacijo HID Haptic.
- Spremenjena postavitev. administracijski plošči z joystickom.
- Preko uporabe backend-a hidraw je omogočena podpora za krmilnike Sony DualShock in DualSense.
- Predlagan je WinRT modul Windows.Gaming.Input z implementacijo programske vmesnika za dostop do igralnih joystickov, joystickov in igralnih volanov. Za nov API je bila med drugim implementirana podpora za obveščanje o vročem povezovanju naprav ter taktilnih in vibro učinkov.
- Mednarodna podpora
- Zagotovljena je generacija pravilne baze podatkov lokalov v formatu locale.nls iz repozitorija Unicode CLDR (Unicode Common Locale Data Repository).
- Funkcije primerjanja nizov Unicode so bile prenesene na uporabo baze podatkov in algoritma Windows Sortkey namesto algoritma Unicode Collation, kar je približalo vedenje k Windows.
- V večini funkcij je dodana podpora za zgornje ravni kod (ravnine) Unicode.
- Zagotovljena je možnost uporabe UTF-8 kot ANSI kodiranja.
- Tabele simbolov so posodobljene na specifikacijo Unicode 15.0.0.
- Tekst i fontovi
- Za večino sistemskih pisav je vključena povezava pisav, kar je rešilo problem z manjkajočimi glifi na sistemih s kitajskimi, korejskimi in japonskimi lokalizacijami.
- Prenovljen je bil povratek na rezervno pisavo v DirectWrite.
- Jezgro (interfejsi jezgra Windows-a)
- Implementirana je bila baza podatkov ApiSetSchema, ki je nadomestila module api-ms-* in omogočila zmanjšanje porabe diska in naslovnega prostora.
- Zagotovljeno je shranjevanje datotečnih atributov DOS na disku v formatu, kompatibilnem s Sambom, pri čemer so uporabljeni razširjeni atributi FS.
- Mrežne mogućnosti
- Dodana je bila podpora za protokol OCSP (Online Certificate Status Protocol), ki se uporablja za preverjanje preklicanih potrdil.
- Razširjen je spekter možnosti EcmaScript, dostopnih v načinu skladnosti z standardi JavaScript.
- Izveden je bil zbiralnik odpadkov za JavaScript.
- V paketu z motorjem Gecko so vključena orodja za osebe z omejeno mobilnostjo.
- V MSHTML je dodana podpora za API Web Storage, objekt Performance in dodatne objekte za obdelavo dogodkov.
- Vgrajene aplikacije
- Vse vgrajene aplikacije so bile prenesene na uporabo knjižnice Common Controls 6, z podporo za teme in risanje ob upoštevanju zaslonov z visoko gostoto pikslov.
- Razširjene so možnosti razhroščevanja niti v razhroščevalniku Wine Debugger (winedbg).
- V orodjih za delo z registri (REGEDIT in REG) je bila dodana podpora za tip QWORD.
- V Notepad je bila dodana vrstica stanja z informacijami o položaju kurzorja in funkcija Goto Line za prehod na določen številko vrstice.
- V vgrajeni konzoli je omogočen izhod podatkov v kodni strani OEM.
- V orodje sc.exe (Service Control) je bila dodana ukaz ‘query’.
- Build system
- Omogočena je gradnja izvršnih datotek v formatu PE za več arhitektur (na primer, ‘—enable-archs=i386,x86_64’).
- Na vseh platformah z 32-bitnim tipom long so v Wine sedaj tipi podatkov, določeni v Windows kot long, preusmerjeni kot ‘long’ namesto ‘int’. V Winelib lahko to obnašanje onemogočite z definicijo WINE_NO_LONG_TYPES.
- Dodana je možnost generiranja knjižnic brez uporabe dlltool (vključi se s nastavitvijo možnosti ‘—without-dlltool’ v winebuild).
- Za povečanje učinkovitosti nalaganja in zmanjšanje velikosti knjižnic, ki ne vsebujejo kode in vključujejo le vire, je v winegcc implementirana možnost ‘—data-only’.
- Razno
- Posodobljene verzije vgrajenih knjižnic 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.
- Wine Mono motor sa implementacijom platforme .NET ažuriran je na verziju 7.4.
- Omogočena je podpora za šifriranje na osnovi algoritma RSA in digitalne podpise RSA-PSS.
- Dodana je začetna različica API UI Automation.
- V drevo izvornih besedil so vključene knjižnice LDAP in vkd3d, ki se sestavljajo v formatu PE, kar je odpravilo potrebo po dobavi Unix različic teh knjižnic.
- Prenehana je uporaba knjižnice OpenAL.
Izvor: opennet.ru


