На Хабре незамеченным прошел выход 3-й версии Wine — открытой реализации Win32 API. Трудно найти другой проект с открытыми исходниками, за исключением ядра, который бы так много значил для пользователей Linux, MacOS, FreeBSD и других POSIX-совместимых ОС. Каждый успех разработчиков Wine приводит к тому, что множество новых игр и приложений становятся доступны для пользователей Linux.


Wine


В этом плане Wine 3.0 явно не разочаровал: поддержка Direct3D 10 и 11, графический драйвер Android, поток команд Direct3D, реализован криптографический стандарт AES, новый уровень поддержки Direct Write и Direct2D — вот основные результаты. По итогам более 6000 внесенных правок произошло много интересного, включая переход дефолтной версии с Windows XP на Windows 7.


  • 4586 приложений с высшим, платиновым статусом. Работают без нареканий.
  • 3918 приложений с золотым статусом. При минимальных настройках и внешних DLL работают без нареканий.

Еще до выхода предыдущей значительной версии разработчики Wine объявили о переходе на новый график релизов. Вместо 1.x.y / 2.x.y. раз в год выходят сразу версии 2.0, 3.0, 4,0 и т. д.


Direct3D


В новой версии реализованы значительная часть свойств Direct3D 10 и 11.


  • Вычислительные и мозаичные или тесселяционные шейдеры.
  • Потоковый вывод.
  • Запрос возможностей форматов.
  • Счетчики неупорядоченного просмотра.
  • Буфера со структурной определенностью и побайтовой адресацией.
  • Производство уровней mip-map.
  • Инструкции и модификаторы интерполяций шейдеров 4-й и 5-й модели.
  • Кубическая текстура.
  • Бестиповые ресурсы.
  • Многоуровневая обработка 3-х мерных текстур и текстурных массивов.
  • Консервативный вывод и перекос в пользу глубину.
  • AppendStructuredBuffer, ConsumeStructuredBuffer.

Поддержка основных контекстов OpenGLв Direct3D получила дальнейшее развитие и теперь уже используются в системах с видео-картами Intel и AMD. Пополнилась база данных распознаваемых графических карт.


Графика


  • В Direct2D теперь поддерживается отрисовка контуров и вычисление границ геометрических объектов, поддержка кистей с линейными и радиальными градиентами. Появилась совместимость с GDI.
  • Список расширений OpenGL обновился до версии 4.6.
  • Системная библиотека GLU (OpenGL Utility Library) требуется лишь при использовании обработчика Nurbs, а остальные функции GLU теперь реализованы внутри Wine.
  • Новые возможности GdiPlus: обработка графических операций и воспроизведение большинства типов WMF (Windows metafile), специфичных для GdiPus.
  • WindowsCodecs поддерживает кодирование форматов изображения, в том числе и палитру.

На Реддите зафиксирован случай установки Photoshop CC 2018 64bit на Linux, с помощью Wine.

Linux Photoshop


Ядро


  • По умолчания программа использует Windows 7.
  • Релизована полноценная семантика именованных каналов, включая каналы с режимом обмена сообщениями.
  • Добавлена поддержка PIE (Position Independent Executables) для исполняемых файлов Wine и запуска внешних бинарников.
  • Автоматически создаются устройства с последовательным и параллельным портом. Порты могут быть переопределены через HKLM\Software\Wine\Ports.
  • Режим безопасного поиска DLL, включен по умолчанию. Его можно отключить через ключ HKLM\System\CurrentControlSet\Control\Session Manager, выставив переменную SafeDllSearchMode равной 0.
  • Режим безопасного поиска процессов, выключен по умолчанию. Его можно включить через ключ HKLM\System\CurrentControlSet\Control\Session Manager, выставив переменную SafeProcessSearchMode равной 1.
  • Повышена производительность асинхронных операций I/O.
  • 64-разрядные платформы получили возможность выделять области виртуальной памяти сколь угодно большого размера.
  • Операции с записью в память, одновременно использующие те же самые буферы файловых I/O, работают корректно.

Пользовательский интерфейс


  • Для новых мониторов с высоким DPI имеются: новые и лучшие курсоры мыши, Shell Explorer, RichEdit и все основные диалоги.
  • DPI экрана можно пере-определить через значение параметра LogPixels в ветке HKEY_CURRENT_USER\Control Panel\Desktop.
  • Режим рабочего стола умеет поддерживать более высокие разрешения с различными аспектами соотношения сторон.
  • Библиотека TWAIN обрела поддержку диалога выбора источника сканирования.
  • Устройство-независимые битовые массивы и WMF структуры могут храниться в OLE Data Cache.
  • TaskDialog, Internal User Interface в MSI, отрисовка тем оформления посредством двойной буферизации.
  • Шрифты совместимы с нововведениями FreeType версии 2.8.1.
  • Таблицы символы перевели на стандарт Unicode 10.0.0
  • Контекстная замена глифов в Uniscribe, раскладки клавиатуры Nepali и Bangla (India).

