Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package libjxl for openSUSE:Factory checked in at 2026-02-27 17:02:08 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libjxl (Old) and /work/SRC/openSUSE:Factory/.libjxl.new.29461 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libjxl" Fri Feb 27 17:02:08 2026 rev:25 rq:1334877 version:0.11.2 Changes: -------- --- /work/SRC/openSUSE:Factory/libjxl/libjxl.changes 2025-01-24 13:38:21.769598198 +0100 +++ /work/SRC/openSUSE:Factory/.libjxl.new.29461/libjxl.changes 2026-02-27 17:03:50.781043286 +0100 @@ -1,0 +2,10 @@ +Wed Feb 11 12:04:04 UTC 2026 - Jan Engelhardt <[email protected]> + +- Update to release 0.11.2 + * Fix tile dimension in low memory rendering pipeline + * Fix number of channels for gray-to-gray color transform + [CVE-2026-1837] + * djxl: reject decoding JXL files if "packed" representation size + overflows size_t + +------------------------------------------------------------------- Old: ---- skcms.tar v0.11.1.tar.gz New: ---- b2e692629c1fb19342517d7fb61f1cf83d075492.tar.gz v0.11.2.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libjxl.spec ++++++ --- /var/tmp/diff_new_pack.cRgcGX/_old 2026-02-27 17:03:51.841087276 +0100 +++ /var/tmp/diff_new_pack.cRgcGX/_new 2026-02-27 17:03:51.841087276 +0100 @@ -1,7 +1,7 @@ # -# spec file for package libjxl-gtk +# spec file for package libjxl # -# Copyright (c) 2024 SUSE LLC +# Copyright (c) 2026 SUSE LLC and contributors # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -24,7 +24,7 @@ Name: libjxl %bcond_with gtk %endif -Version: 0.11.1 +Version: 0.11.2 Release: 0 Summary: JPEG XL reference implementation License: BSD-3-Clause @@ -32,7 +32,10 @@ #Git-Clone: https://github.com/libjxl/libjxl Source: https://github.com/libjxl/libjxl/archive/refs/tags/v%version.tar.gz Source1: baselibs.conf -Source2: skcms.tar +# `git ls-tree <jxl_tag> third_party/skcms` gives the SKCMS revision needed for a particular libjxl release +%define skcms_commit b2e692629c1fb19342517d7fb61f1cf83d075492 +#changes-too-damn-often: https://skia.googlesource.com/skcms/+archive/%skcms_commit.tar.gz +Source2: %skcms_commit.tar.gz Patch1: system-jpeg.diff BuildRequires: asciidoc BuildRequires: c++_compiler @@ -111,8 +114,10 @@ for example, on file-browsers. %prep -%autosetup -n libjxl-%version -a2 -p1 -mv skcms third_party/ +%autosetup -n libjxl-%version -p1 +# can't use %%autosetup -a2 because archive has no leading path +mkdir -p third_party/skcms/ +tar -xf %{SOURCE2} -C third_party/skcms/ %build %if 0%{?sle_version} == 150700 ++++++ _scmsync.obsinfo ++++++ --- /var/tmp/diff_new_pack.cRgcGX/_old 2026-02-27 17:03:51.913090264 +0100 +++ /var/tmp/diff_new_pack.cRgcGX/_new 2026-02-27 17:03:51.913090264 +0100 @@ -1,5 +1,5 @@ -mtime: 1737578039 -commit: 37c7554d87456e87445abf3614eba90b3c23438c1c839148f13bff1596f1e870 +mtime: 1771969172 +commit: 16ff0e2b2177f499379dd1ddd955e8901f4371812e5d754c14209466c7eb5a8f url: https://src.opensuse.org/jengelh/libjxl revision: master ++++++ v0.11.1.tar.gz -> b2e692629c1fb19342517d7fb61f1cf83d075492.tar.gz ++++++ /work/SRC/openSUSE:Factory/libjxl/v0.11.1.tar.gz /work/SRC/openSUSE:Factory/.libjxl.new.29461/b2e692629c1fb19342517d7fb61f1cf83d075492.tar.gz differ: char 10, line 1 ++++++ build.specials.obscpio ++++++ ++++++ build.specials.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/.gitignore new/.gitignore --- old/.gitignore 1970-01-01 01:00:00.000000000 +0100 +++ new/.gitignore 2026-02-24 22:40:34.000000000 +0100 @@ -0,0 +1 @@ +.osc ++++++ v0.11.1.tar.gz -> v0.11.2.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libjxl-0.11.1/.github/workflows/build_test.yml new/libjxl-0.11.2/.github/workflows/build_test.yml --- old/libjxl-0.11.1/.github/workflows/build_test.yml 2024-11-26 14:02:35.000000000 +0100 +++ new/libjxl-0.11.2/.github/workflows/build_test.yml 2026-02-10 14:53:22.000000000 +0100 @@ -109,21 +109,6 @@ -DJPEGXL_ENABLE_BOXES=OFF -DJPEGXL_ENABLE_PLUGINS=OFF -DJPEGXL_ENABLE_VIEWERS=OFF - # Builds with gcc in release mode - - name: release:gcc8 - os: ubuntu-20.04 - mode: release - apt_pkgs: gcc-8 g++-8 - cmake_args: >- - -DCMAKE_C_COMPILER=gcc-8 -DCMAKE_CXX_COMPILER=g++-8 - # Builds with clang-7 in release mode - - name: release:clang-7 - os: ubuntu-20.04 - mode: release - skip_install: true - apt_pkgs: clang-7 - cc: clang-7 - cxx: clang++-7 - name: release:osx os: macos-latest mode: release @@ -217,7 +202,7 @@ - name: Cache LLVM sources if: matrix.name == 'msan' && env.WILL_BUILD == 'true' - uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 + uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: path: ${{ env.LLVM_ROOT }} key: llvm @@ -248,7 +233,7 @@ shell: bash - name: ccache - uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 + uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: path: ${{ env.CCACHE_DIR }} # When the cache hits the key it is not updated, so if this is a rebuild diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libjxl-0.11.1/.github/workflows/build_test_bazel.yml new/libjxl-0.11.2/.github/workflows/build_test_bazel.yml --- old/libjxl-0.11.1/.github/workflows/build_test_bazel.yml 2024-11-26 14:02:35.000000000 +0100 +++ new/libjxl-0.11.2/.github/workflows/build_test_bazel.yml 2026-02-10 14:53:22.000000000 +0100 @@ -45,14 +45,14 @@ - name: Patch run: | cd third_party/highway - git fetch origin 31fbbd7ce1e4179a32d86688cd67316556f582bf - git checkout 31fbbd7ce1e4179a32d86688cd67316556f582bf + git fetch origin 457c891775a7397bdb0376bb1031e6e027af1c48 + git checkout 457c891775a7397bdb0376bb1031e6e027af1c48 git apply ${{ github.workspace }}/.github/workflows/highway.patch - name: Build - run: bazel build -c opt ...:all + run: USE_BAZEL_VERSION=8.5.1 bazelisk build -c opt ...:all - name: Test if: | github.event_name == 'push' || (github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'CI:full')) - run: bazel test -c opt --test_output=errors ...:all + run: USE_BAZEL_VERSION=8.5.1 bazelisk test -c opt --test_output=errors ...:all diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libjxl-0.11.1/.github/workflows/build_test_md.yml new/libjxl-0.11.2/.github/workflows/build_test_md.yml --- old/libjxl-0.11.1/.github/workflows/build_test_md.yml 2024-11-26 14:02:35.000000000 +0100 +++ new/libjxl-0.11.2/.github/workflows/build_test_md.yml 2026-02-10 14:53:22.000000000 +0100 @@ -33,7 +33,6 @@ - name: asan - name: release-nojpeg - name: release-lcms2 - - name: release:gcc8 runs-on: ubuntu-latest steps: - name: Harden Runner diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libjxl-0.11.1/.github/workflows/build_test_msys2.yml new/libjxl-0.11.2/.github/workflows/build_test_msys2.yml --- old/libjxl-0.11.1/.github/workflows/build_test_msys2.yml 2024-11-26 14:02:35.000000000 +0100 +++ new/libjxl-0.11.2/.github/workflows/build_test_msys2.yml 2026-02-10 14:53:22.000000000 +0100 @@ -106,7 +106,7 @@ if: github.event_name != 'merge_group' && !(matrix.disable_benchmark || false) run: | systeminfo | grep -A 1 Processor - wmic cpu get Name, NumberofCores, NumberOfLogicalProcessors, MaxClockSpeed + powershell -c "Get-CimInstance -ClassName Win32_Processor | Select-Object Name, NumberOfCores, NumberOfLogicalProcessors, MaxClockSpeed" mkdir tmp export TMPDIR=`pwd`/tmp export PATH=$PATH:`pwd`/build/lib diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libjxl-0.11.1/.github/workflows/build_test_wasm.yml new/libjxl-0.11.2/.github/workflows/build_test_wasm.yml --- old/libjxl-0.11.1/.github/workflows/build_test_wasm.yml 2024-11-26 14:02:35.000000000 +0100 +++ new/libjxl-0.11.2/.github/workflows/build_test_wasm.yml 2026-02-10 14:53:22.000000000 +0100 @@ -73,7 +73,7 @@ echo "parent=$(git rev-parse ${{ github.sha }}^)" >> $GITHUB_OUTPUT shell: bash - name: ccache - uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 + uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: path: ${{ env.CCACHE_DIR }} key: build-wasm-${{ runner.os }}-${{ github.sha }}-${{ matrix.variant }} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libjxl-0.11.1/.github/workflows/conformance.yml new/libjxl-0.11.2/.github/workflows/conformance.yml --- old/libjxl-0.11.1/.github/workflows/conformance.yml 2024-11-26 14:02:35.000000000 +0100 +++ new/libjxl-0.11.2/.github/workflows/conformance.yml 2026-02-10 14:53:22.000000000 +0100 @@ -20,7 +20,7 @@ env: CONFORMANCE_REPO_HASH: a3ee00672dd1b58c2b5a7d5e8b9e4a7b9e53ec1e - LIBJXL_VERSION: "0.11.1" + LIBJXL_VERSION: "0.11.2" LIBJXL_ABI_VERSION: "0.11" concurrency: @@ -45,7 +45,7 @@ ref: ${{ env.CONFORMANCE_REPO_HASH }} path: conformance - name: Cache - uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 + uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: path: ${{ github.workspace }}/conformance/.objects key: conformance-refs @@ -123,7 +123,7 @@ echo "parent=$(git rev-parse ${{ github.sha }}^)" >> $GITHUB_OUTPUT shell: bash - name: ccache - uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 + uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: path: ${{ env.CCACHE_DIR }} # When the cache hits the key it is not updated, so if this is a rebuild @@ -183,6 +183,11 @@ - name: Install deps run: | + sudo rm -f /var/lib/man-db/auto-update + sudo apt update + sudo apt install -y \ + libopenexr-3-1-30 \ + libgif7 pip install numpy - name: Checkout the conformance source uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 @@ -191,7 +196,7 @@ ref: ${{ env.CONFORMANCE_REPO_HASH }} path: conformance - name: Cache - uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 + uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: path: ${{ github.workspace }}/conformance/.objects key: conformance-refs diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libjxl-0.11.1/.github/workflows/highway.patch new/libjxl-0.11.2/.github/workflows/highway.patch --- old/libjxl-0.11.1/.github/workflows/highway.patch 2024-11-26 14:02:35.000000000 +0100 +++ new/libjxl-0.11.2/.github/workflows/highway.patch 2026-02-10 14:53:22.000000000 +0100 @@ -1,8 +1,8 @@ diff --git a/BUILD b/BUILD -index 438b671..d2777b2 100644 +index c825050b..6e6bc604 100644 --- a/BUILD +++ b/BUILD -@@ -153,6 +153,7 @@ cc_library( +@@ -171,6 +171,7 @@ cc_library( "hwy/detect_compiler_arch.h", # private "hwy/print.h", ], @@ -10,3 +10,24 @@ compatible_with = [], copts = COPTS, defines = DEFINES, +diff --git a/MODULE.bazel b/MODULE.bazel +index bd798803..5c767b53 100644 +--- a/MODULE.bazel ++++ b/MODULE.bazel +@@ -1,6 +1,11 @@ +-module(name = "highway", version = "1.2.0") ++module( ++ name = "highway", ++ version = "1.2.0", ++ compatibility_level = 1, ++) + +-bazel_dep(name = "bazel_skylib", version = "1.3.0") +-bazel_dep(name = "googletest", version = "1.12.1") +-bazel_dep(name = "rules_cc", version = "0.0.4") +-bazel_dep(name = "rules_license", version = "0.0.4") ++bazel_dep(name = "bazel_skylib", version = "1.6.1") ++bazel_dep(name = "googletest", version = "1.15.2", repo_name = "com_google_googletest") ++bazel_dep(name = "rules_cc", version = "0.0.9") ++bazel_dep(name = "rules_license", version = "0.0.7") ++bazel_dep(name = "platforms", version = "0.0.10") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libjxl-0.11.1/.github/workflows/release.yaml new/libjxl-0.11.2/.github/workflows/release.yaml --- old/libjxl-0.11.1/.github/workflows/release.yaml 2024-11-26 14:02:35.000000000 +0100 +++ new/libjxl-0.11.2/.github/workflows/release.yaml 2026-02-10 14:53:22.000000000 +0100 @@ -126,9 +126,13 @@ - ubuntu:20.04 - debian:bullseye - debian:bookworm - # GIMP package is removed: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1078402 - # - debian:trixie + - debian:trixie - debian:sid + include: + - os: debian:trixie + exclude_debian_packages: libjxl-gimp-plugin + - os: debian:sid + exclude_debian_packages: libjxl-gimp-plugin container: image: ${{ matrix.os }} @@ -210,7 +214,7 @@ - name: Build libjxl run: | apt build-dep -y . - ./ci.sh debian_build jpeg-xl + EXCLUDE_DEBIAN_PACKAGES="${{ matrix.exclude_debian_packages || '' }}" ./ci.sh debian_build jpeg-xl - name: Stats run: | @@ -262,7 +266,7 @@ tools: 'OFF' env: - VCPKG_VERSION: '2023.12.12' + VCPKG_VERSION: '2025.10.17' VCPKG_ROOT: vcpkg VCPKG_DISABLE_METRICS: 1 @@ -278,7 +282,7 @@ submodules: true fetch-depth: 2 - - uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 + - uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 id: cache-vcpkg with: path: vcpkg @@ -359,7 +363,7 @@ if: matrix.run_benchmark && true run: | systeminfo | grep -A 1 Processor - wmic cpu get Name, NumberofCores, NumberOfLogicalProcessors, MaxClockSpeed + powershell -c "Get-CimInstance -ClassName Win32_Processor | Select-Object Name, NumberOfCores, NumberOfLogicalProcessors, MaxClockSpeed" mkdir tmp export TMPDIR=`pwd`/tmp export PATH=$PATH:`pwd`/build/lib diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libjxl-0.11.1/CHANGELOG.md new/libjxl-0.11.2/CHANGELOG.md --- old/libjxl-0.11.1/CHANGELOG.md 2024-11-26 14:02:35.000000000 +0100 +++ new/libjxl-0.11.2/CHANGELOG.md 2026-02-10 14:53:22.000000000 +0100 @@ -5,6 +5,17 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.11.2] - 2026-02-10 + +### Fixed + - fix tile dimension in low memory rendering pipeline (#4495 - + [CVE-2025-12474](https://www.cve.org/cverecord?id=CVE-2025-12474)) + - fix number of channels for gray-to-gray color transform (#4579 - + [CVE-2026-1837](https://www.cve.org/cverecord?id=CVE-2026-1837)) + - `djxl`: reject decoding JXL files if "packed" representation size overflows + `size_t` (#4589 - thanks to Mateusz Jurczyk of Google Project Zero for + identifying this issue) + ## [0.11.1] - 2024-26-11 ### Fixed diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libjxl-0.11.1/MODULE.bazel new/libjxl-0.11.2/MODULE.bazel --- old/libjxl-0.11.1/MODULE.bazel 2024-11-26 14:02:35.000000000 +0100 +++ new/libjxl-0.11.2/MODULE.bazel 2026-02-10 14:53:22.000000000 +0100 @@ -3,10 +3,24 @@ # Use of this source code is governed by a BSD-style # license that can be found in the LICENSE file. -bazel_dep(name = "bazel_skylib", version = "1.7.1") -bazel_dep(name = "giflib", version = "5.2.1") +module( + name = "libjxl", + repo_name = "libjxl", +) + +bazel_dep(name = "bazel_skylib", version = "1.8.2") +bazel_dep(name = "brotli", version = "1.1.0") +bazel_dep(name = "giflib", version = "5.2.1.bcr.1") bazel_dep(name = "googletest", version = "1.14.0") bazel_dep(name = "libjpeg_turbo", version = "2.1.91") -bazel_dep(name = "libpng", version = "1.6.40") -bazel_dep(name = "libwebp", version = "1.3.2") +bazel_dep(name = "libpng", version = "1.6.50.bcr.1") +bazel_dep(name = "libwebp", version = "1.6.0") bazel_dep(name = "openexr", version = "3.2.1") +bazel_dep(name = "skcms", version = "20250916.0") + +# Requires patching `MODULE.bazel` and `BUILD` files +bazel_dep(name = "highway", version = "1.2.0") +local_path_override( + module_name = "highway", + path = "third_party/highway", +) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libjxl-0.11.1/MODULE.bazel.lock new/libjxl-0.11.2/MODULE.bazel.lock --- old/libjxl-0.11.1/MODULE.bazel.lock 2024-11-26 14:02:35.000000000 +0100 +++ new/libjxl-0.11.2/MODULE.bazel.lock 2026-02-10 14:53:22.000000000 +0100 @@ -1,132 +1,238 @@ { - "lockFileVersion": 11, + "lockFileVersion": 18, "registryFileHashes": { "https://bcr.bazel.build/bazel_registry.json": "8a28e4aff06ee60aed2a8c281907fb8bcbf3b753c91fb5a5c57da3215d5b3497", "https://bcr.bazel.build/modules/abseil-cpp/20210324.2/MODULE.bazel": "7cd0312e064fde87c8d1cd79ba06c876bd23630c83466e9500321be55c96ace2", "https://bcr.bazel.build/modules/abseil-cpp/20211102.0/MODULE.bazel": "70390338f7a5106231d20620712f7cccb659cd0e9d073d1991c038eb9fc57589", "https://bcr.bazel.build/modules/abseil-cpp/20230125.1/MODULE.bazel": "89047429cb0207707b2dface14ba7f8df85273d484c2572755be4bab7ce9c3a0", - "https://bcr.bazel.build/modules/abseil-cpp/20230125.1/source.json": "06cc0842d241da0c5edc755edb3c7d0d008d304330e57ecf2d6449fb0b633a82", - "https://bcr.bazel.build/modules/apple_support/1.5.0/MODULE.bazel": "50341a62efbc483e8a2a6aec30994a58749bd7b885e18dd96aa8c33031e558ef", - "https://bcr.bazel.build/modules/apple_support/1.5.0/source.json": "eb98a7627c0bc486b57f598ad8da50f6625d974c8f723e9ea71bd39f709c9862", + "https://bcr.bazel.build/modules/abseil-cpp/20230802.0.bcr.1/MODULE.bazel": "1c8cec495288dccd14fdae6e3f95f772c1c91857047a098fad772034264cc8cb", + "https://bcr.bazel.build/modules/abseil-cpp/20230802.0/MODULE.bazel": "d253ae36a8bd9ee3c5955384096ccb6baf16a1b1e93e858370da0a3b94f77c16", + "https://bcr.bazel.build/modules/abseil-cpp/20230802.1/MODULE.bazel": "fa92e2eb41a04df73cdabeec37107316f7e5272650f81d6cc096418fe647b915", + "https://bcr.bazel.build/modules/abseil-cpp/20240116.1/MODULE.bazel": "37bcdb4440fbb61df6a1c296ae01b327f19e9bb521f9b8e26ec854b6f97309ed", + "https://bcr.bazel.build/modules/abseil-cpp/20240116.2/MODULE.bazel": "73939767a4686cd9a520d16af5ab440071ed75cec1a876bf2fcfaf1f71987a16", + "https://bcr.bazel.build/modules/abseil-cpp/20240116.2/source.json": "750d5e29326fb59cbe61116a7b803c8a1d0a7090a9c8ed89888d188e3c473fc7", + "https://bcr.bazel.build/modules/apple_support/1.15.1/MODULE.bazel": "a0556fefca0b1bb2de8567b8827518f94db6a6e7e7d632b4c48dc5f865bc7c85", + "https://bcr.bazel.build/modules/apple_support/1.23.1/MODULE.bazel": "53763fed456a968cf919b3240427cf3a9d5481ec5466abc9d5dc51bc70087442", + "https://bcr.bazel.build/modules/apple_support/1.23.1/source.json": "d888b44312eb0ad2c21a91d026753f330caa48a25c9b2102fae75eb2b0dcfdd2", + "https://bcr.bazel.build/modules/bazel_features/1.1.1/MODULE.bazel": "27b8c79ef57efe08efccbd9dd6ef70d61b4798320b8d3c134fd571f78963dbcd", "https://bcr.bazel.build/modules/bazel_features/1.11.0/MODULE.bazel": "f9382337dd5a474c3b7d334c2f83e50b6eaedc284253334cf823044a26de03e8", - "https://bcr.bazel.build/modules/bazel_features/1.11.0/source.json": "c9320aa53cd1c441d24bd6b716da087ad7e4ff0d9742a9884587596edfe53015", + "https://bcr.bazel.build/modules/bazel_features/1.15.0/MODULE.bazel": "d38ff6e517149dc509406aca0db3ad1efdd890a85e049585b7234d04238e2a4d", + "https://bcr.bazel.build/modules/bazel_features/1.17.0/MODULE.bazel": "039de32d21b816b47bd42c778e0454217e9c9caac4a3cf8e15c7231ee3ddee4d", + "https://bcr.bazel.build/modules/bazel_features/1.18.0/MODULE.bazel": "1be0ae2557ab3a72a57aeb31b29be347bcdc5d2b1eb1e70f39e3851a7e97041a", + "https://bcr.bazel.build/modules/bazel_features/1.19.0/MODULE.bazel": "59adcdf28230d220f0067b1f435b8537dd033bfff8db21335ef9217919c7fb58", + "https://bcr.bazel.build/modules/bazel_features/1.27.0/MODULE.bazel": "621eeee06c4458a9121d1f104efb80f39d34deff4984e778359c60eaf1a8cb65", + "https://bcr.bazel.build/modules/bazel_features/1.28.0/MODULE.bazel": "4b4200e6cbf8fa335b2c3f43e1d6ef3e240319c33d43d60cc0fbd4b87ece299d", + "https://bcr.bazel.build/modules/bazel_features/1.30.0/MODULE.bazel": "a14b62d05969a293b80257e72e597c2da7f717e1e69fa8b339703ed6731bec87", + "https://bcr.bazel.build/modules/bazel_features/1.30.0/source.json": "b07e17f067fe4f69f90b03b36ef1e08fe0d1f3cac254c1241a1818773e3423bc", + "https://bcr.bazel.build/modules/bazel_features/1.4.1/MODULE.bazel": "e45b6bb2350aff3e442ae1111c555e27eac1d915e77775f6fdc4b351b758b5d7", + "https://bcr.bazel.build/modules/bazel_features/1.9.1/MODULE.bazel": "8f679097876a9b609ad1f60249c49d68bfab783dd9be012faf9d82547b14815a", "https://bcr.bazel.build/modules/bazel_skylib/1.0.3/MODULE.bazel": "bcb0fd896384802d1ad283b4e4eb4d718eebd8cb820b0a2c3a347fb971afd9d8", + "https://bcr.bazel.build/modules/bazel_skylib/1.1.1/MODULE.bazel": "1add3e7d93ff2e6998f9e118022c84d163917d912f5afafb3058e3d2f1545b5e", + "https://bcr.bazel.build/modules/bazel_skylib/1.2.0/MODULE.bazel": "44fe84260e454ed94ad326352a698422dbe372b21a1ac9f3eab76eb531223686", "https://bcr.bazel.build/modules/bazel_skylib/1.2.1/MODULE.bazel": "f35baf9da0efe45fa3da1696ae906eea3d615ad41e2e3def4aeb4e8bc0ef9a7a", "https://bcr.bazel.build/modules/bazel_skylib/1.3.0/MODULE.bazel": "20228b92868bf5cfc41bda7afc8a8ba2a543201851de39d990ec957b513579c5", "https://bcr.bazel.build/modules/bazel_skylib/1.4.1/MODULE.bazel": "a0dcb779424be33100dcae821e9e27e4f2901d9dfd5333efe5ac6a8d7ab75e1d", "https://bcr.bazel.build/modules/bazel_skylib/1.4.2/MODULE.bazel": "3bd40978e7a1fac911d5989e6b09d8f64921865a45822d8b09e815eaa726a651", "https://bcr.bazel.build/modules/bazel_skylib/1.5.0/MODULE.bazel": "32880f5e2945ce6a03d1fbd588e9198c0a959bb42297b2cfaf1685b7bc32e138", "https://bcr.bazel.build/modules/bazel_skylib/1.6.1/MODULE.bazel": "8fdee2dbaace6c252131c00e1de4b165dc65af02ea278476187765e1a617b917", + "https://bcr.bazel.build/modules/bazel_skylib/1.7.0/MODULE.bazel": "0db596f4563de7938de764cc8deeabec291f55e8ec15299718b93c4423e9796d", "https://bcr.bazel.build/modules/bazel_skylib/1.7.1/MODULE.bazel": "3120d80c5861aa616222ec015332e5f8d3171e062e3e804a2a0253e1be26e59b", - "https://bcr.bazel.build/modules/bazel_skylib/1.7.1/source.json": "f121b43eeefc7c29efbd51b83d08631e2347297c95aac9764a701f2a6a2bb953", + "https://bcr.bazel.build/modules/bazel_skylib/1.8.2/MODULE.bazel": "69ad6927098316848b34a9142bcc975e018ba27f08c4ff403f50c1b6e646ca67", + "https://bcr.bazel.build/modules/bazel_skylib/1.8.2/source.json": "34a3c8bcf233b835eb74be9d628899bb32999d3e0eadef1947a0a562a2b16ffb", + "https://bcr.bazel.build/modules/brotli/1.1.0/MODULE.bazel": "3b5b90488995183419c4b5c9b063a164f6c0bc4d0d6b40550a612a5e860cc0fe", + "https://bcr.bazel.build/modules/brotli/1.1.0/source.json": "098a4fd315527166e8dfe1fd1537c96a737a83764be38fc43f4da231d600f3d0", "https://bcr.bazel.build/modules/buildozer/7.1.2/MODULE.bazel": "2e8dd40ede9c454042645fd8d8d0cd1527966aa5c919de86661e62953cd73d84", "https://bcr.bazel.build/modules/buildozer/7.1.2/source.json": "c9028a501d2db85793a6996205c8de120944f50a0d570438fcae0457a5f9d1f8", "https://bcr.bazel.build/modules/giflib/5.2.1/MODULE.bazel": "810dbc4275425c89ffe648dd78c537fe2eb1d2a9704d10e950b295263af03366", "https://bcr.bazel.build/modules/giflib/5.2.1/source.json": "94215af981976c329eaec0083727b155ea89607e61debea50ed508e7963ef9a6", + "https://bcr.bazel.build/modules/google_benchmark/1.8.2/MODULE.bazel": "a70cf1bba851000ba93b58ae2f6d76490a9feb74192e57ab8e8ff13c34ec50cb", "https://bcr.bazel.build/modules/googletest/1.11.0/MODULE.bazel": "3a83f095183f66345ca86aa13c58b59f9f94a2f81999c093d4eeaa2d262d12f4", + "https://bcr.bazel.build/modules/googletest/1.14.0.bcr.1/MODULE.bazel": "22c31a561553727960057361aa33bf20fb2e98584bc4fec007906e27053f80c6", "https://bcr.bazel.build/modules/googletest/1.14.0/MODULE.bazel": "cfbcbf3e6eac06ef9d85900f64424708cc08687d1b527f0ef65aa7517af8118f", - "https://bcr.bazel.build/modules/googletest/1.14.0/source.json": "2478949479000fdd7de9a3d0107ba2c85bb5f961c3ecb1aa448f52549ce310b5", + "https://bcr.bazel.build/modules/googletest/1.15.2/MODULE.bazel": "6de1edc1d26cafb0ea1a6ab3f4d4192d91a312fd2d360b63adaa213cd00b2108", + "https://bcr.bazel.build/modules/googletest/1.15.2/source.json": "dbdda654dcb3a0d7a8bc5d0ac5fc7e150b58c2a986025ae5bc634bb2cb61f470", "https://bcr.bazel.build/modules/imath/3.1.9/MODULE.bazel": "26fe47ee8137a4c605667fb0d26a5c12b8fb2e758824a376789b287b2f9d424d", "https://bcr.bazel.build/modules/imath/3.1.9/source.json": "22b7d9e617d4d26626f5ac8fba3cd2bd7a87f7501c99fa847f8d9e2980416e8f", + "https://bcr.bazel.build/modules/jsoncpp/1.9.5/MODULE.bazel": "31271aedc59e815656f5736f282bb7509a97c7ecb43e927ac1a37966e0578075", + "https://bcr.bazel.build/modules/jsoncpp/1.9.5/source.json": "4108ee5085dd2885a341c7fab149429db457b3169b86eb081fa245eadf69169d", "https://bcr.bazel.build/modules/libdeflate/1.19/MODULE.bazel": "b7396a2edfd5ce6669509fbdd10db5e8731d60954063699c546c3126c8156824", "https://bcr.bazel.build/modules/libdeflate/1.19/source.json": "d4604a526efba9b5347309de49673bbe152da465f7c80c7f7ffe6800d8b504d1", "https://bcr.bazel.build/modules/libjpeg_turbo/2.1.91/MODULE.bazel": "bcc23b7c4866af2d7777ee49db435603ca1e35b90ea0689f8051900fa8c73c6b", "https://bcr.bazel.build/modules/libjpeg_turbo/2.1.91/source.json": "42ea85708058e2408f229075e1cbeaad13fa2719918ff9c505be5e22b57ef17b", - "https://bcr.bazel.build/modules/libpng/1.6.40/MODULE.bazel": "cc1952a9b5efd4df3dfdb9f9ba2b1c8d88b4fd9b0e474185cb81d90a31c7c453", - "https://bcr.bazel.build/modules/libpng/1.6.40/source.json": "2fe294bf161c2d3f1e04e7cecb6eb2e6c0c198698b23cabc1c4e6ff77d82a86a", - "https://bcr.bazel.build/modules/libwebp/1.3.2/MODULE.bazel": "c60edf34a913daebac9bd2cbe17b84048e4a7a5d3571f70be93c1b1227a69659", - "https://bcr.bazel.build/modules/libwebp/1.3.2/source.json": "e7b8d3047ad9758fda22fcf46bd8b57414b0eb5e7903f4ce888683d778633cf7", + "https://bcr.bazel.build/modules/libpfm/4.11.0/MODULE.bazel": "45061ff025b301940f1e30d2c16bea596c25b176c8b6b3087e92615adbd52902", + "https://bcr.bazel.build/modules/libpng/1.6.50.bcr.1/MODULE.bazel": "5a5bef9f8b723d04b194b80071b927653a4064379bb6673c829fd3c14828fba0", + "https://bcr.bazel.build/modules/libpng/1.6.50.bcr.1/source.json": "90245ae3e111b84da48061935c3f6ebc658e3c87e5bd8c6e2f19cd7eec43203a", + "https://bcr.bazel.build/modules/libwebp/1.6.0/MODULE.bazel": "b541e9026102a85fa3b5ec890e20f186e1664a06ab0f876bbfb3165f81c9b5df", + "https://bcr.bazel.build/modules/libwebp/1.6.0/source.json": "ff540383b07271ba7d1a3ebe332dd0910a92dc13cd16e525305205526559ee6f", "https://bcr.bazel.build/modules/openexr/3.2.1/MODULE.bazel": "5665fa95490825760943601d618e2d70eb45378ea3f2961c5ec18f23ae8a2106", "https://bcr.bazel.build/modules/openexr/3.2.1/source.json": "afc17dda6614ff723cc1def634fa4f33534d3d29514b089fa4aa5eb47ba1c65b", + "https://bcr.bazel.build/modules/platforms/0.0.10/MODULE.bazel": "8cb8efaf200bdeb2150d93e162c40f388529a25852b332cec879373771e48ed5", + "https://bcr.bazel.build/modules/platforms/0.0.11/MODULE.bazel": "0daefc49732e227caa8bfa834d65dc52e8cc18a2faf80df25e8caea151a9413f", "https://bcr.bazel.build/modules/platforms/0.0.4/MODULE.bazel": "9b328e31ee156f53f3c416a64f8491f7eb731742655a47c9eec4703a71644aee", "https://bcr.bazel.build/modules/platforms/0.0.5/MODULE.bazel": "5733b54ea419d5eaf7997054bb55f6a1d0b5ff8aedf0176fef9eea44f3acda37", "https://bcr.bazel.build/modules/platforms/0.0.6/MODULE.bazel": "ad6eeef431dc52aefd2d77ed20a4b353f8ebf0f4ecdd26a807d2da5aa8cd0615", "https://bcr.bazel.build/modules/platforms/0.0.7/MODULE.bazel": "72fd4a0ede9ee5c021f6a8dd92b503e089f46c227ba2813ff183b71616034814", "https://bcr.bazel.build/modules/platforms/0.0.8/MODULE.bazel": "9f142c03e348f6d263719f5074b21ef3adf0b139ee4c5133e2aa35664da9eb2d", "https://bcr.bazel.build/modules/platforms/0.0.9/MODULE.bazel": "4a87a60c927b56ddd67db50c89acaa62f4ce2a1d2149ccb63ffd871d5ce29ebc", - "https://bcr.bazel.build/modules/platforms/0.0.9/source.json": "cd74d854bf16a9e002fb2ca7b1a421f4403cda29f824a765acd3a8c56f8d43e6", + "https://bcr.bazel.build/modules/platforms/1.0.0/MODULE.bazel": "f05feb42b48f1b3c225e4ccf351f367be0371411a803198ec34a389fb22aa580", + "https://bcr.bazel.build/modules/platforms/1.0.0/source.json": "f4ff1fd412e0246fd38c82328eb209130ead81d62dcd5a9e40910f867f733d96", "https://bcr.bazel.build/modules/protobuf/21.7/MODULE.bazel": "a5a29bb89544f9b97edce05642fac225a808b5b7be74038ea3640fae2f8e66a7", - "https://bcr.bazel.build/modules/protobuf/21.7/source.json": "bbe500720421e582ff2d18b0802464205138c06056f443184de39fbb8187b09b", + "https://bcr.bazel.build/modules/protobuf/27.0/MODULE.bazel": "7873b60be88844a0a1d8f80b9d5d20cfbd8495a689b8763e76c6372998d3f64c", + "https://bcr.bazel.build/modules/protobuf/27.1/MODULE.bazel": "703a7b614728bb06647f965264967a8ef1c39e09e8f167b3ca0bb1fd80449c0d", + "https://bcr.bazel.build/modules/protobuf/29.0-rc2/MODULE.bazel": "6241d35983510143049943fc0d57937937122baf1b287862f9dc8590fc4c37df", + "https://bcr.bazel.build/modules/protobuf/29.0/MODULE.bazel": "319dc8bf4c679ff87e71b1ccfb5a6e90a6dbc4693501d471f48662ac46d04e4e", + "https://bcr.bazel.build/modules/protobuf/29.0/source.json": "b857f93c796750eef95f0d61ee378f3420d00ee1dd38627b27193aa482f4f981", "https://bcr.bazel.build/modules/protobuf/3.19.0/MODULE.bazel": "6b5fbb433f760a99a22b18b6850ed5784ef0e9928a72668b66e4d7ccd47db9b0", - "https://bcr.bazel.build/modules/protobuf/3.19.6/MODULE.bazel": "9233edc5e1f2ee276a60de3eaa47ac4132302ef9643238f23128fea53ea12858", + "https://bcr.bazel.build/modules/pybind11_bazel/2.11.1/MODULE.bazel": "88af1c246226d87e65be78ed49ecd1e6f5e98648558c14ce99176da041dc378e", + "https://bcr.bazel.build/modules/pybind11_bazel/2.12.0/MODULE.bazel": "e6f4c20442eaa7c90d7190d8dc539d0ab422f95c65a57cc59562170c58ae3d34", + "https://bcr.bazel.build/modules/pybind11_bazel/2.12.0/source.json": "6900fdc8a9e95866b8c0d4ad4aba4d4236317b5c1cd04c502df3f0d33afed680", + "https://bcr.bazel.build/modules/re2/2023-09-01/MODULE.bazel": "cb3d511531b16cfc78a225a9e2136007a48cf8a677e4264baeab57fe78a80206", + "https://bcr.bazel.build/modules/re2/2024-07-02/MODULE.bazel": "0eadc4395959969297cbcf31a249ff457f2f1d456228c67719480205aa306daa", + "https://bcr.bazel.build/modules/re2/2024-07-02/source.json": "547d0111a9d4f362db32196fef805abbf3676e8d6afbe44d395d87816c1130ca", + "https://bcr.bazel.build/modules/rules_android/0.1.1/MODULE.bazel": "48809ab0091b07ad0182defb787c4c5328bd3a278938415c00a7b69b50c4d3a8", + "https://bcr.bazel.build/modules/rules_android/0.1.1/source.json": "e6986b41626ee10bdc864937ffb6d6bf275bb5b9c65120e6137d56e6331f089e", "https://bcr.bazel.build/modules/rules_cc/0.0.1/MODULE.bazel": "cb2aa0747f84c6c3a78dad4e2049c154f08ab9d166b1273835a8174940365647", + "https://bcr.bazel.build/modules/rules_cc/0.0.10/MODULE.bazel": "ec1705118f7eaedd6e118508d3d26deba2a4e76476ada7e0e3965211be012002", + "https://bcr.bazel.build/modules/rules_cc/0.0.13/MODULE.bazel": "0e8529ed7b323dad0775ff924d2ae5af7640b23553dfcd4d34344c7e7a867191", + "https://bcr.bazel.build/modules/rules_cc/0.0.14/MODULE.bazel": "5e343a3aac88b8d7af3b1b6d2093b55c347b8eefc2e7d1442f7a02dc8fea48ac", + "https://bcr.bazel.build/modules/rules_cc/0.0.15/MODULE.bazel": "6704c35f7b4a72502ee81f61bf88706b54f06b3cbe5558ac17e2e14666cd5dcc", + "https://bcr.bazel.build/modules/rules_cc/0.0.16/MODULE.bazel": "7661303b8fc1b4d7f532e54e9d6565771fea666fbdf839e0a86affcd02defe87", "https://bcr.bazel.build/modules/rules_cc/0.0.2/MODULE.bazel": "6915987c90970493ab97393024c156ea8fb9f3bea953b2f3ec05c34f19b5695c", "https://bcr.bazel.build/modules/rules_cc/0.0.6/MODULE.bazel": "abf360251023dfe3efcef65ab9d56beefa8394d4176dd29529750e1c57eaa33f", "https://bcr.bazel.build/modules/rules_cc/0.0.8/MODULE.bazel": "964c85c82cfeb6f3855e6a07054fdb159aced38e99a5eecf7bce9d53990afa3e", "https://bcr.bazel.build/modules/rules_cc/0.0.9/MODULE.bazel": "836e76439f354b89afe6a911a7adf59a6b2518fafb174483ad78a2a2fde7b1c5", - "https://bcr.bazel.build/modules/rules_cc/0.0.9/source.json": "1f1ba6fea244b616de4a554a0f4983c91a9301640c8fe0dd1d410254115c8430", + "https://bcr.bazel.build/modules/rules_cc/0.1.1/MODULE.bazel": "2f0222a6f229f0bf44cd711dc13c858dad98c62d52bd51d8fc3a764a83125513", + "https://bcr.bazel.build/modules/rules_cc/0.1.2/MODULE.bazel": "557ddc3a96858ec0d465a87c0a931054d7dcfd6583af2c7ed3baf494407fd8d0", + "https://bcr.bazel.build/modules/rules_cc/0.1.2/source.json": "53fcb09b5816c83ca60d9d7493faf3bfaf410dfc2f15deb52d6ddd146b8d43f0", + "https://bcr.bazel.build/modules/rules_foreign_cc/0.9.0/MODULE.bazel": "c9e8c682bf75b0e7c704166d79b599f93b72cfca5ad7477df596947891feeef6", + "https://bcr.bazel.build/modules/rules_fuzzing/0.5.2/MODULE.bazel": "40c97d1144356f52905566c55811f13b299453a14ac7769dfba2ac38192337a8", + "https://bcr.bazel.build/modules/rules_fuzzing/0.5.2/source.json": "c8b1e2c717646f1702290959a3302a178fb639d987ab61d548105019f11e527e", "https://bcr.bazel.build/modules/rules_java/4.0.0/MODULE.bazel": "5a78a7ae82cd1a33cef56dc578c7d2a46ed0dca12643ee45edbb8417899e6f74", + "https://bcr.bazel.build/modules/rules_java/5.3.5/MODULE.bazel": "a4ec4f2db570171e3e5eb753276ee4b389bae16b96207e9d3230895c99644b86", + "https://bcr.bazel.build/modules/rules_java/6.0.0/MODULE.bazel": "8a43b7df601a7ec1af61d79345c17b31ea1fedc6711fd4abfd013ea612978e39", + "https://bcr.bazel.build/modules/rules_java/6.4.0/MODULE.bazel": "e986a9fe25aeaa84ac17ca093ef13a4637f6107375f64667a15999f77db6c8f6", + "https://bcr.bazel.build/modules/rules_java/6.5.2/MODULE.bazel": "1d440d262d0e08453fa0c4d8f699ba81609ed0e9a9a0f02cd10b3e7942e61e31", + "https://bcr.bazel.build/modules/rules_java/7.10.0/MODULE.bazel": "530c3beb3067e870561739f1144329a21c851ff771cd752a49e06e3dc9c2e71a", + "https://bcr.bazel.build/modules/rules_java/7.12.2/MODULE.bazel": "579c505165ee757a4280ef83cda0150eea193eed3bef50b1004ba88b99da6de6", + "https://bcr.bazel.build/modules/rules_java/7.2.0/MODULE.bazel": "06c0334c9be61e6cef2c8c84a7800cef502063269a5af25ceb100b192453d4ab", + "https://bcr.bazel.build/modules/rules_java/7.3.2/MODULE.bazel": "50dece891cfdf1741ea230d001aa9c14398062f2b7c066470accace78e412bc2", "https://bcr.bazel.build/modules/rules_java/7.6.1/MODULE.bazel": "2f14b7e8a1aa2f67ae92bc69d1ec0fa8d9f827c4e17ff5e5f02e91caa3b2d0fe", - "https://bcr.bazel.build/modules/rules_java/7.6.1/source.json": "8f3f3076554e1558e8e468b2232991c510ecbcbed9e6f8c06ac31c93bcf38362", + "https://bcr.bazel.build/modules/rules_java/8.14.0/MODULE.bazel": "717717ed40cc69994596a45aec6ea78135ea434b8402fb91b009b9151dd65615", + "https://bcr.bazel.build/modules/rules_java/8.14.0/source.json": "8a88c4ca9e8759da53cddc88123880565c520503321e2566b4e33d0287a3d4bc", "https://bcr.bazel.build/modules/rules_jvm_external/4.4.2/MODULE.bazel": "a56b85e418c83eb1839819f0b515c431010160383306d13ec21959ac412d2fe7", - "https://bcr.bazel.build/modules/rules_jvm_external/4.4.2/source.json": "a075731e1b46bc8425098512d038d416e966ab19684a10a34f4741295642fc35", + "https://bcr.bazel.build/modules/rules_jvm_external/5.1/MODULE.bazel": "33f6f999e03183f7d088c9be518a63467dfd0be94a11d0055fe2d210f89aa909", + "https://bcr.bazel.build/modules/rules_jvm_external/5.2/MODULE.bazel": "d9351ba35217ad0de03816ef3ed63f89d411349353077348a45348b096615036", + "https://bcr.bazel.build/modules/rules_jvm_external/5.3/MODULE.bazel": "bf93870767689637164657731849fb887ad086739bd5d360d90007a581d5527d", + "https://bcr.bazel.build/modules/rules_jvm_external/6.1/MODULE.bazel": "75b5fec090dbd46cf9b7d8ea08cf84a0472d92ba3585b476f44c326eda8059c4", + "https://bcr.bazel.build/modules/rules_jvm_external/6.3/MODULE.bazel": "c998e060b85f71e00de5ec552019347c8bca255062c990ac02d051bb80a38df0", + "https://bcr.bazel.build/modules/rules_jvm_external/6.3/source.json": "6f5f5a5a4419ae4e37c35a5bb0a6ae657ed40b7abc5a5189111b47fcebe43197", + "https://bcr.bazel.build/modules/rules_kotlin/1.9.0/MODULE.bazel": "ef85697305025e5a61f395d4eaede272a5393cee479ace6686dba707de804d59", + "https://bcr.bazel.build/modules/rules_kotlin/1.9.6/MODULE.bazel": "d269a01a18ee74d0335450b10f62c9ed81f2321d7958a2934e44272fe82dcef3", + "https://bcr.bazel.build/modules/rules_kotlin/1.9.6/source.json": "2faa4794364282db7c06600b7e5e34867a564ae91bda7cae7c29c64e9466b7d5", "https://bcr.bazel.build/modules/rules_license/0.0.3/MODULE.bazel": "627e9ab0247f7d1e05736b59dbb1b6871373de5ad31c3011880b4133cafd4bd0", "https://bcr.bazel.build/modules/rules_license/0.0.7/MODULE.bazel": "088fbeb0b6a419005b89cf93fe62d9517c0a2b8bb56af3244af65ecfe37e7d5d", - "https://bcr.bazel.build/modules/rules_license/0.0.7/source.json": "355cc5737a0f294e560d52b1b7a6492d4fff2caf0bef1a315df5a298fca2d34a", + "https://bcr.bazel.build/modules/rules_license/1.0.0/MODULE.bazel": "a7fda60eefdf3d8c827262ba499957e4df06f659330bbe6cdbdb975b768bb65c", + "https://bcr.bazel.build/modules/rules_license/1.0.0/source.json": "a52c89e54cc311196e478f8382df91c15f7a2bfdf4c6cd0e2675cc2ff0b56efb", "https://bcr.bazel.build/modules/rules_pkg/0.7.0/MODULE.bazel": "df99f03fc7934a4737122518bb87e667e62d780b610910f0447665a7e2be62dc", - "https://bcr.bazel.build/modules/rules_pkg/0.7.0/source.json": "c2557066e0c0342223ba592510ad3d812d4963b9024831f7f66fd0584dd8c66c", + "https://bcr.bazel.build/modules/rules_pkg/1.0.1/MODULE.bazel": "5b1df97dbc29623bccdf2b0dcd0f5cb08e2f2c9050aab1092fd39a41e82686ff", + "https://bcr.bazel.build/modules/rules_pkg/1.0.1/source.json": "bd82e5d7b9ce2d31e380dd9f50c111d678c3bdaca190cb76b0e1c71b05e1ba8a", "https://bcr.bazel.build/modules/rules_proto/4.0.0/MODULE.bazel": "a7a7b6ce9bee418c1a760b3d84f83a299ad6952f9903c67f19e4edd964894e06", "https://bcr.bazel.build/modules/rules_proto/5.3.0-21.7/MODULE.bazel": "e8dff86b0971688790ae75528fe1813f71809b5afd57facb44dad9e8eca631b7", - "https://bcr.bazel.build/modules/rules_proto/5.3.0-21.7/source.json": "d57902c052424dfda0e71646cb12668d39c4620ee0544294d9d941e7d12bc3a9", + "https://bcr.bazel.build/modules/rules_proto/6.0.0-rc1/MODULE.bazel": "1e5b502e2e1a9e825eef74476a5a1ee524a92297085015a052510b09a1a09483", + "https://bcr.bazel.build/modules/rules_proto/6.0.2/MODULE.bazel": "ce916b775a62b90b61888052a416ccdda405212b6aaeb39522f7dc53431a5e73", + "https://bcr.bazel.build/modules/rules_proto/7.0.2/MODULE.bazel": "bf81793bd6d2ad89a37a40693e56c61b0ee30f7a7fdbaf3eabbf5f39de47dea2", + "https://bcr.bazel.build/modules/rules_proto/7.0.2/source.json": "1e5e7260ae32ef4f2b52fd1d0de8d03b606a44c91b694d2f1afb1d3b28a48ce1", "https://bcr.bazel.build/modules/rules_python/0.10.2/MODULE.bazel": "cc82bc96f2997baa545ab3ce73f196d040ffb8756fd2d66125a530031cd90e5f", - "https://bcr.bazel.build/modules/rules_python/0.22.1/MODULE.bazel": "26114f0c0b5e93018c0c066d6673f1a2c3737c7e90af95eff30cfee38d0bbac7", - "https://bcr.bazel.build/modules/rules_python/0.22.1/source.json": "57226905e783bae7c37c2dd662be078728e48fa28ee4324a7eabcafb5a43d014", + "https://bcr.bazel.build/modules/rules_python/0.23.1/MODULE.bazel": "49ffccf0511cb8414de28321f5fcf2a31312b47c40cc21577144b7447f2bf300", + "https://bcr.bazel.build/modules/rules_python/0.25.0/MODULE.bazel": "72f1506841c920a1afec76975b35312410eea3aa7b63267436bfb1dd91d2d382", + "https://bcr.bazel.build/modules/rules_python/0.28.0/MODULE.bazel": "cba2573d870babc976664a912539b320cbaa7114cd3e8f053c720171cde331ed", + "https://bcr.bazel.build/modules/rules_python/0.31.0/MODULE.bazel": "93a43dc47ee570e6ec9f5779b2e64c1476a6ce921c48cc9a1678a91dd5f8fd58", + "https://bcr.bazel.build/modules/rules_python/0.33.2/MODULE.bazel": "3e036c4ad8d804a4dad897d333d8dce200d943df4827cb849840055be8d2e937", "https://bcr.bazel.build/modules/rules_python/0.4.0/MODULE.bazel": "9208ee05fd48bf09ac60ed269791cf17fb343db56c8226a720fbb1cdf467166c", + "https://bcr.bazel.build/modules/rules_python/0.40.0/MODULE.bazel": "9d1a3cd88ed7d8e39583d9ffe56ae8a244f67783ae89b60caafc9f5cf318ada7", + "https://bcr.bazel.build/modules/rules_python/0.40.0/source.json": "939d4bd2e3110f27bfb360292986bb79fd8dcefb874358ccd6cdaa7bda029320", + "https://bcr.bazel.build/modules/rules_shell/0.2.0/MODULE.bazel": "fda8a652ab3c7d8fee214de05e7a9916d8b28082234e8d2c0094505c5268ed3c", + "https://bcr.bazel.build/modules/rules_shell/0.2.0/source.json": "7f27af3c28037d9701487c4744b5448d26537cc66cdef0d8df7ae85411f8de95", + "https://bcr.bazel.build/modules/skcms/20250916.0/MODULE.bazel": "4dd6405c5c5220e0d1ea218094a2f1541acceaf85e066747ec94878c9553a07f", + "https://bcr.bazel.build/modules/skcms/20250916.0/source.json": "f979e9985009d3d8913dd7b211e6ae4ec0152fdd70ef1d5dc4538a5abaa93df8", "https://bcr.bazel.build/modules/stardoc/0.5.1/MODULE.bazel": "1a05d92974d0c122f5ccf09291442580317cdd859f07a8655f1db9a60374f9f8", - "https://bcr.bazel.build/modules/stardoc/0.5.1/source.json": "a96f95e02123320aa015b956f29c00cb818fa891ef823d55148e1a362caacf29", + "https://bcr.bazel.build/modules/stardoc/0.5.3/MODULE.bazel": "c7f6948dae6999bf0db32c1858ae345f112cacf98f174c7a8bb707e41b974f1c", + "https://bcr.bazel.build/modules/stardoc/0.5.6/MODULE.bazel": "c43dabc564990eeab55e25ed61c07a1aadafe9ece96a4efabb3f8bf9063b71ef", + "https://bcr.bazel.build/modules/stardoc/0.7.0/MODULE.bazel": "05e3d6d30c099b6770e97da986c53bd31844d7f13d41412480ea265ac9e8079c", + "https://bcr.bazel.build/modules/stardoc/0.7.1/MODULE.bazel": "3548faea4ee5dda5580f9af150e79d0f6aea934fc60c1cc50f4efdd9420759e7", + "https://bcr.bazel.build/modules/stardoc/0.7.1/source.json": "b6500ffcd7b48cd72c29bb67bcac781e12701cc0d6d55d266a652583cfcdab01", "https://bcr.bazel.build/modules/upb/0.0.0-20220923-a547704/MODULE.bazel": "7298990c00040a0e2f121f6c32544bab27d4452f80d9ce51349b1a28f3005c43", - "https://bcr.bazel.build/modules/upb/0.0.0-20220923-a547704/source.json": "f1ef7d3f9e0e26d4b23d1c39b5f5de71f584dd7d1b4ef83d9bbba6ec7a6a6459", "https://bcr.bazel.build/modules/zlib/1.2.11/MODULE.bazel": "07b389abc85fdbca459b69e2ec656ae5622873af3f845e1c9d80fe179f3effa0", - "https://bcr.bazel.build/modules/zlib/1.2.12/MODULE.bazel": "3b1a8834ada2a883674be8cbd36ede1b6ec481477ada359cd2d3ddc562340b27", - "https://bcr.bazel.build/modules/zlib/1.3/MODULE.bazel": "6a9c02f19a24dcedb05572b2381446e27c272cd383aed11d41d99da9e3167a72", - "https://bcr.bazel.build/modules/zlib/1.3/source.json": "b6b43d0737af846022636e6e255fd4a96fee0d34f08f3830e6e0bac51465c37c" + "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.5/MODULE.bazel": "eec517b5bbe5492629466e11dae908d043364302283de25581e3eb944326c4ca", + "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.6/MODULE.bazel": "e937cf0a3772f93ad91f3c7af4f330b76a878bbfee06527ca1a9673b790eb896", + "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.6/source.json": "5f397158198f338129c865a4c3ae21bc5626a9664b3c3b40fa3b3c2ec1ff83bf", + "https://bcr.bazel.build/modules/zlib/1.3.1/MODULE.bazel": "751c9940dcfe869f5f7274e1295422a34623555916eb98c174c1e945594bf198" }, "selectedYankedVersions": {}, "moduleExtensions": { - "@@apple_support~//crosstool:setup.bzl%apple_cc_configure_extension": { + "@@rules_kotlin+//src/main/starlark/core/repositories:bzlmod_setup.bzl%rules_kotlin_extensions": { "general": { - "bzlTransitiveDigest": "PjIds3feoYE8SGbbIq2SFTZy3zmxeO2tQevJZNDo7iY=", - "usagesDigest": "aLmqbvowmHkkBPve05yyDNGN7oh7QE9kBADr3QIZTZs=", + "bzlTransitiveDigest": "OlvsB0HsvxbR8ZN+J9Vf00X/+WVz/Y/5Xrq2LgcVfdo=", + "usagesDigest": "QI2z8ZUR+mqtbwsf2fLqYdJAkPOHdOV+tF2yVAUgRzw=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, "generatedRepoSpecs": { - "local_config_apple_cc": { - "bzlFile": "@@apple_support~//crosstool:setup.bzl", - "ruleClassName": "_apple_cc_autoconf", - "attributes": {} + "com_github_jetbrains_kotlin_git": { + "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:compiler.bzl%kotlin_compiler_git_repository", + "attributes": { + "urls": [ + "https://github.com/JetBrains/kotlin/releases/download/v1.9.23/kotlin-compiler-1.9.23.zip" + ], + "sha256": "93137d3aab9afa9b27cb06a824c2324195c6b6f6179d8a8653f440f5bd58be88" + } }, - "local_config_apple_cc_toolchains": { - "bzlFile": "@@apple_support~//crosstool:setup.bzl", - "ruleClassName": "_apple_cc_autoconf_toolchains", - "attributes": {} + "com_github_jetbrains_kotlin": { + "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:compiler.bzl%kotlin_capabilities_repository", + "attributes": { + "git_repository_name": "com_github_jetbrains_kotlin_git", + "compiler_version": "1.9.23" + } + }, + "com_github_google_ksp": { + "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:ksp.bzl%ksp_compiler_plugin_repository", + "attributes": { + "urls": [ + "https://github.com/google/ksp/releases/download/1.9.23-1.0.20/artifacts.zip" + ], + "sha256": "ee0618755913ef7fd6511288a232e8fad24838b9af6ea73972a76e81053c8c2d", + "strip_version": "1.9.23-1.0.20" + } + }, + "com_github_pinterest_ktlint": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_file", + "attributes": { + "sha256": "01b2e0ef893383a50dbeb13970fe7fa3be36ca3e83259e01649945b09d736985", + "urls": [ + "https://github.com/pinterest/ktlint/releases/download/1.3.0/ktlint" + ], + "executable": true + } + }, + "rules_android": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "sha256": "cd06d15dd8bb59926e4d65f9003bfc20f9da4b2519985c27e190cddc8b7a7806", + "strip_prefix": "rules_android-0.1.1", + "urls": [ + "https://github.com/bazelbuild/rules_android/archive/v0.1.1.zip" + ] + } } }, "recordedRepoMappingEntries": [ [ - "apple_support~", + "rules_kotlin+", "bazel_tools", "bazel_tools" ] ] } - }, - "@@platforms//host:extension.bzl%host_platform": { - "general": { - "bzlTransitiveDigest": "xelQcPZH8+tmuOHVjL9vDxMnnQNMlwj0SlvgoqBkm4U=", - "usagesDigest": "meSzxn3DUCcYEhq4HQwExWkWtU4EjriRBQLsZN+Q0SU=", - "recordedFileInputs": {}, - "recordedDirentsInputs": {}, - "envVariables": {}, - "generatedRepoSpecs": { - "host_platform": { - "bzlFile": "@@platforms//host:extension.bzl", - "ruleClassName": "host_platform_repo", - "attributes": {} - } - }, - "recordedRepoMappingEntries": [] - } } } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libjxl-0.11.1/WORKSPACE new/libjxl-0.11.2/WORKSPACE --- old/libjxl-0.11.1/WORKSPACE 2024-11-26 14:02:35.000000000 +0100 +++ new/libjxl-0.11.2/WORKSPACE 1970-01-01 01:00:00.000000000 +0100 @@ -1,37 +0,0 @@ -# Copyright (c) the JPEG XL Project Authors. All rights reserved. -# -# Use of this source code is governed by a BSD-style -# license that can be found in the LICENSE file. - -workspace(name = "libjxl") - -load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository", "new_git_repository") -load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") - -local_repository( - name = "highway", - path = "third_party/highway", -) - -local_repository( - name = "brotli", - path = "third_party/brotli", -) - -new_local_repository( - name = "skcms", - build_file_content = """ -cc_library( - name = "skcms", - srcs = [ - "skcms.cc", - "src/skcms_internals.h", - "src/skcms_Transform.h", - "src/Transform_inl.h", - ], - hdrs = ["skcms.h"], - visibility = ["//visibility:public"], -) - """, - path = "third_party/skcms", -) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libjxl-0.11.1/ci.sh new/libjxl-0.11.2/ci.sh --- old/libjxl-0.11.1/ci.sh 2024-11-26 14:02:35.000000000 +0100 +++ new/libjxl-0.11.2/ci.sh 2026-02-10 14:53:22.000000000 +0100 @@ -15,6 +15,10 @@ SELF=$(realpath "$0") MYDIR=$(dirname "${SELF}") +### Colors +TEXT_BOLD_PURPLE="\033[1;35m" +TEXT_RESET="\033[0m" + ### Environment parameters: TEST_STACK_LIMIT="${TEST_STACK_LIMIT:-256}" BENCHMARK_NUM_THREADS="${BENCHMARK_NUM_THREADS:-0}" @@ -40,6 +44,7 @@ POST_MESSAGE_ON_ERROR="${POST_MESSAGE_ON_ERROR:-1}" # By default, do a lightweight debian HWY package build. HWY_PKG_OPTIONS="${HWY_PKG_OPTIONS:---set-envvar=HWY_EXTRA_CONFIG=-DBUILD_TESTING=OFF -DHWY_ENABLE_EXAMPLES=OFF -DHWY_ENABLE_CONTRIB=OFF}" +EXCLUDE_DEBIAN_PACKAGES="${EXCLUDE_DEBIAN_PACKAGES:-}" # Set default compilers to clang if not already set export CC=${CC:-clang} @@ -708,7 +713,9 @@ ["15"]="15.0.7" ["16"]="16.0.6" ["17"]="17.0.6" - ["18"]="18.1.6" + ["18"]="18.1.8" + ["19"]="19.1.7" + ["20"]="20.1.2" ) local llvm_tag="${CLANG_VERSION}.0.0" if [[ -n "${llvm_tag_by_version["${CLANG_VERSION}"]}" ]]; then @@ -1221,6 +1228,8 @@ echo 'To fix them run (from the base directory):' >&2 echo ' buildifier `git ls-files | grep -E "/BUILD$|WORKSPACE|.bzl$"`' >&2 fi + else + echo -e "${TEXT_BOLD_PURPLE}SKIPPED:${TEXT_RESET} buildifier (not installed)" fi # It is ok, if spell-checker is not installed. @@ -1229,7 +1238,7 @@ local sources=`git -C "${MYDIR}" ls-files | grep -E "\.(${src_ext})$"` typos -c "${MYDIR}/tools/scripts/typos.toml" ${sources} else - echo "Consider installing https://github.com/crate-ci/typos for spell-checking" + echo -e "${TEXT_BOLD_PURPLE}SKIPPED:${TEXT_RESET} typos not installed; try: cargo install typos-cli" fi local installed=() @@ -1370,6 +1379,11 @@ ln -s "${srcdir}/$f" "${builddir}/$f" fi done + if [[ -n "${EXCLUDE_DEBIAN_PACKAGES}" ]]; then + # TODO(eustas): support comma-separated list + rm -f "${builddir}"/debian/${EXCLUDE_DEBIAN_PACKAGES}.install + sed -i "/Package: ${EXCLUDE_DEBIAN_PACKAGES}/,/\n/d" "${builddir}"/debian/control + fi ( cd "${builddir}" debuild "${options}" -b -uc -us diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libjxl-0.11.1/debian/changelog new/libjxl-0.11.2/debian/changelog --- old/libjxl-0.11.1/debian/changelog 2024-11-26 14:02:35.000000000 +0100 +++ new/libjxl-0.11.2/debian/changelog 2026-02-10 14:53:22.000000000 +0100 @@ -1,4 +1,10 @@ -jpeg-xl (0.11.1) UNRELEASED; urgency=medium +jpeg-xl (0.11.2) UNRELEASED; urgency=medium + + * Bump JPEG XL version to 0.11.2. + + -- JPEG XL Maintainers <[email protected]> Mon, 09 Feb 2026 21:37:21 +0100 + +jpeg-xl (0.11.1) unstable; urgency=medium * Bump JPEG XL version to 0.11.1. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libjxl-0.11.1/debian/control new/libjxl-0.11.2/debian/control --- old/libjxl-0.11.1/debian/control 2024-11-26 14:02:35.000000000 +0100 +++ new/libjxl-0.11.2/debian/control 2026-02-10 14:53:22.000000000 +0100 @@ -10,7 +10,7 @@ libbrotli-dev, libgdk-pixbuf-2.0-dev | libgdk-pixbuf2.0-dev, libgif-dev, - libgimp2.0-dev, + libgimp2.0-dev | base-files (>= 13.8), libgoogle-perftools-dev, libgtest-dev, libhwy-dev (>= 1.0.0), diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libjxl-0.11.1/deps.sh new/libjxl-0.11.2/deps.sh --- old/libjxl-0.11.1/deps.sh 2024-11-26 14:02:35.000000000 +0100 +++ new/libjxl-0.11.2/deps.sh 2026-02-10 14:53:22.000000000 +0100 @@ -16,12 +16,12 @@ # update a git submodule. TESTDATA="873045a9c42ed60721756e26e2a6b32e17415205" THIRD_PARTY_BROTLI="36533a866ed1ca4b75cf049f4521e4ec5fe24727" -THIRD_PARTY_GOOGLETEST="58d77fa8070e8cec2dc1ed015d66b454c8d78850" -THIRD_PARTY_HIGHWAY="457c891775a7397bdb0376bb1031e6e027af1c48" -THIRD_PARTY_SKCMS="42030a771244ba67f86b1c1c76a6493f873c5f91" -THIRD_PARTY_SJPEG="e5ab13008bb214deb66d5f3e17ca2f8dbff150bf" +THIRD_PARTY_GOOGLETEST="6910c9d9165801d8827d628cb72eb7ea9dd538c5" # v1.16.0 +THIRD_PARTY_HIGHWAY="457c891775a7397bdb0376bb1031e6e027af1c48" # v1.2.0 +THIRD_PARTY_SKCMS="b2e692629c1fb19342517d7fb61f1cf83d075492" +THIRD_PARTY_SJPEG="94e0df6d0f8b44228de5be0ff35efb9f946a13c9" # Wed Apr 2 15:42:02 2025 -0700 THIRD_PARTY_ZLIB="51b7f2abdade71cd9bb0e7a373ef2610ec6f9daf" # v1.3.1 -THIRD_PARTY_LIBPNG="f135775ad4e5d4408d2e12ffcc71bb36e6b48551" # v1.6.40 +THIRD_PARTY_LIBPNG="872555f4ba910252783af1507f9e7fe1653be252" # v1.6.47 THIRD_PARTY_LIBJPEG_TURBO="8ecba3647edb6dd940463fedf38ca33a8e2a73d1" # 2.1.5.1 # Download the target revision from GitHub. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libjxl-0.11.1/lib/CMakeLists.txt new/libjxl-0.11.2/lib/CMakeLists.txt --- old/libjxl-0.11.1/lib/CMakeLists.txt 2024-11-26 14:02:35.000000000 +0100 +++ new/libjxl-0.11.2/lib/CMakeLists.txt 2026-02-10 14:53:22.000000000 +0100 @@ -5,7 +5,7 @@ set(JPEGXL_MAJOR_VERSION 0) set(JPEGXL_MINOR_VERSION 11) -set(JPEGXL_PATCH_VERSION 1) +set(JPEGXL_PATCH_VERSION 2) set(JPEGXL_LIBRARY_VERSION "${JPEGXL_MAJOR_VERSION}.${JPEGXL_MINOR_VERSION}.${JPEGXL_PATCH_VERSION}") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libjxl-0.11.1/lib/extras/packed_image.h new/libjxl-0.11.2/lib/extras/packed_image.h --- old/libjxl-0.11.1/lib/extras/packed_image.h 2024-11-26 14:02:35.000000000 +0100 +++ new/libjxl-0.11.2/lib/extras/packed_image.h 2026-02-10 14:53:22.000000000 +0100 @@ -36,6 +36,7 @@ public: static StatusOr<PackedImage> Create(size_t xsize, size_t ysize, const JxlPixelFormat& format) { + JXL_RETURN_IF_ERROR(VerifyDimensions(xsize, ysize, format)); PackedImage image(xsize, ysize, format, CalcStride(format, xsize)); if (!image.pixels()) { // TODO(szabadka): use specialized OOM error code @@ -149,6 +150,28 @@ } } + static Status VerifyDimensions(size_t xsize, size_t ysize, + const JxlPixelFormat& format) { + size_t multiplier = (BitsPerChannel(format.data_type) * + format.num_channels / jxl::kBitsPerByte); + size_t stride = xsize * multiplier; + if ((stride / multiplier) != xsize) { + return JXL_FAILURE("Image too big"); + } + if (format.align > 1) { + size_t aligned_stride = jxl::DivCeil(stride, format.align) * format.align; + if (stride > aligned_stride) { + return JXL_FAILURE("Image too big"); + } + stride = aligned_stride; + } + size_t pixels_size = ysize * stride; + if ((pixels_size / stride) != ysize) { + return JXL_FAILURE("Image too big"); + } + return true; + } + private: PackedImage(size_t xsize, size_t ysize, const JxlPixelFormat& format, size_t stride) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libjxl-0.11.1/lib/include/jxl/encode.h new/libjxl-0.11.2/lib/include/jxl/encode.h --- old/libjxl-0.11.1/lib/include/jxl/encode.h 2024-11-26 14:02:35.000000000 +0100 +++ new/libjxl-0.11.2/lib/include/jxl/encode.h 2026-02-10 14:53:22.000000000 +0100 @@ -352,7 +352,7 @@ * * When using streaming input and output the encoder minimizes memory usage at * the cost of compression density. Also note that images produced with - * streaming mode might not be progressively decodeable. + * streaming mode might not be progressively decodable. */ JXL_ENC_FRAME_SETTING_BUFFERING = 34, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libjxl-0.11.1/lib/jpegli/entropy_coding.cc new/libjxl-0.11.2/lib/jpegli/entropy_coding.cc --- old/libjxl-0.11.1/lib/jpegli/entropy_coding.cc 2024-11-26 14:02:35.000000000 +0100 +++ new/libjxl-0.11.2/lib/jpegli/entropy_coding.cc 2026-02-10 14:53:22.000000000 +0100 @@ -604,7 +604,7 @@ slot_histograms.push_back(histogram_index); slot_costs.push_back(best_cost); } else { - // TODO(szabadka) Find the best histogram to replce. + // TODO(szabadka) Find the best histogram to replace. best_slot = (clusters->slot_ids.back() + 1) % 4; } slot_histograms[best_slot] = histogram_index; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libjxl-0.11.1/lib/jpegli/quant.cc new/libjxl-0.11.2/lib/jpegli/quant.cc --- old/libjxl-0.11.1/lib/jpegli/quant.cc 2024-11-26 14:02:35.000000000 +0100 +++ new/libjxl-0.11.2/lib/jpegli/quant.cc 2026-02-10 14:53:22.000000000 +0100 @@ -705,7 +705,7 @@ void InitQuantizer(j_compress_ptr cinfo, QuantPass pass) { jpeg_comp_master* m = cinfo->master; - // Compute quantization multupliers from the quant table values. + // Compute quantization multipliers from the quant table values. for (int c = 0; c < cinfo->num_components; ++c) { int quant_idx = cinfo->comp_info[c].quant_tbl_no; JQUANT_TBL* quant_table = cinfo->quant_tbl_ptrs[quant_idx]; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libjxl-0.11.1/lib/jpegli/streaming_test.cc new/libjxl-0.11.2/lib/jpegli/streaming_test.cc --- old/libjxl-0.11.1/lib/jpegli/streaming_test.cc 2024-11-26 14:02:35.000000000 +0100 +++ new/libjxl-0.11.2/lib/jpegli/streaming_test.cc 2026-02-10 14:53:22.000000000 +0100 @@ -145,7 +145,7 @@ jpegli_finish_compress(&cinfo); } - // Atfer the first iMCU row, we don't yet expect any output because the + // After the first iMCU row, we don't yet expect any output because the // compressor delays processing to have context rows after the iMCU row. if (y_in < std::min<size_t>(2 * iMCU_height, cinfo.image_height)) { continue; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libjxl-0.11.1/lib/jxl/dec_patch_dictionary.h new/libjxl-0.11.2/lib/jxl/dec_patch_dictionary.h --- old/libjxl-0.11.1/lib/jxl/dec_patch_dictionary.h 2024-11-26 14:02:35.000000000 +0100 +++ new/libjxl-0.11.2/lib/jxl/dec_patch_dictionary.h 2026-02-10 14:53:22.000000000 +0100 @@ -26,7 +26,7 @@ namespace jxl { -struct ReferceFrame { +struct ReferenceFrame { std::unique_ptr<ImageBundle> frame; // ImageBundle doesn't yet have a simple way to state it is in XYB. bool ib_is_in_xyb = false; @@ -107,7 +107,7 @@ explicit PatchDictionary(JxlMemoryManager* memory_manager) : memory_manager_(memory_manager) {} - void SetShared(const std::array<ReferceFrame, 4>* reference_frames) { + void SetShared(const std::array<ReferenceFrame, 4>* reference_frames) { reference_frames_ = reference_frames; } @@ -138,7 +138,7 @@ friend class PatchDictionaryEncoder; JxlMemoryManager* memory_manager_; - const std::array<ReferceFrame, 4>* reference_frames_; + const std::array<ReferenceFrame, 4>* reference_frames_; std::vector<PatchPosition> positions_; std::vector<PatchReferencePosition> ref_positions_; std::vector<PatchBlending> blendings_; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libjxl-0.11.1/lib/jxl/decode_test.cc new/libjxl-0.11.2/lib/jxl/decode_test.cc --- old/libjxl-0.11.1/lib/jxl/decode_test.cc 2024-11-26 14:02:35.000000000 +0100 +++ new/libjxl-0.11.2/lib/jxl/decode_test.cc 2026-02-10 14:53:22.000000000 +0100 @@ -1530,7 +1530,7 @@ } if (c.preview_mode == jxl::kSmallPreview) os << "Preview"; if (c.preview_mode == jxl::kBigPreview) os << "BigPreview"; - if (c.add_intrinsic_size) os << "IntrinicSize"; + if (c.add_intrinsic_size) os << "IntrinsicSize"; if (c.use_callback) os << "Callback"; if (c.set_buffer_early) os << "EarlyBuffer"; if (c.use_resizable_runner) os << "ResizableRunner"; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libjxl-0.11.1/lib/jxl/enc_ans.h new/libjxl-0.11.2/lib/jxl/enc_ans.h --- old/libjxl-0.11.1/lib/jxl/enc_ans.h 2024-11-26 14:02:35.000000000 +0100 +++ new/libjxl-0.11.2/lib/jxl/enc_ans.h 2026-02-10 14:53:22.000000000 +0100 @@ -101,7 +101,7 @@ StatusOr<float> ANSPopulationCost(const ANSHistBin* data, size_t alphabet_size); // Writes the context map to the bitstream and concatenates the individual -// histogram bistreams in codes.encoded_histograms. Used in streaming mode. +// histogram bitstreams in codes.encoded_histograms. Used in streaming mode. Status EncodeHistograms(const std::vector<uint8_t>& context_map, const EntropyEncodingData& codes, BitWriter* writer, LayerType layer, AuxOut* aux_out); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libjxl-0.11.1/lib/jxl/encode_test.cc new/libjxl-0.11.2/lib/jxl/encode_test.cc --- old/libjxl-0.11.1/lib/jxl/encode_test.cc 2024-11-26 14:02:35.000000000 +0100 +++ new/libjxl-0.11.2/lib/jxl/encode_test.cc 2026-02-10 14:53:22.000000000 +0100 @@ -1859,7 +1859,7 @@ size_t frame_count = static_cast<int>(p.multiple_frames()) + 1; for (size_t i = 0; i < frame_count; i++) { // Create local copy of pixels and adapter because they are only - // guarantted to be available during the JxlEncoderAddChunkedFrame() call. + // guaranteed to be available during the JxlEncoderAddChunkedFrame() call. JxlChunkedFrameInputSourceAdapter chunked_frame_adapter(frame.Copy(), ec_frame.Copy()); EXPECT_EQ(JXL_ENC_SUCCESS, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libjxl-0.11.1/lib/jxl/jpeg/jpeg_data.cc new/libjxl-0.11.2/lib/jxl/jpeg/jpeg_data.cc --- old/libjxl-0.11.1/lib/jxl/jpeg/jpeg_data.cc 2024-11-26 14:02:35.000000000 +0100 +++ new/libjxl-0.11.2/lib/jxl/jpeg/jpeg_data.cc 2026-02-10 14:53:22.000000000 +0100 @@ -437,7 +437,7 @@ // h_group / v_group act as numerators for converting number of blocks to // number of MCU. In interleaved mode it is 1, so MCU is represented with // max_*_samp_factor blocks. In non-interleaved mode we choose numerator to - // be the samping factor, consequently MCU is always represented with single + // be the sampling factor, consequently MCU is always represented with single // block. const int h_group = is_interleaved ? 1 : base_component.h_samp_factor; const int v_group = is_interleaved ? 1 : base_component.v_samp_factor; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libjxl-0.11.1/lib/jxl/passes_state.h new/libjxl-0.11.2/lib/jxl/passes_state.h --- old/libjxl-0.11.1/lib/jxl/passes_state.h 2024-11-26 14:02:35.000000000 +0100 +++ new/libjxl-0.11.2/lib/jxl/passes_state.h 2026-02-10 14:53:22.000000000 +0100 @@ -89,7 +89,7 @@ Image3F dc_frames[4]; - std::array<ReferceFrame, 4> reference_frames; + std::array<ReferenceFrame, 4> reference_frames; // Number of pre-clustered set of histograms (with the same ctx map), per // pass. Encoded as num_histograms_ - 1. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libjxl-0.11.1/lib/jxl/render_pipeline/low_memory_render_pipeline.cc new/libjxl-0.11.2/lib/jxl/render_pipeline/low_memory_render_pipeline.cc --- old/libjxl-0.11.1/lib/jxl/render_pipeline/low_memory_render_pipeline.cc 2024-11-26 14:02:35.000000000 +0100 +++ new/libjxl-0.11.2/lib/jxl/render_pipeline/low_memory_render_pipeline.cc 2026-02-10 14:53:22.000000000 +0100 @@ -600,16 +600,8 @@ channel_shifts_[i][anyc_[i]])); } - ssize_t frame_x0 = - first_image_dim_stage_ == stages_.size() ? 0 : frame_origin_.x0; - ssize_t frame_y0 = - first_image_dim_stage_ == stages_.size() ? 0 : frame_origin_.y0; - size_t full_image_xsize = first_image_dim_stage_ == stages_.size() - ? frame_dimensions_.xsize_upsampled - : full_image_xsize_; - size_t full_image_ysize = first_image_dim_stage_ == stages_.size() - ? frame_dimensions_.ysize_upsampled - : full_image_ysize_; + ssize_t frame_x0 = frame_origin_.x0; + ssize_t frame_y0 = frame_origin_.y0; // Compute actual x-axis bounds for the current image area in the context of // the full image this frame is part of. As the left boundary may be negative, @@ -624,13 +616,21 @@ full_image_x0 = 0; } ssize_t full_image_x1 = frame_x0 + image_area_rect.x1(); - full_image_x1 = std::min<ssize_t>(full_image_x1, full_image_xsize); - // If the current image area is entirely outside of the visible image, there - // is no point in proceeding. Note: this uses the assumption that if there is - // a stage with observable effects (i.e. a kInput stage), it only appears - // after the stage that switches to image dimensions. - if (full_image_x1 <= full_image_x0) return true; + std::vector<Rect> span(stages_.size()); + for (size_t i = 0; i < stages_.size(); ++i) { + if (i < first_image_dim_stage_) { + span[i] = Rect(group_rect[i].x0(), 0, group_rect[i].xsize(), + image_rect_[i].ysize()); + } else { + size_t x0 = full_image_x0; + size_t x1 = full_image_x1; + size_t x_max = full_image_xsize_; + size_t cropped_x1 = std::min<ssize_t>(x1, x_max); + span[i] = + Rect(x0, 0, std::max<ssize_t>(0, cropped_x1 - x0), full_image_ysize_); + } + } // Data structures to hold information about input/output rows and their // buffers. @@ -723,18 +723,17 @@ ssize_t image_y = static_cast<ssize_t>(group_rect[i].y0()) + y; // Do not produce rows in out-of-bounds areas. - if (image_y < 0 || - image_y >= static_cast<ssize_t>(image_rect_[i].ysize())) { - continue; - } + if (image_y < 0) continue; + if (image_y >= static_cast<ssize_t>(span[i].y1())) continue; // Get the input/output rows and potentially apply mirroring to the input. prepare_io_rows(y, i); // Produce output rows. + if (span[i].xsize() == 0) continue; JXL_RETURN_IF_ERROR(stages_[i]->ProcessRow( - input_rows[i], output_rows, xpadding_for_output_[i], - group_rect[i].xsize(), group_rect[i].x0(), image_y, thread_id)); + input_rows[i], output_rows, xpadding_for_output_[i], span[i].xsize(), + span[i].x0(), image_y, thread_id)); } // Process trailing stages, i.e. the final set of non-kInOut stages; they @@ -743,11 +742,8 @@ int y = vy - num_extra_rows; for (size_t c = 0; c < input_data.size(); c++) { - // Skip pixels that are not part of the actual final image area. - input_rows[first_trailing_stage_][c][0] = - rows.GetBuffer(stage_input_for_channel_[first_trailing_stage_][c], y, - c) + - x_pixels_skip; + input_rows[first_trailing_stage_][c][0] = rows.GetBuffer( + stage_input_for_channel_[first_trailing_stage_][c], y, c); } // Check that we are not outside of the bounds for the current rendering @@ -757,26 +753,35 @@ continue; } + for (size_t i = first_trailing_stage_; i < first_image_dim_stage_; i++) { + if (span[i].xsize() == 0) continue; + size_t y0 = image_area_rect.y0() + y; + if (y0 >= span[i].y1()) continue; + JXL_RETURN_IF_ERROR(stages_[i]->ProcessRow( + input_rows[first_trailing_stage_], output_rows, + /*xextra=*/0, span[i].xsize(), span[i].x0(), y0, thread_id)); + } + + if (first_image_dim_stage_ == stages_.size()) continue; + + // Skip pixels that are not part of the actual final image area. + for (size_t c = 0; c < input_data.size(); c++) { + input_rows[first_trailing_stage_][c][0] += x_pixels_skip; + } // Avoid running pipeline stages on pixels that are outside the full image // area. As trailing stages have no borders, this is a free optimization // (and may be necessary for correctness, as some stages assume coordinates // are within bounds). ssize_t full_image_y = frame_y0 + image_area_rect.y0() + y; - if (full_image_y < 0 || - full_image_y >= static_cast<ssize_t>(full_image_ysize)) { - continue; - } + if (full_image_y < 0) continue; - for (size_t i = first_trailing_stage_; i < stages_.size(); i++) { - // Before the first_image_dim_stage_, coordinates are relative to the - // current frame. - size_t x0 = - i < first_image_dim_stage_ ? full_image_x0 - frame_x0 : full_image_x0; - size_t y = - i < first_image_dim_stage_ ? full_image_y - frame_y0 : full_image_y; - JXL_RETURN_IF_ERROR(stages_[i]->ProcessRow( - input_rows[first_trailing_stage_], output_rows, - /*xextra=*/0, full_image_x1 - full_image_x0, x0, y, thread_id)); + for (size_t i = first_image_dim_stage_; i < stages_.size(); i++) { + if (span[i].xsize() == 0) continue; + if (full_image_y >= static_cast<ssize_t>(span[i].y1())) continue; + JXL_RETURN_IF_ERROR( + stages_[i]->ProcessRow(input_rows[first_trailing_stage_], output_rows, + /*xextra=*/0, span[i].xsize(), span[i].x0(), + full_image_y, thread_id)); } } return true; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libjxl-0.11.1/lib/jxl/render_pipeline/stage_cms.cc new/libjxl-0.11.2/lib/jxl/render_pipeline/stage_cms.cc --- old/libjxl-0.11.1/lib/jxl/render_pipeline/stage_cms.cc 2024-11-26 14:02:35.000000000 +0100 +++ new/libjxl-0.11.2/lib/jxl/render_pipeline/stage_cms.cc 2026-02-10 14:53:22.000000000 +0100 @@ -45,27 +45,45 @@ size_t xextra, size_t xsize, size_t xpos, size_t ypos, size_t thread_id) const final { JXL_ENSURE(xsize <= xsize_); - // TODO(firsching): handle grey case separately - // interleave - float* JXL_RESTRICT row0 = GetInputRow(input_rows, 0, 0); - float* JXL_RESTRICT row1 = GetInputRow(input_rows, 1, 0); - float* JXL_RESTRICT row2 = GetInputRow(input_rows, 2, 0); + bool gray_src = (c_src_.Channels() == 1); + bool gray_dst = (output_encoding_info_.color_encoding.Channels() == 1); float* mutable_buf_src = color_space_transform->BufSrc(thread_id); + float* JXL_RESTRICT buf_dst = color_space_transform->BufDst(thread_id); + // interleave + if (gray_src) { + float* JXL_RESTRICT row0 = GetInputRow(input_rows, 0, 0); + memcpy(mutable_buf_src, row0, xsize * sizeof(float)); + } else { + float* JXL_RESTRICT row0 = GetInputRow(input_rows, 0, 0); + float* JXL_RESTRICT row1 = GetInputRow(input_rows, 1, 0); + float* JXL_RESTRICT row2 = GetInputRow(input_rows, 2, 0); - for (size_t x = 0; x < xsize; x++) { - mutable_buf_src[3 * x + 0] = row0[x]; - mutable_buf_src[3 * x + 1] = row1[x]; - mutable_buf_src[3 * x + 2] = row2[x]; + for (size_t x = 0; x < xsize; x++) { + mutable_buf_src[3 * x + 0] = row0[x]; + mutable_buf_src[3 * x + 1] = row1[x]; + mutable_buf_src[3 * x + 2] = row2[x]; + } } const float* buf_src = mutable_buf_src; - float* JXL_RESTRICT buf_dst = color_space_transform->BufDst(thread_id); JXL_RETURN_IF_ERROR( color_space_transform->Run(thread_id, buf_src, buf_dst, xsize)); // de-interleave - for (size_t x = 0; x < xsize; x++) { - row0[x] = buf_dst[3 * x + 0]; - row1[x] = buf_dst[3 * x + 1]; - row2[x] = buf_dst[3 * x + 2]; + if (gray_dst) { + float* JXL_RESTRICT row0 = GetInputRow(input_rows, 0, 0); + float* JXL_RESTRICT row1 = GetInputRow(input_rows, 1, 0); + float* JXL_RESTRICT row2 = GetInputRow(input_rows, 2, 0); + memcpy(row0, buf_dst, xsize * sizeof(float)); + memcpy(row1, buf_dst, xsize * sizeof(float)); + memcpy(row2, buf_dst, xsize * sizeof(float)); + } else { + float* JXL_RESTRICT row0 = GetInputRow(input_rows, 0, 0); + float* JXL_RESTRICT row1 = GetInputRow(input_rows, 1, 0); + float* JXL_RESTRICT row2 = GetInputRow(input_rows, 2, 0); + for (size_t x = 0; x < xsize; x++) { + row0[x] = buf_dst[3 * x + 0]; + row1[x] = buf_dst[3 * x + 1]; + row2[x] = buf_dst[3 * x + 2]; + } } return true; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libjxl-0.11.1/lib/jxl/test_utils.cc new/libjxl-0.11.2/lib/jxl/test_utils.cc --- old/libjxl-0.11.1/lib/jxl/test_utils.cc 2024-11-26 14:02:35.000000000 +0100 +++ new/libjxl-0.11.2/lib/jxl/test_utils.cc 2026-02-10 14:53:22.000000000 +0100 @@ -744,10 +744,10 @@ Status ReadICC(BitReader* JXL_RESTRICT reader, std::vector<uint8_t>* JXL_RESTRICT icc) { - JxlMemoryManager* memort_manager = jxl::test::MemoryManager(); + JxlMemoryManager* memory_manager = jxl::test::MemoryManager(); icc->clear(); - ICCReader icc_reader{memort_manager}; - PaddedBytes icc_buffer{memort_manager}; + ICCReader icc_reader{memory_manager}; + PaddedBytes icc_buffer{memory_manager}; JXL_RETURN_IF_ERROR(icc_reader.Init(reader)); JXL_RETURN_IF_ERROR(icc_reader.Process(reader, &icc_buffer)); Bytes(icc_buffer).AppendTo(*icc); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libjxl-0.11.1/lib/jxl_lists.bzl new/libjxl-0.11.2/lib/jxl_lists.bzl --- old/libjxl-0.11.1/lib/jxl_lists.bzl 2024-11-26 14:02:35.000000000 +0100 +++ new/libjxl-0.11.2/lib/jxl_lists.bzl 2026-02-10 14:53:22.000000000 +0100 @@ -544,7 +544,7 @@ libjxl_minor_version = 11 -libjxl_patch_version = 1 +libjxl_patch_version = 2 libjxl_public_headers = [ "include/jxl/cms.h", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libjxl-0.11.1/lib/lib.gni new/libjxl-0.11.2/lib/lib.gni --- old/libjxl-0.11.1/lib/lib.gni 2024-11-26 14:02:35.000000000 +0100 +++ new/libjxl-0.11.2/lib/lib.gni 2026-02-10 14:53:22.000000000 +0100 @@ -542,7 +542,7 @@ libjxl_minor_version = 11 -libjxl_patch_version = 1 +libjxl_patch_version = 2 libjxl_public_headers = [ "include/jxl/cms.h", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libjxl-0.11.1/third_party/CMakeLists.txt new/libjxl-0.11.2/third_party/CMakeLists.txt --- old/libjxl-0.11.1/third_party/CMakeLists.txt 2024-11-26 14:02:35.000000000 +0100 +++ new/libjxl-0.11.2/third_party/CMakeLists.txt 2026-02-10 14:53:22.000000000 +0100 @@ -112,7 +112,7 @@ endif () else() include(lcms2.cmake) - configure_file("${CMAKE_CURRENT_SOURCE_DIR}/lcms/COPYING" + configure_file("${CMAKE_CURRENT_SOURCE_DIR}/lcms/LICENSE" ${PROJECT_BINARY_DIR}/LICENSE.lcms COPYONLY) endif() endif() @@ -138,7 +138,7 @@ add_subdirectory(zlib) set(PNG_STATIC ON CACHE BOOL "") set(PNG_EXECUTABLES OFF CACHE BOOL "") - set(PNG_BUILD_ZLIB ON CACHE BOOL "") + set(ZLIB_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/zlib/" CACHE BOOL "") set(PNG_TESTS OFF CACHE BOOL "") set(SKIP_INSTALL_ALL ON CACHE BOOL "") set(ZLIB_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/zlib/") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libjxl-0.11.1/third_party/skcms.cmake new/libjxl-0.11.2/third_party/skcms.cmake --- old/libjxl-0.11.1/third_party/skcms.cmake 2024-11-26 14:02:35.000000000 +0100 +++ new/libjxl-0.11.2/third_party/skcms.cmake 2026-02-10 14:53:22.000000000 +0100 @@ -13,14 +13,66 @@ # limitations under the License. function(target_link_skcms TARGET_NAME) - target_sources(${TARGET_NAME} PRIVATE "${PROJECT_SOURCE_DIR}/third_party/skcms/skcms.cc") - target_include_directories(${TARGET_NAME} PRIVATE "${PROJECT_SOURCE_DIR}/third_party/skcms/") + set(_sources_dir "${PROJECT_SOURCE_DIR}/third_party/skcms") + set(_sources + "${_sources_dir}/skcms.cc" + "${_sources_dir}/src/skcms_TransformBaseline.cc" + ) + # TODO(eustas): investigate if we need this. + set(_common_copts) include(CheckCXXCompilerFlag) check_cxx_compiler_flag("-Wno-psabi" CXX_WPSABI_SUPPORTED) - if(CXX_WPSABI_SUPPORTED) - set_source_files_properties("${PROJECT_SOURCE_DIR}/third_party/skcms/skcms.cc" - PROPERTIES COMPILE_OPTIONS "-Wno-psabi" - TARGET_DIRECTORY ${TARGET_NAME}) + if (CXX_WPSABI_SUPPORTED) + set(_common_copts "-Wno-psabi") + set_source_files_properties(${_sources} + PROPERTIES COMPILE_OPTIONS "${_common_copts}" + TARGET_DIRECTORY ${TARGET_NAME} + ) + endif() + + if (CMAKE_CXX_COMPILER_ID MATCHES "GNU") + set_source_files_properties("${_sources_dir}/src/skcms_TransformBaseline.cc" + PROPERTIES COMPILE_OPTIONS "${_common_copts};-Wno-maybe-uninitialized" + TARGET_DIRECTORY ${TARGET_NAME} + ) + endif() + + set(_use_avx2 FALSE) + set(_use_avx512 FALSE) + if (CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64" AND CMAKE_CXX_COMPILER_ID MATCHES "Clang") + if (CXX_MAVX2_SUPPORTED AND CXX_MF16C_SUPPORTED) + set(_use_avx2 TRUE) + endif() + if (CXX_MAVX512F_SUPPORTED AND CXX_MAVX512DQ_SUPPORTED AND CXX_MAVX512CD_SUPPORTED AND CXX_MAVX512BW_SUPPORTED AND CXX_MAVX512VL_SUPPORTED) + set(_use_avx512 TRUE) + endif() + endif() + + if (_use_avx2) + list(APPEND _sources "${_sources_dir}/src/skcms_TransformHsw.cc") + set_source_files_properties("${_sources_dir}/src/skcms_TransformHsw.cc" + PROPERTIES COMPILE_OPTIONS "${_common_copts};-march=x86-64;-mavx2;-mf16c" + TARGET_DIRECTORY ${TARGET_NAME} + ) + else() + target_compile_definitions(${TARGET_NAME} PRIVATE -DSKCMS_DISABLE_HSW) endif() + + if (_use_avx512) + list(APPEND _sources "${_sources_dir}/src/skcms_TransformSkx.cc") + set_source_files_properties("${_sources_dir}/src/skcms_TransformSkx.cc" + PROPERTIES COMPILE_OPTIONS "${_common_copts};-march=x86-64;-mavx512f;-mavx512dq;-mavx512cd;-mavx512bw;-mavx512vl" + TARGET_DIRECTORY ${TARGET_NAME} + ) + else() + target_compile_definitions(${TARGET_NAME} PRIVATE -DSKCMS_DISABLE_SKX) + endif() + + if (MINGW) + target_compile_definitions(${TARGET_NAME} PRIVATE -DSKCMS_HAS_MUSTTAIL=0) + endif() + + target_sources(${TARGET_NAME} PRIVATE "${_sources}") + target_include_directories(${TARGET_NAME} PRIVATE "${PROJECT_SOURCE_DIR}/third_party/skcms/") endfunction() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libjxl-0.11.1/tools/benchmark/benchmark_xl.cc new/libjxl-0.11.2/tools/benchmark/benchmark_xl.cc --- old/libjxl-0.11.1/tools/benchmark/benchmark_xl.cc 2024-11-26 14:02:35.000000000 +0100 +++ new/libjxl-0.11.2/tools/benchmark/benchmark_xl.cc 2026-02-10 14:53:22.000000000 +0100 @@ -1015,9 +1015,9 @@ memcpy(row_out, &row_in[x0], size * sizeof(row_out[0])); } } - std::string fn_output = - StringPrintf("%s/%s.crop_%dx%d+%d+%d.png", sample_tmp_dir.c_str(), - FileBaseName(fnames[idx]).c_str(), size, size, x0, y0); + std::string fn_output = StringPrintf( + "%s/%s.crop_%" PRIuS "x%" PRIuS "+%d+%d.png", sample_tmp_dir.c_str(), + FileBaseName(fnames[idx]).c_str(), size, size, x0, y0); ThreadPool* null_pool = nullptr; JPEGXL_TOOLS_CHECK(WriteImage(sample, null_pool, fn_output)); fnames_out.push_back(fn_output); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libjxl-0.11.1/tools/cjpegli.cc new/libjxl-0.11.2/tools/cjpegli.cc --- old/libjxl-0.11.1/tools/cjpegli.cc 2024-11-26 14:02:35.000000000 +0100 +++ new/libjxl-0.11.2/tools/cjpegli.cc 2026-02-10 14:53:22.000000000 +0100 @@ -243,7 +243,8 @@ } if (!args.quiet) { fprintf(stderr, "Compressed to %" PRIuS " bytes ", jpeg_bytes.size()); - const size_t num_pixels = ppf.info.xsize * ppf.info.ysize; + const double num_pixels = + static_cast<double>(ppf.info.xsize) * ppf.info.ysize; const double bpp = static_cast<double>(jpeg_bytes.size() * jxl::kBitsPerByte) / num_pixels; fprintf(stderr, "(%.3f bpp).\n", bpp); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libjxl-0.11.1/tools/jpegli_dec_fuzzer_corpus.cc new/libjxl-0.11.2/tools/jpegli_dec_fuzzer_corpus.cc --- old/libjxl-0.11.1/tools/jpegli_dec_fuzzer_corpus.cc 2024-11-26 14:02:35.000000000 +0100 +++ new/libjxl-0.11.2/tools/jpegli_dec_fuzzer_corpus.cc 2026-02-10 14:53:22.000000000 +0100 @@ -177,7 +177,8 @@ jpegli_set_progressive_level(&cinfo, spec.progressive_level); cinfo.restart_interval = spec.restart_interval; jpegli_start_compress(&cinfo, TRUE); - size_t stride = cinfo.image_width * cinfo.input_components; + size_t stride = + cinfo.image_width * static_cast<size_t>(cinfo.input_components); std::vector<uint8_t> row_bytes(stride); for (size_t y = 0; y < cinfo.image_height; ++y) { memcpy(row_bytes.data(), &pixels[y * stride], stride); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libjxl-0.11.1/tools/scripts/build_stats.py new/libjxl-0.11.2/tools/scripts/build_stats.py --- old/libjxl-0.11.1/tools/scripts/build_stats.py 2024-11-26 14:02:35.000000000 +0100 +++ new/libjxl-0.11.2/tools/scripts/build_stats.py 2026-02-10 14:53:22.000000000 +0100 @@ -32,7 +32,7 @@ IS_OSX = (platform.system() == 'Darwin') -Symbol = collections.namedtuple('Symbol', ['address', 'size', 'typ', 'name']) +Symbol = collections.namedtuple('Symbol', ['address', 'size', 'kind', 'name']) # Represents the stack size information of a function (defined by its address). SymbolStack = collections.namedtuple('SymbolStack', @@ -213,10 +213,10 @@ if not sym.size or (symbol_filter is not None and sym.name not in symbol_filter): continue - t = sym.typ.lower() + t = sym.kind.lower() # We can remove symbols if they appear in multiple objects since they will # be merged by the linker. - if symbol_filter is not None and (t == sym.typ or t in 'wv'): + if symbol_filter is not None and (t == sym.kind or t in 'wv'): symbol_filter.remove(sym.name) ret.setdefault(t, 0) ret[t] += sym.size @@ -232,13 +232,13 @@ for objstat in stats: bin_size = 0 ram_size = 0 - for typ, size in objstat.size_map.items(): - if typ in BIN_SIZE: + for kind, size in objstat.size_map.items(): + if kind in BIN_SIZE: bin_size += size - if typ in RAM_SIZE: + if kind in RAM_SIZE: ram_size += size - if typ not in BIN_SIZE + RAM_SIZE: - raise Exception('Unknown type "%s"' % typ) + if kind not in BIN_SIZE + RAM_SIZE: + raise Exception('Unknown type "%s"' % kind) if objstat.in_partition: sum_bin_size += bin_size sum_ram_size += ram_size @@ -274,8 +274,8 @@ if not tgt_top_symbols: return print(' Size T Symbol name') - for size, typ, name in tgt_top_symbols: - print('%9d %s %s' % (size, typ, name)) + for size, kind, name in tgt_top_symbols: + print('%9d %s %s' % (size, kind, name)) print() @@ -317,19 +317,19 @@ tgt_syms = syms[target] used_syms = set() for sym in tgt_syms: - if sym.typ.lower() in BIN_SIZE + RAM_SIZE: + if sym.kind.lower() in BIN_SIZE + RAM_SIZE: used_syms.add(sym.name) - elif sym.typ.lower() in IGNORE_SYMBOLS: + elif sym.kind.lower() in IGNORE_SYMBOLS: continue else: - print('Unknown: %s %s' % (sym.typ, sym.name)) + print('Unknown: %s %s' % (sym.kind, sym.name)) target_path = os.path.join(args.build_dir, tgt.filename) sym_stacks = [] if not target_path.endswith('.a'): sym_stacks = LoadStackSizes(target_path, args.binutils) symbols_by_addr = {sym.address: sym for sym in tgt_syms - if sym.typ.lower() in 'tw'} + if sym.kind.lower() in 'tw'} tgt_stack_sizes = collections.OrderedDict() for sym_stack in sorted(sym_stacks, key=lambda s: -s.stack_size): tgt_stack_sizes[ @@ -337,7 +337,7 @@ tgt_top_symbols = [] if args.top_symbols: - tgt_top_symbols = [(sym.size, sym.typ, sym.name) for sym in tgt_syms + tgt_top_symbols = [(sym.size, sym.kind, sym.name) for sym in tgt_syms if sym.name in used_syms and sym.size] tgt_top_symbols.sort(key=lambda t: (-t[0], t[2])) tgt_top_symbols = tgt_top_symbols[:args.top_symbols] @@ -354,7 +354,7 @@ for sym in tgt_syms: if not sym.size or mangled not in sym.name: continue - t = sym.typ.lower() + t = sym.kind.lower() ret.setdefault(t, 0) ret[t] += sym.size # SIMD namespaces are not part of the partition, they are already included diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libjxl-0.11.1/tools/scripts/typos.toml new/libjxl-0.11.2/tools/scripts/typos.toml --- old/libjxl-0.11.1/tools/scripts/typos.toml 2024-11-26 14:02:35.000000000 +0100 +++ new/libjxl-0.11.2/tools/scripts/typos.toml 2026-02-10 14:53:22.000000000 +0100 @@ -24,6 +24,7 @@ cmsCreateXYZProfileTHR = "cmsCreateXYZProfileTHR" cmsOpenProfileFromMemTHR = "cmsOpenProfileFromMemTHR" cmsSetLogErrorHandlerTHR = "cmsSetLogErrorHandlerTHR" +gl_pathc = "gl_pathc" # glob_t hIST = "hIST" # histogram PNG chunk JMSG_STR_PARM_MAX = "JMSG_STR_PARM_MAX" # jpeglib msg_parm = "msg_parm" # jpeglib diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libjxl-0.11.1/tools/wasm_demo/README.md new/libjxl-0.11.2/tools/wasm_demo/README.md --- old/libjxl-0.11.1/tools/wasm_demo/README.md 2024-11-26 14:02:35.000000000 +0100 +++ new/libjxl-0.11.2/tools/wasm_demo/README.md 2026-02-10 14:53:22.000000000 +0100 @@ -106,7 +106,7 @@ Then you need to put your image files in the correct same place and are should be good to go. -To summarize, using the wasm decoder together with a service workder amounts to adding +To summarize, using the wasm decoder together with a service worker amounts to adding ```html <script src="service_worker.js"></script> ``` diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libjxl-0.11.1/tools/wasm_demo/manual_decode_demo.html new/libjxl-0.11.2/tools/wasm_demo/manual_decode_demo.html --- old/libjxl-0.11.1/tools/wasm_demo/manual_decode_demo.html 2024-11-26 14:02:35.000000000 +0100 +++ new/libjxl-0.11.2/tools/wasm_demo/manual_decode_demo.html 2026-02-10 14:53:22.000000000 +0100 @@ -33,7 +33,7 @@ }; // Check if multi-threading is supported (i.e. SharedArrayBuffer is allowed). -let probeMutlithreading = () => { +let probeMultithreading = () => { try { new SharedArrayBuffer(); return true; @@ -65,7 +65,7 @@ // "main" method executed after page is loaded; all scripts are "synchronous" elements, // so it is guaranteed that script elements are loaded and executed. let onDomContentLoaded = () => { - if (!probeMutlithreading()) return; + if (!probeMultithreading()) return; hdrCanvas = probeHdr(); JxlDecoderModule().then(onLoadJxlModule); };
