ĂshtĂ« publikuar versioni i emulatorit Box64 0.4.0, i dizajnuar pĂ«r tĂ« drejtuar programet Linux tĂ« ndĂ«rtuara pĂ«r arkitekturĂ«n x86_64 nĂ« pajisjet me procesorĂ« ARM64, RISC-V dhe Loongarch64. Projekti i kushton vĂ«mendje tĂ« madhe organizimit tĂ« ekzekutimit tĂ« aplikacioneve tĂ« lojĂ«rave dhe ofron mundĂ«sinĂ« e ekzekutimit tĂ« ndĂ«rtimeve Windows pĂ«rmes Wine dhe Proton. Kodi burimor i projektit Ă«shtĂ« shkruar nĂ« gjuhĂ«n C dhe shpĂ«rndahet nĂ«n licencĂ«n MIT.
Karakteristika e projektit është përdorimi i një modeli të hibrid të ekzekutimit, ku një emulim aplikohet vetëm për kodin makinerik të vetë aplikacionit dhe bibliotekat specifike. Bibliotekat standarde të sistemit, përfshirë libc, libm, GTK, SDL, Vulkan dhe OpenGL, zëvendësohen me variante vendase për platformat e synuara. Kështu, thirrjet e bibliotekës ekzekutohen pa emulim, gjë që lejon arritjen e një rritjeje të rëndësishme të performancës.
Emulimi i kodit, për të cilin zëvendësimet native për platformën e synuar nuk janë në dispozicion, realizohet duke përdorur teknikën e ri-kompilimit dinamik (DynaRec) nga një grup instruksionesh makine në një tjetër. Krahasuar me interpretimin e instruksioneve makine, ri-kompilimi dinamik ka një performancë 5-10 herë më të lartë. performancë të lartë.
Në këtë version të ri:
- ĂshtĂ« paraqitur njĂ« dekoder i unifikuar i prefikseve tĂ« kodit tĂ« operacioneve (prefix opcode decoder), i angazhuar nĂ« interpreter dhe nĂ« tĂ« gjitha prapavijĂ« tĂ« ri-kompilimit dinamik (DynaRec). Dekoduesi i ri trajton mĂ« universalisht kombinimet e rralla tĂ« prefikseve tĂ« opkodeve dhe lejon qĂ« tĂ« shmangen "hack" specifike dhe tĂ« dyfishohen kodet nĂ« interpreter dhe nĂ« prapavijĂ«t e DynaRec. Rishikimi i dekoduesit çoi nĂ« eliminimin e kodit tĂ« tepĂ«rt, thjeshtimin e mbĂ«shtetjes sĂ« bazĂ«s sĂ« kodit dhe mundĂ«sinĂ« pĂ«r DynaRec qĂ« tĂ« punojĂ« me kombinime tĂ« pazakonta tĂ« prefikseve tĂ« opkodeve.
- Ka filluar puna mbi mekanizmin për fshirjen nga memorie të blloqeve të kodit, të konvertuara në kodin natyral, por që tashmë nuk përdoren. Kjo optimizim lejon reduktimin e konsumit të memories gjatë nisjes së aplikacioneve që kryejnë një volum të madh operacionesh në fillim, si Steam dhe aplikacione që përdorin libcef.
- Përmirësuar mbështetje për arkitekturën ARM64: Implementuar një profil ndërtimi për CPU-në NVIDIA GB10. Në backend-in e rikompilimit dinamik (DynaRec) vazhdohet realizimi i teknikave të optimizimit të cikleve, siç është nxjerrja e operacioneve të ndërrimit të regjistrave XMM/YMM nga trupi i ciklit.
- Rritur stabilitetin dhe performancën e backend-it të rikompilimit dinamik për arkitekturën RISC-V. Siguruar nisja e saktë e Steam, Proton dhe Wine, por për të punuar me përmbajtje të siguruar DRM që kërkon simulimin e thirrjeve sistemore të Windows, nevojitet pajisje me mbështetje për hapësirën adresuese 48-bit (SV48) ose përdorimi i ndërtimeve të modifikuara të Wine dhe Proton.
- Zhvillimi i backend-it për arkitekturën Loongarch ka avancuar ndjeshëm, duke arritur deri në mundësinë e ekzekutimit të Steam, Wine dhe Proton, por akoma mbetet pas në funksionalitet krahasuar me backend-in për sistemet ARM64. Për momentin, nevojitet përdorimi i nëndegëve të kujtesës në bërthamën, me një madhësi prej 4K (në mënyrë të paracaktuar për Loongarch zakonisht vendoset në 16K). Performanca është tashmë e mjaftueshme për të ekzekutuar lojra në CPU Loongarch 3A6000 (2.5 GHz me 4 bërthama fizike).

- Stabiliteti i Modalitetit Box32 ka rritur, duke ofruar mbështetje për skedarë ekzekutivë 32-bit në Box64. Në këtë modalitet, vihet re një rritje e stabilitetit të funksionimit të Steam në të gjitha arkitekturave dhe mundësia e përdorimit të mbivendosjeve brenda lojërave në disa lojëra OpenGL.
Burimi: opennet.ru

