Wine, рівень сумісності Windows, досягає версії 5.0 на Android

Wine — це рівень сумісності Windows, який дозволяє користувачам запускати програми Windows на інших ОС. Wine для Android тепер досяг версії 5.0 — подивіться!

Екосистема додатків Android постійно розвивалася протягом багатьох років існування Android, що сприяло постійному використанню мобільних пристроїв як основного засобу взаємодії з комп’ютером для більшості людей. Багато користувачів тяжіють до мобільного способу життя, і це тому, що додатки та екосистема додатків на мобільних пристроях задовольнили їхні потреби. Але якщо вам колись знадобиться настільна програма без доступу до робочого столу, що б ви зробили? Саме тут з’являється Wine, рівень сумісності Windows, який дозволяє користувачам запускати повноцінні програми Windows на різних ОС. У Wine для Android є тепер досяг версії 5.0, узагальнюючи зусилля команди щодо розробки за рік.

Wine — це безкоштовний рівень сумісності з відкритим кодом для Windows, призначений для запуску комп’ютерних програм, розроблених для Windows, в інших операційних системах.

Wine для Android приносить Wine для Android, очевидно. Wine не є емулятором (це фактично є рекурсивним акронімом назви), тому він може лише запускати версії додатків для певної архітектури – версія Wine для Android для ARM запускатиме лише додатки ARM, а не x86.

