На Хабре публиковалась новость о 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)


  1. OneManStudio
    01.02.2023 08:57

    А в чем сокровенный смысл показывать WoW на скрине? Он же работал и 15 лет назад если вообще не всегда.


    1. arozhankov
      01.02.2023 09:40

      Ну может быть скорость видеоигр выросла в 2 раза? ????


    1. ash_lm
      01.02.2023 09:45
      +1

      Не знаю, как сейчас, т.к. много лет не играл, но раньше WoW поддерживал и OpenGL и DirectX. Если запускался под DirectX, то бывали и проблемы с производительностью и с текстурами, а с OpenGL было норм. Затем Blizzard выпилило поддержку OpenGL создав неудобство пользователям Linux. Как сейчас WoW работает под Wine я не знаю.


      1. tuupic
        01.02.2023 12:45

        Чере DxVK, видимо. Diablo3 тоже отломалось после одного из обновлений(а видеокарта не умела vulkan). Пришлось апгрейдить железо


  1. roqin
    01.02.2023 09:30
    +2

    Забавно. Лет 15 назад (т.е. ещё до выхода версии 1.0) я с нетерпением следил за ним, накладывал патчи как только выйдет новая версия, и сам собирал и проверял, что заработало. А теперь, так вышло, я все необходимые программы родные подобрал (для одной утилитки даже прикинул, что там мизерный объём работы и сам аналог написал). И сейчас он нужен только для того чтобы при помощи Word Viewer сделать PDF (LibreOffice всё же не всегда отображает идеально) и ещё ряд (неиспользуемых ныне) утилит осталось.


    1. Alexey2005
      01.02.2023 16:57

      А самая незаменимая офисная программа - FineReader, реально не имеющая аналогов, как не запускалась под wine, так и продолжает не запускаться.


      1. roqin
        01.02.2023 18:57

        Могу эти слова подтвердить. Только уточню, что нельзя запустить более менее новые версии, а вот версия 8.0 вполне работает (я её даже в своё время купил). И тут ещё мне совсем недавно на глаза какая-то программа OCR с GUI (причём на движке файнридера) под линукс попалась. Но я её не проверял. Так что в этом отношении всё возможно не безнадёжно.


    1. PsyHaSTe
      02.02.2023 22:27

      Я все тешу себя надежндой что смогу запустить 3 героев на ARM маке. Причем оно почти работает, SoD я смог запустить, а вот HOTA уже не хочет работать почему-то. А я уже слишком привык ко всем улучшениям последнего дополнения чтобы откатываться...


      1. khajiit
        03.02.2023 01:15

        VCMI?
        Сам не пробовал, просто погуглил.


        1. PsyHaSTe
          03.02.2023 10:34

          Повторюсь. с самими героями проблем нет, проблема с HOTA файлами. Они что-то такое делают что либо софтварно эмулируется либо вообще не реализовано, и все очень плохо работает (неиграбельно).


          1. khajiit
            03.02.2023 10:41

            Так это альтернативный движок, который требует только файлы данных. Ему все равно на код оригинального движка.


            1. PsyHaSTe
              03.02.2023 10:58
              +1

              Оригинальный движок не при чем. Скажем, в HOTA есть лобби позволяющие играть по интернету и система рейтинга. Либо скажем механизм исследования заклинаний в башне магии. Именно в одной из этих частей используются неработающие корректно АБИ, и альтернативный движок как мне кажется никак не поможет, потому что он альтернативно реализует только то, что было в базовой игре, которая и так работает как нужно на оригинальном движке


              1. khajiit
                03.02.2023 11:35
                +1

                Ну, вам виднее, вы в нее играете.
                Спасибо за пояснение.


      1. vyrkmod
        03.02.2023 15:22

        https://appdb.winehq.org/objectManager.php?sClass=version&iId=29646
        Сейчас должно работать, причём без танцев с бубном


        1. PsyHaSTe
          03.02.2023 17:25

          В апреле прошого года не работало, может за последние полгода что-то изменилось. но на тот момент оно не работало. Напомню, что речь про ARM ноут, то есть у нас трансляция windows -> wine -> rosetta -> CPU. И оно видимо не всегда нормально отрабатывает.


  1. domix32
    01.02.2023 12:01
    +1

    Про Open AL что-то странное - таки её в итоге используют или нет? То что враппер убрали это понятно, а где не используется Open AL непонятно. Что используется вместо него? ALSA слой?


    1. 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.»


  1. Fahrain
    01.02.2023 12:09
    +1

    А кто-нибудь пробовал вкорячить в вайн куски от магазина винды? Сам магазин мне не нужен, но проблема в том, что новые версии программ оказываются завязанными на него и даже не запускаются. Например, iTunes, WhatsApp.


    1. nebularia
      01.02.2023 12:30
      +6

      UWP это совсем другой 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 бита)


  1. perfect_genius
    01.02.2023 20:30

    На Хабре публиковалась новость о Wine 8.0

    Так в чём отличие от той новости?


  1. Dynasaur
    01.02.2023 23:28

    Есть такая корявая программка - плагин КриптоПРО, который приходится использовать для ЭЦП при работе с госсайтами. Работает она под Виндой, только глючит. Так вот у меня под Вайном она работала лучше, чем под Виндой.


    1. Drazd
      02.02.2023 09:37

      Что-то странное. У меня ни на винде, ни стандартная сборка для линукса не глючат и работают прекрасно. Можете поделиться историями где что у вас не работало, чтобы я мог подготовиться?

      Если что, я использую Криптопро в сочетании с руТокеном в основном для входа и работы с ФНС, реже подписываю файлы.


  1. net_racoon
    02.02.2023 11:50

    В рейнджерах планетарки так и падают или уже починили? :)


  1. computerix
    03.02.2023 09:02

    Valve со своим Steam Deck хорошо бустапнули развитие wine сейчас)


  1. Nezdanchick
    03.02.2023 14:29

    А reactos насколько часто обновляет wine код?