наскоро освобождаването на новите версии на Емулатори Box86 0.2.6 и Box64 0.1.8. Проектите се разработват синхронно от един и същ екип за разработка.
Box86 е ограничен до стартиране на 86-битови x32 приложения (като игри) на Linux системи, различни от x86, като ARM (хост системата трябва да е 32-битова с малък байт). Следователно, за стартиране и компилиране на Box32 е необходима 86-битова подсистема. Box86 е безполезен само за 64-битови системи. Освен това имате нужда от 32-битова верига от инструменти, за да компилирате Box86.
Тъй като Box86 използва собствените версии на някои „системни“ библиотеки, като libc, libm, SDL и OpenGL, той е лесен за интегриране и използване с повечето приложения, а производителността може да бъде изненадващо висока в много случаи.
Същото важи и за Box64, само че такова и позволява стартирайте 64-битови изпълними файлове. Проектът обръща голямо внимание на организацията на пускането на приложения за игри, включително възможността за пускане на компилации на Windows чрез Wine и Proton.
Характеристика на проекта е използването на хибриден модел на изпълнение, в който емулацията се прилага само към машинния код на самото приложение и конкретни библиотеки. Общите системни библиотеки, включително libc, libm, GTK, SDL, Vulkan и OpenGL, се заменят с естествени варианти на целевите платформи. Следователно извикванията на библиотеката се изпълняват без емулация, което позволява значително увеличение на производителността.
Емулиращ код, който няма собствени замениs за целевата платформа се извършва с помощта на техниката на динамично прекомпилиране (DynaRec) от един набор машинни инструкции към друг. В сравнение с тълкуването на машинни инструкции, динамичното прекомпилиране показва 5 до 10 пъти по-добра производителност.
в тестове за производителност, когато работи на платформите Armhf и Aarch64, Емулаторите Box86 и Box64 значително превъзхождат QEMU и FEX-emu проекти и в някои тестове (glmark2, openarena) те постигнаха производителност, идентична с стартирането на сглобка, роден за целевата платформа.
По отношение на съвместимостта на заявленията, dОт 165 тествани игри, приблизително 70% са били успешни. Около 10% повече работа, но с определени резерви и ограничения.
От игрите, с които се отбелязват проблеми, се споменават игри, базирани на двигателя Unity3D, който е обвързан с пакета Mono, чиято емулация все още не винаги работи поради JIT компилацията, използвана в Mono, а също така има доста високи графики, изисквания това не винаги може да се постигне на ARM дъски. Подмяната на библиотеките с приложения на GTK в момента е ограничена до GTK2 (замяната на GTK3/4 не е напълно внедрена).
Що се отнася до основни промени в новите издания, се подчертава следното:
- Добавена връзка към библиотеката Vulkan. Добавена поддръжка на Vulkan и DXVK графичен API (внедряване на DXGI, Direct3D 9, 10 и 11 над Vulkan).
- Подобрени връзки за GTK библиотеки. Добавени връзки за gstreamer и библиотеки, които обикновено се използват в GTK приложения.
- Добавена първоначална поддръжка (засега само режим на интерпретиране) за RISC-V и PPC64LE архитектури.
- Направени са корекции на грешки, за да се подобри съвместимостта със SteamPlay и Proton Layer. Възможно е да стартирате много Linux и Windows игри от Steam на дъски AArch64 като Raspberry Pi 3 и 4.
- Подобрено управление на паметта, поведение на mmap и наблюдение за нарушения на защитата на паметта.
- Подобрена поддръжка за системното извикване за клониране в libc. Добавена поддръжка за нови системни повиквания.
- В двигателя за динамично прекомпилиране е подобрена работата с SSE/x87 регистри, добавена е поддръжка за нови машинни кодове, оптимизирани са float и двойни преобразувания, подобрена е вътрешната обработка на клонове, опростена поддръжка за нови архитектури.
- Подобрен зареждане на ELF файлове.
И накрая, ако се интересувате да научите повече за него, можете да се консултирате с подробностите В следващия линк.