Стабильный релиз Wine 3.0

После года разработки и 23 экспериментальных версий представлен стабильный релиз открытой реализации Win32 API — Wine 3.0, который вобрал в себя более 6000 изменений. Из ключевых достижений новой версии отмечается поддержка Direct3D 10 и 11, реализация обособленного потока обработки команд Direct3D, графический драйвер для платформы Android, улучшенная поддержка DirectWrite и Direct2D. Из возможностей которые отложены до следующей значительной ветки упоминаются поддержка Direct3D 12, Vulkan и реализация Direct3D через OpenGL ES на платформе Android.

В Wine подтверждена полноценная работа 4580 программ для Windows, еще 3907 программ прекрасно работают при дополнительных настройках и внешних DLL. У 3301 программ наблюдаются небольшие проблемы в работе, которые не мешают использованию основных функций приложений.

Ключевые новшества Wine 3.0:

  • Direct3D
    • Реализована значительная часть возможностей Direct3D 10 и 11, в том числе вычислительные и тесселяционные шейдеры, потоковый вывод, инструкции и модификаторы интерполяции для моделей шейдеров 4 и 5, непрямой (indirect) рендеринг, структурированные и побайтово адресуемые буферы, многослойная отрисовка на трёхмерных текстурах и массивах текстур, создание уровней mip-map и т.д.
    • Реализация обособленного потока обработки команд Direct3D, позволяющего выполнять отрисовку в асинхронном режиме с распараллеливанием на многоядерных системах. В настоящее время работа сосредоточена на обеспечении корректной отрисовки в многопоточном режиме, но в будущем ожидается проведение работы по увеличению производительности. В секцию реестра «HKCU\Software\Wine\Direct3D» добавлен новый ключ «csmt» (REG_DWORD), через который можно включить (0×1) или выключить (0×0, по умолчанию) поддержку многопоточной обработки команд Direct3D;
    • Улучшена поддержка применения базовых контекстов OpenGL в Direct3D, которые уже используются по умолчанию для обеспечения работы приложений Direct3D 10 и 11 на системах с графическими картами AMD и Intel, что позволяет при наличии OpenGL-драйверов Mesa обойтись без установки в реестре параметра«MaxVersionGL» для включения Direct3D 10 и 11;
    • Увеличено число графических карт, распознаваемых для WineD3D;
  • Графическая подсистема
    • В Direct2D реализована поддержка контуров геометрических объектов, кистей с линейными и радиальными градиентами, вычисления границ геометрических объектов, упрощения геометрических объектов;
    • Обеспечена совместимость Direct2D с GDI;
    • Список поддерживаемых расширений OpenGL обновлён до OpenGL 4.6;
    • Частично реализована библиотека GLU (OpenGL Utility Library). Системная библиотека GLU необходима только при использовании системы рендеринга Nurbs, во всех остальных случаях функции GLU теперь встроены в Wine;
    • В GdiPlus обеспечена обработка графических операций, включающих трансформации;
    • В GdiPlus добавлена поддержка воспроизведения большинства специфичных для GdiPlus типов записей metafile, помимо стандартных записей metafile;
    • В WindowsCodecs добавлена поддержка кодирования форматов изображений, включающих палитру;
  • Обеспечение работы Wine в окружении платформы Android
    • Появилась возможность сборки Wine в виде пакета в формате APK и установки как обычного приложения для Android;
    • Подготовлен полноценный графический драйвер (GDI) для Android. Из-за ограничений API Android возможна работа только в полноэкранном режиме;
    • Реализован полноценный звуковой драйвер для Android;
    • Обеспечена поддержка OpenGL, ограничивающаяся возможностями API OpenGL ES. Direct3D в окружении Android пока не поддерживается, так как не может быть полноценно реализован поверх OpenGL ES;
  • Ядро
    • Заявленная по умолчанию версия Windows поднята до Windows 7;
    • Реализована полная семантика именованных каналов, включая режим обмена сообщениями для именованных каналов. Обработка именованных каналов теперь целиком производится на стороне сервера Wine;
    • Поддержка исполняемых файлов в формате POE (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);
    • Увеличена производительность асинхронного ввода/вывода, благодаря сокращению числа обращений к серверу;
    • На 64-разрядных платформах обеспечена возможность выделения областей виртуальной памяти произвольного размера;
  • Интерфейс пользователя
    • Выполнен редизайн курсоров мыши, которые также предложены в более высоком разрешении для экранов с высокой плотностью пикселей (high DPI);
    • Для экранов с высокой плотностью пикселей адаптированы Shell Explorer, RichEdit и все основные диалоги;
    • Для переопределения DPI экрана предложена настройка «LogPixels», доступная в секции реестра «HKEY_CURRENT_USER\Control Panel\Desktop»;
    • В режиме рабочего стола добавлена поддержка более высоких разрешений с различным коэффициентом соотношения сторон;
    • Реализована панель задач (Task Dialog);
    • В MSI добавлена поддержка внутреннего интерфейса (IUI, Internal User Interface);
    • Добавлен режим отрисовки тем оформления с применением двойной буферизации;
    • В библиотеку TWAIN добавлена поддержка диалога для выбора доступного сканера;
    • Добавлена возможность сохранения в OLE Data Cache платформонезависимых битовых карт и metafile;
  • Интеграция с рабочим столом
    • В desktop-файлах добавлена возможность определения поля StartupWMClass для обеспечения привязки к исполняемому файлу Windows;
    • Для определения изменений в буфере обмена X11-приложений задействована библиотека Xfixes, вместо периодической проверки буфера;
    • В компонент RichEdit добавлена поддержка вставки в форме metafile;
    • Добавлена поддержка Progman DDE (компонент с DDE-сервером для Program Manager);
    • Активирован по умолчанию HID-сервис для определения устройств с поддержкой PNP;
    • Для macOS обеспечена поддержка четвёртой версии протокола вывода уведомлений;
  • Текст и шрифты
    • В API Uniscribe добавлена поддержка контекстной замены глифов;
    • Таблицы символов переведены на использование стандарта Unicode 10;
    • Обеспечена совместимость со шрифтовым движком FreeType 2.8.1;
  • DirectWrite
    • Обеспечена симуляция наклонных и жирных начертаний символов;
    • Улучшена обработка разрывов строк;
    • Улучшена отрисовка подчёркиваний;
    • Улучшена поддержка режима работы в оттенках серого;
    • Улучшена поддержка сглаживания и преобразования шрифтов;
    • Реализованы методы применения равномерного и пропорционального межстрочного интервала;
    • Кэш адаптирован для использования в многопоточных приложениях;
    • Реализована поддержка загрузки файлов шрифтов в оперативную память;
  • D3DX
    • Улучшена поддержка прешейдеров (preshader);
    • Добавлена возможность определения движков применения эффектов (ID3DXEffectStateManager) в приложениях D3DX 9;
    • Реализован пул эффектов для совместного использования параметров между разными эффектами D3DX 9;
  • Сетевые возможности
    • В WebServices добавлена поддержка приёма TCP- и UDP-соединений;
    • В Web Services добавлена поддержка протокола .NET Message Framing Protocol и формата .NET Binary Format, включая расширение для таблиц символов;
    • В Web Services включена поддержка приёма сообщений в асинхронном режиме;
    • Переработан код обработчика событий HTML для соответствия стандарту;
    • Добавлена поддержка нескольких стандартных HTML API;
    • В компонент WebBrowser добавлена поддержка файлов MHTML;
    • Улучшена поддержка встраивания HTML-документов в приложения .NET;
    • В WinHTTP налажен корректный разбор атрибутов Cookie;
  • Криптография
    • Добавлена встроенная реализация криптографических хэшей (вместо использования внешней библиотеки GnuTLS);
    • Добавлена поддержка симметричного алгоритма блочного шифрования AES;
    • В список известных сертификатов добавлен корневой сертификат Microsoft от 2011 года;
    • Дополнительные пакеты с Mono и Gecko теперь проверяются при помощи контрольных сумм SHA256;
  • Платформа ARM
    • На системах ARM по умолчанию выставлен ABI 'softfp' для совместимости с исполняемыми файлами Windows;
    • Добавлена поддержка предварительной загрузки (Preloader) на платформе ARM64;
    • Добавлена возможность использования режима отладки relay на системах ARM64;
  • Встроенные приложения
    • В RegEdit для улучшения совместимости с Windows переработаны функции импорта и экспорта реестра. По умолчанию экспорт осуществляется в формате Unicode. 64-разряные представления в реестре теперь всегда снабжаются 64-разрядными префиксами;
    • В утилиту Reg.exe добавлены операции импорта и экспорта файлов с реестром;
    • В командном интерпретаторе добавлена команда MKLINK и обеспечена поддержка экранирования символов в командной строке;
    • В игре WineMine добавлен вывод диалога подтверждения операции перед сбросом лучших результатов;
  • Инструменты
    • В widl (компилятор IDL) обеспечена обработка возвратов из функций C++ в виде, совместимом с MSVC;
    • В компилятор ресурсов (wrc) добавлена возможность преобразования версий ресурсов через po-файлы;
    • В отладчик (winedbg) добавлена поддержка вывода состояния регистров для SSE и вычислений с плавающей запятой;
    • Все Perl-скрипты, разбирающие XML, переведены на использование модуля XML: LibXML;
    • Удалена устаревшая утилита wineinstall;
  • Разное
    • В XAudio реализована поддержка звуковых форматов с плавающей запятой с числом каналов более двух;
    • В C++ runtime добавлена поддержка Scheduler и аналогичных классов;
    • В ODBC добавлена поддержка установки драйвера SQL;
    • Добавлена поддержка каталога ProgramData;
    • В движок Mono перенесены исправления из основного проекта и добавлена поддержка второй версии API профилирования;
    • В отладочных трассировках обеспечено отображение идентификатора потока;
  • Новые зависимости
    • В число зависимостей включена библиотека krb5, используемая в Kerberos Authentication Package;
    • Для получения уведомления об изменении содержимого буфера обмена задействована библиотека XFixes.

© OpenNet