Каждый год в январе выпускается новая стабильная версия WINE. В этом году вышла WINE 11. После этого она снова разделяется на версии разработки для следующей основной версии. Так что через несколько недель мы уже увидим первую сборку Wine 11.1, которая станет Wine 12 примерно в это же время в следующем году. А сейчас давайте посмотрим на изменения в текущей версии (список довольно внушительный).
WINE — это слой совместимости, который позволяет вам запускать Windows приложения и игры в операционных системах отличных от Microsoft Windows. Подробнее что такое WINE и как его установить и использовать читайте в моих статьях:
- Что нового в WINE 11
- WoW64
- Синхронизация / Потоки
- Ядро
- Графика
- Интеграция с рабочим столом
- Direct3D
- Вспомогательные библиотеки Direct3D
- Устройства ввода / HID
- Bluetooth
- Поддержка сканеров
- Мультимедиа
- DirectMusic
- Mono / .NET / WinRT
- Интернационализация
- Интернет и сети
- Базы данных
- Отладка
- Встроенные приложения
- Разное
- Инструменты разработки
- Инфраструктура сборки
- Включенные библиотеки
- Внешние зависимости
Что нового в WINE 11
WoW64
- Новый режим WoW64, впервые представленный в качестве экспериментальной функции в Wine 9.0, считается полностью поддерживаемым и по сути имеет функциональную совместимость со старым режимом WoW64.
- 16-разрядные приложения поддерживаются в новом режиме WoW64.
- Можно заставить старую установку WoW64 работать в новом режиме WoW64, установив переменную WINEARCH=wow64. Для этого необходимо, чтобы префикс был создан как 64-разрядный (по умолчанию).
- Чисто 32-разрядные префиксы, созданные с WINEARCH=win32, устарели и не поддерживаются в новом режиме WoW64.
- Бинарный файл загрузчика wine64 удален в пользу единого загрузчика wine, который выбирает правильный режим на основе выполняемого бинарного файла. Для бинарных файлов, которые имеют как 32-разрядную, так и 64-разрядную версии, по умолчанию используется 64-разрядная версия. 32-разрядную версию можно запустить с помощью явного пути, например wine c:\\windows\\syswow64\\notepad.exe.
Синхронизация / Потоки
- Модуль ядра Linux NTSync используется, когда он доступен, для улучшения производительности примитивов синхронизации. Необходимый модуль ядра поставляется с ядром Linux, начиная с версии 6.14.
- Изменения приоритета потоков реализованы в Linux и macOS. В Linux это ограничено системным ограничением nice, и текущие дистрибутивы требуют некоторой настройки, чтобы изменить жесткое ограничение nice на отрицательное значение (в диапазоне от -19 до -1, где обычно достаточно -5, а более низкие значения не рекомендуются). Дополнительную информацию см. в man limits.conf(5).
- Реализованы барьеры синхронизации NTDLL.
- В macOS регистр %gs подменяется в диспетчере системных вызовов. Это позволяет избежать конфликтов между TEB Windows и дескриптором потока macOS.
Ядро
- Реализованы точки повторного анализа NT с поддержкой типов точек повторного анализа «точка монтирования» и «символьная ссылка».
- Write Watches используют userfaultfd в Linux, если он доступен, чтобы избежать затрат на обработку ошибок страниц в пользовательском пространстве.
- Системные вызовы NT используют ту же нумерацию системных вызовов, что и последние версии Windows, для поддержки приложений, в которых номера системных вызовов закреплены жестко.
- В ARM64 поддерживается имитация размера страницы 4K поверх более крупных страниц хоста (обычно 16K или 64K). Это работает для простых приложений, но поскольку невозможно полностью скрыть различия, более требовательные приложения могут работать некорректно. Настоятельно рекомендуется использовать ядро с 4K-страницами.
Графика
- Зависимость от OSMesa удалена, а растровое рендеринг OpenGL реализовано с помощью аппаратно ускоренной среды выполнения OpenGL.
- Бэкэнд EGL OpenGL расширен и используется по умолчанию на платформе X11. Бэкэнд GLX устарел, но остается доступным и используется в качестве резервного варианта, если EGL недоступен. Его также можно принудительно включить, установив значение UseEGL=N в ключе реестра HKCU\Software\Wine\X11 Driver.
- Реализованы расширения VK_KHR_external_memory_win32, VK_KHR_external_semaphore_win32, VK_KHR_external_fence_win32, VK_KHR_win32_keyed_mutex и связанные с ними API D3DKMT.
- В новом режиме WoW64 буферы OpenGL отображаются в 32-разрядном пространстве памяти с использованием расширений Vulkan, если они доступны.
- Рендеринг OpenGL переднего буфера эмулируется для платформ, которые не поддерживают его изначально.
- Улучшена реализация совместного использования контекста OpenGL в wglShareLists.
- Поддерживается API Vulkan версии 1.4.335.
- Обработка метаданных изображений лучше поддерживается в WindowsCodecs.
- В WindowsCodecs поддерживается гораздо больше преобразований между различными форматами пикселей.
Интеграция с рабочим столом
Улучшена интеграция с оконным менеджером X11: запросы на активацию окон отправляются в оконный менеджер, а протокол EWMH используется для обеспечения согласованности активных окон X11 и Win32.
Поддерживается эксклюзивный полноэкранный режим, а полноэкранный режим D3D улучшен, особенно в отношении старых игр DDraw.
В экспериментальном драйвере Wayland поддерживаются окна с фигурными краями и цветовой кодировкой.
Производительность нескольких функций, связанных с окнами, улучшена за счет использования общей памяти для связи между процессами.
В драйвере Wayland реализована поддержка буфера обмена.
В драйвере Wayland поддерживаются методы ввода.
Direct3D
- Аппаратное декодирование видео H.264 через видео-API Direct3D 11 реализовано через Vulkan Video. Обратите внимание, что необходимо использовать рендерер Vulkan. Как и в предыдущих версиях Wine, рендерер Vulkan можно использовать, установив для параметра renderer значение vulkan с помощью ключа реестра Direct3D или переменной среды WINE_D3D_CONFIG.
- Фильтрация с минимальным/максимальным уменьшением Direct3D 11 реализована, если доступен GL_ARB_texture_filter_minmax (при использовании рендерера GL) или VK_EXT_sampler_filter_minmax (при использовании рендерера Vulkan).
- Для рендерера Vulkan реализованы следующие устаревшие функции Direct3D:
- Управление размером точки.
- Управление спрайтом точки.
- Смешивание вершин.
- Бумп-мэппинг с фиксированными функциями.
- Цветовая ключевая функция в рисовании.
- Плоское затенение.
- Альфа-тест.
- Пользовательские плоскости обрезки.
- Несколько форматов ресурсов.
- Кроме того, входящая в комплект копия vkd3d-shader включает множество улучшений для шейдеров Shader Model 1, 2 и 3, в том числе поддержку пиксельных шейдеров Shader Model 1 и базовое текстурирование Shader Model 1. Рендерер Vulkan еще не достиг паритета с рендерером GL и поэтому пока не является рендерером по умолчанию.
Вспомогательные библиотеки Direct3D
- D3DXSaveSurfaceToFileInMemory переработана для файлов PNG, JPEG и BMP, что обеспечивает поддержку форматов и других крайних случаев, не поддерживаемых WindowsCodecs. Она также поддерживает сохранение поверхностей в файлах TARGA.
- Реализованы функции загрузки текстур D3DX 11 с использованием кода, совместного с более ранними версиями D3DX.
- Бокс-фильтрация поддерживается во всех версиях.
- D3DXSaveTextureToFileInMemory поддерживает сохранение текстур в файлы DDS.
- D3DX 9 поддерживает чтение 1-битных, 2-битных и 4-битных индексированных форматов пикселей, а также формат CxV8U8.
- D3DX 10 и 11 поддерживают сжатие и распаковку форматов BC4 и BC5.
- D3DX 10 и 11 поддерживают генерацию уровней мипмапов при загрузке текстур.
- ID3DXEffect::SetRawValue() реализована частично.
- ID3DXSkinInfo::UpdateSkinnedMesh() реализована.
Устройства ввода / HID
- Совместимость с большим количеством джойстиков улучшена благодаря бэкенду hidraw. Для выборочного подключения бэкенда hidraw доступны параметры реестра для каждого поставщика и каждого устройства.
- Улучшена поддержка силовой обратной связи, повышена совместимость с джойстиками и рулями, а также улучшена производительность.
- Улучшена поддержка геймпадов в Windows.Gaming. Input API и с помощью бэкэнда evdev, когда SDL недоступен или отключен.
- В апплете «Панель управления» «Игровые контроллеры» есть вкладка настроек для Windows.Gaming.Input API.
- Улучшена совместимость DirectInput со старыми играми, которые используют карты действий и семантику устройств.
- Реализовано больше API перечисления устройств из Windows.Devices.Enumeration и cfgmgr32.
Bluetooth
- Драйвер Bluetooth поддерживает сканирование и настройку обнаруживаемости хост-устройств, а также предоставляет базовую поддержку сопряжения через API и мастер. На данный момент эта функция поддерживается только в системах Linux, использующих BlueZ.
- Радиомодули и устройства Bluetooth (как классические, так и низкоэнергетические) видны приложениям Windows.
- Приложения могут устанавливать низкоуровневые соединения RFCOMM с удаленными устройствами с помощью API winsock.
- Существует начальная поддержка служб и характеристик Bluetooth Low Energy (BLE) Generic Attribute Profile (GATT), что делает их видимыми через API Win32 BLE.
Поддержка сканеров
- Поддерживается DAT_IMAGENATIVEXFER.
- Выбор и настройки сканера сохраняются в реестре.
- Реализован интерфейс TWAIN 2.0 API для сканирования, что позволяет сканировать в 64-разрядных приложениях.
- Поддерживается сканирование нескольких страниц и автоматическая подача документов.
- Имеется пользовательский интерфейс, отображающий ход сканирования и сообщения об ошибках.
- Пользовательский интерфейс сканера больше не блокирует приложение, которое его использует.
- Нативные драйверы сканера Windows могут быть загружены, если они установлены в Wine.
Мультимедиа
- Библиотека Multimedia Streaming реализует настраиваемый аллокатор для потоков DirectDraw, уменьшая количество копий буфера, необходимых для фильтров, которые поддерживают настраиваемый аллокатор ниже по потоку.
- Динамическое изменение формата поддерживается в DMO Wrapper, AVI Decoder и фильтрах демультиплексора и преобразования на основе GStreamer.
- Фильтры демультиплексора на основе GStreamer поддерживают кодек Indeo 5.0.
- Фильтр DirectSound Renderer более точно сигнализирует об окончании потока. Ранее сигнал об окончании потока мог поступать слишком рано, обрезая конец аудиопотока.
- Фильтр ASF Reader поддерживает поиск.
- Фильтр AVI Decoder поддерживает нетривиальные прямоугольники источника и назначения.
DirectMusic
- SoundFont (SF2) поддерживает больше функций:
- Анализ предустановок, инструментов и модуляторов по умолчанию.
- Поддержка наложения слоев, необходимая для многих инструментов SF2.
- Повторное использование загруженных волн и доступ к данным сэмплов без копирования для предотвращения ошибок нехватки памяти.
- Нормализация инструментов.
- Синтезатор улучшен:
- Частота задержки определяется по основной частоте, чтобы исправить неравномерное воспроизведение в некоторых треках.
- Отключение голоса происходит мгновенно, и синтезатор лучше обрабатывает события давления канала и подключения LFO.
- Поддерживается настройка громкости, которая выполняется автоматически при создании синтезатора или добавлении порта.
- Поддерживается версия DX7 формы Style.
- Улучшения в управлении кэшем в загрузчике.
- Поддерживается больше MIDI-метасобытий.
Mono / .NET / WinRT
- Приложения XNA4 работают на основе SDL3 и по умолчанию используют для рендеринга новый API SDL_GPU.
- В WPF (Windows Presentation Framework) добавлен механизм верстки текста, поддерживающий API System.Windows.Documents.
- Тематизация работает в Windows Forms.
- Файлы метаданных WinRT могут быть сгенерированы с помощью widl, и имеется начальная реализация классов загрузчика.
- Поддерживаются исключения WinRT C++.
Интернационализация
- Данные локализации генерируются из базы данных Unicode CLDR версии 48. Поддерживаются следующие дополнительные локали: bqi-IR, bua-RU, 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 стандарта Unicode.
- Данные о часовых поясах основаны на версии 2025a базы данных часовых поясов IANA.
Интернет и сети
- MSHTML отображает атрибуты DOM как надлежащие узлы DOM в режиме соответствия стандартам.
- Поддерживаются типизированные массивы JavaScript.
- Реализованы объекты MSHTML DOMParser, XDomainRequest и msCrypto.
- Реализован Ping для ICMPv6.
Базы данных
- MSADO поддерживает запись изменений в базу данных.
- Реализована большая часть функций набора записей MSADO.
- ODBC переопределяет строки Unicode для поддержки драйверов Win32, поддерживающих только ANSI.
Отладка
- Загрузчик файлов PDB в DbgHelp переработан для поддержки больших файлов (> 4G), более быстрой загрузки и меньшего потребления ресурсов памяти.
- Системные вызовы NT можно отслеживать с помощью WINEDEBUG=syscall. В отличие от WINEDEBUG=relay, это прозрачно для приложения и позволяет избежать сбоев в приложениях, которые подключаются к точкам входа системных вызовов.
- В одной сборке можно генерировать отладочную информацию как DWARF, так и PDB.
Встроенные приложения
- Вкладка «Аудио» в WineCfg позволяет настроить MIDI-устройство по умолчанию.
- Инструмент командной строки cmd может создавать точки повторного анализа с помощью mklink /j и отображать их в списках каталогов.
- Инструмент командной строки cmd поддерживает более сложные инструкции и автозаполнение имен файлов в интерактивной командной строке.
- Приложение Console Hosting conhost поддерживает клавиши F1 и F3 для вызова истории.
- Реализовано приложение timeout.
- Инструмент find поддерживает опции /c (отображение количества совпадений) и /i (нечувствительные к регистру совпадения).
- Инструмент whoami поддерживает спецификаторы формата вывода.
- Существует базовая реализация команды subst.
- Существует начальная реализация инструмента runas.
Разное
- Общие элементы управления версии 5 и версии 6 являются полностью раздельными DLL, а функции, доступные только в версии 6, удалены из DLL версии 5 для лучшей совместимости.
- Алгоритм вывода ключей PBKDF2 поддерживается в BCrypt.
- Поддерживаются хорошо известные папки оболочки UserProgramFiles, AccountPictures и Screenshots.
Инструменты разработки
- Компилятор IDL может генерировать файлы метаданных Windows Runtime (.winmd) с помощью опции —winmd.
- Инструмент winedump поддерживает дамп ресурсов MUI, номеров системных вызовов, встроенных модулей NE и больших файлов PDB (>4G).
- Заголовок wine/unixlib.h устанавливается как часть пакета разработки в качестве первого шага к поддержке использования интерфейса Unixlib в модулях сторонних разработчиков. Эта работа еще не завершена.
Инфраструктура сборки
- Скрипт install-sh, производный от X11, переписан на C, чтобы обеспечить установку нескольких файлов за один вызов программы. Это ускоряет фазу копирования файлов make install на порядок.
- Исключения компилятора используются для реализации блоков __try/__except при сборке с Clang для 64-разрядных целей MSVC.
- WineHQ Gitlab CI поддерживает сборки ARM64.
Включенные библиотеки
- Включена библиотека LLVM Compiler-RT версии 8.0.1, которая используется при сборке модулей в режиме MSVC.
- Библиотека TomCrypt версии 1.18.2 включена в комплект и используется для реализации криптографических примитивов в модулях RsaEnh и BCrypt.
- 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.
Внешние зависимости
- Библиотека OSMesa больше не используется. Рендеринг растровых изображений OpenGL реализован с использованием EGL.
- Библиотека HwLoc используется для определения процессора в FreeBSD.
Ближе к весне Valve выпустит свежую версию proton на основе WINE 11.








