diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2eb0a0bdf68a5d9164bff1c3bff37fb4f579aae3..6b31166807290a40d028a0cc139abb5c1ef53365 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -11,7 +11,7 @@
 
 cmake_minimum_required(VERSION 3.15)
 
-project(Analysis VERSION 41.7
+project(Analysis VERSION 41.8
         LANGUAGES CXX)
 
 # Enable testing with CTest/CDash
diff --git a/ReleaseNotes/v41r8.md b/ReleaseNotes/v41r8.md
new file mode 100644
index 0000000000000000000000000000000000000000..34d04865012be06b45a27381e2a01be4aa395299
--- /dev/null
+++ b/ReleaseNotes/v41r8.md
@@ -0,0 +1,24 @@
+2023-05-16 Analysis v41r8
+===
+
+This version uses
+Rec [v35r8](../../../../Rec/-/tags/v35r8),
+Lbcom [v34r8](../../../../Lbcom/-/tags/v34r8),
+LHCb [v54r8](../../../../LHCb/-/tags/v54r8),
+Detector [v1r12](../../../../Detector/-/tags/v1r12),
+Gaudi [v36r12](../../../../Gaudi/-/tags/v36r12) and
+LCG [103](http://lcginfo.cern.ch/release/103/) with ROOT 6.28.00.
+
+This version is released on the `master` branch.
+Built relative to Analysis [v41r7](/../../tags/v41r7), with the following changes:
+
+### Enhancements ~enhancement
+
+- ~Tuples | Follow-up from https://gitlab.cern.ch/lhcb/Rec/-/merge_requests/3396, !976 (@amathad)
+- ~Tuples | Followup from https://gitlab.cern.ch/lhcb/Rec/-/merge_requests/3337 (improve invalid value handling for tistos), !971 (@amathad)
+
+### Code cleanups and changes to tests ~modernisation ~cleanup ~testing
+
+- ~Functors | Remove printing of functor collection to generate docstring, !981 (@graven) [#40]
+- ~Tuples | Follow changes in LHCb!4110, !979 (@graven)
+- ~Tuples | When there is no relation store empty array with index set to zero, !977 (@amathad)
\ No newline at end of file