После года разработки и 28 экспериментальных версий представлен стабильный релиз открытой реализации Win32 API – Wine 8.0, который вобрал в себя более 8600 изменений. Ключевым достижением в новой версии отмечается завершение работы по переводу модулей Wine в формат.
В Wine подтверждена полноценная работа 5266 (год назад 5156, два года назад 5049) программ для Windows, ещё 4370 (год назад 4312, два года назад 4227) программ прекрасно работают при дополнительных настройках и внешних DLL. У 3888 программ (года назад 3813, два года назад 3703) наблюдаются небольшие проблемы в работе, которые не мешают использованию основных функций приложений.
Ключевые новшества Wine 8.0:
- Модули в формате PE
- После четырёх лет работы полностью завершён перевод всех DLL-библиотек на использование формата исполняемых файлов PE (Portable Executable, применяется в Windows). Применение PE позволяет использовать доступные для Windows отладчики и решает проблемы с поддержкой различных схем защиты от копирования, осуществляющих сверку идентичности системных модулей на диске и в памяти. Также решены проблемы с работой 32-разрядных приложений на 64-разрядных хостах и x86-приложений на системах ARM. Из остающихся задач, которые планируют решить в последующих экспериментальных выпусках Wine 8.x, отмечается перевод модулей на интерфейс системных вызовов NT вместо осуществления прямых вызовов между уровнями PE и Unix.
- Реализован специальный диспетчер системных вызовов, используемый для трансляции обращений из PE в Unix-библиотеки с целью снижения накладных расходов при выполнении полного системного вызова NT. Например, выполненная оптимизация дала возможность снизить падение производительности при использовании библиотек OpenGL и Vulkan.
- В Winelib-приложениях сохранена возможность использования смешанных сборок Windows/Unix библиотек в формате ELF (.dll.so), но подобные приложения без 32-разрядных библиотек не будут поддерживать функциональность, доступную через интерфейс системных вызовов NT, такую как WoW64.
- WoW64
- Для всех Unix-библиотек предоставлены прослойки WoW64 (64-bit Windows-on-Windows), позволяющие 32-разрядным модулям в формате PE обращаться к 64-разрядным Unix-библиотекам, что после избавления от прямых вызовов PE/Unix даст возможность выполнения 32-разрядных Windows-приложений без установки 32-разрядных Unix-библиотек.
- При отсутствии 32-разрядного загрузчика Wine обеспечен запуск 32-разрядных приложений в новом экспериментальном Windows-подобном режиме WoW64, в котором 32-разрядный код запускается внутри 64-разрядного процесса. Режим включается при сборке Wine с опцией ‘–enable-archs’.
- Графическая подсистема
- В конфигурации по умолчанию применена светлая тема оформления (“Light”). Сменить тему можно при помощи утилиты WineCfg.
- Графические драйверы (winex11.drv, winemac.drv, wineandroid.drv) преобразованы для выполнения на Unix-стороне системных вызовов и обращения к драйверам через библиотеку Win32u.
- Реализована архитектура обработчиков вывода на печать (Print Processor), применяемая для исключения в драйвере принтера прямых вызовов между зонами PE и Unix.
- В API Direct2D реализована поддержка эффектов.
- В API Direct2D добавлена возможность записи и воспроизведения списков команд.
- В драйвере для графического API Vulkan добавлена поддержка спецификации Vulkan версии 1.3.237 (в Wine 7 поддерживался Vulkan 1.2).
- В конфигурации по умолчанию применена светлая тема оформления (“Light”). Сменить тему можно при помощи утилиты WineCfg.
- Direct3D
- Добавлен новый компилятор шейдеров на языке HLSL (High-Level Shader Language), реализованный на базе библиотеки vkd3d-shader. Также на базе vkd3d-shader подготовлены дизассемблер HLSL и препроцессор HLSL.
- Реализован интерфейс Thread Pump, появившийся в D3DX 10.
- В эффектах Direct3D 10 добавлена поддержка многих новых выражений.
- Во вспомогательной библиотеке для D3DX 9 реализована поддержка проекции текстур Cubemap.
- Звук и видео
- На базе фреймворка GStreamer реализована поддержка фильтров для декодирования звука
в формате MPEG-1. - Добавлен фильтр для для чтения потокового звука и видео в формате ASF (Advanced Systems Format).
- Удалена промежуточная библиотека-прослойка OpenAL32.dll, вместо которой теперь используется родная Windows-библиотека OpenAL32.dll, поставляемая с приложениями.
- В Media Foundation Player улучшена определение типа содержимого.
- Реализована возможность управления скоростью передачи данных (Rate control).
- Улучшена поддержка микшера и отрисовщика (presenter), предлагаемых по умолчанию в Enhanced Video Renderer (EVR).
- Добавлена начальная реализация API Writer Encoding.
- Улучшена поддержка загрузчика топологий.
- На базе фреймворка GStreamer реализована поддержка фильтров для декодирования звука
- Устройства ввода
- Значительно улучшена поддержка горячего подключения контроллеров.
- Предложена улучшенная реализация кода для определения игровых рулей, построенная на базе библиотеки SDL.
- Улучшена поддержка эффекта тактильной обратной связи (Force feedback) при использовании игровых рулей.
- Реализована возможность управления левым и правым вибромоторами, использующими спецификацию HID Haptic.
- Изменено оформлением панели управления джойстиком.
- Через использование бэкенда hidraw обеспечена поддержка контроллеров Sony DualShock и DualSense.
- Предложен WinRT-модуль Windows.Gaming.Input с реализацией программного интерфейса для доступа к геймпадам, джойстикам и игровым рулям. Для нового API среди прочего реализована поддержка уведомления о горячем подключении устройств, тактильных и вибро эффектов.
- Интернационализация
- Обеспечена генерация корректной БД локалей в формате locale.nls из репозитория Unicode CLDR (Unicode Common Locale Data Repository).
- Функции сравнения строк Unicode переведены на использование БД и алгоритма Windows Sortkey вместо алгоритма Unicode Collation, что приблизило поведение к Windows.
- В большинстве функций добавлена поддержка верхних диапазонов кодов (плоскостей) Unicode.
- Предоставлена возможность использования UTF-8 в качестве ANSI-кодировки.
- Таблицы символов обновлены до спецификации Unicode 15.0.0.
- Текст и шрифты
- Для большинства системных шрифтов включено связывание шрифтов, позволившее решить проблему с отсутствием глифов на системах с китайскими, корейскими и японскими локалями.
- Переработан откат на запасной шрифт в DirectWrite.
- Ядро (интерфейсы ядра Windows)
- Реализована БД ApiSetSchema, которая заменила собой модули api-ms-* и позволила сократить потребление диска и памяти.
- Обеспечено сохранение на диске файловых атрибутов DOS в совместимом с Samba формате, используя для этого расширенные атрибуты ФС.
- Сетевые возможности
- Добавлена поддержка протокола OCSP (Online Certificate Status Protocol), применяемого для проверки отозванных сертификатов.
- Расширен спектр возможностей EcmaScript, доступных в режиме соответствия стандартам JavaScript.
- Реализован сборщик мусора для JavaScript.
- В пакете с движком Gecko включены средства для людей с ограниченными возможностями.
- В MSHTML добавлена поддержка API Web Storage, объекта Performance и дополнительных объектов для обработки событий.
- Встроенные приложения
- Все встроенные приложения переведены на использование библиотеки Common Controls 6, с поддержкой тем оформления и отрисовки с учётом экранов в высокой плотностью пикселей.
- Расширены возможности отладки потоков в отладчике Wine Debugger (winedbg).
- В утилитах для работы с реестром (REGEDIT и REG) добавлена поддержка типа QWORD.
- В Notepad добавлена строка состояния с информацией о позиции курсора и функция Goto Line для перехода на указанный номер строки
- Во встроенной консоли обеспечен вывод данных в кодовой странице OEM.
- В утилиту sc.exe (Service Control) добавлена команда ‘query’.
- Система сборки
- Предоставлена возможность сборки исполняемых файлов в формате PE для нескольких архитектур (например, ‘–enable-archs=i386,x86_64’).
- На всех платформах с 32-разрядным типом long типы данных, определённые в Windows как long, в Wine определены как ‘long’ вместо ‘int’. В Winelib данное поведение можно отключить через определение WINE_NO_LONG_TYPES.
- Добавлена возможность генерации библиотек без использования dlltool через задание опции ‘–without-dlltool’ в winebuild.
- Для повышения эффективности загрузки и снижения размера библиотек без кода, включающих только ресурсы, реализована опция ‘–data-only’ в winegcc.
- Разное
- Обновлены версии встроенных библиотек 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 с реализацией платформы .NET обновлён до выпуска 7.4.
- Реализована поддержка шифрования RSA и цифровых подписей RSA-PSS.
- Добавлена начальная версия API UI Automation.
- В дерево исходных текстов включены библиотеки LDAP и vkd3d, которые собираются в формате PE, что избавило от необходимости поставки Unix-сборок данных библиотек.
- Прекращено использование библиотеки OpenAL.
Release.
Ссылка here.