Стабільны рэліз Wine 7.0

Пасля года распрацоўкі і 30 эксперыментальных версій прадстаўлены стабільны рэліз адкрытай рэалізацыі Win32 API – Wine 7.0, які ўвабраў у сябе больш за 9100 змен. З ключавых дасягненняў новай версіі адзначаецца пераклад большасці модуляў Wine у ​​фармаце PE, падтрымка тэм афармлення, пашырэнне стэка для джойсцікаў і прылад уводу з інтэрфейсам HID, рэалізацыя архітэктуры WoW64 для запуску 32-разрадных праграм у 64-разрадным асяроддзі.

У Wine пацверджана паўнавартасная праца 5156 (год таму 5049) праграм для Windows, яшчэ 4312 (год таму 4227) праграм выдатна працуюць пры дадатковых наладах і вонкавых DLL. У 3813 праграм (гады таму 3703) назіраюцца невялікія праблемы ў працы, якія не перашкаджаюць выкарыстанню асноўных функцый прыкладанняў.

Ключавыя навіны Wine 7.0:

  • Модулі ў фармаце PE
    • Амаль усе DLL-бібліятэкі перакладзены на выкарыстанне фармату выкананых файлаў PE (Portable Executable, ужываецца ў Windows) замест ELF. Ужыванне PE вырашае праблемы з падтрымкай розных схем абароны ад капіявання, якія здзяйсняюць зверку ідэнтычнасці сістэмных модуляў на дыску і ў памяці.
    • Рэалізавана магчымасць узаемадзеяння PE-модуляў з Unix-бібліятэкамі з выкарыстаннем штатнага сістэмнага выкліку ядра NT, што дазваляе схаваць зварот да Unix-кода ад адладчыкаў Windows і адсочваць рэгістрацыю патокаў.
    • Убудаваныя DLL зараз загружаюцца толькі пры наяўнасці на дыску адпаведнага ім файла ў фармаце PE, незалежна ад таго, сапраўдная гэта бібліятэка ці заглушка. Паказаная змена дазваляе з дадаткам заўсёды бачыць карэктную прывязку да PE-файлаў. Для адключэння гэтых паводзін можна выкарыстоўваць зменную асяроддзі WINEBOOTSTRAPMODE.
  • WoW64
    • Рэалізаваная архітэктура WoW64 (64-bit Windows-on-Windows), якая дазваляе запускаць 32-разрадныя Windows-прыкладанні ў 64-разрадных Unix-працэсах. Падтрымка рэалізаваная праз падлучэнне праслойкі, якая транслюе 32-разрадныя сістэмныя выклікі NT у 64-разрадныя звароты да NTDLL.
    • Праслойкі WoW64 падрыхтаваны для большасці Unix-бібліятэк і дазваляюць 32-разрадным модулям у фармаце PE звяртацца да 64-разрадных Unix-бібліятэкаў. Пасля завяршэння перакладу ўсіх модуляў у фармат PE з'явіцца магчымасць выканання 32-разрадных Windows-прыкладанняў без усталёўкі 32-разрадных Unix-бібліятэк.
  • Тэмы афармлення
    • Рэалізавана падтрымка тэм афармлення. У склад уключаны тэмы афармлення "Light", "Blue" і "Classic Blue", якія могуць быць абраныя праз канфігуратар WineCfg.
    • Дададзена магчымасць налады вонкавага выгляду ўсіх элементаў кіравання інтэрфейсу праз тэмы афармлення. Забяспечана аўтаматычнае абнаўленне віду элементаў пасля змены тэмы афармлення.
    • Ва ўсе ўбудаваныя прыкладанні Wine дададзена падтрымка тэм афармлення. Праведзена адаптацыя прыкладанняў да экранаў з высокай шчыльнасцю пікселяў (High DPI).
  • Графічная падсістэма
    • Дададзена новая бібліятэка Win32u, у якую вынесены часткі бібліятэк GDI32 і USER32, звязаныя з апрацоўкай графікі і кіраваннем вокнамі на ўзроўні ядра. У далейшым пачнецца праца па пераносе ў Win32u кампанентаў драйвераў, такіх як winex11.drv і winemac.drv.
    • У драйверы Vulkan рэалізавана падтрымка спецыфікацыі графічнага API Vulkan 1.2.201.
    • Дадзена падтрымка высновы праз API Direct2D штрыхаваных геаметрычных аб'ектаў, з магчымасцю праверкі траплення кліку (hit-test).
    • У API Direct2D рэалізавана пачатковая падтрымка візуальных эфектаў, якія выкарыстоўваюцца з выкарыстаннем інтэрфейсу ID2D1Effect.
    • У API Direct2D API дададзена падтрымка інтэрфейсу ID2D1MultiThread, які ўжываецца для арганізацыі эксклюзіўнага доступу да рэсурсаў у шматструменных прыкладаннях.
    • У наборы бібліятэк WindowsCodecs рэалізавана падтрымка дэкадавання малюнкаў у фармаце WMP (Windows Media Photo) і кадавання малюнкаў у фармаце DDS (DirectDraw Surface). Спынена падтрымка кадавання малюнкаў у фармаце ICNS (для macOS), які не падтрымліваецца ў Windows.
  • Direct3D
    • Значна палепшаны новы рухавічок адмалёўкі, які ажыццяўляе трансляцыю выклікаў Direct3D у графічны API Vulkan. У большасці сітуацый узровень падтрымкі Direct3D 10 і 11 у рухавіку на базе Vulkan даведзены да парытэту са старым рухавіком на аснове OpenGL. Для ўключэння рухавічка адмалёўкі праз Vulkan варта ўсталяваць зменную рэестра Direct3D "renderer" у значэнне "vulkan".
    • Рэалізаваны шматлікія магчымасці Direct3D 10 і 11, уключаючы адкладзеныя кантэксты (Deferred Contexts), якія працуюць у кантэксце прылад аб'екты стану, сталыя зрушэнні ў буферах, чыстку неўпарадкаваных уяўленняў тэкстур, капіяванне дадзеных паміж рэсурсамі ў бестыпавых фарматах (DXGI_FORMAT_BC3_TYPELESS, DXGI .п.
    • Дададзена падтрымка шматманіторных канфігурацый, якая дазваляе абраць манітор для адлюстравання Direct3D-прыкладанні ў поўнаэкранным рэжыме.
    • У API DXGI рэалізавана магчымасць гама-карэкцыі экрана, што можа прымяняцца прыкладаннямі на базе Direct3D 10 і 11 для змены яркасці экрана. Забяспечана выманне лічыльнікаў віртуальных фрэймбуфераў (SwapChain).
    • У Direct3D 12 дададзена падтрымка каранёвых сігнатур версіі 1.1.
    • У кодзе адмалёўкі праз API Vulkan падвышаная эфектыўнасць апрацоўкі запытаў пры наяўнасці ў сістэме падтрымкі пашырэння VK_EXT_host_query_reset.
    • Дададзена магчымасць вываду віртуальных фрэймбуфераў (SwapChain) праз GDI, калі для адлюстравання не могуць выкарыстоўвацца OpenGL або Vulkan, напрыклад, пры вывадзе ў акно з розных працэсаў, напрыклад, у праграмах на базе фрэймворка CEF (Chromium Embedded Framework).
    • Пры выкарыстанні бэкенда для шэйдараў GLSL для шэйдарных інструкцый забяспечана ўжыванне мадыфікатара «precise».
    • У API DirectDraw дададзеная падтрымка 3D-рэндэрынгу ў сістэмную памяць, выкарыстоўваючы праграмныя прылады, такія як "RGB", "MMX" і "Ramp".
    • У базу графічных карт Direct3D дададзены карты AMD Radeon RX 5500M, AMD Radeon RX 6800/6800 XT/6900 XT, AMD Van Gogh, Intel UHD Graphics 630 і NVIDIA GT 1030.
    • З рэестра HKEY_CURRENT_USERSoftwareWineDirect3D выдалены ключ «UseGLSL», замест якога пачынальна з Wine 5.0 трэба выкарыстоўваць «shader_backend».
    • Для падтрымкі Direct3D 12 зараз неабходна наяўнасць бібліятэкі vkd3d як мінімум версіі 1.2.
  • D3DX
    • У рэалізацыі D3DX 10 палепшана падтрымка фрэймворка візуальных эфектаў і дададзена падтрымка фармату малюнкаў Windows Media Photo (JPEG XR)
    • Дададзеныя якія прадстаўляюцца ў D3DX10 функцыі стварэння тэкстур, такія як D3DX10CreateTextureFromMemory().
    • Часткова рэалізаваны праграмныя інтэрфейсы ID3DX10Sprite і ID3DX10Font.
  • Гук і відэа
    • У адзін агульны бэкенд WineGStreamer аб'яднаны GStreamer-надбудовы для DirectShow і фрэймворка Media Foundation, што павінна спрасціць распрацоўку новых API дэкадавання кантэнту.
    • На базе бэкенда WineGStreamer рэалізаваны аб'екты Windows Media для сінхроннага і асінхроннага чытання.
    • Прадоўжана дапрацоўка рэалізацыі фрэймворка Media Foundation, дададзена падтрымка функцыянальнасці IMFPMediaPlayer, размеркавальніка сэмплаў (sample allocator), палепшана падтрымка EVR і буфераў адмалёўкі SAR.
    • Выдалена бібліятэка wineqtdecoder, якая прадстаўляе дэкадавальнік для фармату QuickTime (для ўсіх кодэкаў зараз выкарыстоўваецца GStreamer).
  • прылады ўводу
    • Значна палепшаны стэк для прылад уводу, якія падтрымліваюць пратакол HID (Human Interface Devices), у якім рэалізаваны такія магчымасці як разбор HID-дэскрыптараў, апрацоўка HID-паведамленняў і падаванне міні-драйвераў HID.
    • У бэкендах драйвера winebus.sys палепшана трансляцыя апісанняў прылад у HID-паведамленні.
    • Дададзены новы бэкэнд DirectInput для джойсцікаў, якія падтрымліваюць пратакол HID. Рэалізавана магчымасць выкарыстання эфектаў зваротнай сувязі ў джойсціках. Палепшана панэль кіравання джойсцікамі. Аптымізавана ўзаемадзеянне з прыладамі, сумяшчальнымі з XInput. У WinMM падтрымка джойсцікаў пераведзена на DInput, замест выкарыстання бэкенда evdev у Linux і IOHID у macOS IOHID. Выдалены стары драйвер джойсцікаў winejoystick.drv.
    • У модуль DInput дададзены новыя тэсты, якія базуюцца на ўжыванні віртуальных HID-прылад і не патрабавальныя наяўнасці фізічнай прылады.
  • Тэкст і шрыфты
    • У DirectWrite дададзены аб'ект Font Set.
    • У RichEdit карэктна рэалізаваны інтэрфейс TextHost.
  • Ядро (інтэрфейсы ядра Windows)
    • Пры запуску ў Wine неапазнанага выкананага файла (напрыклад, 'wine foo.msi') зараз выклікаецца start.exe, які выклікае апрацоўшчыкі, злучаныя з тыпам файла.
    • Дададзена падтрымка механізмаў сінхранізацыі NtAlertThreadByThreadId і NtWaitForAlertByThreadId, блізкіх да ф'ютэксаў у Linux.
    • Дададзена падтрымка адладкавых аб'ектаў NT, якія ўжываюцца для адладкі функцый ядра.
    • Дададзена падтрымка дынамічных ключоў рэестра для захавання дадзеных аб прадукцыйнасці.
  • C Runtime
    • У C runtime рэалізаваны поўны набор матэматычных функцый, які галоўным чынам перанесены з бібліятэкі Musl.
    • Для ўсіх платформаў CPU забяспечана карэктная падтрымка функцый для вылічэнняў з якая плавае коскі.
  • сеткавыя магчымасці
    • Палепшаны рэжым сумяшчальнасці з Internet Explorer 11 (IE11), які зараз выкарыстоўваецца па змаўчанні для апрацоўкі HTML-дакументаў.
    • У бібліятэцы mshtml рэалізаваны JavaScript-рэжым ES6 (ECMAScript 2015), у якім забяспечана падтрымка такіх магчымасцей, як выраз let і аб'ект Map.
    • Усталёўка ў працоўны каталог Wine MSI-пакетаў з дадаткамі да рухавічка Gecko зараз вырабляецца пры неабходнасці, а не падчас абнаўлення Wine.
    • Дададзена падтрымка пратаколу DTLS.
    • Рэалізаваны сэрвіс NSI (Network Store Interface), які захоўвае і які перадае іншым сэрвісам інфармацыю аб маршрутызацыі і сеткавых інтэрфейсах на кампутары.
    • Апрацоўшчыкі API WinSock, такія як setsockopt і getsockopt, перанесены ў бібліятэку NTDLL і драйвер afd.sys, для адпаведнасці архітэктуры Windows.
    • У працоўны каталог Wine зараз усталёўваюцца ўласныя файлы з сеткавымі БД, такія як /etc/protocols і /etc/networks, замест звароту да аналагічных Unix БД.
  • Альтэрнатыўныя платформы
    • Дададзена падтрымка абсталявання Apple на базе ARM-чыпаў M1 (Apple Silicon).
    • Для падтрымкі функцый BCrypt і Secur32 на платформе macOS зараз патрабуецца ўстаноўка бібліятэкі GnuTLS.
    • 32-разрадныя выкананыя файлы для платоформ ARM зараз збіраюцца ў рэжыме Thumb-2, па аналогіі з Windows. Для загрузкі падобных файлаў задзейнічаны preloader.
    • Для 32-разрадных платформаў ARM рэалізавана падтрымка размоткі (unwinding) выключэнняў.
    • Для FreeBSD пашырана колькасць падтрымліваемых запытаў нізкаўзроўневай інфармацыі аб сістэме, такіх як дадзеныя аб стан памяці і ўзроўні зарада акумулятара.
  • Убудаваныя прыкладанні і інструменты для распрацоўкі
    • Ва ўтыліту reg.exe дададзена падтрымка 32- і 64-разрадных уяўленняў рэестра. Дададзена падтрымка капіравання ключоў рэестра.
    • Ва ўтыліту WineDump дададзеная падтрымка высновы дампа метададзеных Windows і паказу дэталёвай інфармацыі аб запісах CodeView.
    • У адладчыку Wine Debugger (winedbg) рэалізавана магчымасць адладкі 32-разрадных працэсаў з 64-разраднага адладчыка.
    • У кампілятар IDL (widl) дададзена магчымасць загрузкі бібліятэк, убудаваных у PE-файлы, забяспечана падтрымка спецыфічных для WinRT атрыбутаў і канструкцый, а таксама рэалізаваны пошук бібліятэк у прывязцы да платформы.
  • Сістэма зборкі
    • У спецыфічных для апаратных архітэктур каталогах бібліятэкі зараз захоўваюцца з імёнамі, якія адлюстроўваюць архітэктуру і тып выкананых файлаў, напрыклад, 'i386-windows' для фармату PE і 'x86_64-unix' для unix-бібліятэк, што дазваляе рэалізаваць падтрымку розных архітэктур у адной усталёўцы Wine і забяспечыць кросскомпиляцию Winelib.
    • Для ўсталёўкі ў загалоўкі PE-файлаў опцыі, якая кіруе пераходам на выкарыстанне родных DLL-бібліятэк, у winebuild дададзены сцяг '—prefer-native option' (апрацоўка DLL_WINE_PREATTACH у DllMain спынена).
    • Дададзена падтрымка 4 версіі фармату адладкавых дадзеных Dwarf, які зараз выкарыстоўваецца па змаўчанні пры зборцы бібліятэк Wine.
    • Дададзена зборачная опцыя '—enable-build-id' для захавання ў выкананых файлах унікальных ідэнтыфікатараў зборкі.
    • Дададзена падтрымка выкарыстання кампілятара Clang у рэжыме сумяшчальнасці з MSVC.
  • Рознае
    • Найменне тыпавых каталогаў у карыстацкай абалонцы (Windows Shell) прыведзена да схемы, ужывальнай пачынальна з Windows Vista, г.зн. замест 'My Documents' зараз ствараецца каталог 'Documents', а большая частка дадзеных захоўваецца ў каталог 'AppData'.
    • У праслойцы для бібліятэкі OpenCL дададзена падтрымка спецыфікацыі OpenCL 1.2.
    • У драйвер WinSpool дададзена падтрымка розных варыянтаў памераў старонак пры вывадзе на друк.
    • Дададзена пачатковая падтрымка MSDASQL, правайдэра Microsoft OLE DB для драйвераў ODBC.
    • Рухавічок Wine Mono з рэалізацыяй платформы. NET абноўлены да выпуску 7.0.0.
    • Дадзеныя Unicode абноўлены да спецыфікацыі Unicode 14.
    • У дрэва зыходных тэкстаў убудаваны бібліятэкі Faudio, GSM, LCMS2, LibJPEG, LibJXR, LibMPG123, LibPng, LibTiff, LibXml2, LibXslt і Zlib, якія збіраюцца ў фармаце PE і не патрабуюць наяўнасці варыянта ў Unix-фармаце. Пры гэтым дадзеныя бібліятэкі таксама могуць быць імпартаваныя з сістэмы для выкарыстання вонкавы зборак замест убудаваных PE-варыянтаў.

Крыніца: opennet.ru

Дадаць каментар