diff --git a/_service b/_service
deleted file mode 100644
index f0d2976..0000000
--- a/_service
+++ /dev/null
@@ -1,11 +0,0 @@
-<services>
-	<service name="tar_scm" mode="manual">
-		<param name="scm">git</param>
-		<param name="url">https://github.com/libjxl/libjxl.git/</param>
-		<param name="submodules">enable</param>
-		<param name="subdir">third_party/skcms</param>
-		<param name="revision">v0.8.2</param>
-		<param name="filename">skcms</param>
-		<param name="version">_none_</param>
-	</service>
-</services>
diff --git a/baselibs.conf b/baselibs.conf
index db6ec8d..57e20d3 100644
--- a/baselibs.conf
+++ b/baselibs.conf
@@ -1 +1 @@
-libjxl0_8
+libjxl0_9
diff --git a/libjxl.changes b/libjxl.changes
index 74873b2..84eb984 100644
--- a/libjxl.changes
+++ b/libjxl.changes
@@ -1,3 +1,27 @@
+-------------------------------------------------------------------
+Fri Dec 22 15:54:38 UTC 2023 - Jan Engelhardt <jengelh@inai.de>
+
+- Update to release 0.9
+  * Encoder API:
+  * Add JxlEncoderSetExtraChannelDistance to adjust the quality
+    of extra channels (like alpha) separately.
+  * New API functions for streaming encoding.
+  * New options for more fine-grained control over metadata
+    preservation when using JxlEncoderAddJPEGFrame.
+  * New function JxlEncoderSetUpsamplingMode to change the
+    upsampling method, e.g. to use nearest-neighbor upsampling
+    for pixel art.
+  * New function JxlEncoderDistanceFromQuality for convenience to
+    calculate a distance given a quality.
+  * Decoder API: Implemented JxlDecoderSetOutputColorProfile and
+    JxlDecoderSetCms to enable decoding to desired colorspace.
+  * Deprecated functions removed from encoder and decoder APIs.
+  * Command-line tools:
+  * cjxl can now be used to explicitly add/update/strip
+    Exif/XMP/JUMBF metadata using the decoder-hints syntax, e.g.
+    cjxl input.ppm -x exif=input.exif output.jxl
+  * djxl can now be used to extract Exif/XMP/JUMBF metadata.
+
 -------------------------------------------------------------------
 Thu Sep 21 13:34:05 UTC 2023 - Jan Engelhardt <jengelh@inai.de>
 
diff --git a/libjxl.spec b/libjxl.spec
index ee414f8..5623c9a 100644
--- a/libjxl.spec
+++ b/libjxl.spec
@@ -16,7 +16,7 @@
 #
 
 
-%define lname   libjxl0_8
+%define lname   libjxl0_9
 %if "@BUILD_FLAVOR@" == "gtk"
 Name:           libjxl-gtk
 %bcond_without gtk
@@ -24,7 +24,7 @@ Name:           libjxl-gtk
 Name:           libjxl
 %bcond_with gtk
 %endif
-Version:        0.8.2
+Version:        0.9.0
 Release:        0
 Summary:        JPEG XL reference implementation
 License:        BSD-3-Clause
@@ -33,6 +33,7 @@ URL:            https://jpegxl.info/
 Source:         https://github.com/libjxl/libjxl/archive/refs/tags/v%version.tar.gz
 Source1:        baselibs.conf
 Source2:        skcms.tar
+BuildRequires:  asciidoc
 BuildRequires:  c++_compiler
 BuildRequires:  cmake
 BuildRequires:  pkg-config
@@ -41,12 +42,16 @@ BuildRequires:  pkgconfig(gdk-pixbuf-2.0) >= 2.36
 BuildRequires:  pkgconfig(gimp-2.0) >= 2.10
 BuildRequires:  pkgconfig(gimpui-2.0) >= 2.10
 %endif
+BuildRequires:  giflib-devel >= 5.1
+BuildRequires:  pkgconfig(OpenEXR)
+BuildRequires:  pkgconfig(libavif)
 BuildRequires:  pkgconfig(libbrotlicommon)
 BuildRequires:  pkgconfig(libbrotlidec)
 BuildRequires:  pkgconfig(libbrotlienc)
-BuildRequires:  pkgconfig(libhwy) >= 1.0
+BuildRequires:  pkgconfig(libhwy) >= 1.0.7
 BuildRequires:  pkgconfig(libjpeg)
 BuildRequires:  pkgconfig(libpng)
+BuildRequires:  pkgconfig(libwebp)
 %{?suse_build_hwcaps_libs}
 %if %{with gtk}
 Provides:       bundled(skcms) = 0
@@ -116,7 +121,8 @@ mv skcms third_party/
 %if %{with gtk}
 	-DJPEGXL_ENABLE_PLUGINS=ON -DJPEGXL_ENABLE_SKCMS=ON \
 %endif
-	-DJPEGXL_ENABLE_SJPEG=OFF
+	-DJPEGXL_ENABLE_SJPEG=OFF -DJPEGXL_ENABLE_DOXYGEN=OFF \
+	-DJPEGXL_ENABLE_JPEGLI=OFF
 %cmake_build
 
 %install
@@ -142,13 +148,12 @@ rm -Rf "$b/%_libdir"/libjxl* "$b/%_bindir" "$b/%_includedir" "$b/%_libdir/pkgcon
 %_libdir/libjxl*.so.*
 
 %files tools
-%_bindir/cjpeg_hdr
 %_bindir/*xl*
+%_mandir/man*/*xl*
 
 %files devel
 %_includedir/jxl/
-%_libdir/libjxl.so
-%_libdir/libjxl_threads.so
+%_libdir/libjxl*.so
 %_libdir/pkgconfig/*.pc
 
 %else
diff --git a/v0.8.2.tar.gz b/v0.8.2.tar.gz
deleted file mode 100644
index 58e79e8..0000000
--- a/v0.8.2.tar.gz
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:c70916fb3ed43784eb840f82f05d390053a558e2da106e40863919238fa7b420
-size 1612062
diff --git a/v0.9.0.tar.gz b/v0.9.0.tar.gz
new file mode 100644
index 0000000..3a65068
--- /dev/null
+++ b/v0.9.0.tar.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d83bbe188d8fa9725bb75109c922c37fcff8c3b802808f3a6c2c14aaf8337d9f
+size 1871551