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 https://github.com/unicorn-engine/unicorn/pull/1736
* @LG3696 made their first contribution in https://github.com/unicorn-engine/unicorn/pull/1764
* @PhilippTakacs made their first contribution in https://github.com/unicorn-engine/unicorn/pull/1765
* @edsky made their first contribution in https://github.com/unicorn-engine/unicorn/pull/1754
* @tunz made their first contribution in https://github.com/unicorn-engine/unicorn/pull/1790
* @kassane made their first contribution in https://github.com/unicorn-engine/unicorn/pull/1809
* @Xeonacid made their first contribution in https://github.com/unicorn-engine/unicorn/pull/1807
* @nneonneo made their first contribution in https://github.com/unicorn-engine/unicorn/pull/1830
* @lockbox made their first contribution in https://github.com/unicorn-engine/unicorn/pull/1847
* @mlgiraud made their first contribution in https://github.com/unicorn-engine/unicorn/pull/1849
* @basavesh made their first contribution in https://github.com/unicorn-engine/unicorn/pull/1861
* @hamarituc made their first contribution in https://github.com/unicorn-engine/unicorn/pull/1886
* @StalkR made their first contribution in https://github.com/unicorn-engine/unicorn/pull/1907
* @dotCirill made their first contribution in https://github.com/unicorn-engine/unicorn/pull/1910
* @marameref made their first contribution in https://github.com/unicorn-engine/unicorn/pull/1897
* @redoste made their first contribution in https://github.com/unicorn-engine/unicorn/pull/1922
* @xclusivor made their first contribution in https://github.com/unicorn-engine/unicorn/pull/1929
* @elicn made their first contribution in https://github.com/unicorn-engine/unicorn/pull/1629
* @nganhkhoa made their first contribution in https://github.com/unicorn-engine/unicorn/pull/1942
* @es3n1n made their first contribution in https://github.com/unicorn-engine/unicorn/pull/1960
* @BitMaskMixer made their first contribution in https://github.com/unicorn-engine/unicorn/pull/1977
* @apparentlymart made their first contribution in https://github.com/unicorn-engine/unicorn/pull/1995
* @atipls made their first contribution in https://github.com/unicorn-engine/unicorn/pull/1985
* @omer54463 made their first contribution in https://github.com/unicorn-engine/unicorn/pull/2005
Full Changelog: https://github.com/unicorn-engine/unicorn/compare/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.
Unicorn2 makes the first step to [Debian packages](https://tracker.debian.org/pkg/unicorn-engine) and [vcpkg](https://github.com/microsoft/vcpkg/pull/26101)! 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. Note `pip` 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.