3.1.0
diff --git a/NEWS b/NEWS
index d8d219e..5fbdca8 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,24 @@
+Overview of changes leading to 3.1.0
+Wednesday, November 3, 2021
+====================================
+- Better offset-overflow handling in the subsetter library. (Garret Rieger)
+- Improved Unicode 14 properties in the USE shaper, and various other USE
+  shaper fixes. (David Corbett)
+- MATH and COLR v1 tables subsetting support, and various other subsetter fixes.
+  (Qunxin Liu)
+- Support for Pwo Karen / Ason Chin medial la. (Simon Cozens)
+- Apply GPOS positioning when substituting with morx table, if kerx is missing.
+  (Behdad Esfahbod)
+- Apply calt and clig features across syllable boundaries in Indic shaper.
+  (Behdad Esfahbod)
+- meson option for enabling Graphite 2 has been renamed to graphite2.
+- Build and documentation fixes.
+
+- New API:
++hb_buffer_set_not_found_glyph()
++hb_buffer_get_not_found_glyph()
+
+
 Overview of changes leading to 3.0.0
 Friday, September 17, 2021
 ====================================
diff --git a/configure.ac b/configure.ac
index 5d68758..80e92b9 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,6 +1,6 @@
 AC_PREREQ([2.64])
 AC_INIT([HarfBuzz],
-        [3.0.0],
+        [3.1.0],
         [https://github.com/harfbuzz/harfbuzz/issues/new],
         [harfbuzz],
         [http://harfbuzz.org/])
diff --git a/docs/harfbuzz-docs.xml b/docs/harfbuzz-docs.xml
index a7e9ca3..5fa3658 100644
--- a/docs/harfbuzz-docs.xml
+++ b/docs/harfbuzz-docs.xml
@@ -116,6 +116,7 @@
       <index id="api-index-full"><title>API Index</title><xi:include href="xml/api-index-full.xml"><xi:fallback /></xi:include></index>
       <index id="deprecated-api-index" role="deprecated"><title>Index of deprecated API</title><xi:include href="xml/api-index-deprecated.xml"><xi:fallback /></xi:include></index>
 
+      <index id="api-index-3-1-0" role="3.1.0"><title>Index of new symbols in 3.1.0</title><xi:include href="xml/api-index-3.1.0.xml"><xi:fallback /></xi:include></index>
       <index id="api-index-3-0-0" role="3.0.0"><title>Index of new symbols in 3.0.0</title><xi:include href="xml/api-index-3.0.0.xml"><xi:fallback /></xi:include></index>
       <index id="api-index-2-9-1" role="2.9.1"><title>Index of new symbols in 2.9.1</title><xi:include href="xml/api-index-2.9.1.xml"><xi:fallback /></xi:include></index>
       <index id="api-index-2-9-0" role="2.9.0"><title>Index of new symbols in 2.9.0</title><xi:include href="xml/api-index-2.9.0.xml"><xi:fallback /></xi:include></index>
diff --git a/meson.build b/meson.build
index 4b441a5..d548721 100644
--- a/meson.build
+++ b/meson.build
@@ -1,6 +1,6 @@
 project('harfbuzz', 'c', 'cpp',
   meson_version: '>= 0.52.0',
-  version: '3.0.0',
+  version: '3.1.0',
   default_options: [
     'cpp_rtti=false',       # Just to support msvc, we are passing -fno-exceptions also anyway
     'cpp_std=c++11',
diff --git a/src/hb-buffer.cc b/src/hb-buffer.cc
index caa5629..b4f7f72 100644
--- a/src/hb-buffer.cc
+++ b/src/hb-buffer.cc
@@ -1171,7 +1171,7 @@
  * The not-found glyph defaults to zero, sometimes knows as the
  * ".notdef" glyph.  This API allows for differentiating the two.
  *
- * Since: REPLACEME
+ * Since: 3.1.0
  **/
 void
 hb_buffer_set_not_found_glyph (hb_buffer_t    *buffer,
@@ -1192,7 +1192,7 @@
  * Return value:
  * The @buffer not-found #hb_codepoint_t
  *
- * Since: REPLACEME
+ * Since: 3.1.0
  **/
 hb_codepoint_t
 hb_buffer_get_not_found_glyph (hb_buffer_t    *buffer)
diff --git a/src/hb-version.h b/src/hb-version.h
index 70325f8..62922c5 100644
--- a/src/hb-version.h
+++ b/src/hb-version.h
@@ -47,7 +47,7 @@
  *
  * The minor component of the library version available at compile-time.
  */
-#define HB_VERSION_MINOR 0
+#define HB_VERSION_MINOR 1
 /**
  * HB_VERSION_MICRO:
  *
@@ -60,7 +60,7 @@
  *
  * A string literal containing the library version available at compile-time.
  */
-#define HB_VERSION_STRING "3.0.0"
+#define HB_VERSION_STRING "3.1.0"
 
 /**
  * HB_VERSION_ATLEAST: