Release 3.29.0
diff --git a/Lib/fontTools/__init__.py b/Lib/fontTools/__init__.py
index 0df8595..168c9f2 100644
--- a/Lib/fontTools/__init__.py
+++ b/Lib/fontTools/__init__.py
@@ -5,6 +5,6 @@
 
 log = logging.getLogger(__name__)
 
-version = __version__ = "3.28.1.dev0"
+version = __version__ = "3.29.0"
 
 __all__ = ["version", "log", "configLogger"]
diff --git a/NEWS.rst b/NEWS.rst
index 49fb68e..59dcba4 100644
--- a/NEWS.rst
+++ b/NEWS.rst
@@ -1,3 +1,6 @@
+3.29.0 (released 2018-07-26)
+----------------------------
+
 - [feaLib] In the OTL table builder, when the ``name`` table is excluded
   from the list of tables to be build, skip compiling ``featureNames`` blocks,
   as the records referenced in ``FeatureParams`` table don't exist (68951b7).
diff --git a/setup.cfg b/setup.cfg
index 5e6bddc..9730527 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -1,5 +1,5 @@
 [bumpversion]
-current_version = 3.28.1.dev0
+current_version = 3.29.0
 commit = True
 tag = False
 tag_name = {new_version}
diff --git a/setup.py b/setup.py
index 5d5f87c..1a2a4f7 100755
--- a/setup.py
+++ b/setup.py
@@ -309,7 +309,7 @@
 
 setup(
 	name="fonttools",
-	version="3.28.1.dev0",
+	version="3.29.0",
 	description="Tools to manipulate font files",
 	author="Just van Rossum",
 	author_email="just@letterror.com",