diff --git a/NEWS b/NEWS
index 9a18f34bf..8465a188f 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,50 @@
+Overview of changes leading to 10.0.0
+Monday, Sep 23, 2024
+====================================
+- Unicode 16.0.0 support.
+- Various documentation fixes.
+- Various build fixes.
+- Add API to allow HarfBuzz client to set what glyph to use when a Unicode
+ Variation Selector is not supported by the font, which would allow the client
+ to customize what happens in this case, by using a different font for example.
+- Add a callback to for “hb_face_t” for getting the list of table tags. This is
+ now used to make calling “hb_face_get_table_tags()” work on a faces created by
+ “hb_face_create_for_tables()” (e.g. faces returned by “hb_subset_or_fail()”).
+- CGJ and Mongolian Variation Selectors are now ignored during glyph
+ positioning, previously they would block both glyph substitution and
+ positioning across them.
+- Support cairo script as an output format for “hb-view” command line tool.
+- Drop an optimization that would cause HarfBuzz not apply pair positioning
+ lookup subtables under certain circumstances, for compatibility with other
+ implementations that do apply these subtables.
+- Subsetting will now fail if source font has no glyphs, so feeding the subsetter
+ invalid data will not silently return an empty face.
+- If after partially instancing a font no variation data is left (the instance
+ is fully static), don’t consider this a failure.
+- Workaround a Firefox bug in displaying SVGs generated be “hb-view” command
+ line tool under certain circumstances.
+- Fix bug in macroman mapping for “cmap” table.
+- Fix difference shaping output when HarfBuzz is built with with
+ “HB_NO_OT_RULESETS_FAST_PATH” enabled.
+- Various subsetting and instancing fixes.
+- Various fuzzing fixes.
+- Add “with_libstdcxx” meson build option.
+
+
+- New API:
++HB_SCRIPT_GARAY
++HB_SCRIPT_GURUNG_KHEMA
++HB_SCRIPT_KIRAT_RAI
++HB_SCRIPT_OL_ONAL
++HB_SCRIPT_SUNUWAR
++HB_SCRIPT_TODHRI
++HB_SCRIPT_TULU_TIGALARI
++hb_buffer_set_not_found_variation_selector_glyph()
++hb_buffer_get_not_found_variation_selector_glyph()
++hb_get_table_tags_func_t
++hb_face_set_get_table_tags_func()
+
+
Overview of changes leading to 9.0.0
Thursday, Jun 27, 2024
====================================
@@ -27,7 +74,7 @@ Monday, May 13, 2024
- Various build fixes.
- Various subsetter and instancer fixes.
-- New API
+- New API:
+HB_SUBSET_FLAGS_OPTIMIZE_IUP_DELTAS
+hb_subset_input_get_axis_range()
+hb_subset_input_pin_axis_location()
diff --git a/docs/harfbuzz-docs.xml b/docs/harfbuzz-docs.xml
index 263ffd1a7..671f75c30 100644
--- a/docs/harfbuzz-docs.xml
+++ b/docs/harfbuzz-docs.xml
@@ -120,6 +120,7 @@
API Index
Index of deprecated API
+ Index of new symbols in 10.0.0
Index of new symbols in 8.5.0
Index of new symbols in 8.4.0
Index of new symbols in 8.3.1
diff --git a/meson.build b/meson.build
index de941e7b8..4d6fce95c 100644
--- a/meson.build
+++ b/meson.build
@@ -1,6 +1,6 @@
project('harfbuzz', 'c', 'cpp',
meson_version: '>= 0.55.0',
- version: '9.0.0',
+ version: '10.0.0',
default_options: [
'cpp_eh=none', # Just to support msvc, we are passing -fno-exceptions also anyway
# 'cpp_rtti=false', # Do NOT enable, wraps inherit it and ICU needs RTTI
diff --git a/src/hb-buffer.cc b/src/hb-buffer.cc
index 1497e3ce0..3fc869887 100644
--- a/src/hb-buffer.cc
+++ b/src/hb-buffer.cc
@@ -1377,7 +1377,7 @@ hb_buffer_get_not_found_glyph (const hb_buffer_t *buffer)
* such that the situation can be detected by the client and handled accordingly
* (e.g. by using a different font).
*
- * XSince: REPLACEME
+ * Since: 10.0.0
**/
void
hb_buffer_set_not_found_variation_selector_glyph (hb_buffer_t *buffer,
@@ -1395,7 +1395,7 @@ hb_buffer_set_not_found_variation_selector_glyph (hb_buffer_t *buffer,
* Return value:
* The @buffer not-found-variation-selector #hb_codepoint_t
*
- * XSince: REPLACEME
+ * Since: 10.0.0
**/
hb_codepoint_t
hb_buffer_get_not_found_variation_selector_glyph (const hb_buffer_t *buffer)
diff --git a/src/hb-common.h b/src/hb-common.h
index 65f6540dc..110854548 100644
--- a/src/hb-common.h
+++ b/src/hb-common.h
@@ -504,13 +504,13 @@ hb_language_matches (hb_language_t language,
* @HB_SCRIPT_MATH: `Zmth`, Since: 3.4.0
* @HB_SCRIPT_KAWI: `Kawi`, Since: 5.2.0
* @HB_SCRIPT_NAG_MUNDARI: `Nagm`, Since: 5.2.0
- * @HB_SCRIPT_GARAY: `Gara`, Since: REPLACEME
- * @HB_SCRIPT_GURUNG_KHEMA: `Gukh`, Since: REPLACEME
- * @HB_SCRIPT_KIRAT_RAI: `Krai`, Since: REPLACEME
- * @HB_SCRIPT_OL_ONAL: `Onao`, Since: REPLACEME
- * @HB_SCRIPT_SUNUWAR: `Sunu`, Since: REPLACEME
- * @HB_SCRIPT_TODHRI: `Todr`, Since: REPLACEME
- * @HB_SCRIPT_TULU_TIGALARI: `Tutg`, Since: REPLACEME
+ * @HB_SCRIPT_GARAY: `Gara`, Since: 10.0.0
+ * @HB_SCRIPT_GURUNG_KHEMA: `Gukh`, Since: 10.0.0
+ * @HB_SCRIPT_KIRAT_RAI: `Krai`, Since: 10.0.0
+ * @HB_SCRIPT_OL_ONAL: `Onao`, Since: 10.0.0
+ * @HB_SCRIPT_SUNUWAR: `Sunu`, Since: 10.0.0
+ * @HB_SCRIPT_TODHRI: `Todr`, Since: 10.0.0
+ * @HB_SCRIPT_TULU_TIGALARI: `Tutg`, Since: 10.0.0
* @HB_SCRIPT_INVALID: No script set
*
* Data type for scripts. Each #hb_script_t's value is an #hb_tag_t corresponding
@@ -739,7 +739,7 @@ typedef enum
HB_SCRIPT_NAG_MUNDARI = HB_TAG ('N','a','g','m'), /*15.0*/
/*
- * Since REPLACEME
+ * Since 10.0.0
*/
HB_SCRIPT_GARAY = HB_TAG ('G','a','r','a'), /*16.0*/
HB_SCRIPT_GURUNG_KHEMA = HB_TAG ('G','u','k','h'), /*16.0*/
diff --git a/src/hb-face.cc b/src/hb-face.cc
index 63a9259db..9b4af16f4 100644
--- a/src/hb-face.cc
+++ b/src/hb-face.cc
@@ -576,7 +576,7 @@ hb_face_get_glyph_count (const hb_face_t *face)
*
* Sets the table-tag-fetching function for the specified face object.
*
- * XSince: REPLACEME
+ * Since: 10.0.0
*/
HB_EXTERN void
hb_face_set_get_table_tags_func (hb_face_t *face,
diff --git a/src/hb-face.h b/src/hb-face.h
index 53406cd7c..98d0afec2 100644
--- a/src/hb-face.h
+++ b/src/hb-face.h
@@ -149,7 +149,7 @@ hb_face_get_glyph_count (const hb_face_t *face);
*
* Return value: Total number of tables, or zero if it is not possible to list
*
- * XSince: REPLACEME
+ * Since: 10.0.0
*/
typedef unsigned int (*hb_get_table_tags_func_t) (const hb_face_t *face,
unsigned int start_offset,
diff --git a/src/hb-version.h b/src/hb-version.h
index 9b9f30d61..dea8669ba 100644
--- a/src/hb-version.h
+++ b/src/hb-version.h
@@ -41,7 +41,7 @@ HB_BEGIN_DECLS
*
* The major component of the library version available at compile-time.
*/
-#define HB_VERSION_MAJOR 9
+#define HB_VERSION_MAJOR 10
/**
* HB_VERSION_MINOR:
*
@@ -60,7 +60,7 @@ HB_BEGIN_DECLS
*
* A string literal containing the library version available at compile-time.
*/
-#define HB_VERSION_STRING "9.0.0"
+#define HB_VERSION_STRING "10.0.0"
/**
* HB_VERSION_ATLEAST: