Wine е слой за съвместимост на Windows, позволяващ на потребителите да стартират приложения на Windows на други операционни системи. Wine за Android вече достигна v5.0 -- вижте го!
Екосистемата на приложенията за Android стабилно се развива през годините на съществуване на Android, подхранвана от стабилното възприемане на мобилните устройства като основно взаимодействие с компютър за повечето хора. Много потребители са се насочили към начин на живот само с мобилни устройства и това е така, защото приложенията и екосистемата на приложенията на мобилни устройства са успели да задоволят техните конкретни нужди. Но ако някога се окажете, че имате нужда от десктоп приложение, без да имате достъп до десктоп, какво бихте направили? Това е мястото, където идва Wine, слой за съвместимост на Windows, който позволява на потребителите да изпълняват пълноценни Windows приложения на различни операционни системи. Wine за Android има вече достигна v5.0, съпоставяне на усилията за разработка за една година от екипа.
Wine е безплатен слой за съвместимост с отворен код за Windows, чиято цел е да позволи на компютърни програми, разработени за Windows, да работят на други операционни системи. Wine за Android предоставя Wine на Android, очевидно. Wine не е емулатор (което всъщност е рекурсивен бекроним на името), така че може да работи само специфични за архитектурата версии на приложения -- ARM версията на Wine за Android ще изпълнява само ARM приложения, а не x86.
Акцентите за стабилната версия на Wine 5.0 включват поддръжка на няколко монитора и поддръжка на Vulkan 1.1. Пълният регистър на промените за актуализацията е както следва:
Списък на промените на Wine 5.0:
- PE модули:
- Повечето модули са изградени във формат PE (преносим изпълним файл, двоичен формат на 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 информират приложението, когато съответният прозорец е минимизиран. Това обикновено позволява на приложенията да намалят използването на процесора, докато е сведено до минимум, а в някои случаи е необходимо, за да позволи възстановяването на прозореца на приложението отново.
- Превключването между режими на цял екран и режими с прозорци с помощта на стандартната комбинация Alt+Enter е реализирано за DXGI приложения.
- Следните функции са внедрени за Direct3D 12 приложения:
- Превключване между цял екран и прозорец.
- Промяна на режимите на показване.
- Мащабирани подаръци.
- Интервали на смяна. Тези функции вече бяха внедрени за по-ранни версии на Direct3D API.
- Подобрена е обработката на различни крайни случаи. Между другото:
- Референтните стойности извън обхвата за алфа и шаблонните тестове.
- Вземане на проби от 2D ресурси с 3D семплери и обратно.
- Рисуване с нанесени текстури и буфери.
- Използване на невалидни клипър обекти на DirectDraw.
- Създаване на Direct3D устройства на невалиден Windows, като прозореца на работния плот.
- Прозорци за изглед с минимално Z, по-голямо или равно на максималното Z.
- Ресурси, обвързани едновременно чрез изгледи на ресурси за шейдъри и изгледи за цел за изобразяване или шаблон за дълбочина.
- Преминава между формати със и без алфа компоненти. Тъй като приложенията с добро поведение не разчитат на тези крайни случаи, те обикновено засягат само едно или две приложения всяко. Въпреки това има доста голям брой от тях.
- Мръсните текстурни региони се проследяват по-точно за Direct3D 8 и 9 качвания на текстури.
- Качването на S3TC-компресирани 3D текстури изисква по-малко адресно пространство. Тъй като 3D текстурите могат да бъдат потенциално големи и изчерпването на адресното пространство е проблем за 32-битовите приложения, S3TC-компресираните 3D текстури се качват на срез, вместо в едно качване.
- Интерфейсът ID3D11Multithread е внедрен.
- Направени са различни корекции на изчисляване на осветлението и подобрения за по-стари DirectDraw приложения.
- Въведена е ограничена поддръжка за blits в суап вериги.
- Внедрени са повече 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.
- Внедрени са новите стилове на бутони Split Buttons и Command Links.
- Контролата за редактиране задава полета правилно и за CJK шрифтове.
- Интегриране на работния плот:
- Създават се символни връзки към съответните Unix директории за папките „Изтегляния“ и „Шаблони“.
- Входни устройства:
- Драйверите за Plug & Play устройства могат да бъдат инсталирани и заредени при стартиране.
- Игралните контролери се поддържат по-добре, включително подходяща поддръжка за превключвател за шапки, управление на колело, газ и спирачка.
- Старият API на джойстика на версии на Linux, по-ранни от 2.2, вече не се поддържа.
- .NET:
- Енджинът 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.
- Поддържат се Passport HTTP пренасочвания.
- HTTP услугата и съответната клиентска библиотека (HTTPAPI) са частично внедрени.
- Криптография:
- ECC (елиптична крива) ключове се поддържат при използване на GnuTLS.
- Внедрено е импортиране на ключове и сертификати от PFX blobs.
- Поддържа се алгоритъмът за извличане на ключ PBKDF2.
- Текст и шрифтове:
- Функциите за позициониране на OpenType се поддържат в DirectWrite и са разрешени за латински шрифт по подразбиране, включително кернинг.
- Достъпът до данните за шрифтове става по-безопасен чрез валидиране на различните таблици с данни преди използването им.
- Интерфейсите DirectWrite са актуализирани до скорошен SDK, внедрявайки някои от най-новите добавки към API.
- Аудио / Видео:
- Библиотеките XAudio2 са въведени отново, за да използват външната библиотека FAudio за по-добра съвместимост.
- Библиотеките на Media Foundation са конкретизирани, включително:
- Поддръжка за вградени и потребителски асинхронни работни опашки.
- Възможност за изпращане на периодични обратни повиквания, чакащи, планирани и редовни работни елементи, с поддръжка за приоритет на елементи.
- Поддръжка за опашки за медийни събития.
- Различен основен API за обработка на обекти от медийни типове, дескриптори на поток и презентация, атрибути на обекти, обекти на поток от байтове, проби и буфери.
- Първоначално внедряване на Source Resolver.
- Първоначално внедряване на API на Source Reader.
- Внедряване за обект Sample Grabber.
- Основна поддръжка за изграждане на топологични обекти.
- Реализация на вграден часовник за презентация, започна внедряване на функционалност Media Session.
- Филтърът за заснемане на видео е пренесен да използва 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 marshaller поддържа сложни структури и масиви.
- Има първоначална реализация на библиотеката за изпълнение на Windows Script.
- Има първоначална реализация на Microsoft ActiveX Data Objects (ADO) библиотека.
- Инсталатори:
- Поддържат се корекции на Microsoft Installer (MSI).
- Инструментът WUSA (самостоятелен инсталатор на Windows Update) поддържа инсталиране на .MSU файлове за актуализиране.
- ARM платформи:
- Развиването на изключение е реализирано за ARM64, като се използва библиотеката libunwind.
- OLE stubless проксита се поддържат на ARM64.
- Инструменти за разработка / Winelib:
- Отдалеченият дебъгер на Visual Studio може да се използва за отстраняване на грешки в приложения, работещи под Wine.
- Библиотеката за отстраняване на грешки (DBGENG) е частично внедрена.
- Двоичните файлове, създадени за цел на Windows, вече не зависят от библиотеката libwine, за да могат да работят на Windows без никакви допълнителни зависимости. Библиотеката libwine вече изобщо не е създадена за Windows.
- Ресурсният компилатор и IDL компилаторът поддържат опция „--sysroot“, за да позволят намирането на заглавни файлове в среди за кръстосано компилиране.
- Winegcc поддържа опциите '--target', '--wine-objdir', '--winebuild' и '-fuse-ld', които улесняват използването му като крос-компилатор или с персонализирани вериги от инструменти.
- Заглавката wine/unicode.h вече не е достъпна за приложенията, тъй като функциите в крайна сметка ще бъдат премахнати и заменени от стандартните функции за широкосимволно изпълнение на C.
- Изградете инфраструктура:
- Тестовите двоични файлове са изградени във формат PE, ако MinGW е наличен, така че един и същ тестов двоичен файл може да работи както на Wine, така и на Windows. Целта за създаване на „crosstest“ вече не е необходима или поддържана.
- Конвенцията за извикване '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.
- Библиотеката Video4Linux версия 2 се използва вместо версия 1.
Прочетете още
източник: Винен щаб
История чрез: AndroidPolice