Kiadásra került a Box64 0.4.0 emulátor, amely a Linux x86_64 architektúrára készült programjainak ARM64, RISC-V és Loongarch64 processzorokkal rendelkező hardveren való futtatására szolgál. A projekt nagy hangsúlyt fektet a játékalkalmazások indítására, és lehetőséget biztosít a Windows-verziók indítására a Wine és Proton segítségével. A projekt forráskódja C nyelven készült, és MIT licenc alatt terjesztik.
A projekt különlegessége a hibrid végrehajtási modell alkalmazása, amelyben az emuláció kizárólag az alkalmazás gépi kódjára és a specifikus könyvtárakra vonatkozik. A tipikus rendszerkönyvtárakat, beleértve a libc, libm, GTK, SDL, Vulkan és OpenGL-t, a célplatformhoz illeszkedő változatokra cserélik. Így a könyvtári hívások emuláció nélkül végrehajthatóak, ami jelentős teljesítménynövekedést eredményez.
A célplatformra natívan nem elérhető kód emulálása dinamikus újrakompilálási (DynaRec) technikával történik, amely egyik gépi utasításkészletről a másikra fordít. A gépi utasítások értelmezéséhez képest a dinamikus újrakompilálás 5-10-szer gyorsabb teljesítményt mutat. magas teljesítmény.
Az új verzióban:
- Bemutatásra került egy egységesített műveleti kód előtag dekóder (prefix opcode decoder), amely az értelmezőben és a dinamikus újrakompilálás (DynaRec) összes backendjében használatos. Az új dekóder sokkal általánosabban kezeli a ritka opcode előtag kombinációkat, és lehetővé teszi, hogy elkerüljük a specifikus 'hackek' és a kód duplikálásának használatát az értelmezőben és a DynaRec backendjeiben. A dekóder átírása során felesleges kódot távolítottunk el, egyszerűsítve a kódalap karbantartását, és lehetővé téve a DynaRec számára, hogy nem szokványos opcode előtag kombinációkkal dolgozzon.
- Megkezdődött egy mechanizmus kidolgozása a memóriából a már nem használt natív kódra konvertált kódblokkok eltávolítására. Az ilyen típusú optimalizálás lehetővé teszi a memóriafogyasztás csökkentését azoknál az alkalmazásoknál, amelyek nagy mennyiségű indítási műveletet végeznek, mint például a Steam és a libcef-et használó alkalmazások.
- Javult az ARM64 architektúra támogatása: megvalósult a CPU NVIDIA GB10-hez készült összeállítási profil. A dinamikus újrakompilálás backendjében (DynaRec) folytatódott a ciklusoptimalizálási technikák, például az XMM/YMM regiszterek beállításának műveleteinek a ciklus testéből való kiemelésének implementálása.
- Növelték a dinamikus újrakompilálás backendjének stabilitását és teljesítményét a RISC-V architektúrához. Biztosítva van a Steam, Proton és Wine helyes működése, azonban a védett DRM-tartalommal való munka, amely Windows rendszerhívások emulációját igényli, 48-bites címtér (SV48) támogatással rendelkező hardver vagy módosított Wine és Proton verziók használatát igényli.
- Jelentős előrelépést tett a Loongarch architektúrához készült backend fejlesztése, amely már képes elindítani a Steam, Wine és Proton alkalmazásokat, de funkcionálisan még mindig elmarad az ARM64 rendszerekhez készült backend mögött. A működéshez jelenleg 4K méretű memóriaoldalak használata szükséges a kernelben (a Loongarch esetében alapértelmezetten általában 16K-ra állítják be). A teljesítmény elegendő a Loongarch 3A6000 CPU (2,5 GHz, 4 fizikai mag) játékok futtatásához.

- Növelték a Box32 mód stabilitását, amely 32 bites végrehajtható fájlok támogatását biztosít a Box64-ben. Ebben a módban megnőtt a Steam működésének stabilitása minden architektúrán, és lehetőség nyílik bizonyos OpenGL játékok belső játékfelületeinek használatára.
Forrás: opennet.ru

