Опубликован выпуск эмулятора Box64 0.4.0, предназначенного для запуска Linux-программ, собранных для архитектуры x86_64, на оборудовании с процессорами ARM64, RISC-V и Loongarch64. Проект уделяет большое внимание организации запуска игровых приложений и предоставляет возможность запуска Windows-сборок через Wine и Proton. Исходные тексты проекта написаны на языке Си и распространяются под лицензией MIT.
Veçoria e projektit është aplikimi i një modeli hibrid ekzekutimi, ku emulimi aplikohet vetëm në kodin maqinar të vetë aplikacionit dhe bibliotekave specifike. Bibliotekat sistemike tipike, duke përfshirë libc, libm, GTK, SDL, Vulkan dhe OpenGL, zëvendësohen me variante që janë vendase për platformat e synuara. Kështu, thirrjet e bibliotekave ekzekutohen pa emulim, duke lejuar arritjen e një rritjeje të konsiderueshme të performancës.
Эмуляция кода, для которого отсутствуют родные для целевой платформы замены, выполняется с использованием техники динамической перекомпиляции (DynaRec) из одного набора машинных инструкций в другой. По сравнению с интерпретацией машинных инструкций динамическая перекомпиляция демонстрирует в 5-10 раз более performancë të lartë.
Në versionin e ri:
- Представлен унифицированный декодировщик префиксов кода операций (prefix opcode decoder), задействованный в интерпретаторе и во всех бэкендах динамической перекомпиляции (DynaRec). Новый декодировщик более универсально обрабатывает редкие сочетания префиксов опкодов и позволяет обойтись без специфичных «хаков» и дублирования кода в интерпрететоре и бэкендах DynaRec. Переработка декодировщика привела к удалению лишнего кода, упрощению сопровождения кодовой базы и возможности работы DynaRec с нетипичными комбинациями префиксов опкодов.
- Началась работа над механизмом для удаления из памяти блоков кода, сконвертированных в нативный код, но уже не используемых. Подобная оптимизация позволяет сократить потребление памяти при запуске приложений, выполняющих большой объём операций при запуске, таких как Steam и приложения, использующие libcef.
- Улучшена поддержка архитектуры ARM64: Реализован сборочный профиль для CPU NVIDIA GB10. В бэкенде динамической перекомпиляции (DynaRec) продолжена реализация техник оптимизации циклов, таких как вынос операций выставления регистров XMM/YMM из тела цикла.
- Повышена стабильность и производительность бэкенда динамической перекомпиляции для архитектуры RISC-V. Обеспечен корректный запуск Steam, Proton и Wine, но для работы с защищённым DRM-контентом, требующим эмуляции системных вызовов Windows, требуется оборудование с поддержкой 48-разрядного адресного пространства (SV48) или использование модифицированных сборок Wine и Proton.
- Значительно продвинулась разработка бэкенда для архитектуры Loongarch, которая доведена до возможности запуска Steam, Wine и Proton, но пока отстаёт по функциональности от бэкенда для систем ARM64. Для работы пока требуется использование в ядре страниц памяти, размером 4K (по умолчанию для Loongarch обычно выставляется 16K). Производительности уже достаточно для запуска игр на CPU Loongarch 3A6000 (2.5 GHz c 4 физическими ядрами).

- Повышена стабильность режима Box32, обеспечивающего поддержку 32-разрядных исполняемых файлов в Box64. В данном режиме отмечается повышение стабильность работы Steam на всех архитектурах и возможность использования внутриигровых оверлеев в некоторых OpenGL-играх.
Burimi: opennet.ru