Android


  • Wine можно теперь собрать как регулярный APK пакет для мобильной платформы Android.
  • Написан полноценный графический драйвер. Вследствие ограничений оконного интерфейса Android API поддерживается лишь полно-экранный режим работы.
  • Полноценный аудио драйвер.
  • Реализована поддержка OpenGL ES API.

Интеграция с рабочим столом


  • В .desktop файлах определен параметр StartupWMClass для привязки к исполняемому файлу Windows.
  • Библиотека Xfixes следит за изменениями в буфере обмена, вносимыми приложениями X11.
  • Компонент RichEdit может осуществлять вставки WMF.
  • Добавлен протокол Program Manager DDE.
  • Служба HID обнаружения PnP устройств включена по умолчанию.
  • 4 версия протокола уведомлений системного трея поддерживается на macOS.

Сети и интернет


  • В Web Services добавлена поддержка TCP/UDP приемников, а также поддержка протокола .NET Message Format Protocol и формата .NET Binary Format. Реализована поддержка приема сообщений в асинхронном режиме.
  • HTML: переработан код обработчика событий, добавлено поддержка множества новых стандартных API, браузер научился понимать MHTML.
  • .NET лучше поддерживает встроенные HTML документы.
  • WinHTTP корректно интерпретирует атрибуты файлов cookie.

Криптография


  • Добавлена поддержка Rijndael, a. k. a. AES — симметричного алгоритма блочного шифрования.
  • Функции криптографического хеширования реализованы собственными силами, вместо использования GNU TLS.
  • Дополнительные программы Gecko и Mono проверяются с помощью алгоритма хеширования SHA56.
  • Корневой сертификат Microsoft от 2011 г. включен в список известных сертификатов Microsoft.

D3DX 9


  • Новая и лучшая поддержка прешейдеров.
  • Поддерживается ID3DXEffectStateManager — пользовательский интерфейс, который позволяет пользователю установить состояние устройства от эффекта.
  • Поддерживается пул эффектов для совместного использования параметров.

DirectWrite


  • Поддерживаются знаки усечения замыкающей линии как в символьных, так и в текстовых режимах.
  • Улучшен режим переноса строки.
  • Поддержка методов равномерного и пропорционального междустрочного интервала.
  • Наклонное и полужирное воспроизведение в режиме изображения битовых массивов.
  • В приложениях доступна поддержка загрузки файлов шрифтов в оперативную память.
  • Кэш безопасен для множественных потоков.
  • Реализована оценка метрик свисания для маркировки.

Платформа ARM


  • ABI с плавающей запятой по умолчанию принимает значение softfp для совместимости с исполняемыми файлами Windows.
  • Добавлена поддержка предварительной загрузки, а также использование режима отладки ретрансляции.

И другие товарищи


На этом обширный список новых возможностей далеко не исчерпан. Впрочем нет надобности вдаваться в дальнейшие подробности, далее винегрет из оставшихся интересных новшеств.


  • Утилита wineinstall устарела и была удалена.
  • RegEdit всегда показывает 64-разрядные представления реестра на 64-разрядных префиксах.
  • Появилась папка ProgramData.
  • ODBC обзавелся поддержкой установки SQL драйвера.
  • Kerberos Authentication Package использует библиотеку krb5.

Третий Wine в числах


Релиз состоит из 5,170,395 строк кода в 7,373 файлах. За все время было сделано 121,944 обновлений со стороны 1,480 программистов.


Статистика разработки


Со второй версии произошло 6,026 обновлений, в которых было добавлено 448,982 и удалено 216,298 строк кода.


Статистика разработки


Wine 3.1


Пока я писал про Wine 3.0 оперативно выкатили более свежую версию 3.1. Вот основные возможности последней стабильной версии.


  • Поддержка аутентификации с помощью Kerberos.
  • Возможность перенаправления класса Window для Common Controls 6.
  • Для X11 реализована поддержка визуализации ARGB.
  • Для запуска DOS приложений теперь требуется DOSBox.

Использованные материалы


