Skip to content

Releases: ptitSeb/box86

v0.3.6

21 May 15:46
Compare
Choose a tag to compare

What's Changed

=> Speedup dynarec, and allow the use of BIGBLOCK 2 or 3 combined with CALLRET on more software

  • Wrapping: More libs and function wrapping (gtk3, vulkan...)
  • Reworked X11 Callback handling, for better stability
  • Reworked exit and the load/unload of libs
  • Some more profiles in box86rc
  • More SSE3+ opcodes in dynarec
  • Better way to rename executable (including wine ones) so driver like mesa can apply the correct profile
  • Reworked memory managment in the Dynarec, limiting amount of dynamic allocation
  • PageSize detection and handling dynamic. Larger than 4K pagesize will be handled automaticaly.
  • Lots of improvments in x87 handling (virtual stack, rounding, ffree, etc.)

More details in New release blog

Contributions

New Contributors

Full Changelog: v0.3.4...v0.3.6

v0.3.4

15 Dec 18:30
Compare
Choose a tag to compare

What's Changed

=> Mostly a stability update with improved elfloader again, and added SSE 4.2 support (still need to work on the Dynarec part of this)
=> Some work also to reduce the memory footprint

  • X86Libs: Updated libstdc++ & libgcc_s
  • X86Libs: Use x86 version of libunwind (it's needed by wine)
  • Dynarec: Fixed some flags propagation issues inside blocks
  • Dynarec: Improved Strong Memory Model emulation, introducing a 3rd level
  • CPU: Remoworked how INT, priviliged opcodes and teh Trace flags works
  • CPU: Added full support for SSE4.2
  • ElfLoader: rework how elf memory is handled
  • Emulation: Better handling of Signal (also handling SIGMAX correctly)
  • Emulation: Better support for POKEUSER/PEEKUSER (helps Windows Unity games)
  • Wrapping: More libs and some fixes in function wrapping (gtk3, vulkan...)
  • Wrapping: Removed faked libunwind wrapping
  • Hardware: Added more profile, with support for ADLink Ampere Altra
  • OS: Added profile to build for Android and Termux.

Contributions

New Contributors

Full Changelog: v0.3.2...v0.3.4

v0.3.2

19 Aug 17:10
Compare
Choose a tag to compare

What's Changed

=> Mostly a stability update with improved elfloader, fixed opcodes and refined profiles

  • Better syscall handling
  • Fixed some wrapped functions, added some others
  • Introduced another wrapper helper
  • Added some more opcodes
  • Added a cosimulation mode (to compare the behaviour of the dynarec against the interpreter)
  • Added support of FASTNAN for some more opcodes
  • Reduced memory footprint
  • Added BOX86_NOSANDBOX (adds an argument to the command line)
  • Added an ukrainian translation

Contributions

New Contributors

Full Changelog: v0.3.0...v0.3.2

v0.3.0

10 Mar 16:43
Compare
Choose a tag to compare

What's Changed

  • Added rcfile handling: box86 now read /etc/box86.box86rc and ~/.box86rc and apply per process parameters
    => Every program can be finetuned, for speed or just to make them work
  • Added BOX86_DYNAREC_FORWARD to allow bigger Dynarec block to be build
  • Refactored Strong Memory Model emulation (faster and more accurate)
  • Box86 now return a custom name for the CPU instal of P4, build with Box86 and the cpu name it's running on
  • Improved memory protection tracking and signal handling, again
  • More wrapped libs (especially on the gtk familly)
  • More wrapped functions
  • Added support for CreateDeviceEx in d3dadapter9, for better gallium nine support
  • Improved dladdr/dladdr1 wrapped function
  • Some fixes to flags handling in the Dynarec on some special cases
  • Added specific suppport for RK3588 board (needed some hack in signal handling, probably due to the use of a non mainlined kernel)
  • Lots of improvment in the Rounding of float & double (Dynarec and Interpretor), and proper handling of denormals when converting to/from 80 bits long double
  • Added specific suppport for RK3588 board (needed some hack in signal handling, probably due to the use of a non mainlined kernel)

Contributions

New Contributors

Full Changelog: v0.2.8...v0.3.0

v0.2.8

17 Nov 13:26
Compare
Choose a tag to compare

What's Changed

  • Wrapped more vulkan function, dxvk 2.0 now works
  • Added support for overriden malloc/free functions
  • Improved elf loader
  • Improved dlsym handling with RTLD_NEXT
  • Added BOX86_DYNAREC_SAFEFLAGS to allow finetuning Dynarec generated code handling of flags accross function calls and returns.
  • Added BOX86_BASH to setup x86 bash binary, so shell script can be run in x86 world
  • Added BOX86_ROLLING_LOG to have details log only on crash
  • Improved TLS Size handling (Unity3D games now works)
  • Improved execv family of function to have better box86 integration
  • Added a few more wrapped libs, like FAudio
  • Improved gtk, SDL2, GL, vulkan (and more) wrapping
  • Improved Signal Handling and memory protection traking
  • Added some basic support for statically linked program. Thread are not working yet, but memory allocation and file access does.
  • Highlights:
    => with the use of the new SafeFlags, some C# Windows program now runs fine (it's forced when the Vara family of software is detected)
    => With the basic support of statcaly linked program, old emulator like modeler for linux works. Program with threads like mugen for linux still doesn't
    => The bash integration is usefull for device with no binfmt integration or for script that check the machine it's running on

Contributions

New Contributors

Full Changelog: v0.2.6...v0.2.8

v0.2.6

16 Apr 15:20
Compare
Choose a tag to compare

What's Changed

  • Added an option to get generated -NAN on SSE2 operation
  • Many small fixes and improvement to get steam and SteamPlay working (along with box64)
  • Added some workaround for program calling uname to mimic x86 system
  • Added some more Vulkan extensions
  • Added some granularity to mmap64, and generic memory protection tracking improvment, to mimic x86 system (for wine stagging and proton)
  • Better clone syscall and libc implementation
  • Improved wrapping of GTK libs
  • More wrapped libs (more gtk libs, like gstreamer-1.0 among other non-gtk libs too)
  • More wrapped functions(with some tricky one, like dladdr1)
  • Some fixes and improvment to some wrapped functions
  • Refactor Dynarec:
    • better handling of SSE/x87 registers
    • optimisation to limit float/double conversion
    • better handling of "internal" jump inside a dynablock
  • Improved elfloader
  • Improved some tests
  • A few fixes in some Dynarec opcodes
  • Don't quit on unsupported syscall, return -1 / ENOSYS error
  • A bit more optimisation in some Dynarec opcodes

Contributions

New Contributors

v0.2.4

19 Nov 21:00
Compare
Choose a tag to compare

What's Changed

  • Some work on Dynarec to limit the number of mutex use, and also allow smaller block to be built (for JIT'd programs)
  • Introduce BOX86_DYNAREC_STRONGMEM, like with box64 (not found any program that needs that yet)
  • More vulkan wrapped function (so dkvk works, at least with RX550)
  • Reworked Elfloader part, with better handling of versionned symbols
  • Improve speed for x87 code (by avoiding many float<->double conversion)
  • Improve speed of the custom allocator used by dynarec and Hash (speedup loading)
  • Added a detection of box64 in uname call, to expose an x86_64 system instead of i386 one
  • Added a fix for linking box86 on system using glibc 2.34+
  • A few more wrapped libs
  • More ARM hardware option in CMake (Phytium, SD845)
  • Changed a bit struture of Dynarec, switching some operations from Pass1 to Pass0
  • Small fixes to elfloader
  • Some fixes and improvments on wrapped libs (mainly gtk2, gtk3 and d3dadpter)
  • Better VSyscall implementation
  • Fixed the "Alternate" handling (address shadowing on x86 side)
  • A few opcodes border case fixes
  • Improved wrapper helpers (from rajdakin)
  • Added a mecanism to cancel a Dynarec block construction if it triggers a segfault (instead of a crash)
  • Improvment to the handling of longjmp inside signal handlers

Contributions

New Contributors

v0.2.2

19 Nov 20:32
Compare
Choose a tag to compare

What's Changed

  • Reworked some elfloader relocation mecanism
  • Removed old "smart linker" and replace with a simple "jump table"
  • Also removed CALL/RET optomisation from Dynarec, simple Jump Table is faster
  • Reworked all memory protection tracking
  • A few more wrapped libs and wrapped functions
  • A few more opcodes
  • A few more dynarec opcodes
  • Some optimisation in Dynarec around ZF and CF flags handlings, and LL/GE/LE/G conditionnal opcodes
  • Some changes to the "cancel threads" handling
  • Some changes to the "thread once" handling

Contributions

New Contributors

v0.2.0

19 Nov 21:14
Compare
Choose a tag to compare

What's Changed

  • Improvements on x86 Flags handling.
  • A few more opcode has been added.
  • A few potential BusError are now fixed.
  • Added the BOX86_NOVULKAN en. var. . This is used to disable the wrapping of vulkan libraries.
  • Improvments on libc O_XXXX flags handling.
  • Box86 now uses a custom allocator for Dynarec and Hash tables.
  • Improved the wrapping of pulse audio.
  • Optimisation to a few Dynarec opcode (like SHRD/SHLD).
  • Improved the tracking of memory protection.
  • A few more wrapping of libraries (like libgssapi_krb5).
  • More function wrapping on libturbojpeg
  • Preliminary support for POWER9 (ppcle) build
  • Many contributions to remove typos and rephrase the README, COMPILE and USAGE documents

Contributions

New Contributors

v0.1.8

19 Nov 21:15
Compare
Choose a tag to compare
  • Fixes on some float to int x86 convertions opcodes.
  • Reworked all callback mecanisms.
  • Added libturbojpeg wrapping (and a hack for zoom to force using native one).
  • Added the BOX86_SAFEMMAP env. var.
  • Reworked Dynarec's memory manager.
  • Added a few opcodes.
  • Improve elfloader to not force PltResolver all the time (fixing SuperHexagon and maybe other)
  • Reworked Exet and Cancel Thread mecanism.
  • Added wrapped libldap_r and liblber library (used by wine)
  • Reworked Dynarec block handling, and remove the "AddMark" mecanism that wasn't efficient enough
  • Added TokiTori 2+ detection and runtime patch on the Raspberry Pi platform
  • Fixes on elfloader with TLS object.