Wine — это уровень совместимости Windows, позволяющий пользователям запускать приложения Windows на других ОС. Wine для Android теперь доступен до версии 5.0 — проверьте это!
Экосистема приложений Android неуклонно развивалась на протяжении многих лет существования Android, чему способствовало постоянное внедрение мобильных устройств в качестве основного средства взаимодействия с компьютером для большинства людей. Многие пользователи тяготели к образу жизни, основанному только на мобильных устройствах, и это связано с тем, что приложения и экосистема мобильных приложений смогли удовлетворить их конкретные потребности. Но если вам когда-нибудь понадобится настольное приложение, но у вас нет доступа к рабочему столу, что бы вы сделали? Именно здесь появляется Wine — уровень совместимости Windows, который позволяет пользователям запускать полнофункциональные приложения Windows на разных ОС. Wine для Android имеет теперь достиг версии 5.0, суммируя усилия команды по разработке за год.
Wine — это бесплатный уровень совместимости с открытым исходным кодом для Windows, цель которого — позволить компьютерным программам, разработанным для Windows, работать в других операционных системах.
Основные моменты стабильной версии Wine 5.0 включают поддержку нескольких мониторов и поддержку Vulkan 1.1. Полный список изменений для обновления приведен ниже:
Список изменений в Wine 5.0:
- PE-модули:
- Большинство модулей создаются в формате PE (Portable Executable, двоичный формат Windows) вместо ELF, когда доступен компилятор MinGW. В этом помогают различные схемы защиты от копирования, которые проверяют идентичность содержимого системных модулей на диске и в памяти.
- Фактические двоичные файлы PE копируются в префикс Wine вместо поддельных файлов DLL. Это делает префикс более похожим на настоящую установку Windows за счет некоторого дополнительного дискового пространства.
- Модули, преобразованные в PE, могут использовать стандартные функции C с широкими символами, а также константы с широкими символами, такие как L"abc". Это облегчает чтение кода.
- Еще не все модули переведены в PE; это непрерывный процесс, который будет продолжаться во время разработки Wine 5.x.
- Среда выполнения Wine C обновлена для поддержки связывания с двоичными файлами, скомпилированными с помощью MinGW; он используется по умолчанию вместо среды выполнения MinGW при создании DLL.
- Графика:
- Поддержка нескольких видеоадаптеров и мониторов, включая динамические изменения конфигурации.
- Драйвер Vulkan поддерживает версию спецификации Vulkan до 1.1.126.
- Библиотека WindowsCodecs способна конвертировать больше форматов растровых изображений, включая форматы с индексацией палитры.
- Директ3Д:
- Полноэкранные приложения Direct3D блокируют заставку.
- Цепочка обмена DXGI информирует приложение, когда соответствующее окно свернуто. Обычно это позволяет приложениям снизить загрузку ЦП при минимизации, а в некоторых случаях требуется для повторного восстановления окна приложения.
- Для приложений DXGI реализовано переключение между полноэкранным и оконным режимами с помощью стандартной комбинации Alt+Enter.
- Для приложений Direct3D 12 реализованы следующие возможности:
- Переключение между полноэкранным и оконным режимами.
- Изменение режимов отображения.
- Масштабные подарки.
- Интервалы обмена. Эти функции ранее уже были реализованы в более ранних версиях API Direct3D.
- Улучшена обработка различных крайних случаев. Среди прочего:
- За пределами допустимых значений для альфа-тестов и тестов по трафарету.
- Выборка 2D-ресурсов с помощью 3D-сэмплеров и наоборот.
- Рисование с использованием сопоставленных текстур и буферов.
- Использование недопустимых объектов клиппера DirectDraw.
- Создание устройств Direct3D в недействительной Windows, например в окне рабочего стола.
- Окна просмотра с минимальным Z, большим или равным максимальному Z.
- Ресурсы, связанные как через представления ресурсов шейдера, так и через представления целей рендеринга или трафаретов глубины одновременно.
- Блиц между форматами с альфа-компонентами и без них. Поскольку приложения с хорошим поведением не полагаются на эти крайние случаи, они обычно затрагивают только одно или два приложения каждое. Тем не менее их довольно много.
- Области «грязных» текстур отслеживаются более точно при загрузке текстур Direct3D 8 и 9.
- Загрузка 3D-текстур, сжатых с помощью S3TC, требует меньше адресного пространства. Поскольку 3D-текстуры могут быть потенциально большими, а исчерпание адресного пространства является проблемой для 32-битных приложений, 3D-текстуры, сжатые с помощью S3TC, загружаются по частям, а не за одну загрузку.
- Реализован интерфейс ID3D11Multithread.
- Внесены различные исправления и улучшения в расчет освещения для старых приложений DirectDraw.
- Реализована ограниченная поддержка блитов в цепочках обмена.
- Реализовано больше API отражения шейдеров.
- Блиттер процессора wined3d может обрабатывать сжатые исходные ресурсы. Поддержка сжатых целевых ресурсов уже была реализована в предыдущей версии.
- База данных видеокарт Direct3D распознает больше видеокарт.
- Новые ключи реестра HKEY_CURRENT_USER\Software\Wine\Direct3D:
- «shader_backend» (REG_SZ) Используемый шейдер. Возможные значения: «glsl» (по умолчанию) для GLSL, «arb» для программ вершин/фрагментов ARB и «none» для отключения поддержки шейдеров.
- «strict_shader_math» (REG_DWORD) Включить (0x1) или отключить (0x0, по умолчанию) более строгую трансляцию шейдеров Direct3D, возможно, за счет снижения производительности. В настоящее время это имеет значение только для стандартного шейдерного механизма GLSL в сочетании с проприетарными драйверами NVIDIA.
- Устаревший ключ реестра HKEY_CURRENT_USER\Software\Wine\Direct3D:
- «UseGLSL» заменен настройкой «shader_backend», указанной выше.
- D3DX:
- Реализована поддержка сжатия текстур с помощью S3TC-сжатия.
- Различные операции, например, Заливки текстур на неотображаемых поверхностях реализованы более корректно. Ранее их реализация основывалась на базовой реализации Direct3D, не применяя ограничений сопоставления.
- В структуру эффектов были внесены различные улучшения и исправления.
- Ядро:
- Большинство функций, которые раньше были в Kernel32, перенесены в KernelBase, чтобы следовать архитектуре последних версий Windows.
- Библиотеки с неправильной 32/64-битностью игнорируются при обнаружении в пути поиска, чтобы обеспечить возможность загрузки правильной, если она будет найдена дальше по пути.
- Объекты ядра лучше эмулируются для драйверов устройств, которые ожидают манипулирования объектами со стороны ядра.
- Реализованы объекты синхронизации на уровне ядра, такие как спин-блокировки, быстрые мьютексы, снятие блокировок и переменные ресурсов.
- Состояние батареи системы правильно сообщается приложениям.
- Пользовательский интерфейс:
- Свернутые окна отображаются с использованием строки заголовка вместо старых значков в стиле Windows 3.1.
- Реализованы новые стили кнопок: «Разделить кнопки» и «Ссылки на команды».
- Элемент управления Edit также правильно устанавливает поля для шрифтов CJK.
- Интеграция с рабочим столом:
- Для папок «Загрузки» и «Шаблоны» создаются символические ссылки на соответствующие каталоги Unix.
- Устройства ввода:
- Драйверы устройств Plug & Play могут быть установлены и загружены при запуске.
- Игровые контроллеры поддерживаются лучше, включая правильную поддержку переключателя, руля, управления газом и тормозом.
- Старый API джойстика версий Linux ниже 2.2 больше не поддерживается.
- .СЕТЬ:
- Движок Mono обновлен до версии 4.9.4, включая части платформы Windows Presentation Foundation (WPF).
- Дополнения Gecko и Mono поддерживают общую установку, при которой файлы используются непосредственно из глобальной папки /usr/share/wine, а не копируются в каждый новый префикс.
- Интернет и сети:
- Движок Gecko обновлен для поддержки последних цепочек инструментов.
- Реализован ряд новых HTML API.
- MSHTML поддерживает некоторые элементы SVG.
- Объект ошибки и распространение исключений поддерживаются в VBScript.
- Реализован ряд встроенных функций VBScript.
- JScript Режим совместимости с EcmaScript расширен для поддержки большего количества функций.
- Объекты сценариев JScript и VBScript предоставляют интерфейсы информации о типе.
- Конфигурацию HTTP-прокси можно получить через DHCP.
- Поддерживаются перенаправления HTTP паспорта.
- Служба HTTP и соответствующая клиентская библиотека (HTTPAPI) реализованы частично.
- Криптография:
- Ключи ECC (эллиптическая кривая) поддерживаются при использовании GnuTLS.
- Реализован импорт ключей и сертификатов из BLOB-объектов PFX.
- Поддерживается алгоритм создания ключей PBKDF2.
- Текст и шрифты:
- Функции позиционирования OpenType поддерживаются в DirectWrite и по умолчанию включены для латинского алфавита, включая кернинг.
- Доступ к данным шрифтов становится безопаснее за счет проверки различных таблиц данных перед их использованием.
- Интерфейсы DirectWrite обновлены до последней версии SDK, в которой реализованы некоторые из последних дополнений API.
- Аудио видео:
- Библиотеки XAudio2 переопределены для использования внешней библиотеки FAudio для лучшей совместимости.
- Библиотеки Media Foundation конкретизированы, в том числе:
- Поддержка встроенных и пользовательских асинхронных рабочих очередей.
- Возможность отправлять периодические обратные вызовы, ожидающие, запланированные и регулярные рабочие элементы с поддержкой приоритета элемента.
- Поддержка очередей медиа-событий.
- Различные базовые API для обработки объектов типа мультимедиа, дескрипторов потоков и представлений, атрибутов объектов, объектов байтовых потоков, образцов и буферов.
- Первоначальная реализация Source Resolver.
- Первоначальная реализация API Source Reader.
- Реализация объекта Sample Grabber.
- Основная поддержка построения объектов топологии.
- Встроенная реализация часов презентации, начата реализация функциональности медиа-сеанса.
- Фильтр захвата видео был перенесен для использования версии 4l2 вместо устаревшего API версии 4l1, что позволяет использовать некоторые камеры, которые не поддерживают версию 4l1.
- Поддержка преобразования YUV в RGB и чтения с устройств v4l2 с помощью mmap() была удалена; теперь мы зависим от libv4l2 в обоих этих случаях.
- Встроенные декодеры AVI, MPEG-I и WAVE были удалены; теперь мы зависим от GStreamer или Mac QuickTime Toolkit для декодирования таких медиафайлов.
- Реализовано еще несколько API конфигурации VMR7.
- Звуковые драйверы поддерживают регулировку громкости для каждого канала.
- Интернационализация:
- Таблицы символов Юникода основаны на версии 12.1.0 стандарта Юникода.
- Реализована нормализация Unicode.
- Идентификатор географического региона автоматически устанавливается в реестре на основе текущего языкового стандарта. При необходимости его можно изменить в разделе HKEY_CURRENT_USER\Control Panel\International\Geo.
- Поддерживаются сингальский и астурийский языки.
- Поддерживается кодовая страница 28601 (латиница/тайский).
- РПК/КОМ:
- Маршаллер typelib поддерживает сложные структуры и массивы.
- Существует первоначальная реализация библиотеки времени выполнения Windows Script.
- Существует первоначальная реализация библиотеки объектов данных Microsoft ActiveX (ADO).
- Установщики:
- Поддерживаются файлы исправлений Microsoft Installer (MSI).
- Инструмент WUSA (автономный установщик Центра обновления Windows) поддерживает установку файлов обновления .MSU.
- ARM-платформы:
- Обработка исключений реализована для ARM64 с использованием библиотеки libunwind.
- Прокси-серверы OLE без стабинга поддерживаются на ARM64.
- Инструменты разработки/Winelib:
- Удаленный отладчик Visual Studio можно использовать для отладки приложений, работающих под Wine.
- Библиотека Debug Engine (DBGENG) реализована частично.
- Двоичные файлы, созданные для Windows, больше не зависят от библиотеки libwine, что позволяет им работать в Windows без каких-либо дополнительных зависимостей. Библиотека libwine больше не предназначена для Windows.
- Компилятор ресурсов и компилятор IDL поддерживают опцию --sysroot, позволяющую находить файлы заголовков в средах кросс-компиляции.
- Winegcc поддерживает параметры «--target», «--wine-objdir», «--winebuild» и «-fuse-ld», которые упрощают использование в качестве кросс-компилятора или с настраиваемыми цепочками инструментов.
- Заголовок Wine/unicode.h больше не доступен приложениям, поскольку функции в конечном итоге будут удалены и заменены стандартными широкосимвольными функциями среды выполнения C.
- Построить инфраструктуру:
- Тестовые двоичные файлы создаются в формате PE, если доступен MinGW, поэтому один и тот же тестовый двоичный файл может работать как в Wine, так и в Windows. Цель make «перекрестного тестирования» больше не требуется и не поддерживается.
- Соглашение о вызовах fastcall поддерживается в файлах спецификаций. Он использует правильное изменение имен для сборок Windows.
- Флаг точки входа «-import» поддерживается в файлах спецификаций, чтобы отметить функции, которым требуется сгенерировать префикс кода исправления для их модулей импорта.
- Winebuild поддерживает опцию --builtin, позволяющую добавлять специальную подпись к двоичным файлам PE, чтобы пометить их как встроенные файлы Wine.
- Встроенные приложения:
- Инструмент CHCP реализован. Это позволяет установить кодовую страницу консоли.
- Инструмент MSIDB реализован. Он позволяет манипулировать базами данных MSI.
- Улучшения производительности:
- Различные функции времени используют более производительные системные часы, если они доступны, чтобы уменьшить накладные расходы в цикле рендеринга во многих играх.
- При поиске файлов используется поддержка свертывания регистра файловой системы ext4, если она включена в искомом каталоге.
- Списки в стиле без данных (LBS_NODATA) имеют лучшую производительность при работе с большим количеством элементов.
- Блокировки Slim Reader/Writer, ключевые события и условные переменные используют фьютексы в Linux, чтобы избежать двусторонних обходов Wineserver.
- Новые внешние зависимости:
- Кросс-компилятор MinGW-w64 используется для сборки модулей в формате PE.
- Библиотека FAudio используется для реализации XAudio2.
- Библиотека Inotify используется для уведомлений об изменении файлов на платформах BSD.
- Библиотека Unwind используется для обработки исключений в ARM64.
- Вместо версии 1 используется библиотека Video4Linux версии 2.
читать далее
Источник: Винный штаб
История через: AndroidПолиция