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