diff --git a/CHANGELOG.md b/CHANGELOG.md
index c32763dda5d4ca0b1bdf8d5a7dbaf890bf4cdba4..16ba99aa981dbbb9e3853c54f56325080de5284e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,34 @@
+# v0.10.0 (*08.08.2024*)
+
+## Major Changes since v0.9.0
+* Automatic network generation from high-level specifications.
+* Units at the user interface including scaling and conversion.
+* Morphologies are now loaded through a unified interface, bundling morphology, meta data, and segment tree.
+
+## Internal Updates
+
+* Documentation overhaul
+* Performance improvements
+  - Label resolution uses hashes instead of strings
+  - Spike delivery is now up to 30% faster leading 
+  - Load balancing
+* Fixes
+  - Better support for source builds on MacOS (aarch64)
+  - `modcc` no longer allows internal variables (`v`, `celsius`, ...) as `ASSIGNED`
+  - Better support for raw (C++) mechanisms
+* MC cells are now cable cells 
+  
+## Breaking changes
+* Return values of all morphology loaders have changed.
+* Raw (segment tree) loaders removed.
+* Support for Python 3.8 removed.
+* C++: Removed `simulation::inject_events`, use a generator instead. 
+  
+## New Contributors
+* @ErbB4 made their first contribution in https://github.com/arbor-sim/arbor/pull/2271
+
+**Full Changelog**: https://github.com/arbor-sim/arbor/compare/v0.9.0...v0.10.0
+
 # v0.9.0
 
 ** 2023 08 09 **
diff --git a/VERSION b/VERSION
index dc9bff91aa4dfc6ad8734190775557b5bc827847..5a8cdd0405cf76fbce35ad54d3b96933387cbece 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-0.9.1-dev
+0.10.0-rc
diff --git a/doc/contrib/release.rst b/doc/contrib/release.rst
index e71f27eda80cac3eda9c01cf5f705ec2a1afb081..74d91f8d87f23fc2d9e859d7b24e7b8b81e6b90a 100644
--- a/doc/contrib/release.rst
+++ b/doc/contrib/release.rst
@@ -43,13 +43,13 @@ Update tags/versions and test
    - README.md, ATTRIBUTIONS.md, CONTRIBUTING.md, CHANGELOG.md. For autogenerated CHANGELOG, see below.
    - Verify MANIFEST.in (required for PyPI sdist).
    - Double-check that all examples/tutorials/etc are covered by CI.
-   - Check Python/pip/PyPi metadata and scripts, e.g., ``setup.py``, ``pyproject.toml``.
+   - Check Python/pip/PyPi metadata and scripts, e.g., ``pyproject.toml``.
 
 #. Create new temp-branch ending in ``-rc``. E.g. ``v0.9.0-rc``
 #. Bump the ``VERSION`` file:
 
-   - For as long as `scikit-build-core` does not support loading fields from external files, also bump in `pyproject.toml`
-   - See also :ref:`dev-version`
+   - For as long as ``scikit-build-core`` does not support loading fields from external files, also bump in ```pyproject.toml``
+   - See also :ref:``dev-version`
    - Append ``-rc``. (Make sure there's no ``-dev``)
 
 #. Create a **draft PR**. Tag and push with ``-rc``. E.g. ``v0.9.0-rc``
diff --git a/pyproject.toml b/pyproject.toml
index e4eab10d33b36513d11fcdfaf789aa509c3a2ec3..834eb7c1182a24dc7585cb6eec5d8ae03f740242 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
 [project]
 name = "arbor"
-version = "0.9.1-dev" # TODO: make dependent on VERSION file. Blocked by https://github.com/scikit-build/scikit-build-core/issues/230
+version = "0.10.0" # TODO: make dependent on VERSION file. Blocked by https://github.com/scikit-build/scikit-build-core/issues/230
 readme = {file = "README.md", content-type = "text/markdown"}
 license = {file = "LICENSE"}
 description = "High performance simulation of networks of multicompartment neurons."