Этот выпуск представляет собой год разработки и более 8 300 индивидуальных изменений. Он содержит большое количество улучшений, которые перечислены в примечаниях к выпуску ниже.
Основные изменения:
- Основные модули в формате PE.
- Бэкэнд Vulkan для WineD3D.
- Поддержка DirectShow и Media Foundation.
- Редизайн текстовой консоли.
Этот выпуск посвящен памяти Кена Томаса, ушедшего из жизни незадолго до Рождества в возрасте 51 год. Кен был невероятно блестящим разработчиком и вдохновителем поддержки Wine в MacOS.
Нам всем не хватает его навыков, его терпения и его черного чувства юмора.
Источник доступен в следующих местах:
https://dl.winehq.org/wine/source/6.0/wine-6.0.tar.xz
http://mirrors.ibiblio.org/wine/source/6.0/wine-6.0.tar.xzБинарные пакеты для различных дистрибутивов будут доступны по адресу:
https://www.winehq.org/download
Вы найдете документацию на https://www.winehq.org/documentation.
Вы также можете получить текущий источник прямо из git
репозиторий. Проверьте https://www.winehq.org/git для деталей.
----------------------------------------------------------------
Что нового в Wine 6.0
======================
*** PE модули- Основные библиотеки DLL, включая NTDLL, KERNEL32, GDI32, USER32 и т. д. построены в формате PE. Это должно помочь ряду приложений в которых присутствует защита от копирования.
- Появился новый механизм для связывания библиотеки Unix с PE. Модуль, чтобы можно было вызывать библиотеки Unix из PE для функций, которые не могут быть обработаны с помощью API Win32.
Эти библиотеки можно найти, заменив расширение файла модуля PE. с .so, например ntdll.dll -> ntdll.so. Они должны быть расположены рядом с PE-файлом на диске.- Модули Winelib больше не связываются с libwine.so и не требуют его на время выполнения. Это обратно несовместимое изменение, означающее, что модули, созданные с помощью Wine 6.0, не будут работать в более старых версиях Wine.
- Библиотека libwine больше не используется, но по-прежнему предоставляется поддержка запуска модулей Winelib, созданных для более старых версий, однако это устарело и будет удалено в будущих выпусках Wine. Приложения, которые явно вызывают функции libwine, будет необходимо изменить для вызова эквивалентных API Win32 или Unix. Как следствие, заголовок wine/library.h также был удален.
- Модули PE могут быть построены с разделением их отладочной информации на отдельный файл, чтобы уменьшить размер файлов, установленных в префиксе Wine.
*** Direct3D- Реализован экспериментальный рендерер Vulkan для WineD3D. Для этого требуется библиотека vkd3d-shader для перевода Direct3D шейдеры в шейдеры SPIR-V. В этом выпуске поддержка шейдеров в
средство визуализации Vulkan ограничено шейдерами модели 4 и 5. На практике, которая ограничивает его полезность Direct3D 10 и 11 приложений. Рендерер Vulkan можно включить, установив параметр реестра Direct3D "renderer" значение "vulkan".- Реализованы следующие функции Direct3D 11:
- Для каждого целевого («независимого») состояния смешивания.
- Смешивание с двумя источниками.
- Маски сэмплов с несколькими выборками сглаживания.
- Еще несколько запросов о возможностях.- Реализована поддержка множественной выборки Direct3D 9 alpha-to-cover.
- Когда расширение OpenGL EXT_framebuffer_multisample_blit_scaled доступно, масштабируемые операции разрешения нескольких выборок могут происходить как разовая операция.
- Когда расширение ARB_buffer_storage OpenGL доступно, оно будет использоваться для размещения буферных объектов OpenGL. Это может привести к незначительным улучшениям производительности с помощью некоторых приложений и драйверов комбинации.
- База данных видеокарт Direct3D распознает больше видеокарт, и указанные версии драйверов были обновлены.
- Новые или измененные ключи реестра HKEY_CURRENT_USER \ Software \ Wine \ Direct3D:
- «рендерер» (REG_SZ)
API серверной части для таргетинга. Этот существующий параметр имеет дополнительное допустимое значение в этом выпуске: "vulkan". Возможные значения сейчас "gl" (по умолчанию) для OpenGL, "gdi" или "no3d" для GDI и "vulkan" для вулкана.
- «csmt» (REG_DWORD)
Включение или отключение функций многопоточного потока команд. Это существующая настройка имеет дополнительное допустимое значение битового поля в этом выпуске. Допустимые битовые поля в этой версии:
- 0x1 Включить функцию многопоточного потока команд.
- 0x2 Включить сериализацию между несколькими потоками команд в то же приложение. Эта функция в первую очередь полезна для приложения, использующего несколько экземпляров Direct3D из
различных потоков в сочетании с драйверами OpenGL, которые сами не поддерживают многопоточный доступ должным образом. В виде этого выпуска, как известно, влияет на Microsoft Office 2013 г. и более поздние версии в сочетании с системой на основе нового драйвера Mesa.
Обратите внимание, что этот параметр является битовым полем; чтобы включить оба
выше, установите значение 0x3.- Удален ключ реестра HKEY_CURRENT_USER \ Software \ Wine \ Direct3D:
- «DirectDrawRenderer»Этот параметр ранее был объявлен устаревшим и заменен на "средство визуализации" и был удален в этом выпуске.
*** D3DX- Реализовано рисование текста с использованием интерфейса ID3DXFont.
- Реализован интерфейс отражения шейдера ID3D12ShaderReflection
- D3DX10GetImageInfoFromMemory () и связанная информация об изображении
реализованы функции запросов.
*** Графика- Реализовано рисование дуг, эллипсов и прямоугольников с закругленными углами с помощью Direct2D API.
- В префикс установлен стандартный цветовой профиль sRGB, для
приложений, которые рассчитывают загрузить его напрямую.- Драйвер дисплея Null можно использовать в качестве подходящего драйвера дисплея для
случая, когда пользовательский интерфейс не нужен.- WindowsCodecs поддерживает декодирование изображений в DDS (DirectDraw Surface)
и JPEG-XR, а также кодирование изображений в формат GIF.- Драйвер Vulkan создает используемый манифест JSON и запись реестра официальным загрузчиком Vulkan.
- Драйвер Vulkan поддерживает до версии 1.2.162 спецификации Vulkan.
- В GdiPlus внесен ряд улучшений, включая поддержку расширяющиеся линии, больше стилей штриховки и больше типов записей в метафайлы.
*** Audio/videoСтруктура Media Foundation более полная, в том числе:
- Первоначальная реализация медиа-сеанса для изменений состояния и данных.
- Реализован компонент конвейера Initial Streaming Audio Renderer (SAR).
- Первоначальная реализация Video Renderer, компонента конвейера
хостинг микшера и ведущего EVR.
- Реализация начального загрузчика топологии.
- Различные исправления для Source Reader.
- Первоначальная реализация Media Engine.
- Функциональность асинхронных очередей перенесена в rtworkq.dll.- Реализована полностью библиотека AMStream (ActiveMovie Multimedia Streaming), включая поддержку потоковой передачи и выборки управления.
Средство визуализации микширования видео поддерживает следующие функции:
- Режим без окон и без рендеринга.
- Автоматическое растяжение и изменение размера видео в соответствии с размером окна.
- Аппаратно-ускоренное преобразование цветового пространства форматов YUV, если поддерживается базовой реализацией Direct3D.
- Сохранение соотношения сторон видео через почтовый ящик.- Средство визуализации микширования видео используется в качестве средства визуализации видео по умолчанию, если поддерживается базовой реализацией Direct3D, заменяя Средство визуализации видео GDI.
- Реализован фильтр DirectShow File Writer.
- Реализован фильтр оболочки DirectX Media Object (DMO). DMO может быть автоматически пронумерован и вставлен в граф фильтра.
- Фильтр видеозахвата поддерживает предоставление дополнительной информации о
видеоформатах, включая поддерживаемые размеры и частоту кадров.- Реализовано больше API-интерфейсов Media Detector.
- Фильтр-оболочка GStreamer поддерживает видео и аудио форматы, преобразование в конвейере GStreamer. Это устраняет необходимость в дополнительных фильтрах преобразования и, соответственно, YUV на основе GStreamer в Конвертер ARGB, аудиоконвертер и декодер mp3 были удалены. Любое видео можно выводить в любом из нескольких RGB и YUV форматах, что в некоторых случаях позволяет повысить производительность.
- Enhanced Video Renderer (EVR) содержит исходный микшер по умолчанию и реализация презентатора с использованием DXVA2 API.
- Библиотека движка XACT3 (кроссплатформенное создание аудио) и интерфейсы реализованы через FAudio.
*** Текст и шрифты- Реализована поддержка текстовой консоли с использованием архитектуры последней версии Windows, что ближе к способу работы Unix вещей. В частности:
- Реализованы псевдоконсоли (эквивалент псевдо-TTY в Unix).
- Вся обработка консоли выполняется в процессе ConHost. WineConsole теперь только тонкая обертка вокруг ConHost.
- ConHost обрабатывает escape-последовательности VT, что означает, что Unix Curses библиотека больше не нужна.
- Функции формирования по умолчанию включены для всех скриптов в DirectWrite. Поддерживаются все типы поиска в GSUB / GPOS.
- В DirectWrite данные CMAP считываются непосредственно из шрифта без глобального кеша или необходимости создания объектов FreeType для улучшения.
- Инициализация шрифта в GDI32 позволяет избежать загрузки шрифтов через FreeType, когда это возможно, для более быстрого запуска. Реестр шрифтов кеш также более эффективен.
- Поддержка Uniscribe в библиотеке USP10 перемещена в GDI32, как согласно последним версиям Windows.
- Реализована начальная версия шрифта Webdings, только с несколько глифов на данный момент.
*** Устройства ввода- Необработанные устройства ввода и сообщения реализованы и используются DirectInput вместо менее эффективных низкоуровневых хуков.
- Реализован начальный драйвер ядра USB на основе LibUSB библиотек, чтобы обеспечить доступ к USB-устройствам.
- Реализована история положения мыши для игр, которые хотят больше точного положения мыши.
- Сопоставления контроллеров SDL можно настроить через переменную среды SDL_GAMECONTROLLERCONFIG.
- Реализованы уведомления устройств Plug & Play.
*** Интеграция с рабочим столом- Настройки дисплея загружаются через XRandR 1.4, если они доступны. Это также обеспечивает поддержку нескольких ориентаций дисплея.
- Графические адаптеры X11 одинаковы, API OpenGL и Vulkan.
- Макет рабочей области рабочего стола поддерживается в настройках с несколькими мониторами
используя свойство _GTK_WORKAREAS.
*** Интернационализация- Таблицы символов Юникода основаны на версии 13.0.0 Юникода. Стандарт.
- Нормализация Unicode полностью соответствует стандартам, включая поддержку для хангыля, дополнительных плоскостей символов и нормализации IDN.
- Совместимая с Windows кодовая страница и другие таблицы Unicode хранятся во внешних файлах NLS. Это дает возможность тестировать собственные файлы для отслеживания проблем с отображением символов.
- Таблицы сопоставления кодовых страниц создаются из Microsoft Open Данные спецификации для лучшей совместимости.
- Реализованы лингвистические преобразования Unicode для таких языков, как турецкий.
- Поддерживается кодовая страница 708 (арабский ASMO).
*** Ядро- Реализован режим совместимости версий Windows, только для отчета, новейшие версии Windows для приложений, которые заявили, что они их поддерживают.
- Реализованы сопоставления файлов INI для перенаправления записей файла .ini в ключи реестра.
- Реализовано гораздо больше объектов и функций ядра NT, чтобы осуществить поддержку античит-систем, загружающих драйверы ядра.
- Реализован драйвер ядра NetIO.sys для поддержки защиты от копирования. Драйверы, которые хотят получить доступ к сети.
- Регистры AVX поддерживаются в контексте регистров и исключениях обработки на платформах x86.
- Блок общих данных пользователя ядра содержит актуальные временные метки, чтобы
избегать системных вызовов при получении текущего счетчика времени.
*** C Время выполнения- Библиотеки импорта среды выполнения C обеспечивают необходимую поддержку среды выполнения, так что модули PE больше не зависят от среды выполнения MinGW.
- Все модули Wine построены на новой среде выполнения UCRT.
- Winegcc по умолчанию использует новую среду выполнения UCRT, кроме более старой версии C
библиотека времени выполнения явно импортирована.- Среда выполнения C поддерживает локали Windows, в которых используется кодовая страница UTF-8.
- Ряд математических функций времени выполнения C реализованы внутри, на основе кода из библиотеки Musl C, чтобы избежать зависимости от системной математической библиотеки.
- Форматирование с плавающей запятой повторно реализовано в среде выполнения C, чтобы избежать зависимости от системной функции printf.
*** Интернет и сети- Движок Gecko обновлен до версии 2.47.2.
- Реализован API WebSocket.
- JScript и VBScript сообщают правильное местоположение ошибок в скрипты.
- Есть различные улучшения LDAP и Active Directory. Служба поддержки.
- Есть начальная реализация сетевого драйвера NDIS.
- Диалог связи данных OLE поддерживает настройку данных ODBC.
подключение.
*** Криптография- Библиотека BCrypt поддерживает дополнительные алгоритмы, включая DSA.
ключи и шифр 3DES.- Поставщик криптографии DSSENH (цифровые подписи)
реализовано и включено по умолчанию.
*** Альтернативные платформы- Поддержка обработки исключений и раскрутки стека на платформах ARM. (как 32-битные, так и 64-битные) должны быть на одном уровне с x86 архитектурой.
- Имеется начальная поддержка ARM64 на macOS, для нового процессора Apple.
- Удалена поддержка устаревшей 32-битной архитектуры PowerPC.
- Оптимизация файловой системы без учета регистра включена во FreeBSD.
*** Встроенные приложения- WineCfg поддерживает запросы и изменение настроенной Windows версию через командную строку с новым параметром / v.
- Конфигурация папок оболочки в WineCfg также поддерживает папки "Загрузки" и "Шаблоны".
- Автоматическое определение съемного диска было удалено в WineCfg, теперь что поддержка динамических устройств dbus стабильна.
- Инструмент FSUTIL поддерживает команду «жестких ссылок» для создания жестких ссылок.
- Инструмент FIND поддерживает поиск по нескольким файлам, помимо стандартного ввода.
- Реализован инструмент WHOAMI для отображения текущего имени пользователя.
*** Инструменты разработки- Winegcc поддерживает создание файлов PDB при сборке PE DLL, для совместимости с отладчиками Windows.
- DbgHelp поддерживает отладочную информацию в стиле GNU также в файлах PE.
- Winegcc может сгенерировать библиотеку импорта непосредственно при сборке DLL, с опцией '-Wl, - out-implib'.
- Различные инструменты сборки также ищут включаемые файлы и файлы библиотеки в пути относительно двоичного файла инструмента, чтобы позволить перемещать Winelib установки.
- Компилятор ресурсов (wrc) и компилятор сообщений (wmc) используют внешние файлы NLS для преобразования кодовых страниц. При необходимости путь к внешним файлам можно указать с помощью опции --nls-dir.
- В WineDbg внесены различные улучшения в режим прокси-сервера gdb, включая поддержку аппаратных точек наблюдения и загрузки символов из PE модулей.
- Компилятор сообщений (wmc) обрабатывает спецификацию Unicode для обнаружения формата входного файла.
- Компилятор ресурсов (wrc) имеет параметр --utf8 для указания UTF-8. input, как альтернатива помещению кодовой страницы #pragma внутри файла.
- Компилятор IDL (widl) поддерживает режим WinRT и различные конструкции, специфичные для этого режима.
- Компилятор IDL (widl) поддерживает настраиваемые атрибуты в типе библиотеки.
*** Построение инфраструктуры- Make-файлы больше не рекурсивны; один Makefile создается для построения всего дерева с правильными зависимостями между модулями.
- Поддерживаются правила тихой сборки в стиле Automake. Они не работают по умолчанию, но их можно включить, передав параметр --enable-silent-rules.
- Новый компилятор LLVM-MinGW поддерживает кросс-компиляцию PE.
- Поддерживается сборка с помощью компилятора Clang в режиме MSVC.
- В файлах спецификаций поддерживается флаг точки входа '-syscall', чтобы генерировать точки входа для системных вызовов в стиле NT.
*** Разное- Движок Mono обновлен до версии 5.1.1, содержащей открытый исходные части платформы WPF и первоначальные замены для некоторых из частей с закрытым исходным кодом.
- Большинство модулей были преобразованы для использования строки широких символов константы типа L "abc" вместо явных массивов для большей читабельности кода.
- Поддерживаются многие из менее распространенных часовых поясов (для различных удаленных островов).
- Просмотр списков и кнопки изображений поддерживаются в установщиках MSI.
- Имеется начальная поддержка API Print Ticket.
*** Новые внешние зависимости- Библиотека LibUSB используется для реализации драйвера USB.
- Библиотека VkD3D-Shader используется для перевода шейдеров Direct3D в Шейдеры SPIR-V для модуля рендеринга WineD3D Vulkan.
- Библиотеки Curses, GLU и Zlib больше не используются.
--
Александр Жульяр