blob: d7fa62c9f147b24a5ddc051264df98ac13619420 [file] [log] [blame]
1. API change
Version 2.1 changes the API cs_close() from (prototype):
cs_err cs_close(csh handle);
to:
cs_err cs_close(csh *handle);
Therefore, all C code written on top of Capstone must be fixed accordingly,
from something like:
csh handle;
//....
cs_close(handle);
to:
csh handle;
//....
cs_close(&handle);
Internally, this change is to invalidate @handle, so make sure it cannot be
used after that, even on purpose.
NOTE: this change is on C interface only. All the bindings Python, Java or
bindings made by community such as C#, Go, Ruby & Vala should hide this change
behind their API. For this reason, code using these bindings still work exactly
like before and do not need to have any modification.
2. Upgrade bindings
Version 2.1 makes some changes to Java & Python bindings, like adding some new
instructions (affeting *_const.py & *_const.java). While this does not break
API compatibility (i.e users do not need to modify their program written with
prior version 2.0), they must upgrade these bindings and must not use the old
bindings from prior versions.
We cannot emphasize enough here: When users upgrade to the new engine, always
upgrade to the bindings coming with the same core. If do not follow this
principle, their applications can silently break without any clear evidence,
making it very hard to debug sometimes.