diff --git a/docs/CHANGES b/docs/CHANGES
index 0a83aa2..9901e10 100644
--- a/docs/CHANGES
+++ b/docs/CHANGES
@@ -1,5 +1,5 @@
 
-CHANGES BETWEEN 2.8.1 and 2.8.2
+CHANGES BETWEEN 2.8.1 and 2.9
 
   I. IMPORTANT BUG FIXES
 
diff --git a/include/freetype/config/ftheader.h b/include/freetype/config/ftheader.h
index 214068a..702f77c 100644
--- a/include/freetype/config/ftheader.h
+++ b/include/freetype/config/ftheader.h
@@ -337,7 +337,7 @@
    *   A macro used in #include statements to name the file containing
    *   structures and macros related to the auto-hinting module.
    *
-   *   Deprecated since version 2.8.2; use @FT_DRIVER_H instead.
+   *   Deprecated since version 2.9; use @FT_DRIVER_H instead.
    *
    */
 #define FT_AUTOHINTER_H  FT_DRIVER_H
@@ -352,7 +352,7 @@
    *   A macro used in #include statements to name the file containing
    *   structures and macros related to the CFF driver module.
    *
-   *   Deprecated since version 2.8.2; use @FT_DRIVER_H instead.
+   *   Deprecated since version 2.9; use @FT_DRIVER_H instead.
    *
    */
 #define FT_CFF_DRIVER_H  FT_DRIVER_H
@@ -367,7 +367,7 @@
    *   A macro used in #include statements to name the file containing
    *   structures and macros related to the TrueType driver module.
    *
-   *   Deprecated since version 2.8.2; use @FT_DRIVER_H instead.
+   *   Deprecated since version 2.9; use @FT_DRIVER_H instead.
    *
    */
 #define FT_TRUETYPE_DRIVER_H  FT_DRIVER_H
@@ -382,7 +382,7 @@
    *   A macro used in #include statements to name the file containing
    *   structures and macros related to the PCF driver module.
    *
-   *   Deprecated since version 2.8.2; use @FT_DRIVER_H instead.
+   *   Deprecated since version 2.9; use @FT_DRIVER_H instead.
    *
    */
 #define FT_PCF_DRIVER_H  FT_DRIVER_H
diff --git a/include/freetype/freetype.h b/include/freetype/freetype.h
index 0eb9b1b..df30131 100644
--- a/include/freetype/freetype.h
+++ b/include/freetype/freetype.h
@@ -904,9 +904,8 @@
   /*                           Bit 31 is always zero (this is,             */
   /*                           `face_index' is always a positive value).   */
   /*                                                                       */
-  /*                           [Since 2.8.2] Changing the design           */
-  /*                           coordinates with                            */
-  /*                           @FT_Set_Var_Design_Coordinates or           */
+  /*                           [Since 2.9] Changing the design coordinates */
+  /*                           with @FT_Set_Var_Design_Coordinates or      */
   /*                           @FT_Set_Var_Blend_Coordinates does not      */
   /*                           influence the named instance index value    */
   /*                           (only @FT_Set_Named_Instance does that).    */
@@ -1230,8 +1229,8 @@
   /*      glyphs use @FT_LOAD_COLOR.                                       */
   /*                                                                       */
   /*    FT_FACE_FLAG_VARIATION ::                                          */
-  /*      [Since 2.8.2] Set if the current face (or named instance) has    */
-  /*      been altered with @FT_Set_MM_Design_Coordinates,                 */
+  /*      [Since 2.9] Set if the current face (or named instance) has been */
+  /*      altered with @FT_Set_MM_Design_Coordinates,                      */
   /*      @FT_Set_Var_Design_Coordinates, or                               */
   /*      @FT_Set_Var_Blend_Coordinates.  This flag is unset by a call to  */
   /*      @FT_Set_Named_Instance.                                          */
@@ -1413,7 +1412,7 @@
    *   A macro that returns true whenever a face object is a named instance
    *   of a GX or OpenType variation font.
    *
