v2.4.0 release
diff --git a/docs/changelog.rst b/docs/changelog.rst
index 9576a8b..eaf8c25 100644
--- a/docs/changelog.rst
+++ b/docs/changelog.rst
@@ -6,14 +6,69 @@
 Starting with version 1.8.0, pybind11 releases use a `semantic versioning
 <http://semver.org>`_ policy.
 
-
-v2.3.1 (Not yet released)
+v2.4.0 (Sep 19, 2019)
 -----------------------------------------------------
 
+* Try harder to keep pybind11-internal data structures separate when there
+  are potential ABI incompatibilities. Fixes crashes that occurred when loading
+  multiple pybind11 extensions that were e.g. compiled by GCC (libstdc++)
+  and Clang (libc++).
+  `1588 <https://github.com/pybind/pybind11/pull/1588>`_ and
+  `c9f5a <https://github.com/pybind/pybind11/commit/c9f5a>`_.
+
+* Added support for ``__await__``, ``__aiter__``, and ``__anext__`` protocols.
+  `1842 <https://github.com/pybind/pybind11/pull/1842>`_.
+
+* ``pybind11_add_module()``: don't strip symbols when compiling in
+  ``RelWithDebInfo`` mode. `1980
+  <https://github.com/pybind/pybind11/pull/1980>`_.
+
+* ``enum_``: Reproduce Python behavior when comparing against invalid values
+  (e.g. ``None``, strings, etc.). Add back support for ``__invert__()``.
+  `1912 <https://github.com/pybind/pybind11/pull/1912>`_,
+  `1907 <https://github.com/pybind/pybind11/pull/1907>`_.
+
+* List insertion operation for ``py::list``.
+  Added ``.empty()`` to all collection types.
+  Added ``py::set::contains()`` and ``py::dict::contains()``.
+  `1887 <https://github.com/pybind/pybind11/pull/1887>`_,
+  `1884 <https://github.com/pybind/pybind11/pull/1884>`_,
+  `1888 <https://github.com/pybind/pybind11/pull/1888>`_.
+
 * ``py::details::overload_cast_impl`` is available in C++11 mode, can be used
   like ``overload_cast`` with an additional set of parantheses.
   `1581 <https://github.com/pybind/pybind11/pull/1581>`_.
 
+* ``overload_cast_impl`` is now available in C++11.
+  `1581 <https://github.com/pybind/pybind11/pull/1581>`_.
+
+* Fixed ``get_include()`` on Conda.
+  `1877 <https://github.com/pybind/pybind11/pull/1877>`_.
+
+* ``stl_bind.h``: negative indexing support.
+  `1882 <https://github.com/pybind/pybind11/pull/1882>`_.
+
+* Minor CMake fix to add MinGW compatibility.
+  `1851 <https://github.com/pybind/pybind11/pull/1851>`_.
+
+* GIL-related fixes.
+  `1836 <https://github.com/pybind/pybind11/pull/1836>`_,
+  `8b90b <https://github.com/pybind/pybind11/commit/8b90b>`_.
+
+* Other very minor/subtle fixes and improvements.
+  `1329 <https://github.com/pybind/pybind11/pull/1329>`_,
+  `1910 <https://github.com/pybind/pybind11/pull/1910>`_,
+  `1863 <https://github.com/pybind/pybind11/pull/1863>`_,
+  `1847 <https://github.com/pybind/pybind11/pull/1847>`_,
+  `1890 <https://github.com/pybind/pybind11/pull/1890>`_,
+  `1860 <https://github.com/pybind/pybind11/pull/1860>`_,
+  `1848 <https://github.com/pybind/pybind11/pull/1848>`_,
+  `1821 <https://github.com/pybind/pybind11/pull/1821>`_,
+  `1837 <https://github.com/pybind/pybind11/pull/1837>`_,
+  `1833 <https://github.com/pybind/pybind11/pull/1833>`_,
+  `1748 <https://github.com/pybind/pybind11/pull/1748>`_,
+  `1852 <https://github.com/pybind/pybind11/pull/1852>`_.
+
 v2.3.0 (June 11, 2019)
 -----------------------------------------------------
 
diff --git a/docs/conf.py b/docs/conf.py
index d17e4ba..da9dd19 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -61,9 +61,9 @@
 # built documents.
 #
 # The short X.Y version.
-version = '2.3'
+version = '2.4'
 # The full version, including alpha/beta/rc tags.
-release = '2.3.dev1'
+release = '2.4.0'
 
 # The language for content autogenerated by Sphinx. Refer to documentation
 # for a list of supported languages.