Wine 3.0 и много плюшек

На Хабре незамеченным прошел выход 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.


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


  • Стабильный релиз Wine 3.0
  • WineHQ — Wine Announcement — The Wine team is proud to announce that the stable release Wine 3.0
  • Релиз Wine 3.1
  • Wine 3.0 Development by numbers

© Habrahabr.ru