What's Changed
-
This version introduce DynaCache, a disk cache for the generated native code. It's not enabled by default for now (but it will use cache file if present by default). It can dramaticaly speedup the load of program (try with linux factorio for example). This version also improve in the volatile metadata handling. There is a massive compatiblity improvment for box32 and on all dynarec in general too. And few more function wrapping...
=> DynaCache for faster loading of program, and avoid runtime hicups
=> Better box32 compatibility (much less "Out of Memory" error)
=> Unity3D games on Wyland are working now
=> Volatile Metadata fully supported and handled, making games like Starfield to just work.
=> More work on AVX support for RV64 & LA64. LA64 almost there, while RV64 has Scalar only support (no hardware vector support yet for AVX)
More details in New release blog
Contributions
- [WOW64] Moved things around for the future by @ksco in #2712
- [RBTREE] Refine the naming scheme by @devarajabc in #2717
- [TRACE] Added support for libzydis v4.x and removed the in-house zydis header by @ksco in #2720
- [TRACE] Fixed explicit BOX64_TRACE=0 by @ksco in #2721
- [DYNAREC] Sync indirect lookup handling and some cleanup by @ksco in #2722
- [ARM64_DYNAREC] Removed redundant flags save/restore around call_c by @ksco in #2725
- [WOW64] Added a minimal Windows runtime by @ksco in #2723
- [TRACE] Bring back in-house zydis header for v3.x by @ksco in #2727
- [WOW64] Small refinement to tls slots usage by @ksco in #2726
- [WOW64] Small improvement to grab_segdata by @ksco in #2728
- [INTERP] Fixed 64/65 67 64bit rex decoding by @ksco in #2729
- [ARM64_DYNAREC] Added 64/65 67 89/8B 64bits opcodes by @ksco in #2730
- [CPUID] Do not warn on the Hypervisor interface query by @ksco in #2732
- [WRAPPER] Added 2 more functions to libc (for #2731) by @ksco in #2733
- [ARM64_DYNAREC] Fixed some typos related ymm unneeded tracing (helps #2724) by @ksco in #2735
- Bundle fix permissions by @LukeShortCloud in #2738
- [WRAPPER] Wrapped a few more functions in gio2 and libresolv by @ksco in #2737
- [ANDROID] Unimportant updates by @ksco in #2741
- [DOCS] Reworked Wine usage guide by @ksco in #2743
- [WOW64] Inherit the build type from main project by @ksco in #2746
- [TERMUX] Better handling of non-exists pthread functions by @ksco in #2748
- [CMAKE] Limit the optim level to O1 on bionic build by @ksco in #2749
- [RCFILE] Updated MiSide profile by @ksco in #2751
- [WOW64] Refactored host extention detection and added preliminary support for WowBox64 by @ksco in #2752
- [WOW64] Finished host extension detection by @ksco in #2755
- [BIONIC] Fixed some compilation warnings by @ksco in #2756
- Fixed compilation errors by @ksco in #2757
- [DYNACACHE][RV64] Added const table for later use in internal relocation by @ksco in #2758
- [DYNACACHE][RV64] More work on internal reloc by @ksco in #2759
- [DOCS] Performance as the top section in USAGE.md by @ksco in #2760
- [DYNACACHE] Make sure dynacache folder ends with pathsep by @ksco in #2761
- [DYNACACHE][RV64] Enabled dynacache for RV64 by @ksco in #2762
- Add
map64_customMalloc
to reduce internal fragmentation by @devarajabc in #2764 - [LA64_DYNAREC]Add basic avx support for la64. by @phorcys in #2745
- [DYNAREC] Removed some unused code by @ksco in #2767
- [CI] Upgraded QEMU and loongarch64 toolchains by @ksco in #2768
- [DYNACACHE][LA64] Added const table for later use in internal relocation by @ksco in #2770
- [LA64_DYNAREC] Add la64 avx load/store ops part 1. by @phorcys in #2766
- [WRAPPER] additional wrapped symbols by @airidosas252 in #2765
- [LA64_DYNAREC] Add la64 avx load/store ops part 2. by @phorcys in #2773
- [LA64_DYNAREC] Add la64 avx load/store ops part 3. by @phorcys in #2774
- [DYNACACHE][LA64] More work on internal reloc by @ksco in #2779
- [LA64_DYNAREC] Removed some redundant macro definitions by @ksco in #2778
- [LA64_DYNAREC] Optimized GETIP macro by @ksco in #2781
- [LA64_DYNAREC] Add la64 avx load/store ops part 4. by @phorcys in #2775
- [LA64_DYNAREC] Removed some TABLE64 usage by @ksco in #2782
- [WRAPPER] Wrapper XCreateWindow when Display's resource_alloc is x64 entry (#2788) by @xiangzhai in #2789
- [WRAPPER] Add bridge for Display's resource_alloc when directly call XOpenIM but not XOpenDisplay by @xiangzhai in #2795
- [LA64_DYNAREC] Fix VEX.0f.17 VMOVHPS, one break missing. by @phorcys in #2798
- [WRAPPER] Wrapper xmlMemGet and xmlMemSetup by @xiangzhai in #2799
- [LA64_DYNAREC] Add la64 avx bitwise ops. by @phorcys in #2780
- [LA64_DYNAREC] Opt/fix la64 avx mov ops. by @phorcys in #2800
- [LA64_DYNAREC] Fix la64 avx->sse same reg migration. by @phorcys in #2801
- [LA64_DYNAREC] Fix/Opt la64 avx movsx/movzx ops. by @phorcys in #2804
- [LA64_DYNAREC] Add la64 avx shift ops with imm operand. by @phorcys in #2805
- [LA64_DYNAREC] Add la64 avx BMI2 shift ops. by @phorcys in #2807
- [LA64_DYNAREC] Optimized some SSE shift opcodes by @ksco in #2813
- [LA64_DYNAREC] Add la64 avx shift ops. by @phorcys in #2806
- [LA64_DYNAREC] Fix la64 VMASKMOVPS,VMOVHPD. by @phorcys in #2811
- [LA64_DYNAREC] Add la64 avx arith ops , part 1. by @phorcys in #2814
- [LA64_DYNAREC] Optimized PMADDUBSW opcodes by @ksco in #2817
- [LA64_DYNAREC] Add la64 avx arith ops, part2. by @phorcys in #2816
- [BUNDLE] Add sqlite3 by @LukeShortCloud in #2819
- [LA64_DYNAREC] Add la64 avx pack/unpack ops , part 1. by @phorcys in #2818
- [BUNDLE] Add usable libraries from GLIBC package by @LukeShortCloud in #2821
- box64-bundle-x86-libs.csv: fix libffi library by @fboudra in #2825
- [LA64_DYNAREC] Add la64 avx pack/unpack ops , part 2. by @phorcys in #2823
- [BUNDLE] List install dependencies for Arch Linux by @LukeShortCloud in #2827
- [BUNDLE] Add ncurses by @LukeShortCloud in #2828
- [BUNDLE] Check for broken symlinks by @LukeShortCloud in #2829
- [LA64_DYNAREC] Add la64 avx pack/unpack ops , part 3 blend ops. by @phorcys in #2824
- [RCFILE] Add profile for Subnautica by @LukeShortCloud in #2831
- [RCFILE] Update profile for BeamNG by @LukeShortCloud in #2832
- [BUNDLE] Add hidapi by @LukeShortCloud in #2833
- [LA64_DYNAREC] add la64 avx pack/unpack ops, part4. by @phorcys in #2830
- [DYNACACHE]LA64] Enabled dynacache for LA64 by @ksco in #2836
- [LA64_DYNAREC] add la64 avx pack/unpack ops, part5. by @phorcys in #2837
- [LA64_DYNAREC] Add la64 avx FMA insts. by @phorcys in #2838
- [LA64_DYNAREC] Add la64 avx float arith ops, part 1. by @phorcys in #2840
- [BOX32] Enable personality setting for RV64 and LA64 by @ksco in #2841
- [LA64_DYNAREC] Add la64 avx float ops , part 2. by @phorcys in #2842
- [RV64_DYNAREC][LA64_DYNAREC] Simplified defered flags handling and limited case where UpdateFlags is actualy called by @ksco in #2844
- [WRAPPER] Wrapper wrappedgobject2 g_closure_ref and g_closure_sink (#2848) by @xiangzhai in #2849
- [LA64_DYNAREC] Add la64 avx float ops part 3. by @phorcys in #2845
- [LA64_DYNAREC] Add la64 avx float cmp ops. by @phorcys in #2854
- [RV64][LA64] Added partial FLUSHTO0 support by @ksco in #2855
- [LA64_DYNAREC] Add la64 avx int cmp ops. by @phorcys in #2856
- [RV64_DYNAREC] Added MMX handling to
fpu_{push,pop}cache
for vector by @ksco in #2858 - [LA64_DYNAREC] Add la64 avx cmp ops, part3. TEST ops. by @phorcys in #2857
- Box64 bundle x86 libs improvements by @fboudra in #2839
- Minor improvements to trace logging by @ksco in #2861
- [LA64_DYNAREC] Add la64 avx cvt ops, part1. by @phorcys in #2859
- [RV64_DYNAREC] Fixed a typo by @ksco in #2865
- [LA64_DYNAREC] Add la64 avx cvt ops, part2. by @phorcys in #2866
- [WRAPPED] Wrapped more functions for libc by @ksco in #2870
- [TRACE] Minor improvements to trace logging by @ksco in #2871
- [INTERP] Added 66 F0 0F BA BTS opcode by @ksco in #2872
- [LA64_DYNAREC] Add la64 avx cvt ops, part 3. by @phorcys in #2869
- [ARM64_DYNAREC] Fixed some edge cases for mmx PSRLQ by @ksco in #2874
- [ARM64_DYNAREC] Fixed a typo by @ksco in #2875
- [INTERP] Fixed 16bit version POPCNT by @ksco in #2877
- [ARM64_DYNAREC] Fixed PCMPESTRI fastpath SF flag computation by @ksco in #2876
- [RV64_DYNAREC] Fixed some mmx opcodes by @ksco in #2879
- [RV64_DYNAREC] Fixed scalar and vector versions of mmx PSRAW/PSRAD by @ksco in #2880
- [RV64_DYNAREC] Fixed scalar version of 66 0F 3A 21 INSERTPS opcode by @ksco in #2881
- [LA64_DYNAREC] Fix some la64 avx/sse ops. by @phorcys in #2882
- [LA64_DYNAREC] Add la64 avx bit ops. by @phorcys in #2873
- [LA64_DYNAREC] Fixed 0F E3 PAVGW opcode by @ksco in #2884
- [LA64_DYNAREC] Fixed 0F E2 PSRAD opcode by @ksco in #2885
- [LA64_DYNAREC] Fixed a few GETEX usage by @ksco in #2886
- [LA64_DYNAREC] Fixed 66 0F 3A 0C/0D BLENDPS/D opcodes by @ksco in #2887
- [LA64_DYNAREC] Fixed 66 0F 38 14 BLENDVPS opcode by @ksco in #2888
- [LA64_DYNAREC] Fix some la64 ops. by @phorcys in #2889
- [LA64_DYNAREC] Added and optimized more fastround=0 cases by @ksco in #2890
- [LA64_DYNAREC] Fixed 66 0F 3A 21 INSERTPS opcode by @ksco in #2891
- [LA64_DYNAREC] Fixed 66 0F 38 06 PHSUBD opcode by @ksco in #2893
- [LA64_DYNAREC] Fixed 66 0F 3A 0F PALIGNR for case where dst==src by @ksco in #2894
- [LA64_DYNAREC] Fixed F3 0F 53 RCPSS opcode by @ksco in #2892
- [WRAPPER] Wrapped g_type_module_use, g_type_module_register_type and g_type_module_add_interface by @xiangzhai in #2895
- [WRAPPER] Wrapped g_object_add_toggle_ref, g_object_remove_toggle_ref and g_object_weak_unref by @xiangzhai in #2897
- [DOCS] Fix typo in link by @Buggem in #2898
- [WRAPPER] Wrapped g_async_queue_new_full, g_async_queue_push_sorted, g_thread_pool_free, g_thread_pool_new and g_thread_pool_push by @xiangzhai in #2899
- [WRAPPER] Wrapped g_thread_pool some functions by @xiangzhai in #2900
- Add O(1) early-out to eusing cached bounds in
rb_get()
andrb_get_64()
by @devarajabc in #2901 - [LA64_DYNAREC] Added more opcodes by @ksco in #2902
- [RV64_DYNAREC] Added 1 more opcode by @ksco in #2903
- [LA64_DYNAREC] Fixed 66 F3 0F B8 POPCNT opcode by @ksco in #2905
- [LA64_DYNAREC] Fixed 66 0F 3A 16 PEXTRD opcode by @ksco in #2906
- [ARM64_DYNAREC][INTERP] Fixed AVX VPERM2F128/VPERM2I128 opcodes by @ksco in #2907
- [ARM64_DYNAREC] Fixed AVX VMOVSS opcode by @ksco in #2908
- [ARM64_DYNAREC] Fixed AVX VMOVMSKPD opcode by @ksco in #2909
- [BOX32] Enlarge xcb connects size for Linux Steam by @ksco in #2910
- [LA64_DYNAREC] Refined F3 0F 5D/5F MINSS/MAXSS opcodes by @ksco in #2912
- [LA64_DYNAREC] Fixed some AVX scalar MIN/MAX opcodes by @ksco in #2913
- [LA64_DYNAREC] Fixed AVX VCMPSS/VCMPSD opcodes by @ksco in #2914
- [LA64_DYNAREC] Fixed AVX VMOVSS opcode by @ksco in #2915
- [LA64_DYNAREC] Fixed AVX VMOVMSKPS/VMOVMSKPD opcodes by @ksco in #2916
- [LA64_DYNAREC] Fixed AVX VPBLENDW opcodes by @ksco in #2917
- [LA64_DYNAREC] Fixed AVX VMASKMOVDQU opcode by @ksco in #2918
- [LA64_DYNAREC] Fixed AVX VPERM2F128/VPERM2I128 opcodes by @ksco in #2919
- [LA64_DYNAREC] Fixed AVX VPMOVMSKB opcode by @ksco in #2920
- [RV64_DYNAREC][LA64_DYNAREC] Fixed missing zeroup in geted_32() by @ksco in #2921
- [RV64_DYNAREC] Fixed F0 10 LOCK ADC opcode by @ksco in #2927
- [RV64_DYNAREC] Added F0 08 LOCK OR opcode by @ksco in #2928
- [LA64_DYNAREC] Fix BTR , ANDW opcode. by @phorcys in #2929
- [DYNAREC] Rearranged arch-specific AVX infra code by @ksco in #2930
- [LA64_DYNAREC] Fixed a typo in CMPXCHG8B opcode by @ksco in #2931
- [RV64_DYNAREC] Removed a dispensable line from dump by @ksco in #2932
- [LA64_DYNAREC] Add la64 avx insts using helpers. by @phorcys in #2935
- [LA64_DYNAREC] Fix VMOVNTDQA. by @phorcys in #2934
- [DYNAREC] Fixed reading emu->df by @ksco in #2936
- [RV64_DYNAREC] Fixed OF2 handling by @ksco in #2937
- [LA64_DYNAREC] Add la64 BMI/BMI2 ops. by @phorcys in #2933
- [RV64_DYNAREC] Added scalar AVX VMOVSS opcodes by @ksco in #2941
- [RV64_DYNAREC] Added more scalar AVX VMOV opcodes by @ksco in #2942
- [RV64_DYNAREC] Added more scalar AVX opcodes by @ksco in #2943
- [RV64_DYNAREC] Added more scalar AVX opcodes by @ksco in #2945
- [LA64_DYNAREC] Enable AVX/AVX2 by default by @ksco in #2946
- [DYNAREC] Bump ARCH_VERSION by @ksco in #2947
- [RV64_DYNAREC] Added scalar AVX VMOVDQA opcodes by @ksco in #2948
- [RV64_DYNAREC] Added a few more scalar AVX 66 0F38 opcodes by @ksco in #2949
- [RV64_DYNAREC] Added more avx scalar 66 0F38 opcodes by @ksco in #2950
- [RV64_DYNAREC] Added more scalar avx opcodes by @ksco in #2951
- [RV64_DYNAREC] Added more scalar avx opcodes by @ksco in #2952
- [RV64_DYNAREC] Added more scalar avx 66 0F38 opcodes by @ksco in #2954
- [RV64_DYNAREC] Added more scalar avx 66 0F3A opcodes by @ksco in #2955
- [RV64_DYNAREC] Fixed some scalar avx opcodes by @ksco in #2956
- [COSIM] Better memory diff printing by @ksco in #2957
- [CORE] Better trace_file logging by @ksco in #2958
- [RV64_DYNAREC] Fixed more scalar avx opcodes by @ksco in #2959
- [RV64_DYNAREC] Added more scalar avx opcodes by @ksco in #2961
- [RV64_DYNAREC] Added more scalar avx 66 0F opcodes by @ksco in #2960
- [RV64_DYNAREC] Added scalar SSE 66 0F 3A 60/61/62 opcodes by @ksco in #2963
- [ARM64_DYNAREC] Fixed an inst name typo by @ksco in #2964
- [RV64_DYNAREC] Added more scalar avx opcodes by @ksco in #2965
- [RV64_DYNAREC] Fixed scalar avx VCMPPD non-ymm case by @ksco in #2966
- [RV64_DYNAREC] Added YMM0 placeholder for later optim by @ksco in #2968
- [RV64_DYNAREC] Added more scalar avx opcodes by @ksco in #2970
- [RV64_DYNAREC] Added more scalar avx opcodes by @ksco in #2971
- [RV64_DYNAREC] Added more scalar avx opcodes by @ksco in #2973
- [RV64_DYNAREC] Added more scalar avx opcodes by @ksco in #2974
- [RV64_DYNAREC] Added more scalar avx opcodes by @ksco in #2975
- [RV64_DYNAREC] Added more scalar avx opcodes by @ksco in #2978
- [LA64_DYNAREC] Fixed AVX VCVT[T]PS2DQ fastround path by @ksco in #2979
- [RV64_DYNAREC] Added more scalar avx opcodes by @ksco in #2980
- [WRAPPER] Wrapped more symbols for libresolv by @ksco in #2981
- Fixed a misguarded box32 endif by @ksco in #2982
- [WRAPPER] Wrapped mallinfo2 for libc by @ksco in #2983
- [WRAPPER] Wrapped 2 more symbols for libfreetype by @ksco in #2984
- [LA64_DYNAREC] Fix 0f.A3 BT opcode, fix ALSL operand order. by @phorcys in #2988
- [LA64_DYNAREC] Fixed a typo in 0F 53 RCPPS opcode by @ksco in #2991
- [INTERP][DYNAREC] Aligned !fastnan handling of 0F 51/52 opcodes by @ksco in #2989
- [RV64_DYNAREC] Added more scalar avx 0F opcodes by @ksco in #2992
- [CI] Speedup CI by skipping uncessary jobs when possible by @ksco in #2993
- [RV64_DYNAREC] Added 1 more scalar avx 0F opcode by @ksco in #2994
- [WRAPPER] Wrapped a bunch of symbols by @ksco in #2997
- [WRAPPERHELPER] Added legacy __attribute support by @ksco in #2996
- [BASH] Use custom PS1 prefix to make box64-bash more distinguishable by @ksco in #2998
- Minor updates to README.md by @ksco in #3000
- [CI] Added ARM64-GCC-8 target (Ubuntu Bionic) by @theofficialgman in #2987
- Removed a useless file by @ksco in #3001
- [RV64_DYNAREC] Added more scalar avx opcodes by @ksco in #3005
- [BOX32] Fixed sign-extend issue when calling RunFunctionFmt with a pointer by @ksco in #2938
- [BOX32] Fixed some strange XErrorEvent case by @ksco in #3006
- [BOX32] Fixed dirname by @ksco in #3007
- [RV64_DYNAREC] Added more scalar avx opcodes and fixed a typo by @ksco in #3009
- [RV64_DYNAREC] Added more scalar avx opcodes by @ksco in #3010
- [RV64_DYNAREC] Added more scalar avx cmp opcodes by @ksco in #3016
- [Docs] Add practical cross-compilation details by @devarajabc in #3017
- [BOX32][TRACE] Fixed chdir tracing by @ksco in #3021
- [LA64_DYNAREC] Fixed avx infra by @ksco in #3023
- [LA64_DYNAREC] Fixed AVX 66 0F 67 PACKUSWB opcode by @ksco in #3024
- [LA64_DYNAREC] Fixed AVX 0F 17 VMOVHPS opcode by @ksco in #3025
- [LA64_DYNAREC] Refactor register mapping by @xiangzhai in #2940
- [RV64_DYNAREC] Added more avx scalar opcodes by @ksco in #3028
- [RV64_DYNAREC] Added more avx scalar opcodes by @ksco in #3029
- [RV64_DYNAREC] Fixed a scratch register confliction by @ksco in #3033
- [WRAPPER] Wrapped a few more crypto3 symbols by @ksco in #3034
- Explicitly link standard libs through CMake by @definitelyuncertain in #3035
- [RV64_DYNAREC] Added more scalar avx opcodes by @ksco in #3037
- [DYNAREC] Optimized scalar AES impl in DynaRec by @xctan in #3041
- [Docs] Add glibc capability warning and fix typo by @devarajabc in #3043
- Fixed mmap tracking with MAP_NORESERVE flag on Android by @brunodev85 in #3044
- [DYNAREC][INTERP] Added a few multibyte nops by @ksco in #3046
- [DYNAREC] Fixed a special case of SHLD/SHRD opcodes by @ksco in #3047
- [DYNAREC][INTERP] Fixed an edge case of CMPXCHG by @ksco in #3049
- [DYNAREC] Fixed 66 8D opcode and also a regression introduced in last commit by @ksco in #3050
- [DYNAREC] Fixed some oversized memory load by @ksco in #3051
- [RV64_DYNAREC] Fixed a typo in 16bit ROR/ROL opcodes by @ksco in #3053
- [INTERP] Fixed a typo in AVX 0F 38 F5 BZHI opcode by @ksco in #3054
- [INTERP] Fixed a typo in 0F C7 /1 CMPXCHG16B opcode by @ksco in #3055
- [RV64_DYNAREC] Fixed some missing sse_forget_reg for implicit xmm0 by @ksco in #3056
- [DYNAREC] Fixed negative issues with 0F/F0 A3/AB/B3/BB opcodes by @ksco in #3057
- [INTERP] Fixed GetECommon_16 truncation by @ksco in #3058
- [ARM64_DYNAREC] Fixed a typo in iret_to_epilog by @ksco in #3059
- [RV64_DYNAREC] Fixed some 16bit BT/BTS/BTR/BTC opcodes by @ksco in #3062
- [INTERP] Improved cosim handling on 16bit BT/BTS/BTR/BTC opcodes by @ksco in #3063
- [INTERP] Fixed 16bit PUSH/POP opcodes by @ksco in #3064
- [LA64_DYNAREC] Fixed some oversized load by @ksco in #3065
- [LA64_DYNAREC] Fixed non-lbt path INC/DEC opcodes register conflicts by @ksco in #3066
- [LA64_DYNAREC] Fixed BEXTR opcode by @ksco in #3067
New Contributors
- @fboudra made their first contribution in #2825
- @Buggem made their first contribution in #2898
- @definitelyuncertain made their first contribution in #3035
- @brunodev85 made their first contribution in #3044
Full Changelog: v0.3.6...v0.3.8