Основні моменти стабільного випуску 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 підтримує до версії 1.1.126 специфікації Vulkan.
    • Бібліотека WindowsCodecs здатна конвертувати більше растрових форматів, у тому числі формати з індексом палітри.
  • Direct3D:
    • Повноекранні програми Direct3D блокують заставку.
    • DXGI swapchain інформує програму, коли відповідне вікно згортається. Зазвичай це дозволяє програмам зменшити використання ЦП, але в деяких випадках це необхідно для відновлення вікна програми.
    • Для програм DXGI реалізовано перемикання між повноекранним і віконним режимами за допомогою стандартної комбінації Alt+Enter.
    • Для програм Direct3D 12 реалізовано такі функції:
      • Перемикання між повноекранним і віконним режимами.
      • Зміна режимів відображення.
      • Масштабні подарунки.
      • Інтервали обміну. Ці функції вже були реалізовані раніше для попередніх версій Direct3D API.
    • Покращено обробку різних граничних випадків. Серед інших:
      • Поза діапазоном еталонних значень для альфа-тестів і тестів шаблону.
      • Вибірка 2D-ресурсів за допомогою 3D-семплерів і навпаки.
      • Малювання з нанесеними текстурами та буферами.
      • Використання недійсних об’єктів кліпера DirectDraw.
      • Створення пристроїв Direct3D у недійсній Windows, як-от вікно робочого столу.
      • Вікна перегляду з мінімальним Z, більшим або рівним максимальному Z.
      • Ресурси, прив’язані як через представлення шейдерних ресурсів, так і через перегляд цільового зображення або трафарету глибини одночасно.
      • Перемикається між форматами з альфа-компонентами та без них. Оскільки добре функціонуючі програми не покладаються на ці граничні випадки, вони зазвичай впливають лише на одну або дві програми кожна. Тим не менш, їх досить багато.
    • Області брудної текстури відстежуються точніше для завантаження текстур Direct3D 8 і 9.
    • Завантаження 3D-текстур, стиснених за допомогою S3TC, потребує менше адресного простору. Оскільки 3D-текстури можуть бути потенційно великими, а вичерпання адресного простору є проблемою для 32-розрядних програм, 3D-текстури, стиснені S3TC, завантажуються окремо, а не одним завантаженням.
    • Реалізовано інтерфейс ID3D11Multithread.
    • Було внесено різні виправлення розрахунку освітлення та вдосконалення для старіших програм DirectDraw.
    • Реалізовано обмежену підтримку блітів у ланцюжках обміну.
    • Реалізовано більше API відображення шейдерів.
    • Wind3d CPU blitter може обробляти стислі вихідні ресурси. Підтримка стислих цільових ресурсів уже була реалізована в попередньому випуску.
    • База даних відеокарт 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.
    • Реалізовано нові стилі кнопок «Розділення кнопок» і «Командні посилання».
    • Елемент керування «Редагувати» також правильно встановлює поля для шрифтів CJK.
  • Інтеграція з робочим столом:
    • Для папок «Завантаження» та «Шаблони» створюються символічні посилання на відповідні каталоги Unix.
  • Пристрої введення:
    • Драйвери пристроїв Plug & Play можна встановити та завантажити під час запуску.
    • Ігрові контролери покращено підтримуються, включно з належною підтримкою перемикача капелюха, керування кермом, газом і гальмом.
    • Старий API джойстика версій Linux до 2.2 більше не підтримується.
  • .NET:
    • Механізм Mono оновлено до версії 4.9.4, включаючи частини фреймворку Windows Presentation Foundation (WPF).
    • Додатки Gecko та Mono підтримують спільну установку, коли файли використовуються безпосередньо з глобального розташування в /usr/share/wine замість копіювання в кожен новий префікс.
  • Інтернет і мережа:
    • Механізм Gecko оновлено для підтримки останніх наборів інструментів.
    • Реалізовано низку нових API HTML.
    • MSHTML підтримує деякі елементи SVG.
    • Об’єкт помилки та розповсюдження винятків підтримуються у VBScript.
    • Реалізовано кілька вбудованих функцій VBScript.
    • JScript Режим сумісності з EcmaScript розширено для підтримки додаткових функцій.
    • Об’єкти сценаріїв JScript і VBScript надають інформаційні інтерфейси типу.
    • Конфігурацію HTTP-проксі можна отримати через DHCP.
    • Перенаправлення HTTP підтримуються.
    • Служба HTTP та відповідна клієнтська бібліотека (HTTPAPI) реалізовані частково.
  • Криптографія:
    • Під час використання GnuTLS підтримуються ключі ECC (еліптична крива).
    • Реалізовано імпорт ключів і сертифікатів з блобів PFX.
    • Підтримується алгоритм виведення ключа PBKDF2.
  • Текст і шрифти:
    • Функції позиціонування OpenType підтримуються в DirectWrite та ввімкнено для латинського алфавіту за замовчуванням, включаючи кернінг.
    • Доступ до даних шрифтів стає безпечнішим завдяки перевірці різних таблиць даних перед їх використанням.
    • Інтерфейси DirectWrite оновлено до останньої версії SDK, реалізовано деякі з останніх доповнень API.
  • Аудіо/відео:
    • Для кращої сумісності бібліотеки XAudio2 перереалізовано для використання зовнішньої бібліотеки FAudio.
    • Конкретизовано бібліотеки Media Foundation, зокрема:
      • Підтримка вбудованих і користувацьких асинхронних робочих черг.
      • Можливість подавати періодичні зворотні виклики, очікування, заплановані та регулярні робочі елементи з підтримкою пріоритету елементів.
      • Підтримка черг медіа-подій.
      • Різні базові API для обробки об’єктів медіа-типу, дескрипторів потоків і презентацій, атрибутів об’єктів, об’єктів потоку байтів, зразків і буферів.
      • Початкова реалізація Source Resolver.
      • Початкова реалізація Source Reader API.
      • Реалізація для об’єкта Sample Grabber.
      • Основна підтримка побудови топологічних об’єктів.
      • Реалізація вбудованого годинника презентації, розпочато впровадження функціональності медіа-сесії.
    • Фільтр захоплення відео перенесено на використання v4l2 замість застарілого API v4l1, що дозволяє використовувати деякі камери, які не підтримують v4l1.
    • Підтримку перекладу YUV у RGB та читання з пристроїв v4l2 за допомогою mmap() видалено; тепер ми залежимо від libv4l2 для обох цих речей.
    • Вбудовані декодери AVI, MPEG-I та WAVE видалено; тепер ми покладаємося на GStreamer або Mac QuickTime Toolkit для декодування таких медіафайлів.
    • Реалізовано ще кілька API конфігурації VMR7.
    • Звукові драйвери підтримують регулювання гучності для кожного каналу.
  • Інтернаціоналізація:
    • Таблиці символів Unicode базуються на версії 12.1.0 стандарту Unicode.
    • Реалізовано нормалізацію Unicode.
    • Ідентифікатор географічного регіону автоматично встановлюється в реєстрі на основі поточної мови. За потреби його можна змінити в HKEY_CURRENT_USER\Control Panel\International\Geo.
    • Підтримуються сингальська та астурійська мови.
    • Кодова сторінка 28601 (латиниця/тайська) підтримується.
  • RPC/COM:
    • Маршаллер typelib підтримує складні структури та масиви.
    • Існує початкова реалізація бібліотеки середовища виконання Windows Script.
    • Існує початкова реалізація бібліотеки Microsoft ActiveX Data Objects (ADO).
  • Інсталятори:
    • Підтримуються файли виправлень Microsoft Installer (MSI).
    • Інструмент WUSA (автономний інсталятор Windows Update) підтримує інсталяцію файлів оновлення .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. Ціль створення «перехресного тесту» більше не потрібна або не підтримується.
    • У файлах специфікацій підтримується угода про виклик "швидкого виклику". Він використовує правильну зміну імен для збірок Windows.
    • Прапор точки входу «-import» підтримується у файлах специфікацій, щоб позначити функції, які потребують генерації префікса коду гарячого виправлення для своїх каналів імпорту.
    • Winebuild підтримує параметр «--builtin», щоб додати спеціальний підпис до бінарних файлів PE, щоб позначити їх як вбудовані Wine.
  • Вбудовані програми:
    • Інструмент CHCP реалізовано. Дозволяє встановити кодову сторінку консолі.
    • Реалізовано інструмент MSIDB. Це дозволяє маніпулювати базами даних MSI.
  • Покращення продуктивності:
    • Різні функції часу використовують більш продуктивні системні годинники, якщо вони доступні, щоб зменшити накладні витрати в циклі візуалізації багатьох ігор.
    • Пошук файлів використовує підтримку згортання регістру файлової системи ext4, якщо її ввімкнено в каталозі, у якому здійснюється пошук.
    • Списки стилю без даних (LBS_NODATA) мають кращу продуктивність для великої кількості елементів.
    • Блокування Slim Reader/Writer, ключові події та змінні умов використовують ф’ютекси в Linux, щоб уникнути зворотних передачі wineserver.
  • Нові зовнішні залежності:
    • Для побудови модулів у форматі PE використовується крос-компілятор MinGW-w64.
    • Для реалізації XAudio2 використовується бібліотека FAudio.
    • Бібліотека Inotify використовується для повідомлень про зміну файлів на платформах BSD.
    • Бібліотека Unwind використовується для обробки винятків на ARM64.
    • Замість версії 1 використовується бібліотека Video4Linux версії 2.

читати далі


Джерело: Винний штаб

Історія через: AndroidPolice