ChangeLog.md: Document d743a2c1

+ bump version to 2.1.5.1
diff --git a/.gitattributes b/.gitattributes
index 6c9660a..46de94f 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -2,3 +2,4 @@
 /.gitattributes export-ignore
 /.github export-ignore
 *.ppm binary
+/ChangeLog.md conflict-marker-size=8
diff --git a/CMakeLists.txt b/CMakeLists.txt
index e769d6d..eefba16 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -10,7 +10,7 @@
 endif()
 
 project(libjpeg-turbo C)
-set(VERSION 2.1.5)
+set(VERSION 2.1.5.1)
 set(COPYRIGHT_YEAR "1991-2023")
 string(REPLACE "." ";" VERSION_TRIPLET ${VERSION})
 list(GET VERSION_TRIPLET 0 VERSION_MAJOR)
diff --git a/ChangeLog.md b/ChangeLog.md
index a547522..1c1e653 100644
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,3 +1,24 @@
+2.1.5.1
+=======
+
+### Significant changes relative to 2.1.5:
+
+1. The SIMD dispatchers in libjpeg-turbo 2.1.4 and prior stored the list of
+supported SIMD instruction sets in a global variable, which caused an innocuous
+race condition whereby the variable could have been initialized multiple times
+if `jpeg_start_*compress()` was called simultaneously in multiple threads.
+libjpeg-turbo 2.1.5 included an undocumented attempt to fix this race condition
+by making the SIMD support variable thread-local.  However, that caused another
+issue whereby, if `jpeg_start_*compress()` was called in one thread and
+`jpeg_read_*()` or `jpeg_write_*()` was called in a second thread, the SIMD
+support variable was never initialized in the second thread.  On x86 systems,
+this led the second thread to incorrectly assume that AVX2 instructions were
+always available, and when it attempted to use those instructions on older x86
+CPUs that do not support them, an illegal instruction error occurred.  The SIMD
+dispatchers now ensure that the SIMD support variable is initialized before
+dispatching based on its value.
+
+
 2.1.5
 =====