-   *   [Since 2.8.2] Changing the design coordinates with
+   *   [Since 2.9] Changing the design coordinates with
    *   @FT_Set_Var_Design_Coordinates or @FT_Set_Var_Blend_Coordinates does
    *   not influence the return value of this macro (only
    *   @FT_Set_Named_Instance does that).
@@ -1437,7 +1436,7 @@
    *   @FT_Set_Var_Blend_Coordinates.
    *
    * @since:
-   *   2.8.2
+   *   2.9
    *
    */
 #define FT_IS_VARIATION( face ) \
@@ -1830,7 +1829,7 @@
   /*    If @FT_Load_Glyph is called with default flags (see                */
   /*    @FT_LOAD_DEFAULT) the glyph image is loaded in the glyph slot in   */
   /*    its native format (e.g., an outline glyph for TrueType and Type~1  */
-  /*    formats).  [Since 2.8.2] The prospective bitmap metrics are        */
+  /*    formats).  [Since 2.9] The prospective bitmap metrics are          */
   /*    calculated according to @FT_LOAD_TARGET_XXX and other flags even   */
   /*    for the outline glyph, even if @FT_LOAD_RENDER is not set.         */
   /*                                                                       */
@@ -3559,12 +3558,12 @@
   /*                                                                       */
   /*      https://download.macromedia.com/pub/developer/opentype/tech-notes/5902.AdobePSNameGeneration.html */
   /*                                                                       */
-  /*    [Since 2.8.2] Special PostScript names for named instances are     */
-  /*    only returned if the named instance is set with                    */
-  /*    @FT_Set_Named_Instance (and the font has corresponding entries in  */
-  /*    its `fvar' table).  If @FT_IS_VARIATION returns true, the          */
-  /*    algorithmically derived PostScript name is provided, not looking   */
-  /*    up special entries for named instances.                            */
+  /*    [Since 2.9] Special PostScript names for named instances are only  */
+  /*    returned if the named instance is set with @FT_Set_Named_Instance  */
+  /*    (and the font has corresponding entries in its `fvar' table).  If  */
+  /*    @FT_IS_VARIATION returns true, the algorithmically derived         */
+  /*    PostScript name is provided, not looking up special entries for    */
+  /*    named instances.                                                   */
   /*                                                                       */
   FT_EXPORT( const char* )
   FT_Get_Postscript_Name( FT_Face  face );
diff --git a/include/freetype/ftdriver.h b/include/freetype/ftdriver.h
index 6d51bf8..02d104d 100644
--- a/include/freetype/ftdriver.h
+++ b/include/freetype/ftdriver.h
@@ -339,7 +339,7 @@
    *     Use the hinting engine contributed by Adobe.
    *
    * @since:
-   *   2.8.2
+   *   2.9
    *
    */
 #define FT_HINTING_FREETYPE  0
