|
После года разработки и 25 экспериментальных версий представлен стабильный релиз открытой реализации Win32 API - Wine 11.0, который вобрал в себя более 6300 изменений и 600 исправлений ошибок. Из ключевых достижений в новой версии выделяется полная поддержка NTSYNC, реализация механизма Reparse Point и задействование новой реализации архитектуры WoW64.
В Wine подтверждена полноценная работа 5419 программ для Windows (год назад 5372, два года назад 5336, три года назад 5266), ещё 4500 программ (год назад 4435, два года назад 4397, три года назад 4370) прекрасно работают при дополнительных настройках и внешних DLL. У 4086 программ (год назад 4020, два года назад 3943, три года назад 3888) наблюдаются небольшие проблемы в работе, которые не мешают использованию основных функций приложений.
Ключевые новшества Wine 11.0:
- Полная поддержка драйвера ntsync, позволяющего существенно поднять производительность Windows-игр, запускаемых при помощи Wine. Драйвер входит в состав ядра Linux начиная с выпуска 6.14 и реализует символьное устройство /dev/ntsync и набор примитивов для синхронизации, применяемых в ядре Windows NT. Значительный прирост производительности достигается благодаря избавлению от накладных расходов, связанных с применением RPC в пространстве пользователя.
- Добавлена возможность настройки приоритетов потоков в Linux и macOS.
- В ntdll добавлен API синхронизации "Synchronization barriers", позволяющий приостановить выполнение нескольких потоков до достижения определённой точки выполнения во всех потоках (например, дождаться пока все потоки достигнут определённой стадии при параллельном выполнении одного и тот же кода).
- Переведена в разряд полностью поддерживаемых новая реализация прослойки WoW64 (64-bit Windows-on-Windows), позволяющая выполнять 32-разрядные Windows-приложения в 64-разрядных Unix-системах. В отличие от старой реализации WoW64, в которой 32-разрядные приложения запускались в 32-разрядных Unix-процессах, новый WoW64 обеспечивает запуск 32-разрядного кода внутри 64-разрядного процесса.
Реализована поддержка запуска 16-разрядных приложений в режиме WoW64.
Во всех модулях, обращающихся к Unix-библиотекам, задействованы преобразователи системных вызовов WoW64 (thunk), позволяющие 32-разрядным модулям в формате PE обращаться к 64-разрядным Unix-библиотекам.
Добавлена возможность запуска старых установок WoW64 в новом режиме через выставление переменной окружения "WINEARCH=wow64". 32-разрядные префиксы, создаваемые при выставлении WINEARCH=win32, объявлены устаревшими и не поддерживаются в новом режиме WoW64. Удалён отдельный загрузчик wine64, вместо которого задействован универсальный загрузчик, определяющий режим по разрядности запускаемого файла.
- Ядро (интерфейсы ядра Windows)
- Реализован механизм Reparse Point, при помощи которого можно прикреплять к файлам и каталогам дополнительные данные, идентифицируемые через теги. Поддерживаются такие типы Reparse Point, как символические ссылки и точки монтирования.
- Для повышения производительности отслеживания операций записи в память задействован механизм UFFD (userfaultfd), дающий возможность создавать обработчики обращений к невыделенным страницам памяти (page faults) в пространстве пользователя. В проведённых тестах применение UFFD позволило сократить время загрузки уровней в игре "Streets of Rage 4" с 6-8 секунд до 1.5-2 секунд, что соответствует показателям запуска на платформе Windows.
- Задействованы номера системных вызовов NT, идентичные последним версиям Windows, что необходимо для поддержки приложений, использующих жёстко прописанные номера системных вызовов.
- На системах ARM64 реализована возможность симуляции страниц памяти размером 4K в окружениях с ядрами Linux, использующими более крупные страницы памяти (16K или 64K). Симуляция позволяет запускать простые приложения, а для более сложных программ рекомендуется использовать ядра Linux с 4-килобайтовыми страницами памяти.
- Графическая подсистема
- На системах X11 (winex11) для OpenGL по умолчанию задействован бэкенд отрисовки, использующий EGL. Бэкенд GLX объявлен устаревшим, но пока остаётся доступен в качестве запасного и используется при отсутствии EGL.
- Добавлена начальная поддержка объектов D3DKMT, предоставляющих низкоуровневый доступ к графическим устройствам из пространства пользователя. Реализованы Vulkan-расширения VK_KHR_external_memory_win32, VK_KHR_external_semaphore_win32, VK_KHR_external_fence_win32 и VK_KHR_win32_keyed_mutex.
- В режиме WoW64 (64-bit Windows-on-Windows) реализована поддержка маппинга памяти для OpenGL при помощи API Vulkan, позволяющего ускорить работу 32-битных OpenGL-приложений в Wine.
- Реализована эмуляция буфера отображения (front buffer) для OpenGL на платформах без его встроенной поддержки.
- В драйвер для графического API Vulkan добавлена поддержка спецификации Vulkan 1.4.335.
- В наборе библиотек WindowsCodecs расширена поддержка метаданных в файлах с изображениями, а также реализована поддержка преобразования между целочисленными форматами представления цвета и форматами с плавающей запятой.
- Убрана зависимость от библиотеки OSMesa (Off-screen Mesa). Реализована возможность отрисовки битовых карт через OpenGL с использованием аппаратного ускоренного OpenGL runtime.
- Интеграция с рабочим столом
- В драйвере winewayland.drv, позволяющем использовать Wine в окружениях на базе протокола Wayland без применения XWayland и компонентов X11, реализована поддержка буфера обмена, методов ввода, непрямоугольных окон и прозрачности.
- Улучшена интеграция с X11: обеспечена отправка оконному менеджеру запросов активации окон и задействован протокол EWMH для согласования состояния активных окон X11 и Win32.
- Реализована поддержка эксклюзивного полноэкранного режима. Улучшена поддержка полноэкранного режима в D3D и улучшена работа старых игр на базе DDraw.
- Повышена производительность некоторых функций работы с окнами. Для взаимодействия между процессами задействована разделяемая память.
- Direct3D
- В Direct3D 11 добавлена поддержка аппаратного ускорения декодирования видео в формате H.264, реализованная при помощи графического API Vulkan.
- В Direct3D 11 реализована поддержка minmax-фильтрации текстур, используя OpenGL-расширение GL_ARB_texture_filter_minmax или Vulkan-расширение VK_EXT_sampler_filter_minmax.
- В Direct3D 11 реализованы функции загрузки текстур.
- Реализована большая порция возможностей Direct3D при отрисовке через Vulkan, таких как смешивание вершин, плоское затенение, пользовательские плоскости отсечения и различные форматы ресурсов.
- Во встроенной копии vkd3d-shader улучшена поддержка 1, 2 и 3 моделей шейдеров.
- В методе D3DXSaveSurfaceToFileInMemory реализована поддержка изображений PNG, JPEG и BMP.
- Direct3D 10 и 11 реализована поддержка сжатия и распаковки форматов BC4 и BC5, а также генерации MIP-уровней (MipMap) при загрузке текстур.
- Реализованы методы ID3DXEffect::SetRawValue() и ID3DXSkinInfo::UpdateSkinnedMesh().
- Устройства ввода
- Улучшена совместимость с джойстиками, благодаря использованию бэкенда hidraw.
- Улучшена поддержка эффекта виброотклика (Force feedback) при использовании игровых рулей и джойстиков.
- Улучшена поддержка геймпадов в API Windows.Gaming.Input и при использовании бэкенда evdev.
- В апплет управления игровыми контроллерами добавлена вкладка для настройки API Windows.Gaming.Input.
- Повышена совместимость DirectInput со старыми играми.
- Bluetooth
- В драйвере для Bluetooth добавлена возможность сканирования, настройки обнаружения и сопряжения устройств.
- Добавлена поддержка сервисов Bluetooth Low Energy.
- Приложениям предоставлена возможность создавать низкоуровневые RFCOMM-соединения c внешними устройствами, используя API Winsock.
- Поддержка сканеров
- Реализована поддержка API TWAIN 2.0, позволяющего обращаться к сканерами из 64-разрядных приложений.
- Реализована поддержка компонента DAT_IMAGENATIVEXFER для передачи изображения от сканера в приложение.
- Обеспечено сохранение в реестре выбранного сканера и настроек сканера.
- Добавлена поддержка многостраничного сканирования и автоподатчи документов.
- Прекращена блокировка приложения во время вызова интерфейса сканирования.
- Добавлена поддержка загрузки родных Windows-драйверов к сканерам.
- Интернационализация
- Обеспечена генерация БД локалей в формате locale.nls из БД Unicode CLDR (Unicode Common Locale Data Repository) версии 48. Добавлена поддержка дополнительных локалей bua-RU, bqi-IR, cop-EG, ht-HT, kek-GT, lzz-TR, mww-Hmnp-US, oka-CA, pi-Latn-GB, pms-IT, sgs-LT, suz-Deva-NP и suz-Sunu-NP.
- Таблицы символов Unicode обновлены до версии стандарта 17.0.0. Обновлена база часовых поясов.
- Сетевые возможности
- В движке MSHTML в режиме соответствия стандартам обеспечена работы с атрибутами элементов как с полноценными узлами DOM. Реализованы объекты DOMParser, XDomainRequest и msCrypto.
- В JavaScript добавлена поддержка типизированных массивов.
- Для ICMPv6 реализована команда ping.
- БД
- В библиотеку MSADO (ActiveX Data Objects) добавлена поддержка записи изменений в БД. Реализовано большинство функций объекта
Recordset.
- В библиотеке odbc32 улучшена поддержка ANSI win32-драйверов, не рассчитанных на работу с Unicode. Реализованы функции SQLDriverConnectA(), SQLSpecialColumnsW(), SQLGetInfoW(), SQLGetInfoW(), SQLStatisticsW() и QLColumnsW().
- Встроенные приложения
- В WineCfg добавлена вкладка для настройки MIDI-устройства по умолчанию.
- В утилите cmd реализовано автодополнение ввода имён файлов в интерактивном режиме работы, добавлена поддержка сложных инструкций и реализована команда "mklink /j" для создания Reparse Point.
- В утилиту conhost (Console Hosting) добавлена поддержка получения истории нажатием клавиш F1 и F3.
- Реализованы команды timeout, runas и subst.
- В утилиту find добавлены опции "/c" для показа числа совпадений и /i для сопоставлений без учёта регистра.
- В утилите whoami появилась возможность настройки формата вывода.
- Разное
- В реализации языка описания интерфейса WIDL (Wine Interface Definition Language) появилась поддержка генерации метаданных Windows Runtime (WinRT). Обеспечена генерация и установка файлов WinMD (Windows Metadata) для API WinRT (Windows Runtime).
- В утилиту winedump добавлена поддержка дампа ресурсов MUI, номеров системных вызовов, встроенных NE-модулей и больших файлов PDB (> 4 ГБ).
- Проведён рефакторинг реализации Common Control, библиотека COMCTL32 разделена на отдельные модули для версий 5 и 6.
- В BCrypt добавлена поддержка стандарта формирования ключа PBKDF2
- Добавлена поддержка каталогов UserProgramFiles, AccountPictures и Screenshots.
- В состав интегрированы библиотеки LLVM Compiler-RT 8.0.1 и TomCrypt 1.18.2. Для определения CPU на платформе FreeBSD задействована библиотека HwLoc.
- Обновлены до новых версий компоненты Vkd3d 1.18, Faudio 25.12, FluidSynth 2.4.2, LCMS2 2.17, LibMPG123 1.33.0, Libpng 1.6.51, LibTiff 4.7.1, LibXml2 2.12.10, LibXslt 1.1.43.
|