На Хабре публиковалась новость о Wine 8.0, новый релиз был представлен спустя целый год разработки и трех десятков тестовых версий для «обкатки». Наконец, несколько дней назад разработчики представили стабильный релиз Wine 8.0. Работа действительно очень объемная — команда внесла почти 9 000 изменений.
В новой версии стабильно работает множество различного виндового софта. По словам разработчиков, это 5266 программ, но, конечно, на самом деле их может быть значительно больше, особенно если учитывать софт, который работает с проблемами, но все же работает. Давайте посмотрим на ключевые изменения нового релиза и того, что он может предложить пользователям.
Главное то, что как раз в восьмой версии завершена работа по переводу модулей Wine в формат PE. Продолжается работа по оптимизации WoW64 для запуска 32-разрядных программ в 64-разрядном окружении. Также введена реализация Print Processor, добавлена поддержка эффектов в Direct2D. Плюс ко всему, появился компилятор шейдеров для языка HLSL в Direct 3D, значительно улучшена поддержка игровых контроллеров, добавлена поддержка протокола OCSP.
Но это все — глобально, теперь давайте поговорим о более конкретных подробностях нового обновления.
Модули формата PE
- Об этом кратко сказано выше, но это реально важное нововведение, подробности которого стоит раскрыть. Так, спустя целых 4 года активной работы всей команды удалось перевести DLL-библиотеки на использование формата исполняемых файлов PE. Зачем это нужно? Такой формат дает возможность использовать отладчики Windows. Есть и еще один плюс — решение проблем с поддержкой разных схем защиты от копирования. Они работают путем сверки идентичности системных модулей на диске и в памяти. Кроме того, удалось решить проблемы с работой 32-разрядных приложений на 64-разряных хостах и x86-приложений на ARM-системах. Следующий шаг разработчиков — перевод модулей на интерфейс системных вызовов NT.
- В Winelib-приложениях оставлена возможность работы со смешанными сборками Windows/Unix библиотек в формате ELF (.dll.so). При этом эти приложения не смогут поддерживать функционалость без 32-разрядных библиотек, которая используется посредством интерфейса вызовов NT, такую как WoW64.
- А еще удалось реализовать диспетчер системных вызовов, который используется для трансляций обращений из PE в Unix-библиотеки с целью снижения накладных расходов при выполнении полного системного вызова NT.
Графическая подсистема
Здесь все круто:
- Удалось преобразовать графические драйверы для выполнения на Unix-уровне системных вызовов и обращения к драйверам через библиотеку Win32u.
- Добавлена архитектура обработчиков вывода на печать.
- Добавлена поддержка эффектов в API Direct2D.
- Добавлена возможность записи и воспроизведения списков команд в API Direct2D.
- Добавлена поддержка спецификации Vulkan 1.3.237.
WoW64
Прослойки WoW64 теперь представлены для всех Unix-библиотек, они дают возможность 32-разрядным модулям в формате PE обращаться к 64-разрядным Unix-библиотекам. Сделано это затем, что после ликвидации прямых вызовов PE/Unix даст возможность выполнения 32-разрядных Windows-приложений без установки 32-разрядных Unix-библиотек.
Нет 32-разрядного загрузчика, но в Wine обеспечивается запуск 32-разрядных приложений. Это делается в новом режиме WoW64, который реализован таким образом, что внутри 64-разрядного процесса запускается 32-разрядный код. Режим этот включается при сборке Wine с опцией '--enable-archs'. Правда, его разработка не завершена, так что команда проекта призывает не использовать его повсеместно.
Сеть
- Об этом разработчики тоже не забыли, добавив и изменив многое:
- Добавлена поддержка протокола OCSP (Online Certificate Status Protocol). Он применяется для проверки отозванных сертификатов.
- Значительно расширен спектр возможностей EcmaScript. Они доступны в режиме соответствия стандартам JavaScript.
- И еще одно — в MSHTML появилась поддержка API Web Storage.
Direct3D
- Здесь реализован интерфейс Thread Pump, который появился в D3DX 10.
- В эффектах Direct3D 10 добавлена поддержка многих новых выражений.
- Появился новый компилятор шейдеров для языка HLSL (High-Level Shader Language). Он реализован на базе библиотеки vkd3d-shader.
Что со звуком?
- Здесь тоже много всего появилось и обновилось:
- Разработчики добавили фильтр для чтения потокового звука и видео в формате ASF (Advanced Systems Format).
- При помощи фреймворка Gstreamer реализована поддержка фильтров для декодирования звука в формате MPEG-1.
- Вместо библиотеки-прослойки OpenAL32.dll используется родная Windows-библиотека OpenAL32.dll, поставляемая с приложениями.
- Появилась возможность управления скоростью передачи данных.
- Добавлена реализация API Writer Encoding.
И, конечно, устройства ввода
- Оптимизирована поддержка горячего подключения игровых контроллеров.
- Появилась более совершенная реализация кода для определения игровых рулей, которая построена на базе библиотеки SDL.
- Оптимизирована поддержка виброотклика (Force feedback) при использовании игровых рулей.
- Изменено оформление панели управления джойстиком.
- Также появился WinRT-модуль Windows.Gaming.Input с реализацией программного интерфейса для доступа к геймпадам, джойстикам и игровым рулям.
Возможно, эти тексты тоже вас заинтересуют:
→ Нужны ли изменения в работе команды? Рассчитываем ответ по формуле Глейчера
→ Чем заняться в 2023? Идеи для пет-проектов и подборка материалов по профессиональному развитию
→ Гиперскейлинг в 2023 году: что мы делали, чтобы поддержать бизнес клиентов
Немного о встроенных приложениях
- Все они теперь переведены на работу с библиотекой Common Controls 6, с поддержкой тем оформления и отрисовки с учётом экранов c высокой плотностью пикселей.
- Появилась поддержка типа QWORD в утилитах для работы с реестром.
- Notepad получил строку состояния с данными о позиции курсора и функцию Goto Line для перехода на указанный номер строки.
Что еще?
- Разработчики обновили версии встроенных библиотек 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 обновлен до выпуска 7.4
- Добавлена начальная версия API UI Automation.
- Более не используется библиотека OpenAL.
Собственно, на этом все. Если вы уже успели поработать с новым релизом — расскажите, пожалуйста, в комментариях, как он вам. Возможно, возникли какие-то проблемы? Если да, то насколько критичны и как их можно решить, если это вообще возможно?
Комментарии (25)
roqin
01.02.2023 09:30+2Забавно. Лет 15 назад (т.е. ещё до выхода версии 1.0) я с нетерпением следил за ним, накладывал патчи как только выйдет новая версия, и сам собирал и проверял, что заработало. А теперь, так вышло, я все необходимые программы родные подобрал (для одной утилитки даже прикинул, что там мизерный объём работы и сам аналог написал). И сейчас он нужен только для того чтобы при помощи Word Viewer сделать PDF (LibreOffice всё же не всегда отображает идеально) и ещё ряд (неиспользуемых ныне) утилит осталось.
Alexey2005
01.02.2023 16:57А самая незаменимая офисная программа - FineReader, реально не имеющая аналогов, как не запускалась под wine, так и продолжает не запускаться.
roqin
01.02.2023 18:57Могу эти слова подтвердить. Только уточню, что нельзя запустить более менее новые версии, а вот версия 8.0 вполне работает (я её даже в своё время купил). И тут ещё мне совсем недавно на глаза какая-то программа OCR с GUI (причём на движке файнридера) под линукс попалась. Но я её не проверял. Так что в этом отношении всё возможно не безнадёжно.
PsyHaSTe
02.02.2023 22:27Я все тешу себя надежндой что смогу запустить 3 героев на ARM маке. Причем оно почти работает, SoD я смог запустить, а вот HOTA уже не хочет работать почему-то. А я уже слишком привык ко всем улучшениям последнего дополнения чтобы откатываться...
khajiit
03.02.2023 01:15VCMI?
Сам не пробовал, просто погуглил.PsyHaSTe
03.02.2023 10:34Повторюсь. с самими героями проблем нет, проблема с HOTA файлами. Они что-то такое делают что либо софтварно эмулируется либо вообще не реализовано, и все очень плохо работает (неиграбельно).
khajiit
03.02.2023 10:41Так это альтернативный движок, который требует только файлы данных. Ему все равно на код оригинального движка.
PsyHaSTe
03.02.2023 10:58+1Оригинальный движок не при чем. Скажем, в HOTA есть лобби позволяющие играть по интернету и система рейтинга. Либо скажем механизм исследования заклинаний в башне магии. Именно в одной из этих частей используются неработающие корректно АБИ, и альтернативный движок как мне кажется никак не поможет, потому что он альтернативно реализует только то, что было в базовой игре, которая и так работает как нужно на оригинальном движке
vyrkmod
03.02.2023 15:22https://appdb.winehq.org/objectManager.php?sClass=version&iId=29646
Сейчас должно работать, причём без танцев с бубномPsyHaSTe
03.02.2023 17:25В апреле прошого года не работало, может за последние полгода что-то изменилось. но на тот момент оно не работало. Напомню, что речь про ARM ноут, то есть у нас трансляция windows -> wine -> rosetta -> CPU. И оно видимо не всегда нормально отрабатывает.
domix32
01.02.2023 12:01+1Про Open AL что-то странное - таки её в итоге используют или нет? То что враппер убрали это понятно, а где не используется Open AL непонятно. Что используется вместо него? ALSA слой?
ITLav
01.02.2023 22:46+1Из проекта удалена не только зависимость на линуксовую OpenAL, а удалена и реализация openal32.dll, поскольку в оригинальном Windows её нет, и она должна поставляться приложением:
«openal32: Remove dll. It's not part of Windows, so applications have to ship the native version anyway.»
Fahrain
01.02.2023 12:09+1А кто-нибудь пробовал вкорячить в вайн куски от магазина винды? Сам магазин мне не нужен, но проблема в том, что новые версии программ оказываются завязанными на него и даже не запускаются. Например, iTunes, WhatsApp.
nebularia
01.02.2023 12:30+6UWP это совсем другой API, там Wine не поможет.
Конкретно WhatsApp можно скачать с официального сайта в .exe, притворившись 7 виндой в юзерагенте, тогда такие ссылки кажет:
https://web.whatsapp.com/desktop/windows/release/ia32/WhatsAppSetup.exe (32 бита)
https://web.whatsapp.com/desktop/windows/release/x64/WhatsAppSetup.exe (64 бита)
perfect_genius
01.02.2023 20:30На Хабре публиковалась новость о Wine 8.0
Так в чём отличие от той новости?
Dynasaur
01.02.2023 23:28Есть такая корявая программка - плагин КриптоПРО, который приходится использовать для ЭЦП при работе с госсайтами. Работает она под Виндой, только глючит. Так вот у меня под Вайном она работала лучше, чем под Виндой.
Drazd
02.02.2023 09:37Что-то странное. У меня ни на винде, ни стандартная сборка для линукса не глючат и работают прекрасно. Можете поделиться историями где что у вас не работало, чтобы я мог подготовиться?
Если что, я использую Криптопро в сочетании с руТокеном в основном для входа и работы с ФНС, реже подписываю файлы.
OneManStudio
А в чем сокровенный смысл показывать WoW на скрине? Он же работал и 15 лет назад если вообще не всегда.
arozhankov
Ну может быть скорость видеоигр выросла в 2 раза? ????
ash_lm
Не знаю, как сейчас, т.к. много лет не играл, но раньше WoW поддерживал и OpenGL и DirectX. Если запускался под DirectX, то бывали и проблемы с производительностью и с текстурами, а с OpenGL было норм. Затем Blizzard выпилило поддержку OpenGL создав неудобство пользователям Linux. Как сейчас WoW работает под Wine я не знаю.
tuupic
Чере DxVK, видимо. Diablo3 тоже отломалось после одного из обновлений(а видеокарта не умела vulkan). Пришлось апгрейдить железо