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

Пасля года распрацоўкі і 26 эксперыментальных версій прадстаўлены стабільны рэліз адкрытай рэалізацыі Win32 API – Wine 9.0, які ўвабраў у сябе больш за 7000 змен. З ключавых дасягненняў у новай версіі вылучаецца рэалізацыя архітэктуры WoW64 для запуску 32-разрадных праграм у 64-разрадным асяроддзі, інтэграцыя драйвера для падтрымкі Wayland, падтрымка архітэктуры ARM64, рэалізацыя API DirectMusic і падтрымка смарткарт.

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

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

  • Дададзены драйвер winewayland.drv, які дазваляе выкарыстоўваць Wine у ​​асяроддзі на базе пратаколу Wayland без ужывання XWayland і кампанентаў X11. Распрацоўка нацэлена на забеспячэнне працы чыстага Wayland-асяроддзі з падтрымкай запуску Windows-прыкладанняў, які не патрабуе ўсталёўкі пакетаў, звязаных з X11, што дазваляе дамагчыся больш высокай прадукцыйнасці і спагадлівасці гульняў за кошт выключэння лішніх праслоек. Выкарыстанне чыстага асяроддзя Wayland для Wine таксама дазваляе пазбавіцца ад праблем з бяспекай, уласцівых X11 (напрыклад, не вартыя даверу гульні для X11 могуць шпіёніць за іншымі прыкладаннямі бо пратакол X11 дазваляе атрымаць доступ да ўсіх падзей уводу і ажыццявіць падстаноўку фіктыўных націскаў клавіш).

    Драйвер адзначаны як эксперыментальны і які знаходзіцца ў распрацоўцы, але, тым не менш, у ім ужо маецца падтрымка шматлікіх магчымасцяў, такіх як кіраванне вокнамі, праца з некалькімі маніторамі, падтрымка маштабавання вываду на экранах з высокай шчыльнасцю пікселяў (high-DPI), праца з адноснымі каардынатамі пры удасканаленьні руху мышы і падтрымка графічнага API Vulkan. Па змаўчанні драйвер не актыўны і для яго ўключэння варта дадаць «wayland» у параметр рэестра «HKCUSoftwareWineDrivers» і пераканацца ў адсутнасці выстаўлення зменнай асяроддзя DISPLAY: wine reg.exe add HKCUSoftwareWineDrivers /v Graphics /d x11,wayland

  • Ажыццёўлены пераклад усіх модуляў на інтэрфейс сістэмных выклікаў NT, замест ажыццяўлення прамых выклікаў паміж узроўнямі PE і Unix, што азнаменавала завяршэнне шматгадовай працы па перакладзе ўсіх DLL-бібліятэк на выкарыстанне фармату выкананых файлаў PE (Portable Executable).
  • Прадоўжана развіццё праслойкі WoW64 (64-bit Windows-on-Windows), якая дазваляе выконваць 32-разрадныя Windows-прыкладанні ў 64-разрадных Unix-сістэмах. Ва ўсіх модулях, якія звяртаюцца да Unix-бібліятэкаў, задзейнічаны пераўтваральнікі сістэмных выклікаў WoW64 (thunk), якія дазваляюць 32-разрадным модулям у фармаце PE звяртацца да 64-разрадных Unix-бібліятэкам.

    Удасканалены новы рэжым запуску WoW64, у якім 32-разрадны код выконваецца ўсярэдзіне 64-разраднага працэсу (у старым рэжыме WoW64 32-разрадныя прыкладанні запускаліся ў 32-разрадных Unix-працэсах). Дададзена падтрымка прымянення новага рэжыму WoW64 на платформе macOS. Бо ў новым рэжыме WoW64 адзначаюцца асобныя недапрацоўкі, такія як адсутнасць падтрымкі 16-разраднага рэжыму і паніжэнне прадукцыйнасці OpenGL з-за адсутнасці падтрымкі пашырэння ARB_buffer_storage, ён пакуль не ўключаны па змаўчанні і патрабуе зборкі з опцыяй «-enable-archs=i386,x86 » у скрыпце configure.

  • Дададзена магчымасць выканання існых выкананых файлаў Windows на сістэмах з архітэктурай ARM64. Рэалізаваная магчымасць зборкі Wine для ABI ARM64EC (ARM64 Emulation Compatible) і падтрымка загрузкі модуляў ARM64EC, якія выкарыстоўваюцца для спрашчэння партавання на сістэмы ARM64 прыкладанняў, першапачаткова напісаных для архітэктуры x86_64, праз прадастаўленне магчымасці выканання ў асяроддзі ARM64 асобных модуляў з кодам x86. Дададзена падтрымка фармату PE-файлаў ARM64X, які дазваляе загружаць адзін выкананы файл у працэсах x64/Arm64EC і ARM64. Рэалізаваны інтэрфейс для эмуляцыі 64-разрадных сістэм x32, але бібліятэка з эмулятарам пакуль не ўключана ў асноўны склад Wine (для запуску x86-кода ў асяроддзі ARM86 можна выкарыстоўваць вонкавы эмулятар FEX).
  • Графічная падсістэма
    • Драйвер PostScript перапрацаваны для падтрымкі spool-файлаў у фармаце Windows, у якіх захоўваюцца дадзеныя аб заданнях, якія выводзяцца на друк. Выключаны прамыя звароты да драйвера з Unix-акружэнні.
    • У тэмы афармлення WinRT дададзена падтрымка цёмнага рэжыму. У WineCfg дададзена настройка для ўключэння цёмнага афармлення інтэрфейсу.
    • У драйвер для графічнага API Vulkan дададзена падтрымка спецыфікацыі Vulkan 1.3.272 (у Wine 8.0 падтрымліваўся 1.3.237).
    • Праведзена аптымізацыя функцый бібліятэкі GdiPlus, якая дазволіла павялічыць прадукцыйнасць працы з графікай.
  • Direct3D
    • Забяспечана прыпыненне разбору шматструменнага патоку каманд ва ўмовах адсутнасці апрацоўваных каманд адмалёўкі, што дазваляе знізіць спажыванне энергіі да ўзроўню аднаструменнай апрацоўкі пры выкананні праграм, якія не займаюць усю паласу прапускання патоку каманд.
    • У Direct3D 10 рэалізавана падтрымка дадатковых эфектаў.
    • Унесены аптымізацыі прадукцыйнасці ў код WineD3D і бэкенд, які выкарыстоўвае графічны API Vulkan.
    • У кодзе адмалёўкі на базе API Vulkan дададзеная праверка магчымасцяў, якія падтрымліваюцца прыладай, і выснова з дадаткам звестак аб даступным узроўні функцыянальнасці Direct3D.
    • Рэалізаваны функцыі D3DXFillTextureTX і D3DXFillCubeTextureTX.
    • У класічны бэкенд шэйдараў OpenGL ARB дададзеная падтрымка вызначэння ценяў пры дапамозе пашырэння ARB_fragment_program_shadow.
    • У D3DXLoadMeshHierarchyFromX і падобныя функцыі дададзена падтрымка загрузкі карыстацкіх дадзеных пры дапамозе інтэрфейсу ID3DXLoadUserData.
  • Гук і відэа
    • Прапанавана пачатковая рэалізацыя API DirectMusic. Дададзена падтрымка калекцый, прылад і ўзораў гукаў у фармаце SoundFont. Дададзена падтрымка эфекту Доплера. Рэалізаваны тэсты для праверкі карэктнасці рэалізацыі пры працы секвенсара dmime і MIDI-сінтэзатара dmsynth.
    • Для выкарыстання ў API DirectMusic убудавана бібліятэка FluidSynth.
    • Рэалізаваная падтрымка загрузкі гукавых шрыфтоў (SoundFont - фарматы для сінтэзу на аснове сэмплаў, якія выкарыстоўваюцца для прайгравання MIDI-файлаў) у фарматах DLS1 і DLS2, а таксама ў фармаце SF2, які ўжываецца ў Linux.
    • Дададзена магчымасць прайгравання MIDI-кантэнту пры дапамозе бібліятэкі dmsynth, выкарыстоўваючы праграмны сінтэзатар FluidSynth і API DirectSound для вываду гуку.
    • Дададзены дэкодэраўшчык для відэа ў фармаце відэакодэка Indeo IV50.
  • DirectShow
    • Рэалізаваны кампанент DMO (DirectX Media Object) з дэкадзіроўшчыкам фармату WMV (Windows Media Video).
    • Дададзены фільтр захопу гуку (DirectShow Audio Capture Filter).
    • У фільтр падзелу струменяў MPEG‑1 (DirectShow MPEG‑1 Stream Splitter) у дадатак да гукавых струменяў дададзеная падтрымка струменяў з відэа і службовых струменяў.
    • Рэалізаваны фільтр для дэкадавання відэа ў фармаце MPEG-1 (DirectShow MPEG-1 Video Decoder).
  • прылады ўводу
    • У DirectInput рэалізаваная падтрымка мапінга дзеянняў (action maps), якія дазваляюць прывязаць кнопкі на гульнявым кантролеры да вызначаных дзеянняў у гульнях.
  • Інтэграцыя з працоўным сталом
    • Забяспечана экспартаванне ў асноўнае карыстацкае асяроддзе прывязак, якія дазваляюць выклікаць якія запускаюцца пад кіраваннем Wine прыкладання ў якасці апрацоўшчыкаў пратаколаў пры адкрыцці URL (напрыклад, запуск spotify.exe пры адкрыцці спасылак выгляду «spotify:user:spotify:playlist:848218482355482821»).
    • Рэалізавана выманне дадзеных EDID (Extended Display Identification Data) з інфармацыяй аб параметрах падлучанага манітора, такіх як назва і мадэль прылады.
    • Прадастаўлена магчымасць закрыцця акна рабочага стала, разгорнутага ў поўнаэкранным рэжыме, выкарыстоўваючы кнопку "Exit desktop" у меню "Start".
  • Інтэрнацыяналізацыя
    • Пашыраная падтрымка IME (Input Method Editors). Праведзена праца па забеспячэнні сумяшчальнасці з роднымі для Windows рэалізацыямі IME і паляпшэнню інтэграцыі з Linux IME
    • Забяспечана генерацыя БД лакаляў у фармаце locale.nls з БД Unicode CLDR (Unicode Common Locale Data Repository) версіі 44. Дададзена падтрымка дадатковых лакаляў bew-ID, blo-BJ, csw-CA, ie-EE, mic-CA, prg-PL , skr-PK, tyv-RU, vmw-MZ, xnr-IN і za-CN.
    • Выкананы пераклад інтэрфейсу на грузінскую мову. Забяспечаны поўныя пераклады для 16 моў, а частковыя для 31 мовы.
    • Табліцы сімвалаў Unicode абноўлены да версіі стандарту 15.1.0. Абноўлена база гадзінных паясоў.
  • Ядро (інтэрфейсы ядра Windows)
    • У якасці выдаванай версіі Windows па змаўчанні вызначана Windows 10.
    • Для выкананых файлаў у фармаце PE рэалізаваная падтрымка рандамізацыі адраснай прасторы (ASLR), але адрасы загрузкі кода ў памяць пакуль цалкам не рандамізаваныя.
    • Рэалізаваная падтрымка слаба фрагментаваным кучы (LFH, Low Fragmentation Heap), якая дазволіла павялічыць прадукцыйнасць аперацый вылучэння памяці.
    • У механізм вылучэння віртуальнай памяці дададзена падтрымка рэзервавання памяці (placeholder), які дазваляе з дадаткам зарэзерваваць пэўную вобласць віртуальнай памяці для выкарыстання ў будучыні.
    • 64-разрадныя загрузнікі (loader і preloader) выкананых файлаў і бібліятэк сабраны ў фармаце PIE (Position-Independent Executables) для вызвалення часткі 32-разраднай адраснай прасторы.
    • Забяспечана карэктная раскрутка стэка (stack unwinding) для сістэмных выклікаў NT і карыстацкіх callback-выклікаў.
  • сеткавыя магчымасці
    • У рухавічку MSHTML рэалізавана падтрымка механізму зборкі смецця "Cycle Collection".
    • У MSHTML дададзена падтрымка сінхроннага рэжыму апрацоўкі запытаў XMLHttpRequest.
    • У jscript.dll дададзеная падтрымка аб'екта WeakMap для працы з калекцыяй пар ключ/значэнне, у якіх ключ з'яўляецца аб'ектам, да якога можа быць прымацавана адвольнае значэнне. Рэалізаваны метады WeakMap.get(), WeakMap.delete(), WeakMap.clear() і WeakMap.has().
    • Браўзэрны рухавічок Gecko абноўлены да версіі 2.47.4.
    • Рэалізавана падтрымка апавяшчэнняў аб змене стану сеткавага інтэрфейсу.
  • Крыптаграфія і бяспека
    • У бібліятэцы Winscard.dll дададзена падтрымка смарткарт, рэалізаваная праз сістэмную бібліятэку PCSClite.
    • У BCrypt дададзеная падтрымка пратаколу абмену ключамі Дыфі-Хеллмана.
    • Рэалізаваны пакет Negotiate, які прадстаўляе праслойку для выкарыстання інтэрфейсу SSPI (Security Support Provider Interface) для звароту да правайдэраў SSP (Security Support Provider).
  • Убудаваныя прыкладанні
    • У адладчыку Wine Debugger (winedbg) для дызасэмблірвання машынных інструкцый X86 задзейнічана бібліятэка Zydis.
    • У інтэрфейс WineCfg дададзена магчымасць выстаўлення на 64-разрадных платформах старых версій Windows (да XP), што дазваляе запускаць састарэлыя прыкладанні, выкарыстаючы рэжым WoW64.
    • Ва ўсіх убудаваных графічных дадатках рэалізаваны вывад інфармацыі аб памылках у асобным дыялогу, замест іх адлюстравання ў кансолі.
    • У праграме systeminfo забяспечаны паказ звестак з БД WMI (Windows Management Instrumentation).
    • Паведамленні дадатак klist для адлюстравання тыкетаў Kerberos.
    • У дадатку taskkill рэалізавана магчымасць прымусовага завяршэння даччыных працэсаў.
    • Ва ўтыліту start дададзены параметр "/machine" для выбару архітэктуры, выкарыстоўванай пры запуску гібрыдных выкананых файлаў, якія падтрымліваюць x86 і ARM.
    • Рэалізавана большая частка функцыянальнасці праграмы tasklist.
    • Дададзена базавая рэалізацыя прыкладання findstr.
  • Інструменты для распрацоўкі
    • Ва ўтыліце WineDump рэалізавана магчымасць вываду змесціва файлаў рэестра Windows (фармат REGF), а таксама паказу дадзеных для ўсіх архітэктур (x86/ARM64), якія падтрымліваюцца ў гібрыдных PE-файлах.
    • У кампілятары IDL дададзена падтрымка атрыбутаў "composable", "default_overload", "deprecated" і "protected".
    • Выдалена бібліятэка libwine.so, якая была абвешчана састарэлай у выпуску Wine 6.0 і даўно не выкарыстоўваецца ў Wine. Праграмы ў фармаце ELF, сабраныя ў старых версіях Wine (5.0 і старэй) з libwine.so, для выканання ў Wine 9.0 патрабуюць перазборкі.
  • Убудаваныя бібліятэкі і знешнія залежнасці
    • У склад інтэграваныя бібліятэкі FluidSynth 2.3.3, Musl 1.2.3 (толькі матэматычныя функцыі) і Zydis 4.0.0.
    • Абноўлены да новых версій кампаненты Vkd3d 1.10, Faudio 23.12, OpenLDAP 2.5.16, LCMS2 2.15, LibMPG123 1.32.2, LibPng 1.6.40, LibTiff 4.6.0, LibXml2 . . Рухавічок Wine Mono з рэалізацыяй платформы. NET абноўлены да выпуску 2.11.5.
    • У драйверы winewayland.drv у якасці вонкавых залежнасцяў задзейнічана кліенцкая бібліятэка Wayland, а таксама бібліятэкі xkbcommon і xkbregistry.
    • Для падтрымкі смарткарт задзейнічана знешняя бібліятэка PCSClite (у macOS - PCSC).
    • Для зборкі PE-файлаў на платформах, выдатных ад i386, зараз патрабуецца наяўнасць крос-кампілятара з падтрымкай дырэктыў ".seh" для апрацоўкі выключэнняў.

Крыніца: opennet.ru

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