Notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- Document that minimum supported Rust version is 1.50.0
- Improperly documented as 1.40.0 in 0.14.0 release
0.10.0 - 2021-08-09
- Links to related types/functions in API documentation
- Access
Insn
elements ofInstructions
viaDeref
/AsRef
traits instead of an iterator - Access
Insn
groups and read/write registers via a slice - Update README.md code example
0.9.0 - 2021-07-13
- Support for RISC-V architecture
- Updated minimum supported Rust version to 1.40.0
0.8.0 - 2021-04-09
Insn::from_raw()
to convert from acs_insn
pointerDeref
impl forInstructions
- X86: return
X86OpMem::segment()
asRegId
instead ofu32
- Fixed data race in multi-threaded environment (#87)
0.7.0 - 2020-03-16
no_std
compatibility- Parallel disassemble example
- X86: add
X86Operand.access
field - Implement
From<u32>
for *_ins enums
- Bump minimum Rust version to 1.36.0
0.6.0 - 2019-04-17
- Architectures: EVM, M68K, M680X, TMS320C64X
- Mips modes:
Mips2
,Mips3
,Mips32
,Mips64
- Trait
EnumList
to allow you to enumerate enum variants - X86:
X86InsnDetail::xop_cc()
getter
- Bump minimum Rust version to 1.29.2
- Upgraded internal capstone C library to version 4.0
- Moved
capstone-sys
repository intocapstone-rs
repository - Converted operand
Imm
variant fromi32
toi64
for PPC, SPARC X86InsnDetail::disp()
returnsi64
instead ofi32
- Mips modes:
Mode32
,Mode64
,MipsGP64
X86OperandType
variantFp
0.5.0 - 2018-09-21
InsnDetail
to preamble
- Flattened
Error
enum
X86InsnDetail::avx_rm()
0.4.0 - 2018-06-02
- Criterion benchmark
- cstool example
- Codecov code coverage integration
PartialOrd
/Ord
implementation forInsnId
,InsnGroupId
,RegId
- Lifetime to
Capstone
/Insn
struct alloc_system
feature to use the system allocator instead of the default allocator (currently requires nightly)
- Minimum Rust version to 1.23.0
Capstone::disasm()
methods take&mut self
instead of&self
and returns a new lifetimeCapstone
is no longerSend
/Sync
(it was mistakenly auto-implemented)Capstone::new()
builder pattern methods takeself
instead of&mut self
Capstone::set_endian()
is now public (allowed since internal Capstone version was upgraded)
- Duplicate/unneeded
Capstone
methods that have equivalents inInsnDetail
insn_belongs_to_group()
,insn_group_ids()
,register_id_is_read()
,read_register_ids()
,register_id_is_written()
,write_register_ids()
- Race condition and memory unsafety in issue most easily observed on Mac OS (issue #26)
0.3.1 - 2018-03-26
- Documentation URL
0.3.0 - 2018-03-26
- Architecture-specific detail API with
InsnDetail::arch_detail()
method - README badges!
Capstone::disasm()
(and related methods) return emptyInstructions
instead of an error- Make
Instructions::from_raw_parts()
private
0.2.0 - 2017-11-01
Capstone::new_raw()
has the same interface as the oldCapstone::new_raw()
- Add setters to modify mode, syntax, etc.
Capstone::new()
uses the builder pattern- Partition
Mode
enum into:Mode
,ExtraMode
, andEndian
- Rename
Capstone
methods that return IDs to include_ids
in name- Example:
read_registers()
renamed toread_register_ids()
- Example:
- Minimum Rust version is 1.20.0
libc
dependency
0.1.0 - 2017-09-29
Capstone
methods to set syntax and mode- Travis continuous integration
- Use
capstone-sys
crate for low-level Capstone bindings Capstone::new()
takes aarch
andmode
argumentsCapstone::disasm()
replaced withCapstone::disasm_all()
/Capstone::disasm_count()
- Dependency