diff --git a/README.md b/README.md
index 27ac45f1f314eb6dfa513555003d2747cf6b527c..9bc868898a93834382600ada444dce3d32c92c03 100644
--- a/README.md
+++ b/README.md
@@ -53,6 +53,20 @@ In general, the primitives provided by NaCl are intermediate-level primitives. R
 
 # Versions
 
+### v0.15.0
+
+Bug fixes:
+
+* Using `enacl:sign_verify_detacted` on large iolists would fail to do the correct thing due to a typo. This has been corrected. Also the EQC tests have been extended to include large binary support to capture these kinds of errors in the future.
+
+Features:
+
+* Many dirty-scheduler tunings have been performed to make sure we won't block a scheduler ever.
+* New benchmarks: `bench/timing.erl` together with DTrace scripts `bench/*.d`
+* Interface simplification toward the NIF api. Only execute instructions directly on the scheduler if the operation *really* benefits from doing so.
+
+No functional change, but the above characteristic change may mean the library now behaves differently from what it did before. It should be a better citizen to other libraries and other parts of the system.
+
 ### v0.14.0
 
 * Add support for libsodiums `box_seal` functions (Amir Ghassemi Nasr)
diff --git a/src/enacl.app.src b/src/enacl.app.src
index f331b4b34afb7d734b535d5961de507de00f52a4..05765ebed8b68a45ac374bbb8eb1df39f1f2f42d 100644
--- a/src/enacl.app.src
+++ b/src/enacl.app.src
@@ -1,7 +1,7 @@
 {application, enacl,
   [
     {description, "Erlang NaCl bindings"},
-    {vsn, "0.14.0"},
+    {vsn, "0.15.0"},
     {registered, []},
     {applications, [kernel, stdlib]},
     {env, []}