Комментарии (63)


  1. firk
    06.02.2018 23:58

    Еще до выхода предыдущей значительной версии разработчики Wine объявили о переходе на новый график релизов. Вместо 1.x.y / 2.x.y. раз в год выходят сразу версии 2.0, 3.0, 4,0 и т. д.

    И эти туда же...


  1. mephist
    07.02.2018 00:28

    > Трудно найти другой проект с открытыми исходниками, пожалуй кроме самого ядра, который настолько много значит для пользователей Linux, MacOS, FreeBSD и других POSIX-совместимых ОС. Каждый успех разработчиков Wine знаменует множество новых игр и приложений, которые будут теперь доступны для пользователей Linux.

    Как много сказано в этих строках


    1. oWart
      07.02.2018 07:37

      Тонко подмечено


    1. Displacer
      07.02.2018 20:35

      Если говорить об играх, то большую роль играет в этом плане Steam. Wine конечно хорошо, когда нет альтернатив, но лучше родные приложения.


      1. khim
        07.02.2018 21:22

        В Steam внушительный процент «родных приложений» — версии, полученные путём прикручивания конкретной версии Wine к Windows-приложению.

        Это, кстати говоря, один из самых «правильных» способов использования в Wine: никакие косяки эмуляции не будут проблемой, если сам разработчик запускает программу под Wine и может «проблемные» места просто переписать…


  1. igor_suhorukov
    07.02.2018 01:05

    Удивительно, что проект до сих пор так быстро развивается. Игры, редакторы и CAD почти все работают через Win API. Интересно как проекты обмениваются патчами с ReactOS…


    1. mihmig
      07.02.2018 11:06
      +1

      Мечты о Reactos разбились о печальные факты:
      1. FAT32 в 2018 году?
      2. Не подхватился стандартный realtek-овский драйвер старенькой сетевой карты, увы.


      1. Jeditobe
        07.02.2018 15:26
        -3

        1. А что такого в FAT в 2018 году? Разве ее запретили каким-то новым законом, и теперь каждому юзеру нужно посылать SMS для оплаты штрафа за ее использование?

        ReactOS пока что можно установить только на FAT32, но читать и записывать можно на разделах с NTFS (только чтение), BTRFS, EXT2\3\4, UFS, UDFS, ReiserFS, NFS 4.1

        2. Список протестированных сетевых адаптеров. Мне кажется, что ReactOS тут не виноват. Вы читали мануал перед установкой?


        1. ZimM
          07.02.2018 17:37
          +1

          1. Как насчет того, что FAT32 — это архаичная ФС с кучей ограничений, которую сегодня никто не использует? Ладно еще флешки всякие, но в 2018 году ставить ОС на ФАТ32-раздел — сюр, как по мне.
          2. Хм. Поправьте, если я ошибаюсь, но разве РеактОС не декларирует работу с самыми обычными виндовыми дровами? Если так, то невозможность это делать — вино РеактОС.


  1. id_potassium_chloride
    07.02.2018 01:58

    Сколько обновлений выходит, а поддержку MS HTML Application так и не реализуют. «Mshta.exe is a stub!»


    1. vesper-bot
      07.02.2018 10:39

      Имхо этот рудимент пора уже вырезАть из самих виндов, он ЕМНИП с 95х там сидит. Вот только на нем оказалось столько всего завязано… может, поэтому и у вайновцев с ним косяк, подступиться не могут.


      1. sumanai
        07.02.2018 10:44

        Вот только на нем оказалось столько всего завязано

        Заблочил его у себя на XP, вроде всё нормально.


        1. vesper-bot
          07.02.2018 12:01

          У меня на десятке оутлук-2016 перестал отображать «главную страницу», если нажать на корень ящика, там в норме пишется краткая инфа о входящих, задачах итп. Точнее, стал просто вешаться. Пока в свойствах не отключил «Показывать по умолчанию домашнюю страницу», так и вешался. Возможно даже, что полетело автообновление Windows из-за его удаления (я его во всех каталогах переименовал в *.ex_). Мне правда некогда особо копаться в поисках точных последствий, но сам факт того, что отвалилось что-то в прикладном софте, всерьез настораживает.


        1. tigrish
          07.02.2018 14:07

          Заблочил его у себя на XP, вроде всё нормально.

          Не думали выйти из леса? на дворе 2k18 )


          1. sumanai
            07.02.2018 14:10

            Где такой лес, где водятся компьютеры с 24ГБ оперативы и 64 битными ОС, последним нормальным Firefox и прочим нужным софтом? Хороший у меня лес в общем, ещё лет 5 там посижу, а дальше жизни нет, ибо ни одна новая ОС не радует глаз.


    1. mihmig
      07.02.2018 11:04

      Может просто сообществу пользователей это не нужно? Насколько большая кодовая база на VBS/WSH у Вас?


      1. khim
        07.02.2018 14:01

        Не настолько большая, чтобы оправдать его поддержку. В Windows mshta.exe — это просто тоненькая прослойка, вызывающая Internet Explorer. Если Internet Explorer у вас есть, то создать её — несколько дней работы… а вот если его нет — то вам нужно его замену создать. Это — задачка примерно такой же сложности как всё остальное, что сделано в рамках WINE.

        Для того, чтобы оправдать такие трудозатраты — достаточного количества приложений нету…


        1. vesper-bot
          07.02.2018 16:18

          Может, в вайновом mshta имеет смысл вызывать файрфокс вместо IE?


          1. khim
            07.02.2018 16:55
            +1

            Так он там не просто вызывается! Оттуда через COM можно кучу интерфейсов вытащить! Я, правда, не знаю, какая часть из них нужна для MS HTML Application, может быть что-то совсем небольшое нужно.

            Файрфокс вызвать не получится (когда-то давно он предоставлял интерфейсы для встраивания, но потом их «отпилили»), можно с CEF попробовать…


            1. a1ien_n3t
              07.02.2018 23:00

              Может просто webkit взять?


              1. khim
                08.02.2018 01:07

                Можно и webkit. Но в любом случае потребуется потом напильник нечеловеческих размеров: приложения-то рассчитаны чёртно на Internet Explorer! И активно используют все его фишки!

                Добиться совместимости настолько сложно, что даже Microsoft забил: при наличии в Windows 10 Edge… Internet Explorer — тоже есть… в частности для mshta…


    1. vesper-bot
      08.02.2018 12:21

      По итогам ветки, выходит, «Просто» добавить mshta. Угу.


  1. klirichek
    07.02.2018 03:55

    Выделение областей памяти "сколь угодно больного размера" порадовало :). Опечатка очевидная, но весьма улыбающая (я бы из-за этого даже не стал бы исправлять!)


  1. maxzhurkin
    07.02.2018 04:05
    +2

    Про относительную значимость, IMHO, сильное преувеличение


  1. eugenyh
    07.02.2018 05:30

    А как дела с поддержкой USB?


    1. Kobalt_x
      07.02.2018 07:41
      +1

      А каким боком тут wine? Это ОС должна его поддерживать а wine и так пробрасывает все что примонтировано


      1. monah_tuk
        08.02.2018 07:27

        USB — это не только флешки. Например какой-нить проприетарный программатор, который фигачит vendor-specific запросы через winusb или rawhid.


        1. Kobalt_x
          09.02.2018 13:09

          так программаторы обычно через виртуальный COM работают, который wineом точно также пробрасывается. WinUSB в wine нет.(есть только стабы)


  1. ntfshard
    07.02.2018 07:23

    Функции криптографического хеширования реализованы собственными силами, вместо использования GNU TLS.

    И тут моя вера в человечность полностью пропала


    1. Kobalt_x
      07.02.2018 08:11

      Там это только в legacy cryptoapi в rsaenh самописный AES. В cryptoapi ng там через gnutls и хэши и aes


  1. FluD
    07.02.2018 07:23

    может снова попробовать собрать свою глупую мечту, (полноценный) Windows у которого под капотом ядро линукс


    1. gasizdat
      07.02.2018 08:51

      Windows 10. Правда, ядро Linux у нее под капотом это скорее бачок для омывайки, чем двигатель.


      1. F0iL
        07.02.2018 11:25

        Это скорее наоборот. Полноценный (пока что не очень) Linux, у которого под капотом ядро Windows.

        И да, Linux ядра в WSL нет — только слой эмуляции системных вызовов (типа Wine в обратную сторону).


  1. NeoCode
    07.02.2018 07:52

    А visual studio там уже работает?


    1. Kobalt_x
      07.02.2018 08:16

      До vs2010 включительно


      1. NeoCode
        07.02.2018 12:35

        И как, нормально работает? Отладчик тоже? Имеет смысл ставить или нет?


        1. Kobalt_x
          07.02.2018 22:23

          Для чего-то кроме открытия старых проектов для дотнет-based языков нет. vc++ более менее в рамках открой собери и не трогай сложные визарды работает в vs2008/vs 2010 express. Расширения практически не работают.


    1. AbstractGaze
      07.02.2018 13:23

      А можно узнать, если проблема только в отладчике, чем вам visual studio code не угодил?


      1. NeoCode
        07.02.2018 13:31

        Тем что это совершенно другая программа, да еще и написанная на js.
        Под linux я пользуюсь qt creator, в принципе всем устраивает, очень быстрая нааигация по коду, и вообще быстро работает. Но отладчик по сравнению с VS все же неудобен. Ну и в целом интерфейс местами нестандартный и ненастраиваемый (нет докинга и табов), что порой раздражает.


  1. green_tree
    07.02.2018 11:33

    может кто пробовал, современный Adobe Lightroom (5.6+) там работает?


    1. Barafu
      07.02.2018 14:21

      Ч баальшим бубном и не весь.


    1. engine9
      07.02.2018 17:39

      Не софтосрача ради, а просто совет. Есть офигенный и ультра-мощный Rawtherapee с нативной поддержкой линупса.


      1. green_tree
        07.02.2018 17:43
        -1

        я уже перешёл на связку digikam+rawtherapee,
        но есть семилетний фотоархив с винды и мака, я затрахался через VirtualBox «экспортировать» это)
        молодой был, глупый, всё в коллекциях Лайтрума организовывал, а не в папках :(


      1. a1ien_n3t
        07.02.2018 23:04

        Тоже не срача ради, а почему именно Rawtherapee, а не darktable?
        Просто по советам занакомых сразу взял darktable, а Rawtherapee даже не смотрел.


        1. engine9
          07.02.2018 23:23

          Честно, просто раньше попробовал и она все потребности закрыла настолько что даже не изучал конкурентов. Вот просмотрщика толкового нет, XNview если допилить напильником то можно пользоваться, но интерфейс у него устарел безнадёжно.


      1. megahertz
        07.02.2018 23:05

        Меня чуть опередили с Darktable. Еще пару лет назад он был жутко не стабильным, но сейчас падения встречаются крайне редко. А еще задействовали GPU.


      1. Loki3000
        08.02.2018 23:05

        Лайтрум это же не только raw конвертр, это полноценное workflow-решение по обработке фотографий. Что Darktable, что Rawtherapee — совершенно никудышные в вопросах каталогизиции… к моему большому сожалению.


  1. silv_shpak
    07.02.2018 11:44

    интересно, загрузчик близарда будет теперь работать из-под новой версии…


    1. F1RST
      07.02.2018 12:32

      Он и в старой версии стартовал и корректно отрабатывал. По крайней мере WoW я запускал. Был только косяк с раскладкой клавиатуры (если бег персонажа был на W, то при переключении раскладки при нажатии на Ц ничего не происходило).


      1. vaslobas
        07.02.2018 16:39

        Такой же баг и на маке с родным клиентом Вова.


    1. zlsl
      07.02.2018 12:36

      Он и раньше чудесно работал. Только на встроенном видео Intel были проблемы, но решаемо тоже.


  1. naneri
    07.02.2018 13:11

    А старкрафт ремастеред?



  1. bestxp
    07.02.2018 14:15

    Жаль что иногда всякие защиты считают Wine виртуальной машинкой и типа до свидания :(


  1. timeshift
    07.02.2018 14:23

    Класс. Как раз собирался на линукс перейти, а тут такой подгон)


    1. Kwisatz
      07.02.2018 14:56
      +1

      А меня как раз win10 одолела)


  1. minz
    07.02.2018 16:29
    +1

    как же мне эти пол года не хватало репозеториев, няшного интерфейса kde и отсутствыя страха при скачивании торрентов, пойду ставить арч, надеюсь новые фотошопы и иллютраторы работают стабильно


  1. serg_deep
    07.02.2018 22:04

    Dota2 запустилась вообще без проблем.


    1. DpyuD
      07.02.2018 23:56

      Так она нативно работает на линуксе, вайн ей не нужен.


      1. serg_deep
        07.02.2018 23:58

        Только 64 битная версия


  1. Dessloch
    08.02.2018 09:02

    У меня на Ubuntu 17.10 установщик потребовал удалить LibreoFfice, Firefox, VirtualBox и ещё много софта, winehq поюзать не удалось(


    1. Kobalt_x
      09.02.2018 12:38
      +1

      прямо даже интересно из-за каких библиотек у wine в ubuntu такие конфликты?


    1. Am0ralist
      09.02.2018 13:02
      -1

      Так удалили бы! И поставили уже под wine…