Lansare stabilă a Wine 7.0

După un an de dezvoltare și 30 de versiuni experimentale, a fost prezentată o versiune stabilă a implementării deschise a API-ului Win32 - Wine 7.0, care a încorporat peste 9100 de modificări. Realizările cheie ale noii versiuni includ traducerea majorității modulelor Wine în format PE, suport pentru teme, extinderea stivei pentru joystick-uri și dispozitive de intrare cu o interfață HID și implementarea arhitecturii WoW64 pentru rularea programelor pe 32 de biți într-un Mediu pe 64 de biți.

Wine a confirmat funcționarea completă a 5156 (acum un an 5049) programe pentru Windows, alte 4312 (acum un an 4227) programe funcționează perfect cu setări suplimentare și DLL-uri externe. 3813 programe (în urmă cu 3703 ani) au probleme operaționale minore care nu interferează cu utilizarea principalelor funcții ale aplicațiilor.

Inovații cheie în Wine 7.0:

  • Module în format PE
    • Aproape toate DLL-urile au fost convertite pentru a utiliza formatul de fișier executabil PE (Portable Executable, utilizat pe Windows) în loc de ELF. Utilizarea PE rezolvă problemele legate de suportarea diferitelor scheme de protecție împotriva copierii care verifică identitatea modulelor de sistem pe disc și în memorie.
    • A fost implementată capacitatea de a interacționa modulele PE cu bibliotecile Unix folosind apelul de sistem standard al nucleului NT, ceea ce vă permite să ascundeți accesul la codul Unix de la depanatoarele Windows și să monitorizați înregistrarea firelor.
    • DLL-urile încorporate sunt acum încărcate numai dacă există un fișier PE corespunzător pe disc, indiferent dacă este o bibliotecă reală sau un stub. Această modificare permite aplicației să vadă întotdeauna legarea corectă la fișierele PE. Pentru a dezactiva acest comportament, puteți utiliza variabila de mediu WINEBOOTSTRAPMODE.
  • WoW64
    • Arhitectura WoW64 (Windows pe 64 de biți pe Windows) a fost implementată, permițându-vă să rulați aplicații Windows pe 32 de biți în procese Unix pe 64 de biți. Suportul este implementat prin conectarea unui strat care traduce apelurile de sistem NT pe 32 de biți în apeluri pe 64 de biți către NTDLL.
    • Straturile WoW64 sunt pregătite pentru majoritatea bibliotecilor Unix și permit modulelor PE pe 32 de biți să acceseze bibliotecile Unix pe 64 de biți. Odată ce toate modulele au fost convertite în format PE, va fi posibil să rulați aplicații Windows pe 32 de biți fără a instala biblioteci Unix pe 32 de biți.
  • Teme
    • Suportul tematic a fost implementat. Sunt incluse temele de design „Light”, „Blue” și „Classic Blue”, care pot fi selectate prin configuratorul WineCfg.
    • S-a adăugat posibilitatea de a personaliza aspectul tuturor comenzilor interfeței prin teme. Aspectul elementelor este actualizat automat după schimbarea temei de design.
    • Suportul pentru teme a fost adăugat la toate aplicațiile Wine încorporate. Aplicațiile au fost adaptate la ecrane cu densitate mare de pixeli (DPI ridicat).
  • Subsistemul grafic
    • A fost adăugată o nouă bibliotecă Win32u, care include părți din bibliotecile GDI32 și USER32 legate de procesarea grafică și gestionarea ferestrelor la nivel de kernel. În viitor, vor începe lucrările la portarea componentelor driverului, cum ar fi winex32.drv și winemac.drv la Win11u.
    • Driverul Vulkan acceptă specificația API grafică Vulkan 1.2.201.
    • A oferit suport pentru ieșirea obiectelor geometrice hașurate prin intermediul API-ului Direct2D, cu posibilitatea de a verifica dacă un clic atinge (hit-test).
    • Direct2D API oferă suport inițial pentru efectele vizuale aplicate folosind interfața ID2D1Effect.
    • Direct2D API a adăugat suport pentru interfața ID2D1MultiThread, care este utilizată pentru a organiza accesul exclusiv la resurse în aplicațiile multi-thread.
    • Setul de biblioteci WindowsCodecs oferă suport pentru decodarea imaginilor în format WMP (Windows Media Photo) și codificarea imaginilor în format DDS (DirectDraw Surface). Nu mai acceptăm codificarea imaginilor în formatul ICNS (pentru macOS), care nu este acceptat pe Windows.
  • Direct3D
    • Noul motor de randare a fost îmbunătățit semnificativ, traducând apelurile Direct3D în API-ul grafic Vulkan. În majoritatea situațiilor, nivelul de suport pentru Direct3D 10 și 11 în motorul bazat pe Vulkan a fost adus la egalitate cu motorul mai vechi bazat pe OpenGL. Pentru a activa motorul de randare Vulkan, setați variabila de registru Direct3D „renderer” la „vulkan”.
    • Multe caracteristici ale Direct3D 10 și 11 sunt implementate, inclusiv Contexte amânate, obiecte de stare care funcționează în contextul dispozitivului, offset-uri persistente în buffer-uri, ștergerea vizualizărilor de texturi neregulate, copierea datelor între resurse în formate fără tip (DXGI_FORMAT_BC3_TYPELESS, DXGI_FORMAT_R32G32B32LESA), etc. .
    • S-a adăugat suport pentru configurații cu mai multe monitoare, permițându-vă să selectați un monitor pentru a afișa o aplicație Direct3D în modul ecran complet.
    • DXGI API oferă corecție gama ecranului, care poate fi utilizată de aplicațiile bazate pe Direct3D 10 și 11 pentru a schimba luminozitatea ecranului. Recuperare activată a contoarelor de framebuffer virtuale (SwapChain).
    • Direct3D 12 adaugă suport pentru semnăturile rădăcină versiunea 1.1.
    • În codul de redare prin API-ul Vulkan, eficiența procesării interogărilor a fost îmbunătățită atunci când sistemul acceptă extensia VK_EXT_host_query_reset.
    • S-a adăugat capacitatea de a scoate la ieșire framebuffer-uri virtuale (SwapChain) prin GDI dacă OpenGL sau Vulkan nu pot fi utilizate pentru afișare, de exemplu, la ieșirea într-o fereastră din diferite procese, de exemplu, în programe bazate pe cadrul CEF (Chromium Embedded Framework).
    • Când utilizați backend-ul shader GLSL, modificatorul „precise” este asigurat pentru instrucțiunile shader.
    • DirectDraw API adaugă suport pentru randarea 3D în memoria sistemului utilizând dispozitive software precum „RGB”, „MMX” și „Ramp”.
    • Plăcile AMD Radeon RX 3M, AMD Radeon RX 5500/6800 XT/6800 XT, AMD Van Gogh, Intel UHD Graphics 6900 și NVIDIA GT 630 au fost adăugate la baza de date a plăcilor grafice Direct1030D.
    • Cheia „UseGLSL” a fost eliminată din registrul HKEY_CURRENT_USER\Software\Wine\Direct3D, în loc de care, începând cu Wine 5.0, trebuie să utilizați „shader_backend”.
    • Pentru a suporta Direct3D 12, acum aveți nevoie de cel puțin versiunea 3 a bibliotecii vkd1.2d.
  • D3DX
    • Implementarea D3DX 10 a îmbunătățit suportul pentru cadrul de efecte vizuale și a adăugat suport pentru formatul de imagine Windows Media Photo (JPEG XR)
    • S-au adăugat funcții de creare a texturii furnizate în D3DX10, cum ar fi D3DX10CreateTextureFromMemory().
    • Interfețele software ID3DX10Sprite și ID3DX10Font au fost parțial implementate.
  • Sunet și video
    • Suplimentele GStreamer pentru DirectShow și cadrul Media Foundation sunt combinate într-un backend comun WineGStreamer, care ar trebui să simplifice dezvoltarea de noi API-uri de decodare a conținutului.
    • Pe baza backend-ului WineGStreamer, obiectele Windows Media sunt implementate pentru citire sincronă și asincronă.
    • Implementarea cadrului Media Foundation a fost perfecționată și mai mult, a fost adăugat suport pentru funcționalitatea IMFPMediaPlayer și pentru alocatorul de eșantioane și a fost îmbunătățit suportul pentru bufferele de redare EVR și SAR.
    • Biblioteca wineqtdecoder, care oferă un decodor pentru formatul QuickTime, a fost eliminată (toate codecurile folosesc acum GStreamer).
  • Dispozitive de intrare
    • Stiva pentru dispozitivele de intrare care acceptă protocolul HID (Human Interface Devices) a fost îmbunătățită semnificativ, oferind capabilități precum analizarea descriptorilor HID, procesarea mesajelor HID și furnizarea de drivere mini-HID.
    • În backend-urile driverului winebus.sys, traducerea descrierilor dispozitivelor în mesaje HID a fost îmbunătățită.
    • S-a adăugat un nou backend DirectInput pentru joystick-uri care acceptă protocolul HID. A fost implementată capacitatea de a utiliza efecte de feedback în joystick-uri. Panou de control joystick îmbunătățit. Interacțiune optimizată cu dispozitivele compatibile XInput. În WinMM, suportul pentru joystick a fost mutat în DInput, în loc să utilizeze backend-ul evdev pe Linux și IOHID pe macOS IOHID. Vechiul driver de joystick winejoystick.drv a fost eliminat.
    • Au fost adăugate noi teste la modulul DInput, bazate pe utilizarea dispozitivelor HID virtuale și care nu necesită un dispozitiv fizic.
  • Text și fonturi
    • S-a adăugat obiectul Font Set la DirectWrite.
    • RichEdit implementează corect interfața TextHost.
  • Kernel (interfețe Windows Kernel)
    • Când rulați un fișier executabil neidentificat (cum ar fi „wine foo.msi”) în Wine, acum este apelat start.exe, care invocă handlere asociați cu tipul de fișier.
    • S-a adăugat suport pentru mecanismele de sincronizare NtAlertThreadByThreadId și NtWaitForAlertByThreadId, similar cu futexe-urile din Linux.
    • S-a adăugat suport pentru obiectele de depanare NT utilizate pentru a depana funcțiile kernelului.
    • S-a adăugat suport pentru cheile de registry dinamice pentru a salva datele de performanță.
  • C Runtime
    • Runtime-ul C implementează un set complet de funcții matematice, care sunt preluate în principal din biblioteca Musl.
    • Toate platformele CPU oferă suport corect pentru funcțiile în virgulă mobilă.
  • Caracteristici de rețea
    • Modul de compatibilitate îmbunătățit pentru Internet Explorer 11 (IE11), care este acum utilizat implicit pentru procesarea documentelor HTML.
    • Biblioteca mshtml implementează modul JavaScript ES6 (ECMAScript 2015), care oferă suport pentru caracteristici precum expresia let și obiectul Map.
    • Instalarea pachetelor MSI cu adăugiri la motorul Gecko în directorul de lucru Wine se face acum atunci când este necesar, și nu în timpul unei actualizări Wine.
    • S-a adăugat suport pentru protocolul DTLS.
    • A fost implementat serviciul NSI (Network Store Interface), care stochează și transmite informații despre rutare și interfețele de rețea de pe computer către alte servicii.
    • Managerii API WinSock, cum ar fi setsockopt și getsockopt, au fost mutați în NTDLL și driverul afd.sys pentru a se conforma cu arhitectura Windows.
    • Fișierele proprii ale bazei de date de rețea ale Wine, cum ar fi /etc/protocols și /etc/networks, sunt acum instalate în directorul de lucru Wine, în loc să acceseze baze de date similare Unix.
  • Platforme alternative
    • S-a adăugat suport pentru echipamentele Apple bazate pe cipuri M1 ARM (Apple Silicon).
    • Suportul pentru funcțiile BCrypt și Secur32 pe macOS necesită acum instalarea bibliotecii GnuTLS.
    • Executabilele pe 32 de biți pentru platformele ARM sunt acum construite în modul Thumb-2, similar cu Windows. Un preîncărcare este folosit pentru a încărca astfel de fișiere.
    • Pentru platformele ARM pe 32 de biți, a fost implementat suport pentru derularea excepțiilor.
    • Pentru FreeBSD, numărul de interogări acceptate pentru informații de sistem de nivel scăzut, cum ar fi starea memoriei și nivelul de încărcare a bateriei, a fost extins.
  • Aplicații încorporate și instrumente de dezvoltare
    • Utilitarul reg.exe a adăugat suport pentru vizualizările de registry pe 32 și 64 de biți. S-a adăugat suport pentru copierea cheilor de registry.
    • Utilitarul WineDump a adăugat suport pentru descărcarea metadatelor Windows și afișarea informațiilor detaliate despre intrările CodeView.
    • Wine Debugger (winedbg) oferă posibilitatea de a depana procesele pe 32 de biți dintr-un depanator pe 64 de biți.
    • Capacitatea de a încărca biblioteci încorporate în fișierele PE a fost adăugată la compilatorul IDL (widl), a fost furnizat suport pentru atributele și constructele specifice WinRT și a fost implementată o căutare de biblioteci specifică platformei.
  • Sistem de asamblare
    • În directoarele specifice arhitecturii, bibliotecile sunt acum salvate cu nume care reflectă arhitectura și tipul de executabil, cum ar fi „i386-windows” pentru formatul PE și „x86_64-unix” pentru bibliotecile Unix, permițând suport pentru diferite arhitecturi într-un singur Wine instalarea și furnizarea de compilare încrucișată a Winelib.
    • Pentru a seta o opțiune în anteturile fișierelor PE care controlează tranziția la utilizarea DLL-urilor native, a fost adăugat indicatorul „--prefer-native option” la winebuild (procesarea DLL_WINE_PREATACH în DllMain a fost oprită).
    • S-a adăugat suport pentru versiunea 4 a formatului de date de depanare Dwarf, care este acum utilizat implicit la construirea bibliotecilor Wine.
    • S-a adăugat opțiunea de compilare „—enable-build-id” pentru a salva identificatorii unici de construcție în fișierele executabile.
    • S-a adăugat suport pentru utilizarea compilatorului Clang în modul de compatibilitate MSVC.
  • Miscelaneu
    • Numele directoarelor tipice din shell-ul utilizatorului (Windows Shell) sunt date schemei utilizate începând cu Windows Vista, adică. În loc de „Documentele mele”, acum este creat un director „Documente”, iar majoritatea datelor sunt salvate în directorul „AppData”.
    • Suport pentru specificația OpenCL 1.2 a fost adăugat la stratul de bibliotecă OpenCL.
    • Driverul WinSpool a adăugat suport pentru diferite dimensiuni de pagină la imprimare.
    • S-a adăugat suport inițial pentru MSDASQL, furnizorul Microsoft OLE DB pentru driverele ODBC.
    • Motorul Wine Mono cu implementarea platformei .NET a fost actualizat pentru lansarea 7.0.0.
    • Datele Unicode au fost actualizate la specificația Unicode 14.
    • Arborele sursă include bibliotecile Faudio, GSM, LCMS2, LibJPEG, LibJXR, LibMPG123, LibPng, LibTiff, LibXml2, LibXslt și Zlib, care sunt compilate în format PE și nu necesită o versiune în format Unix. În același timp, aceste biblioteci pot fi, de asemenea, importate din sistem pentru a utiliza ansambluri externe în loc de opțiuni PE încorporate.

Sursa: opennet.ru

Adauga un comentariu