Box86 0.2.6 болон Box64 0.1.8 эмуляторуудын хувилбарууд гарсан бөгөөд тэдгээрийг ажиллуулахаар бүтээжээ. Linux- x86 болон x86_64 архитектурт зориулж бүтээгдсэн, ARM, ARM64, PPC64LE, болон RISC-V процессортой техник хангамж дээр суурилсан програмууд. Төслүүдийг хөгжүүлэгчдийн нэг баг синхроноор боловсруулдаг: Box86 нь 32 битийн x86 програмуудыг ажиллуулахаар хязгаарлагдсан бол Box64 нь 64 битийн гүйцэтгэгдэх файлуудыг ажиллуулах боломжийг олгодог. Төсөл нь тоглоомын програмуудыг ажиллуулах ажлыг зохион байгуулахад ихээхэн ач холбогдол өгдөг бөгөөд үүнд ажиллуулах боломжийг олгодог. Windows-Wine болон Proton-оор дамжуулан бүтээдэг. Төслийн эх код нь C хэл дээр бичигдсэн бөгөөд MIT лицензийн дагуу (Box86, Box64) түгээгддэг.
Төслийн нэг онцлог нь эмуляцийг зөвхөн програмын өөрийнх нь машин код болон тодорхой номын санд ашигладаг эрлийз гүйцэтгэлийн загварыг ашиглах явдал юм. libc, libm, GTK, SDL, Vulkan болон OpenGL зэрэг ердийн системийн сангуудыг зорилтот платформд тохирох сонголтоор сольсон. Ингэснээр номын сангийн дуудлагыг эмуляцигүйгээр гүйцэтгэдэг бөгөөд энэ нь гүйцэтгэлийн мэдэгдэхүйц өсөлтийг бий болгодог.
Зорилтот платформд орлуулах зүйл байхгүй кодын эмуляцийг нэг багц машины заавраас нөгөө рүү динамик дахин эмхэтгэх (DynaRec) техник ашиглан гүйцэтгэдэг. Машины зааврыг тайлбарлахтай харьцуулахад динамик дахин эмхэтгэл нь 5-10 дахин өндөр гүйцэтгэлийг харуулж байна.
Гүйцэтгэлийн туршилтын хувьд Box86 болон Box64 эмуляторууд нь Armhf болон Aarch64 платформ дээр ажиллахдаа QEMU болон FEX-emu төслүүдээс илт давуу байсан бөгөөд бие даасан туршилтуудад (glmark2, openarena) зорилтот үндсэн дээр угсралт ажиллуулахтай ижил гүйцэтгэлтэй байсан. платформ. Тооцоолол их шаарддаг 7-zip болон dav1d тестүүдэд Box64-ийн гүйцэтгэл нь үндсэн програмын гүйцэтгэлийн 27% -иас 53% хооронд хэлбэлзэж байв (харьцуулахын тулд QEMU 5-16%, FEX-emu - 13-26% үр дүнг харуулсан байна. ). Нэмж дурдахад Apple-ийн M2 ARM чиптэй систем дээр x86 кодыг ажиллуулахад ашигладаг Rosetta 1 эмулятортай харьцуулалтыг хийсэн. Rosetta 2 нь 7zip-д суурилсан тестийг эх хувилбарын 71%, Box64 - 57% -ийг хангасан.

Програмтай нийцтэй байдлын хувьд 165 тоглоом шалгагдсанаас 70 орчим хувь нь амжилттай ажилласан. Өөр 10 орчим хувь нь ажилладаг, гэхдээ тодорхой захиалга, хязгаарлалттай. Дэмжигдсэн тоглоомуудад WorldOfGoo, Airline Tycoon Deluxe, FTL, Undertale, A Risk of Rain, Cook Serve Delicious болон GameMaker тоглоомууд багтана. Асуудалтай байгаа тоглоомуудын дунд Mono багцад холбогдсон Unity3D хөдөлгүүр дээр суурилсан тоглоомуудыг дурьдаж болно, Mono-д ашигладаг JIT эмхэтгэлийн улмаас эмуляци нь үргэлж ажилладаггүй, бас нэлээд сайн байдаг. ARM самбар дээр үргэлж хүрч чаддаггүй өндөр график шаардлагууд. GTK програмын сангуудыг орлуулах нь одоогоор GTK2-ээр хязгаарлагдаж байна (GTK3/4-ийг орлуулах бүрэн хэрэгжээгүй).
Шинэ хувилбаруудын гол өөрчлөлтүүд:
- Вулкан номын санд зориулсан хавтас нэмсэн. Vulkan болон DXVK график API-ийн дэмжлэгийг нэмсэн (Vulkan-ийн дээд талд DXGI, Direct3D 9, 10, 11-ийн хэрэгжилт).
- GTK номын сангуудын холболтыг сайжруулсан. GTK програмуудад түгээмэл хэрэглэгддэг gstreamer болон номын санд зориулсан холболтуудыг нэмсэн.
- RISC-V болон PPC64LE архитектурт зориулсан анхны дэмжлэг (зөвхөн тайлбарлах горим) нэмэгдсэн.
- SteamPlay болон Proton давхаргын дэмжлэгийг сайжруулахын тулд засварууд хийгдсэн. Энэ нь олон зүйлийг ажиллуулах боломжийг баталгаажуулдаг. Linux и Windows Raspberry Pi 3 болон 4 гэх мэт AArch64 самбар дээрх Steam тоглоомууд.
- Сайжруулсан санах ойн удирдлага, mmap гүйцэтгэл, санах ойн хамгаалалтын зөрчлийг хянах.
- libc дэх клон системийн дуудлагын сайжруулсан дэмжлэг. Системийн шинэ дуудлагын дэмжлэг нэмсэн.
- Динамик дахин хөрвүүлэх хөдөлгүүр нь SSE/x87 регистртэй ажиллах ажлыг сайжруулж, шинэ машины кодын дэмжлэгийг нэмж, хөвөгч болон давхар тоонуудын хөрвүүлэлтийг оновчтой болгож, дотоод шилжилтийн боловсруулалтыг сайжруулж, шинэ архитектурт зориулсан нэмэлт дэмжлэгийг хялбаршуулсан.
- Сайжруулсан ELF файл ачаалагч.
Эх сурвалж: opennet.ru
