diff --git a/ChangeLog b/ChangeLog
new file mode 100644
index 0000000000000000000000000000000000000000..81fbb3292b713b1c3321f913593fb7c7aca3747f
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1,39 @@
+This file details the changelog of Keystone.
+
+---------------------------------
+Version 0.9.1: July 27th, 2016
+
+[ Core & tool ]
+
+- Fix a segfault in kstool (on missing assembly input).
+- kstool now allows to specify instruction address.
+- Build Mac libraries in universal format by default.
+- Add "lib32" option to cross-compile to 32-bit *nix (on 64-bit system).
+- Add "lib_only" option to only build libraries (skip kstool).
+- New bindings: Haskell & OCaml.
+
+[ X86 ]
+
+- Fix instructions: LJMP, LCALL, CDQE, SHR, SHL, SAR, SAL, LOOP, LOOPE, LOOPNE
+- Better handling a lot of tricky input caught by assert() before.
+- Better support for Nasm syntax.
+
+[ Arm ]
+
+- Fix BLX instruction.
+
+[ Python binding ]
+
+- Better Python3 support.
+- Expose @stat_count in KsError class when ks_asm() returns with error.
+  See sample code in bindings/python/sample_asm_count.py
+
+[ Go binding ]
+
+- Fix Go binding for 32-bit
+
+----------------------------------
+Version 0.9: May 31th, 2016
+
+- Initial public release.
+
diff --git a/RELEASE_NOTES b/RELEASE_NOTES
index 0682399c157279ff7cb8738fe65fb0589cdf4eb9..b18c8ef9c35317f184724e2ee193714723698572 100644
--- a/RELEASE_NOTES
+++ b/RELEASE_NOTES
@@ -1,4 +1,6 @@
-Version 0.9 works quite well for all architectures, but is known to not be able
+Version 0.9.1 works quite well for all architectures, but is known to not be able
 to deal with some malformed craft input. In such a case, Keystone usually exits
 with some error messages. Report if you experience this issue, so we can fix
 that in the next release.
+
+See details of open bugs at https://github.com/keystone-engine/keystone/issues