@@ -394,7 +394,7 @@
    * @since:
    *   2.4.12 (for `cff' module)
    *
-   *   2.8.2 (for `type1' and `t1cid' modules)
+   *   2.9 (for `type1' and `t1cid' modules)
    *
    */
 
@@ -466,7 +466,7 @@
    *
    *   2.6.2 (for `autofitter' module)
    *
-   *   2.8.2 (for `type1' and `t1cid' modules)
+   *   2.9 (for `type1' and `t1cid' modules)
    *
    */
 
@@ -536,7 +536,7 @@
    *
    *   2.6.2 (for `autofitter' module)
    *
-   *   2.8.2 (for `type1' and `t1cid' modules)
+   *   2.9 (for `type1' and `t1cid' modules)
    *
    */
 
@@ -569,7 +569,7 @@
    * @since:
    *   2.8 (for `cff' module)
    *
-   *   2.8.2 (for `type1' and `t1cid' modules)
+   *   2.9 (for `type1' and `t1cid' modules)
    *
    */
 
diff --git a/include/freetype/ftmm.h b/include/freetype/ftmm.h
index 7ba34bb..9948102 100644
--- a/include/freetype/ftmm.h
+++ b/include/freetype/ftmm.h
@@ -346,7 +346,7 @@
   /*    [Since 2.8.1] To reset all axes to the default values, call the    */
   /*    function with `num_coords' set to zero and `coords' set to NULL.   */
   /*                                                                       */
-  /*    [Since 2.8.2] If `num_coords' is larger than zero, this function   */
+  /*    [Since 2.9] If `num_coords' is larger than zero, this function     */
   /*    sets the @FT_FACE_FLAG_VARIATION bit in @FT_Face's `face_flags'    */
   /*    field (i.e., @FT_IS_VARIATION will return true).  If `num_coords'  */
   /*    is zero, this bit flag gets unset.                                 */
@@ -384,10 +384,10 @@
   /* <Note>                                                                */
   /*    [Since 2.8.1] To reset all axes to the default values, call the    */
   /*    function with `num_coords' set to zero and `coords' set to NULL.   */
-  /*    [Since 2.8.2] `Default values' means the currently selected named  */
+  /*    [Since 2.9] `Default values' means the currently selected named    */
   /*    instance (or the base font if no named instance is selected).      */
   /*                                                                       */
-  /*    [Since 2.8.2] If `num_coords' is larger than zero, this function   */
+  /*    [Since 2.9] If `num_coords' is larger than zero, this function     */
   /*    sets the @FT_FACE_FLAG_VARIATION bit in @FT_Face's `face_flags'    */
   /*    field (i.e., @FT_IS_VARIATION will return true).  If `num_coords'  */
   /*    is zero, this bit flag gets unset.                                 */
@@ -462,10 +462,10 @@
   /* <Note>                                                                */
   /*    [Since 2.8.1] To reset all axes to the default values, call the    */
   /*    function with `num_coords' set to zero and `coords' set to NULL.   */
-  /*    [Since 2.8.2] `Default values' means the currently selected named  */
+  /*    [Since 2.9] `Default values' means the currently selected named    */
   /*    instance (or the base font if no named instance is selected).      */
   /*                                                                       */
-  /*    [Since 2.8.2] If `num_coords' is larger than zero, this function   */
+  /*    [Since 2.9] If `num_coords' is larger than zero, this function     */
   /*    sets the @FT_FACE_FLAG_VARIATION bit in @FT_Face's `face_flags'    */
   /*    field (i.e., @FT_IS_VARIATION will return true).  If `num_coords'  */
   /*    is zero, this bit flag gets unset.                                 */
@@ -621,7 +621,7 @@
   /*    function simply resets the current face to the default instance.   */
   /*                                                                       */
   /* <Since>                                                               */
-  /*    2.8.2                                                              */
+  /*    2.9                                                                */
   /*                                                                       */
   FT_EXPORT( FT_Error )
   FT_Set_Named_Instance( FT_Face  face,
diff --git a/include/freetype/ftparams.h b/include/freetype/ftparams.h
index 5bafe93..5a9006c 100644
--- a/include/freetype/ftparams.h
+++ b/include/freetype/ftparams.h
@@ -166,7 +166,7 @@
    *   This is a passive setting that only takes effect if the font driver
    *   or autohinter honors it, which the CFF, Type~1, and CID drivers
    *   always do, but the autohinter only in `light' hinting mode (as of
-   *   version 2.8.2).
+   *   version 2.9).
    *
    * @since:
    *   2.8
diff --git a/include/freetype/internal/cfftypes.h b/include/freetype/internal/cfftypes.h
index 12d614b..7c07e1a 100644
--- a/include/freetype/internal/cfftypes.h
+++ b/include/freetype/internal/cfftypes.h
@@ -398,7 +398,7 @@
     /* since version 2.7.1 */
     CFF_VStoreRec    vstore;        /* parsed vstore structure */
 
-    /* since version 2.8.2 */
+    /* since version 2.9 */
     PS_FontExtraRec*  font_extra;
 
   } CFF_FontRec;
