Releases: unicorn-engine/unicorn
Version v2.1.1
This is a small release to fix a few urgent issues.
- Remove pkg_resources usage
- Fix wheels distribution for x86_64 macos
- Fix redundant wheel hacks
- Support
musllinux
distribution @Antelox
Full Changelog: 2.1.0...2.1.1
Version v2.1.0
It has been a while since the last release, and 2.1.0 brings several exciting features. Below is the changelog from the latest to the oldest (though not strictly).
Highlights
- Revive QEMU logs, now we have
-DUNICORN_LOGGING=yes
to enable all qemu logs. @BitMaskMixer - Faster (up to 40x) write performance by not always doing
store_helper
and cleaning page locks. @tunz @boborjan2 - Brand new python bindings, with strongly typed and many improvements. @elicn
- Fix to a long-standing MinGW random segfault bug.
- We bring python2 compatibility back.
- We now fully support M1, both building and a pre-built wheel.
- We support snapshot memory now, with a very low overhead copy-on-write fashion. @PhilippTakacs
- An option to bypass MMU is also added, check our FAQ. @PhilippTakacs
- A brand new (and modern) java bindings. We are also working to publish it to maven. @nneonneo
- We have zig integrated. @kassane @atipls
- Now Unicorn no longer allocates 2GB memory for every instance. The memory will be only committed once used and the upper limit can be adjusted with
uc_ctl
. - New DotNet binding, with published to both Github and Nuget. @TSRBerry
- The release will attach all binaries, thanks to @marameref
Fixes & Improvements
- RISCV improvements, but we still have a long way to go. @apparentlymart @ks0777
- cmake improvements @scribam @es3n1n
- Various python bindings fix and improvements @bet4it @rhelmot
- Docs. @gerph @BitMaskMixer
- Rust bindings. @lockbox @mlgiraud @deadash
- TCG backend fixes. @redoste @StalkR @dglynos
- PPC32 fixes. @dotCirill
- Haiku fixes. @kallisti5
- Improvements to avoid simulator detection. @mrexodia
New Contributors
- @ks0777 made their first contribution in #1736
- @LG3696 made their first contribution in #1764
- @PhilippTakacs made their first contribution in #1765
- @edsky made their first contribution in #1754
- @tunz made their first contribution in #1790
- @kassane made their first contribution in #1809
- @Xeonacid made their first contribution in #1807
- @nneonneo made their first contribution in #1830
- @lockbox made their first contribution in #1847
- @mlgiraud made their first contribution in #1849
- @basavesh made their first contribution in #1861
- @hamarituc made their first contribution in #1886
- @StalkR made their first contribution in #1907
- @dotCirill made their first contribution in #1910
- @marameref made their first contribution in #1897
- @redoste made their first contribution in #1922
- @xclusivor made their first contribution in #1929
- @elicn made their first contribution in #1629
- @nganhkhoa made their first contribution in #1942
- @es3n1n made their first contribution in #1960
- @BitMaskMixer made their first contribution in #1977
- @apparentlymart made their first contribution in #1995
- @atipls made their first contribution in #1985
- @omer54463 made their first contribution in #2005
Full Changelog: 2.0.1...2.1.0
Again, thanks for all contributors and sorry if I missed your name here (please tell me @wtdcode !). 2.1.1 is also coming because we expect some minor break changes to fix.
Version 2.0.1.post1
This is a small release to complement the previous 2.0.1 release.
Fix:
- Fix the endianness detection in tests.
- Fix the version number in CMakeLists.txt.
Version 2.0.1
Unicorn2 makes the first step to Debian packages and vcpkg! Thanks @roehling and @LilyWangL !
Features:
- Support building & running on BE hosts. #1710
- Fix and support
clang-cl
on Windows. #1687 - Fix python
sdist
and add aarch64 Linux wheels. Notepip
can build Unicorn2 on M1 now! - C# binding is refined and upgraded to .Net 6. #1723
Fix/Improvements:
- Various bindings improvements. #1723
- Improvements for tests. #1684 #1683 #1691 #1711
- Fail explicitly when VEX.L is set. #1658
- Fix endianness when writing PPC32 CR register. #1659
- Fix a bug in
uc_ctl_set_cpu_model
check. - Fix Tricore PC not updating. #1668
- Fix the mapping not updated if users modify the mappings in the hooks.
- Handle pathological cases consistently. #1651
- Fix memory leaks in PPC target. #1680
- Fix memory leaks in Tricore target. #1681
- Fix MSVC handling in cmake. #1693
- Fix PC sync-ing problems for
UC_HOOK_BLOCK
hooks. - Fix PC sync-ed twice when users request a soft restart.
- Prevent overflow with pre-allocated RAM blocks. #1712
- Add FPCR and FPSR registers #1722
- Fix ARM CPU state not deep copied.
- Fix PC not sync-ed for memory operation on aarch64.
- Exit invalid store operations early to avoid the target registers being overwritten.
- Improve the support for ARM BE32.
Thanks:
@roehling @LilyWangL @mrexodia @zachriggle @Yu3H0 @rhelmot @relapids @sh4w1 @TSRBerry
Version 2.0.0
Features:
- TriCore Support (#1568)
Fixes/Improvements:
- Build both shared library and static archive as unicorn1 does.
- Misc bindings improvements. #1569 #1600 #1609 #1613 #1616
- Make sure setjmp-setjmp-wrapper-win32 participates in the build. #1604
- Improve Rust bindings build logic.
- Fix wrong python binding for UC_CTL_TB_REMOVE_CACHE
- Flush translation blocks when the count hook is removed.
- Fix unicorn crash when nested
uc_emu_start
deletes a hook - Fix CPU not fully resumed when writing PC.
- Don't quit TB if
uc_mem_protect
doesn't change the protection of current TB memory. - Add type annotations for python bindings.
- Add CPUID hook for python bindings. #1618
- Don't repeat memory hooks if there is already an unhandled error. #1618
- Support reads and writes over all Arm SIMD registers #1621
- Fix wrong registers range in python bindings.
- Fix uc_mem_protect on mmio regions
- Fix a UAF caused by hook cache.
- Fix the value collision between UC_MODE_ARMBE8 and UC_MODE_ARM926
Thanks:
@AfoHT @mrexodia @bet4it @lowlyw @ekilmer @ondryaso @QDucasse @PalumboN @uberwoozle
Version 2.0.0-rc7
This release is expected to be the real last RC release of Unicorn2. ;)
Features:
- Correctly generate static archives for the static build and have CI auto-tested.
- Rust bindings revised. #1584
- Compatible with clang-cl compiler. #1581
- Implement UC_HOOK_INSN for aarch64 MRS/MSR/SYS/SYSL
Fixes/Improvements:
- Several corner cases on our API. #1587 #1595
- Fix the codegen buffer leak.
- Rust bindins improvements. #1574 #1575
- Add "holes" to allow unicorn lib as a drop-in replacement for older ones. #1572
- s390x backports. #1570
- Fix exits wrongly removed in nested uc_emu_start
- Fix a possible endless loop for only one translation block in a multithreaded environment.
- Fix wrong PC without
UC_HOOK_CODE
installed. - Update vb6 bindings license. #1563
- Fix buffer allocation failure on M1. #1559
- Fix wrong EFLAGS on startup.
- Fix wrong internal states on nested uc_emu_start.
- Remove armeb-softmmu and aarcheb-softmmu which are usermode targets.
- Advance PPC32 PC. #1558
- Support UC_PPC_REG_CR.
- Update CI to windows-2019
Thanks:
@shuffle2 @liyansong2018 @rose4096 @nviennot @n1tram1 @iii-i @dzzie @yrashk @bet4it
Version 2.0.0-rc6
This release is expected to be the last RC release of Unicorn2.
Features:
- SystemZ (aka. s390x) support. #1521 #1547
- CPUID hook now may return a bool to indicate whether skipping the CPUID instruction.
- ARM/AARCH64 coprocessor registers read/write support. #889
Fixes/Improvements:
- Rust improvements. More registers enums #1504 Easier to use #1543 #1545
- M68k improvements. #1507
- Golang improvements. Enable
uc_ctl_set_model
#1506 - Unit tests improvements. #1512
- Various ARM system mode fixes. #1500 #1520 #1525 #1531
- Read/write arm FPSCR and FPSID. #1453
- Fix the support for ARMv8
- Fix a large number of memory leaks and unicorn2 now goes with google/oss-fuzz!
- Add more X87 registers. #1524
- Add more PPC registers.
- Fix the exception not cleared in python bindings. #1537
- Correctly support ARM big endian and drops
armeb-softmmu
andaarch64eb-softmmu
- Fix ARM CPSR.E not reflected during runtime.
- Resolve fuzzing speed problem on macOS.
- Modernize CmakeFileLists.txt. #1544
- Fix an issue in nested
uc_emu_start
Thanks:
@Kritzefitz @zznop @QDucasse @gerph @bet4it @mrexodia @iii-i @jbcayrou @scribam
Version 2.0.0-rc5
This release fixes a few urgent bugs and improves performance.
Fixes/Improvements:
- Rust bindings improvements. #1480 #1483
- Allow R/W to cp15 registers. #1481
- Fix
UC_HOOK_EDGE_GENERATED
not calling for indirect jumps. - Python bindings build improvements. #1486
- Fix bindings on m1 macOS.
- Support nested
uc_emu_start
calls without context save/restore - Fix wrong MMIO offset for 32bit targets.
- Fix wrong
uc_mem_unmap
logic for both ram and mmio memory. - Inline
uc_trace_code
and PC sync to improve performance. - Various fixes in tests.
- Allow writing to CPSR to switch bank registers.
- Implement MMIO in rust bindings. #1499
Thanks:
Version 2.0.0-rc4
This is a big release of Unicorn and introduces a few powerful new features and a bunch of fixes.
New Features:
- New API: uc_ctl, by which you could control CPU models, TB caches or multiple exits etc.
- New Hook: UC_HOOK_EDGE_GENERATED, UC_HOOK_TCG_OPCODE
- RISCV CSR read/write.
- Support reading MIPS hi/lo regs. 7268c2a
- OSS Fuzzing building support.
- MSVC 32bit and Android build support.
- Introduce clang-format.
Fixes/Improvements:
- Java bindings improvements. #1461
- API Documents updates. #1459
- Rust bindings improvements. #1462
- Add a go.mod for go bindings.
- CMakeLists.txt improvements as a subproject. #1373
- Fix rust bindings build script and add CI.
- Use binary search to find mappings. #1414
- RISCV:
- Fix tb not invalidated when exiting.
- Fix bindings makefile.
- Fix uc_mem_protect not working. #1468
Thanks:
Version 2.0.0-rc3
This is an urgent pre-release regarding python bindings on older Linux systems.
- Support older Linux distribution, e.g. prior to Ubuntu 19.04
- Fix a memory leak in
uc_close
- Support building on Android
- Support hooking CPUID instruction.
Enjoy.