With the v6 release we added a new update mechanism called Auto-Sync. This is a huge step for Capstone, because it allows for easy module updates, easier addition of new architectures, easy features addition and guarantees less faulty disassembly.
This release adds a huge amount of new architectures, extensions, bug fixes and quality of life improvements.
Almost all the work was sponsored by RizinOrg. This release would have simply not happened without them.
The developers with the biggest contributions were (alphabetically):
- TriCore - @billow (Sponsored)
- LoongArch - @jiegec and @FurryAcetylCoA
- Alpha, HPPA - @R33v0LT (Sponsored)
- AArch64, ARM, Auto-Sync, PPC, SystemZ, modernized testing - @Rot127 (Sponsored)
- Mips, NanoMips - @wargio
There are also multiple smaller additions
- Reviewing all PRs - @kabeor
- Architecture module registration - @oleavr
- Building of thin binaries for Apple - @rickmark
- Python packaging and testing - @twizmwazin, @peace-maker
- RISCV operand access info - @wxrdnx
And of course there were many more improvements done by other contributors, which add to the release just as the ones above. For a full list of all the developers, please see the below.
With all that said, we hope you enjoy the new release!
Breaking Changes
ARM64
was renamed toAArch64
everywhere (compatibility header is provided).SysZ
was renamed toSystemZ
everywhere (compatibility header is provided).- Changes happened especially to the PPC, ARM and AArch64 API, as well as changes to enumeration values and stucts.
Please be sure to read the release guide carefully!
You can find all the breaking changes and justifications for them!
What's New
- LoongArch, HPPA and Alpha support added.
- AArch64, SystemZ and Mips updated to LLVM 18.
- NanoMips extension added.
- ARM and PPC updated to LLVM 16.
- Exotic PPC PairedSingle extension added.
- Instruction formats for PPC, SystemZ and LoongArch added.
- Instruction alias support added.
- RISCV operand access information added.
- Testing was rewritten from scratch.
- All tests are run with the address sanitizer.
- Several improvements to the API of the ARM, AArch64 and PPC modules.
For an exhaustive list, see the release guide at https://github.com/capstone-engine/capstone/blob/next/docs/cs_v6_release_guide.md
- Thank you @FinnWilkinson for testing the AArch64 module and its extensions so thoroughly.
What's Changed
- [v6] Move meta-programming macros for ARM64/AArch64 to capstone.h by @Rot127 in #2201
- Remove no longer used td files. by @Rot127 in #2205
- tricore: fix runtime errors of integer overflow by @imbillow in #2204
- Disable maybe-uninitialized warning all together. by @Rot127 in #2210
- [ARM] Add alias support by @Rot127 in #2209
- [TriCore] Replace one- and sign-extend with MathExtra.h functions. by @Rot127 in #2212
- [ARM] Add RET group to pop instructions which write to the PC. by @Rot127 in #2216
- V6 release guide by @Rot127 in #2124
- Add CS_aarch64 macro without parameter. by @Rot127 in #2218
- Fix broken disassembly of floating point immediates on big endian hosts by @huth in #2222
- Add Alpha architecture by @R33v0LT in #2071
- Ignore JetBrains based IDE data for clean PRs by @rickmark in #2224
- Add Big-endian mode for Alpha by @R33v0LT in #2227
- Fix typos in COMPILE_CMAKE.TXT by @kobykahane in #2229
- LIBDIRARCH does not propagate to Makefile by @YaSuenag in #2214
- Fix type punning in
AArch64_AM_isSVEMaskOfIdenticalElements
by @kazarmy in #2237 - Raise minimum requirement to VS2017 by @XVilka in #2228
- Update docs wit ASUpdater.py script by @Rot127 in #2217
- Add autolabeler GitHub Action by @XVilka in #2239
- By default compile as universal2 for macOS by @rickmark in #2221
- Use
union
inAArch64_AM_isSVEMaskOfIdenticalElements
type punning fix by @kazarmy in #2238 - Fix #2234. by @Rot127 in #2236
- Remove comment stating support for multiple
clang-format
versions by @kazarmy in #2242 - Fix label assignment for LLVM generated files. by @Rot127 in #2243
- Constify Alpha and TriCore by @rth7680 in #2245
- Fix compilation with DIET + X86_REDUCE by @oleavr in #2248
- Fix warnings when building with CAPSTONE_DIET by @oleavr in #2249
- Fix MSVC warning overrides when using non-MSVC toolchains by @oleavr in #2250
- Add support for architecture registration by @oleavr in #2252
- auto-sync: Fix some tree-sitter queries by @kazarmy in #2255
- cstool: Fix ppc_br_hint comparison by @oleavr in #2254
- Fix crash on x86 when building with MSVC by @oleavr in #2253
- Fix regressions in custom memory allocator support by @oleavr in #2251
- Fix compilation with CAPSTONE_X86_REDUCE by @oleavr in #2256
- auto-sync BitCastStdArray.py: Transform to
union
instead by @kazarmy in #2257 - Make helper functions static to prevent multiple defintions. by @Rot127 in #2266
- Drop distutils in python binding by @Xeonacid in #2271
- Fix #2233 by @Rot127 in #2267
- Fix OOB read and wries by @Rot127 in #2273
- [AArch64] Fix incorrect alignment of labels. by @Rot127 in #2277
- Makefile: Improve Apple detection by @sevan in #2263
- [CMake] Architecture definition fix by @Rot127 in #2272
- [PPC] Expose instruction formats by @Rot127 in #2276
- Add issue and PR templates by @Rot127 in #2294
- Avoid random access values for operands in not-yet-specified instructions. by @mur47x111 in #2259
- Remove repetitive words by @majorteach in #2297
- Add HPPA(PA-RISC) architecture by @R33v0LT in #2265
- Fix invalid comparison with HPPA_OP_INVALID by @R33v0LT in #2300
- HPPA dissassembler fix unitialized variables errors by @R33v0LT in #2309
- Weaken requirements to document functions. by @Rot127 in #2324
- [Auto-Sync] LLVM 18 update by @Rot127 in #2296
- chore: remove repetitive words by @careworry in #2326
- Fix cstool Makefile for non-C99-defaulting compilers by @thestr4ng3r in #2315
- check if decode[idx] is callable by @Ced2911 in #2322
- Add eBPF bswap16/32/64 instruction by @chengshuyi in #2323
- Add a clang-tidy checks and warnings by @Rot127 in #2312
- [next] Fix #2128 by adding missing mapping values. by @Rot127 in #2335
- Replace manually compile tree-sitter-cpp with their Python bindings. by @Rot127 in #2337
- [next] Fix #2079: Add missing 1 immediate to
rcl
by @Rot127 in #2330 - fix typos by @RainRat in #2344
- Fix clang tidy by @Rot127 in #2347
- Fix pkgconfig file to make #include <capstone/capstone.h> work by @ret2libc in #2307
- Rewrite str_replace using snprintf for security and fix clang-tidy by @jiegec in #2350
- Clang tidy quality of life by @Rot127 in #2348
- [next] Fix #2244: Don't apply pseudo-instr. offset to
vcmp
id by @Rot127 in #2331 - chore: fix typos by @xiaoxianBoy in #2328
- fix typos by @RainRat in #2346
- Replace non-standard 0b(...) literals by @thestr4ng3r in #2314
- README: Mention Alpha and HPPA by @XVilka in #2357
- Typo and tree-sitter init fix by @Rot127 in #2358
- Apply #2360 to next by @Rot127 in #2361
- Mapping - return NULL if compiled with DIET by @XVilka in #2370
- Fix Warning C4098: void returns value. by @Rot127 in #2362
- AArch64 compatibility header by @Rot127 in #2321
- Remove python2 leftovers by @twizmwazin in #2378
- Restructure auto-sync docs to have them more contained by @Rot127 in #2355
- Add test with ASAN enabled. by @Rot127 in #2313
- chore: fix some comments by @dufucun in #2379
- Use python3 as default interpreter for python scripts by @Rot127 in #2390
- fix typos by @RainRat in #2387
- Revert "Remove python2 leftovers" by @kabeor in #2391
- Initial auto-sync LoongArch support by @jiegec in #2349
- Python2 leftovers v2 by @twizmwazin in #2395
- AArch64 update to LLVM 18 by @Rot127 in #2298
- Add access support for RISC-V by @wxrdnx in #2393
- Constify three ARM and AArch64 variables by @rth7680 in #2399
- Python/remove deprecated packaging by @twizmwazin in #2396
- [PPC] Fix #2401 - incorrect operands in disassembled instructions by @valdaarhun in #2403
- [next] Fix typo in AArch64 Python binding by @david942j in #2413
- Add release wheel build workflow for all Python versions by @Rot127 in #2414
- [next] Fix unintended zero set in Sparc printInst by @david942j in #2421
- Fix CI fuzz job yml syntax by @Rot127 in #2429
- chore: fix some comments by @luozexuan in #2432
- Add Coverity workflow by @Rot127 in #2437
- [next] Updates and fixes to the Python wheel builder workflow by @Rot127 in #2441
- Add back support for relocatable packages by @mrexodia in #2431
- Fix 'make check' for python tests by @hamarituc in #2439
- Update and add labels by @Rot127 in #2446
- [next] Wheel build fixes: manylinux1, trigger upload on release, Linux AArch64... by @Rot127 in #2444
- Use any-glob for labeler. Otherwise it is not checked recursively. by @Rot127 in #2450
- Modern Testing by @Rot127 in #2456
- Some small fixes for capstone-next by @wargio in #2460
- Auto-Sync Mips by @wargio in #2410
- SystemZ Auto-Sync refactor by @Rot127 in #2462
- Coverity defects by @Rot127 in #2469
- [next] SH: Use bitwise OR with mask for sign extension by @lhsazevedo in #2389
- [next][SuperH] Fix missing setting detail->sh by @david942j in #2466
- Fix jumps and branches on a non-zero PC by @wargio in #2479
- Documentation updates by @Rot127 in #2476
- ARM fixes by @Rot127 in #2477
- AArch64 issues by @Rot127 in #2473
- Replace
assert
withCS_ASSERT
in modules by @Rot127 in #2478 - Rename CS_OPT_NO_BRANCH_OFFSET and corresponding flag to better name. by @Rot127 in #2482
- Fix Coverity CID 509730: overflow before widen by @wargio in #2486
- Update sponsors and remove empty file. by @Rot127 in #2485
- Several small fixups by @Rot127 in #2489
- Xtensa Support by @imbillow in #2380
- LDR offset by @Rot127 in #2487
- SystemZ fixes by @Rot127 in #2488
- Be ready for V6-Alpha1 by @kabeor in #2492
- Update changelog for V6.0.0-Alpha1 (#2493) by @kabeor in #2494
- Remove irrelevant changes. by @Rot127 in #2496
New Contributors
- @R33v0LT made their first contribution in #2071
- @rickmark made their first contribution in #2224
- @kobykahane made their first contribution in #2229
- @YaSuenag made their first contribution in #2214
- @Xeonacid made their first contribution in #2271
- @sevan made their first contribution in #2263
- @majorteach made their first contribution in #2297
- @careworry made their first contribution in #2326
- @thestr4ng3r made their first contribution in #2315
- @Ced2911 made their first contribution in #2322
- @chengshuyi made their first contribution in #2323
- @RainRat made their first contribution in #2344
- @jiegec made their first contribution in #2350
- @xiaoxianBoy made their first contribution in #2328
- @dufucun made their first contribution in #2379
- @wxrdnx made their first contribution in #2393
- @valdaarhun made their first contribution in #2403
- @luozexuan made their first contribution in #2432
- @wargio made their first contribution in #2460
Full Changelog: 5.0.3...6.0.0-Alpha1