From 791e291b089a7fec5613cb77a307dcda60d88bb1 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 11 Aug 2026 12:21:28 +0000 Subject: [PATCH 01/10] Upgrade llama.cpp from b10333 to b10338 Intermediate chunk of the b10333->b10359 walk (61 KiB / 5 commits, under the 100 KiB threshold). Diff review: all changes are in the ggml-webgpu backend (not built by this project - GGML_WEBGPU not referenced in CMakeLists.txt), upstream CI workflow files, and a llama-model-saver.cpp KV-key fix (not called by project source). No project source changes required. All 6 patches re-verified against a clean b10338 checkout (sequential git apply). Configure-only verification (fresh cmake -B build succeeds). --- CLAUDE.md | 8 ++++---- README.md | 2 +- llama/CMakeLists.txt | 2 +- .../java/net/ladenthin/llama/value/LlamaCppVersion.java | 8 ++++---- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 9f3b3381c..534187671 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -6,7 +6,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co Java bindings for [llama.cpp](https://github.com/ggerganov/llama.cpp) via JNI, providing a high-level API for LLM inference in Java. The Java layer communicates with a native C++ library through JNI. -Current llama.cpp pinned version: **b10333** +Current llama.cpp pinned version: **b10338** ## Upgrading CUDA Version @@ -429,7 +429,7 @@ needs no extra step here, `build-webui` re-reads the tag and rebuilds the matchi ships no UI): ```bash # needs node/npm + network; embed.cpp is plain C++17 (no npm) -git clone --depth 1 --branch b10333 https://github.com/ggml-org/llama.cpp /tmp/lc +git clone --depth 1 --branch b10338 https://github.com/ggml-org/llama.cpp /tmp/lc ( cd /tmp/lc/tools/ui && npm ci && npm run build \ && ( cd dist && find . -type f -not -path './_gzip/*' \ | while read -r f; do mkdir -p "_gzip/$(dirname "$f")"; gzip -9 -c "$f" > "_gzip/$f"; done ) \ @@ -469,7 +469,7 @@ cache lives in **Depot Cache** over sccache's **WebDAV** backend: - `SCCACHE_WEBDAV_TOKEN: ${{ secrets.DEPOT_TOKEN }}` — a Depot **organization** token, stored as the repo secret **`DEPOT_TOKEN`**. -Because `sccache` is **content-addressed** and llama.cpp is pinned (`GIT_TAG b10333`), the +Because `sccache` is **content-addressed** and llama.cpp is pinned (`GIT_TAG b10338`), the ~280 upstream object files are byte-identical every run, so a warm cache recompiles only the *changed* files. Depot's cache is **shared across all branches** (unlike GitHub's per-branch `actions/cache`), so every branch builds incrementally; a `b` version bump @@ -1296,7 +1296,7 @@ ctest --test-dir build --output-on-failure -R "ResultsToJson" #### Upstream source location (in CMake build tree) -llama.cpp is fetched via CMake FetchContent, pinned to `GIT_TAG b10333`. +llama.cpp is fetched via CMake FetchContent, pinned to `GIT_TAG b10338`. **GoogleTest** is a separate `BUILD_TESTING`-only FetchContent (`GIT_TAG v1.17.0`), used solely by the `jllama_test` C++ unit-test binary — not by the shipped library, and not coupled to the diff --git a/README.md b/README.md index 30b981fe0..58df3ab6a 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ **Build:** ![Java 8+](https://img.shields.io/badge/Java-8%2B-informational) ![Platform](https://img.shields.io/badge/Platform-Linux%20%7C%20macOS%20%7C%20Windows%20%7C%20Android-lightgrey) -[![llama.cpp b10333](https://img.shields.io/badge/llama.cpp-%23b10333-informational)](https://github.com/ggml-org/llama.cpp/releases/tag/b10333) +[![llama.cpp b10338](https://img.shields.io/badge/llama.cpp-%23b10338-informational)](https://github.com/ggml-org/llama.cpp/releases/tag/b10338) [![JPMS](https://img.shields.io/badge/JPMS-modular%20JAR-25A162)](https://openjdk.org/projects/jigsaw/) ![JUnit](https://img.shields.io/badge/tested%20with-JUnit6-25A162) [![JSpecify](https://img.shields.io/badge/JSpecify-1.0.0%20%40NullMarked-25A162)](https://jspecify.dev) diff --git a/llama/CMakeLists.txt b/llama/CMakeLists.txt index c144ec417..299311ffe 100644 --- a/llama/CMakeLists.txt +++ b/llama/CMakeLists.txt @@ -173,7 +173,7 @@ set(LLAMA_BUILD_APP OFF CACHE BOOL "" FORCE) FetchContent_Declare( llama.cpp GIT_REPOSITORY https://github.com/ggerganov/llama.cpp.git - GIT_TAG b10333 + GIT_TAG b10338 PATCH_COMMAND ${CMAKE_COMMAND} -DPATCH_DIR=${CMAKE_CURRENT_SOURCE_DIR}/patches -DLLAMA_SRC= diff --git a/llama/src/main/java/net/ladenthin/llama/value/LlamaCppVersion.java b/llama/src/main/java/net/ladenthin/llama/value/LlamaCppVersion.java index 6e2970181..da1de3355 100644 --- a/llama/src/main/java/net/ladenthin/llama/value/LlamaCppVersion.java +++ b/llama/src/main/java/net/ladenthin/llama/value/LlamaCppVersion.java @@ -10,13 +10,13 @@ * library was compiled against, exposed as a compile-time constant so callers can render a badge or * emit a startup log line without loading the native library. * - *

{@link #LLAMA_CPP_VERSION} is a pure-Java string ({@code "b10333"}) that mirrors the + *

{@link #LLAMA_CPP_VERSION} is a pure-Java string ({@code "b10338"}) that mirrors the * {@code GIT_TAG} in {@code llama/CMakeLists.txt}. It is available even when {@code libjllama} is * absent (pure-Java checkout, before {@code System.load}), which is what makes it suitable for a * lightweight version badge in Android or other UIs.

* *

For the authoritative value that is baked into the native binary — the build number - * plus the resolved upstream commit, e.g. {@code "b10333-"} — call + * plus the resolved upstream commit, e.g. {@code "b10338-"} — call * {@link net.ladenthin.llama.LlamaModel#getLlamaCppBuildInfo()} instead; that reads llama.cpp's own * {@code build-info} through JNI and therefore cannot drift from the compiled library (but requires * the native library to be loaded).

@@ -24,14 +24,14 @@ public final class LlamaCppVersion { /** - * The pinned llama.cpp release tag this library was built against, e.g. {@code "b10333"}. + * The pinned llama.cpp release tag this library was built against, e.g. {@code "b10338"}. * *

Kept in lockstep with {@code GIT_TAG} in {@code llama/CMakeLists.txt} — see the * "Upgrading/Downgrading llama.cpp Version" checklist in {@code CLAUDE.md}. This is the * compile-time pin; use {@link net.ladenthin.llama.LlamaModel#getLlamaCppBuildInfo()} for the * value actually linked into the native binary.

*/ - public static final String LLAMA_CPP_VERSION = "b10333"; + public static final String LLAMA_CPP_VERSION = "b10338"; // Constants holder — not instantiable. private LlamaCppVersion() {} From e3338055cecc79fccd66b0a87f9b3724497673d2 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 11 Aug 2026 12:22:55 +0000 Subject: [PATCH 02/10] Upgrade llama.cpp from b10338 to b10342 Intermediate chunk of the b10333->b10359 walk (1460 KiB full / 49 KiB excluding tools/ui, 4 commits - the WebUI dominates and is auto-followed, no per-bump review needed there). Diff review: adds the Granite-Switch model architecture entirely inside src/models/ + src/llama-*.{cpp,h} (internal model implementation, not include/llama.h) plus Python conversion/gguf-py changes (not built here). No project source changes required. All 6 patches re-verified against a clean b10342 checkout (sequential git apply). Configure-only verification (fresh cmake -B build succeeds). --- CLAUDE.md | 8 ++++---- README.md | 2 +- llama/CMakeLists.txt | 2 +- .../java/net/ladenthin/llama/value/LlamaCppVersion.java | 8 ++++---- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 534187671..d9103ad22 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -6,7 +6,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co Java bindings for [llama.cpp](https://github.com/ggerganov/llama.cpp) via JNI, providing a high-level API for LLM inference in Java. The Java layer communicates with a native C++ library through JNI. -Current llama.cpp pinned version: **b10338** +Current llama.cpp pinned version: **b10342** ## Upgrading CUDA Version @@ -429,7 +429,7 @@ needs no extra step here, `build-webui` re-reads the tag and rebuilds the matchi ships no UI): ```bash # needs node/npm + network; embed.cpp is plain C++17 (no npm) -git clone --depth 1 --branch b10338 https://github.com/ggml-org/llama.cpp /tmp/lc +git clone --depth 1 --branch b10342 https://github.com/ggml-org/llama.cpp /tmp/lc ( cd /tmp/lc/tools/ui && npm ci && npm run build \ && ( cd dist && find . -type f -not -path './_gzip/*' \ | while read -r f; do mkdir -p "_gzip/$(dirname "$f")"; gzip -9 -c "$f" > "_gzip/$f"; done ) \ @@ -469,7 +469,7 @@ cache lives in **Depot Cache** over sccache's **WebDAV** backend: - `SCCACHE_WEBDAV_TOKEN: ${{ secrets.DEPOT_TOKEN }}` — a Depot **organization** token, stored as the repo secret **`DEPOT_TOKEN`**. -Because `sccache` is **content-addressed** and llama.cpp is pinned (`GIT_TAG b10338`), the +Because `sccache` is **content-addressed** and llama.cpp is pinned (`GIT_TAG b10342`), the ~280 upstream object files are byte-identical every run, so a warm cache recompiles only the *changed* files. Depot's cache is **shared across all branches** (unlike GitHub's per-branch `actions/cache`), so every branch builds incrementally; a `b` version bump @@ -1296,7 +1296,7 @@ ctest --test-dir build --output-on-failure -R "ResultsToJson" #### Upstream source location (in CMake build tree) -llama.cpp is fetched via CMake FetchContent, pinned to `GIT_TAG b10338`. +llama.cpp is fetched via CMake FetchContent, pinned to `GIT_TAG b10342`. **GoogleTest** is a separate `BUILD_TESTING`-only FetchContent (`GIT_TAG v1.17.0`), used solely by the `jllama_test` C++ unit-test binary — not by the shipped library, and not coupled to the diff --git a/README.md b/README.md index 58df3ab6a..ce176ce51 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ **Build:** ![Java 8+](https://img.shields.io/badge/Java-8%2B-informational) ![Platform](https://img.shields.io/badge/Platform-Linux%20%7C%20macOS%20%7C%20Windows%20%7C%20Android-lightgrey) -[![llama.cpp b10338](https://img.shields.io/badge/llama.cpp-%23b10338-informational)](https://github.com/ggml-org/llama.cpp/releases/tag/b10338) +[![llama.cpp b10342](https://img.shields.io/badge/llama.cpp-%23b10342-informational)](https://github.com/ggml-org/llama.cpp/releases/tag/b10342) [![JPMS](https://img.shields.io/badge/JPMS-modular%20JAR-25A162)](https://openjdk.org/projects/jigsaw/) ![JUnit](https://img.shields.io/badge/tested%20with-JUnit6-25A162) [![JSpecify](https://img.shields.io/badge/JSpecify-1.0.0%20%40NullMarked-25A162)](https://jspecify.dev) diff --git a/llama/CMakeLists.txt b/llama/CMakeLists.txt index 299311ffe..5b97b3c14 100644 --- a/llama/CMakeLists.txt +++ b/llama/CMakeLists.txt @@ -173,7 +173,7 @@ set(LLAMA_BUILD_APP OFF CACHE BOOL "" FORCE) FetchContent_Declare( llama.cpp GIT_REPOSITORY https://github.com/ggerganov/llama.cpp.git - GIT_TAG b10338 + GIT_TAG b10342 PATCH_COMMAND ${CMAKE_COMMAND} -DPATCH_DIR=${CMAKE_CURRENT_SOURCE_DIR}/patches -DLLAMA_SRC= diff --git a/llama/src/main/java/net/ladenthin/llama/value/LlamaCppVersion.java b/llama/src/main/java/net/ladenthin/llama/value/LlamaCppVersion.java index da1de3355..9c86c0b19 100644 --- a/llama/src/main/java/net/ladenthin/llama/value/LlamaCppVersion.java +++ b/llama/src/main/java/net/ladenthin/llama/value/LlamaCppVersion.java @@ -10,13 +10,13 @@ * library was compiled against, exposed as a compile-time constant so callers can render a badge or * emit a startup log line without loading the native library. * - *

{@link #LLAMA_CPP_VERSION} is a pure-Java string ({@code "b10338"}) that mirrors the + *

{@link #LLAMA_CPP_VERSION} is a pure-Java string ({@code "b10342"}) that mirrors the * {@code GIT_TAG} in {@code llama/CMakeLists.txt}. It is available even when {@code libjllama} is * absent (pure-Java checkout, before {@code System.load}), which is what makes it suitable for a * lightweight version badge in Android or other UIs.

* *

For the authoritative value that is baked into the native binary — the build number - * plus the resolved upstream commit, e.g. {@code "b10338-"} — call + * plus the resolved upstream commit, e.g. {@code "b10342-"} — call * {@link net.ladenthin.llama.LlamaModel#getLlamaCppBuildInfo()} instead; that reads llama.cpp's own * {@code build-info} through JNI and therefore cannot drift from the compiled library (but requires * the native library to be loaded).

@@ -24,14 +24,14 @@ public final class LlamaCppVersion { /** - * The pinned llama.cpp release tag this library was built against, e.g. {@code "b10338"}. + * The pinned llama.cpp release tag this library was built against, e.g. {@code "b10342"}. * *

Kept in lockstep with {@code GIT_TAG} in {@code llama/CMakeLists.txt} — see the * "Upgrading/Downgrading llama.cpp Version" checklist in {@code CLAUDE.md}. This is the * compile-time pin; use {@link net.ladenthin.llama.LlamaModel#getLlamaCppBuildInfo()} for the * value actually linked into the native binary.

*/ - public static final String LLAMA_CPP_VERSION = "b10338"; + public static final String LLAMA_CPP_VERSION = "b10342"; // Constants holder — not instantiable. private LlamaCppVersion() {} From 6ed30ad459550c990e4306c2c4400769a8af09e1 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 11 Aug 2026 12:29:09 +0000 Subject: [PATCH 03/10] Upgrade llama.cpp from b10342 to b10344 Intermediate chunk of the b10333->b10359 walk (79 KiB, 2 commits). Diff review: vendors cpp-httplib 0.52.0 -> 0.53.0, entirely additive WebSocketClient (outbound websocket) API surface - not used by server-http.cpp (httplib::Server side, unaffected) or any project source (confirmed via grep). Remaining changes are Nemotron-H-MoE model work internal to src/models/ + src/llama-model.cpp, not include/llama.h. All 6 patches re-verified against a clean b10344 checkout (sequential git apply). Full local verification (real build, given the compiled vendor dependency bump): fresh cmake -B build + full cmake --build (libjllama.so + jllama_test compile and link, -O3, no undefined references) + ctest 482/482 passing. --- CLAUDE.md | 8 ++++---- README.md | 2 +- llama/CMakeLists.txt | 2 +- .../java/net/ladenthin/llama/value/LlamaCppVersion.java | 8 ++++---- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index d9103ad22..b5883c647 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -6,7 +6,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co Java bindings for [llama.cpp](https://github.com/ggerganov/llama.cpp) via JNI, providing a high-level API for LLM inference in Java. The Java layer communicates with a native C++ library through JNI. -Current llama.cpp pinned version: **b10342** +Current llama.cpp pinned version: **b10344** ## Upgrading CUDA Version @@ -429,7 +429,7 @@ needs no extra step here, `build-webui` re-reads the tag and rebuilds the matchi ships no UI): ```bash # needs node/npm + network; embed.cpp is plain C++17 (no npm) -git clone --depth 1 --branch b10342 https://github.com/ggml-org/llama.cpp /tmp/lc +git clone --depth 1 --branch b10344 https://github.com/ggml-org/llama.cpp /tmp/lc ( cd /tmp/lc/tools/ui && npm ci && npm run build \ && ( cd dist && find . -type f -not -path './_gzip/*' \ | while read -r f; do mkdir -p "_gzip/$(dirname "$f")"; gzip -9 -c "$f" > "_gzip/$f"; done ) \ @@ -469,7 +469,7 @@ cache lives in **Depot Cache** over sccache's **WebDAV** backend: - `SCCACHE_WEBDAV_TOKEN: ${{ secrets.DEPOT_TOKEN }}` — a Depot **organization** token, stored as the repo secret **`DEPOT_TOKEN`**. -Because `sccache` is **content-addressed** and llama.cpp is pinned (`GIT_TAG b10342`), the +Because `sccache` is **content-addressed** and llama.cpp is pinned (`GIT_TAG b10344`), the ~280 upstream object files are byte-identical every run, so a warm cache recompiles only the *changed* files. Depot's cache is **shared across all branches** (unlike GitHub's per-branch `actions/cache`), so every branch builds incrementally; a `b` version bump @@ -1296,7 +1296,7 @@ ctest --test-dir build --output-on-failure -R "ResultsToJson" #### Upstream source location (in CMake build tree) -llama.cpp is fetched via CMake FetchContent, pinned to `GIT_TAG b10342`. +llama.cpp is fetched via CMake FetchContent, pinned to `GIT_TAG b10344`. **GoogleTest** is a separate `BUILD_TESTING`-only FetchContent (`GIT_TAG v1.17.0`), used solely by the `jllama_test` C++ unit-test binary — not by the shipped library, and not coupled to the diff --git a/README.md b/README.md index ce176ce51..5d11d694b 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ **Build:** ![Java 8+](https://img.shields.io/badge/Java-8%2B-informational) ![Platform](https://img.shields.io/badge/Platform-Linux%20%7C%20macOS%20%7C%20Windows%20%7C%20Android-lightgrey) -[![llama.cpp b10342](https://img.shields.io/badge/llama.cpp-%23b10342-informational)](https://github.com/ggml-org/llama.cpp/releases/tag/b10342) +[![llama.cpp b10344](https://img.shields.io/badge/llama.cpp-%23b10344-informational)](https://github.com/ggml-org/llama.cpp/releases/tag/b10344) [![JPMS](https://img.shields.io/badge/JPMS-modular%20JAR-25A162)](https://openjdk.org/projects/jigsaw/) ![JUnit](https://img.shields.io/badge/tested%20with-JUnit6-25A162) [![JSpecify](https://img.shields.io/badge/JSpecify-1.0.0%20%40NullMarked-25A162)](https://jspecify.dev) diff --git a/llama/CMakeLists.txt b/llama/CMakeLists.txt index 5b97b3c14..7f70c1918 100644 --- a/llama/CMakeLists.txt +++ b/llama/CMakeLists.txt @@ -173,7 +173,7 @@ set(LLAMA_BUILD_APP OFF CACHE BOOL "" FORCE) FetchContent_Declare( llama.cpp GIT_REPOSITORY https://github.com/ggerganov/llama.cpp.git - GIT_TAG b10342 + GIT_TAG b10344 PATCH_COMMAND ${CMAKE_COMMAND} -DPATCH_DIR=${CMAKE_CURRENT_SOURCE_DIR}/patches -DLLAMA_SRC= diff --git a/llama/src/main/java/net/ladenthin/llama/value/LlamaCppVersion.java b/llama/src/main/java/net/ladenthin/llama/value/LlamaCppVersion.java index 9c86c0b19..fc90bc52a 100644 --- a/llama/src/main/java/net/ladenthin/llama/value/LlamaCppVersion.java +++ b/llama/src/main/java/net/ladenthin/llama/value/LlamaCppVersion.java @@ -10,13 +10,13 @@ * library was compiled against, exposed as a compile-time constant so callers can render a badge or * emit a startup log line without loading the native library. * - *

{@link #LLAMA_CPP_VERSION} is a pure-Java string ({@code "b10342"}) that mirrors the + *

{@link #LLAMA_CPP_VERSION} is a pure-Java string ({@code "b10344"}) that mirrors the * {@code GIT_TAG} in {@code llama/CMakeLists.txt}. It is available even when {@code libjllama} is * absent (pure-Java checkout, before {@code System.load}), which is what makes it suitable for a * lightweight version badge in Android or other UIs.

* *

For the authoritative value that is baked into the native binary — the build number - * plus the resolved upstream commit, e.g. {@code "b10342-"} — call + * plus the resolved upstream commit, e.g. {@code "b10344-"} — call * {@link net.ladenthin.llama.LlamaModel#getLlamaCppBuildInfo()} instead; that reads llama.cpp's own * {@code build-info} through JNI and therefore cannot drift from the compiled library (but requires * the native library to be loaded).

@@ -24,14 +24,14 @@ public final class LlamaCppVersion { /** - * The pinned llama.cpp release tag this library was built against, e.g. {@code "b10342"}. + * The pinned llama.cpp release tag this library was built against, e.g. {@code "b10344"}. * *

Kept in lockstep with {@code GIT_TAG} in {@code llama/CMakeLists.txt} — see the * "Upgrading/Downgrading llama.cpp Version" checklist in {@code CLAUDE.md}. This is the * compile-time pin; use {@link net.ladenthin.llama.LlamaModel#getLlamaCppBuildInfo()} for the * value actually linked into the native binary.

*/ - public static final String LLAMA_CPP_VERSION = "b10342"; + public static final String LLAMA_CPP_VERSION = "b10344"; // Constants holder — not instantiable. private LlamaCppVersion() {} From cab3fffcae31d6959c7b18ca22923ddf4c732ac0 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 11 Aug 2026 12:35:39 +0000 Subject: [PATCH 04/10] Upgrade llama.cpp from b10344 to b10353 Intermediate chunk of the b10333->b10359 walk (159 KiB full / 135 KiB excluding tools/ui, 9 commits - unavoidable single-commit-sized step per the chunking helper). Diff review: - New Muse-Glimmer model family: purely additive chat-template parser (common/chat.cpp), vision projector type/preprocessor (tools/mtmd/ clip-impl.h, clip-model.h, mtmd-image.h, mtmd.cpp), and model impl (src/models/, tools/mtmd/models/) - no existing declaration changed, tools/mtmd/mtmd.h itself has zero diff. - vendor/sheredom/subprocess.h gains the SUBPROCESS_SPAWN_REPORTS_EXEC_ERRORS pre-glibc-2.24 guard - the exact upstream PR #106 fix CLAUDE.md's 0009-patch-drop note already anticipated ("neither affects this project"); purely additive, old-glibc manylinux2014 unaffected. - server-tools.{h,cpp}: internal struct rename (docker_runtime -> runtime, now also covers podman/ssh) - setup() signature unchanged, not referenced by jllama.cpp. - common/arg.cpp, common/speculative.cpp, server.cpp: help-text/comment wording only, no signature changes. All 6 patches re-verified against a clean b10353 checkout (sequential git apply). Full local verification (build size warranted it): fresh cmake -B build + full cmake --build (libjllama.so + jllama_test compile and link, -O3, no undefined references) + ctest 482/482 passing. --- CLAUDE.md | 8 ++++---- README.md | 2 +- llama/CMakeLists.txt | 2 +- .../java/net/ladenthin/llama/value/LlamaCppVersion.java | 8 ++++---- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index b5883c647..e2a2ac6da 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -6,7 +6,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co Java bindings for [llama.cpp](https://github.com/ggerganov/llama.cpp) via JNI, providing a high-level API for LLM inference in Java. The Java layer communicates with a native C++ library through JNI. -Current llama.cpp pinned version: **b10344** +Current llama.cpp pinned version: **b10353** ## Upgrading CUDA Version @@ -429,7 +429,7 @@ needs no extra step here, `build-webui` re-reads the tag and rebuilds the matchi ships no UI): ```bash # needs node/npm + network; embed.cpp is plain C++17 (no npm) -git clone --depth 1 --branch b10344 https://github.com/ggml-org/llama.cpp /tmp/lc +git clone --depth 1 --branch b10353 https://github.com/ggml-org/llama.cpp /tmp/lc ( cd /tmp/lc/tools/ui && npm ci && npm run build \ && ( cd dist && find . -type f -not -path './_gzip/*' \ | while read -r f; do mkdir -p "_gzip/$(dirname "$f")"; gzip -9 -c "$f" > "_gzip/$f"; done ) \ @@ -469,7 +469,7 @@ cache lives in **Depot Cache** over sccache's **WebDAV** backend: - `SCCACHE_WEBDAV_TOKEN: ${{ secrets.DEPOT_TOKEN }}` — a Depot **organization** token, stored as the repo secret **`DEPOT_TOKEN`**. -Because `sccache` is **content-addressed** and llama.cpp is pinned (`GIT_TAG b10344`), the +Because `sccache` is **content-addressed** and llama.cpp is pinned (`GIT_TAG b10353`), the ~280 upstream object files are byte-identical every run, so a warm cache recompiles only the *changed* files. Depot's cache is **shared across all branches** (unlike GitHub's per-branch `actions/cache`), so every branch builds incrementally; a `b` version bump @@ -1296,7 +1296,7 @@ ctest --test-dir build --output-on-failure -R "ResultsToJson" #### Upstream source location (in CMake build tree) -llama.cpp is fetched via CMake FetchContent, pinned to `GIT_TAG b10344`. +llama.cpp is fetched via CMake FetchContent, pinned to `GIT_TAG b10353`. **GoogleTest** is a separate `BUILD_TESTING`-only FetchContent (`GIT_TAG v1.17.0`), used solely by the `jllama_test` C++ unit-test binary — not by the shipped library, and not coupled to the diff --git a/README.md b/README.md index 5d11d694b..c863b2332 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ **Build:** ![Java 8+](https://img.shields.io/badge/Java-8%2B-informational) ![Platform](https://img.shields.io/badge/Platform-Linux%20%7C%20macOS%20%7C%20Windows%20%7C%20Android-lightgrey) -[![llama.cpp b10344](https://img.shields.io/badge/llama.cpp-%23b10344-informational)](https://github.com/ggml-org/llama.cpp/releases/tag/b10344) +[![llama.cpp b10353](https://img.shields.io/badge/llama.cpp-%23b10353-informational)](https://github.com/ggml-org/llama.cpp/releases/tag/b10353) [![JPMS](https://img.shields.io/badge/JPMS-modular%20JAR-25A162)](https://openjdk.org/projects/jigsaw/) ![JUnit](https://img.shields.io/badge/tested%20with-JUnit6-25A162) [![JSpecify](https://img.shields.io/badge/JSpecify-1.0.0%20%40NullMarked-25A162)](https://jspecify.dev) diff --git a/llama/CMakeLists.txt b/llama/CMakeLists.txt index 7f70c1918..e662fe821 100644 --- a/llama/CMakeLists.txt +++ b/llama/CMakeLists.txt @@ -173,7 +173,7 @@ set(LLAMA_BUILD_APP OFF CACHE BOOL "" FORCE) FetchContent_Declare( llama.cpp GIT_REPOSITORY https://github.com/ggerganov/llama.cpp.git - GIT_TAG b10344 + GIT_TAG b10353 PATCH_COMMAND ${CMAKE_COMMAND} -DPATCH_DIR=${CMAKE_CURRENT_SOURCE_DIR}/patches -DLLAMA_SRC= diff --git a/llama/src/main/java/net/ladenthin/llama/value/LlamaCppVersion.java b/llama/src/main/java/net/ladenthin/llama/value/LlamaCppVersion.java index fc90bc52a..7623cbe58 100644 --- a/llama/src/main/java/net/ladenthin/llama/value/LlamaCppVersion.java +++ b/llama/src/main/java/net/ladenthin/llama/value/LlamaCppVersion.java @@ -10,13 +10,13 @@ * library was compiled against, exposed as a compile-time constant so callers can render a badge or * emit a startup log line without loading the native library. * - *

{@link #LLAMA_CPP_VERSION} is a pure-Java string ({@code "b10344"}) that mirrors the + *

{@link #LLAMA_CPP_VERSION} is a pure-Java string ({@code "b10353"}) that mirrors the * {@code GIT_TAG} in {@code llama/CMakeLists.txt}. It is available even when {@code libjllama} is * absent (pure-Java checkout, before {@code System.load}), which is what makes it suitable for a * lightweight version badge in Android or other UIs.

* *

For the authoritative value that is baked into the native binary — the build number - * plus the resolved upstream commit, e.g. {@code "b10344-"} — call + * plus the resolved upstream commit, e.g. {@code "b10353-"} — call * {@link net.ladenthin.llama.LlamaModel#getLlamaCppBuildInfo()} instead; that reads llama.cpp's own * {@code build-info} through JNI and therefore cannot drift from the compiled library (but requires * the native library to be loaded).

@@ -24,14 +24,14 @@ public final class LlamaCppVersion { /** - * The pinned llama.cpp release tag this library was built against, e.g. {@code "b10344"}. + * The pinned llama.cpp release tag this library was built against, e.g. {@code "b10353"}. * *

Kept in lockstep with {@code GIT_TAG} in {@code llama/CMakeLists.txt} — see the * "Upgrading/Downgrading llama.cpp Version" checklist in {@code CLAUDE.md}. This is the * compile-time pin; use {@link net.ladenthin.llama.LlamaModel#getLlamaCppBuildInfo()} for the * value actually linked into the native binary.

*/ - public static final String LLAMA_CPP_VERSION = "b10344"; + public static final String LLAMA_CPP_VERSION = "b10353"; // Constants holder — not instantiable. private LlamaCppVersion() {} From bc42a0f091bfd34593694df1a749547457e2d923 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 11 Aug 2026 12:37:02 +0000 Subject: [PATCH 05/10] Upgrade llama.cpp from b10353 to b10354 Trivial intermediate chunk of the b10333->b10359 walk (1 commit, 0 KiB excluding tools/ui by the chunking helper's threshold since the only change is a 1-line ggml-cpu.c fix for Android CPU affinity - internal, not a header, not built for the x86_64 CI targets that exercise it. All 6 patches re-verified against a clean b10354 checkout (sequential git apply). Configure-only verification (fresh cmake -B build succeeds). --- CLAUDE.md | 8 ++++---- README.md | 2 +- llama/CMakeLists.txt | 2 +- .../java/net/ladenthin/llama/value/LlamaCppVersion.java | 8 ++++---- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index e2a2ac6da..7beb50cf3 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -6,7 +6,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co Java bindings for [llama.cpp](https://github.com/ggerganov/llama.cpp) via JNI, providing a high-level API for LLM inference in Java. The Java layer communicates with a native C++ library through JNI. -Current llama.cpp pinned version: **b10353** +Current llama.cpp pinned version: **b10354** ## Upgrading CUDA Version @@ -429,7 +429,7 @@ needs no extra step here, `build-webui` re-reads the tag and rebuilds the matchi ships no UI): ```bash # needs node/npm + network; embed.cpp is plain C++17 (no npm) -git clone --depth 1 --branch b10353 https://github.com/ggml-org/llama.cpp /tmp/lc +git clone --depth 1 --branch b10354 https://github.com/ggml-org/llama.cpp /tmp/lc ( cd /tmp/lc/tools/ui && npm ci && npm run build \ && ( cd dist && find . -type f -not -path './_gzip/*' \ | while read -r f; do mkdir -p "_gzip/$(dirname "$f")"; gzip -9 -c "$f" > "_gzip/$f"; done ) \ @@ -469,7 +469,7 @@ cache lives in **Depot Cache** over sccache's **WebDAV** backend: - `SCCACHE_WEBDAV_TOKEN: ${{ secrets.DEPOT_TOKEN }}` — a Depot **organization** token, stored as the repo secret **`DEPOT_TOKEN`**. -Because `sccache` is **content-addressed** and llama.cpp is pinned (`GIT_TAG b10353`), the +Because `sccache` is **content-addressed** and llama.cpp is pinned (`GIT_TAG b10354`), the ~280 upstream object files are byte-identical every run, so a warm cache recompiles only the *changed* files. Depot's cache is **shared across all branches** (unlike GitHub's per-branch `actions/cache`), so every branch builds incrementally; a `b` version bump @@ -1296,7 +1296,7 @@ ctest --test-dir build --output-on-failure -R "ResultsToJson" #### Upstream source location (in CMake build tree) -llama.cpp is fetched via CMake FetchContent, pinned to `GIT_TAG b10353`. +llama.cpp is fetched via CMake FetchContent, pinned to `GIT_TAG b10354`. **GoogleTest** is a separate `BUILD_TESTING`-only FetchContent (`GIT_TAG v1.17.0`), used solely by the `jllama_test` C++ unit-test binary — not by the shipped library, and not coupled to the diff --git a/README.md b/README.md index c863b2332..ad932fb64 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ **Build:** ![Java 8+](https://img.shields.io/badge/Java-8%2B-informational) ![Platform](https://img.shields.io/badge/Platform-Linux%20%7C%20macOS%20%7C%20Windows%20%7C%20Android-lightgrey) -[![llama.cpp b10353](https://img.shields.io/badge/llama.cpp-%23b10353-informational)](https://github.com/ggml-org/llama.cpp/releases/tag/b10353) +[![llama.cpp b10354](https://img.shields.io/badge/llama.cpp-%23b10354-informational)](https://github.com/ggml-org/llama.cpp/releases/tag/b10354) [![JPMS](https://img.shields.io/badge/JPMS-modular%20JAR-25A162)](https://openjdk.org/projects/jigsaw/) ![JUnit](https://img.shields.io/badge/tested%20with-JUnit6-25A162) [![JSpecify](https://img.shields.io/badge/JSpecify-1.0.0%20%40NullMarked-25A162)](https://jspecify.dev) diff --git a/llama/CMakeLists.txt b/llama/CMakeLists.txt index e662fe821..c86468ce7 100644 --- a/llama/CMakeLists.txt +++ b/llama/CMakeLists.txt @@ -173,7 +173,7 @@ set(LLAMA_BUILD_APP OFF CACHE BOOL "" FORCE) FetchContent_Declare( llama.cpp GIT_REPOSITORY https://github.com/ggerganov/llama.cpp.git - GIT_TAG b10353 + GIT_TAG b10354 PATCH_COMMAND ${CMAKE_COMMAND} -DPATCH_DIR=${CMAKE_CURRENT_SOURCE_DIR}/patches -DLLAMA_SRC= diff --git a/llama/src/main/java/net/ladenthin/llama/value/LlamaCppVersion.java b/llama/src/main/java/net/ladenthin/llama/value/LlamaCppVersion.java index 7623cbe58..1e4fc47ec 100644 --- a/llama/src/main/java/net/ladenthin/llama/value/LlamaCppVersion.java +++ b/llama/src/main/java/net/ladenthin/llama/value/LlamaCppVersion.java @@ -10,13 +10,13 @@ * library was compiled against, exposed as a compile-time constant so callers can render a badge or * emit a startup log line without loading the native library. * - *

{@link #LLAMA_CPP_VERSION} is a pure-Java string ({@code "b10353"}) that mirrors the + *

{@link #LLAMA_CPP_VERSION} is a pure-Java string ({@code "b10354"}) that mirrors the * {@code GIT_TAG} in {@code llama/CMakeLists.txt}. It is available even when {@code libjllama} is * absent (pure-Java checkout, before {@code System.load}), which is what makes it suitable for a * lightweight version badge in Android or other UIs.

* *

For the authoritative value that is baked into the native binary — the build number - * plus the resolved upstream commit, e.g. {@code "b10353-"} — call + * plus the resolved upstream commit, e.g. {@code "b10354-"} — call * {@link net.ladenthin.llama.LlamaModel#getLlamaCppBuildInfo()} instead; that reads llama.cpp's own * {@code build-info} through JNI and therefore cannot drift from the compiled library (but requires * the native library to be loaded).

@@ -24,14 +24,14 @@ public final class LlamaCppVersion { /** - * The pinned llama.cpp release tag this library was built against, e.g. {@code "b10353"}. + * The pinned llama.cpp release tag this library was built against, e.g. {@code "b10354"}. * *

Kept in lockstep with {@code GIT_TAG} in {@code llama/CMakeLists.txt} — see the * "Upgrading/Downgrading llama.cpp Version" checklist in {@code CLAUDE.md}. This is the * compile-time pin; use {@link net.ladenthin.llama.LlamaModel#getLlamaCppBuildInfo()} for the * value actually linked into the native binary.

*/ - public static final String LLAMA_CPP_VERSION = "b10353"; + public static final String LLAMA_CPP_VERSION = "b10354"; // Constants holder — not instantiable. private LlamaCppVersion() {} From 2af378ad224a788eb12266c42cc180c2ef9c80f7 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 11 Aug 2026 12:42:36 +0000 Subject: [PATCH 06/10] Upgrade llama.cpp from b10354 to b10355 Intermediate chunk of the b10333->b10359 walk (113 KiB, 1 commit - unavoidable single-commit size, PR #25532 "multi-output backend sampling"). Diff review against the priority list: - include/llama.h: llama_context_params gains n_outputs_max_per_seq (inserted mid-struct, source-compatible - jllama.cpp never constructs this struct directly, only via common_init_from_params); llama_sampler_i gains backend_reset/copy_state callbacks and llama_sampler_copy() (all additive). - common/speculative.h: purely additive common_speculative_output_limits/common_speculative_get_output_limits; common_speculative_init/_draft/_accept signatures unchanged, and jllama.cpp doesn't call any common_speculative_* function directly anyway (confirmed via grep). - common/sampling.h changed too but is on CLAUDE.md's own "safe to skip" list. All 6 patches re-verified against a clean b10355 checkout (sequential git apply). Full local verification (llama.h touched, warrants it): fresh cmake -B build + full cmake --build (libjllama.so + jllama_test compile and link, -O3, no undefined references) + ctest 482/482 passing. --- CLAUDE.md | 8 ++++---- README.md | 2 +- llama/CMakeLists.txt | 2 +- .../java/net/ladenthin/llama/value/LlamaCppVersion.java | 8 ++++---- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 7beb50cf3..d1d33a290 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -6,7 +6,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co Java bindings for [llama.cpp](https://github.com/ggerganov/llama.cpp) via JNI, providing a high-level API for LLM inference in Java. The Java layer communicates with a native C++ library through JNI. -Current llama.cpp pinned version: **b10354** +Current llama.cpp pinned version: **b10355** ## Upgrading CUDA Version @@ -429,7 +429,7 @@ needs no extra step here, `build-webui` re-reads the tag and rebuilds the matchi ships no UI): ```bash # needs node/npm + network; embed.cpp is plain C++17 (no npm) -git clone --depth 1 --branch b10354 https://github.com/ggml-org/llama.cpp /tmp/lc +git clone --depth 1 --branch b10355 https://github.com/ggml-org/llama.cpp /tmp/lc ( cd /tmp/lc/tools/ui && npm ci && npm run build \ && ( cd dist && find . -type f -not -path './_gzip/*' \ | while read -r f; do mkdir -p "_gzip/$(dirname "$f")"; gzip -9 -c "$f" > "_gzip/$f"; done ) \ @@ -469,7 +469,7 @@ cache lives in **Depot Cache** over sccache's **WebDAV** backend: - `SCCACHE_WEBDAV_TOKEN: ${{ secrets.DEPOT_TOKEN }}` — a Depot **organization** token, stored as the repo secret **`DEPOT_TOKEN`**. -Because `sccache` is **content-addressed** and llama.cpp is pinned (`GIT_TAG b10354`), the +Because `sccache` is **content-addressed** and llama.cpp is pinned (`GIT_TAG b10355`), the ~280 upstream object files are byte-identical every run, so a warm cache recompiles only the *changed* files. Depot's cache is **shared across all branches** (unlike GitHub's per-branch `actions/cache`), so every branch builds incrementally; a `b` version bump @@ -1296,7 +1296,7 @@ ctest --test-dir build --output-on-failure -R "ResultsToJson" #### Upstream source location (in CMake build tree) -llama.cpp is fetched via CMake FetchContent, pinned to `GIT_TAG b10354`. +llama.cpp is fetched via CMake FetchContent, pinned to `GIT_TAG b10355`. **GoogleTest** is a separate `BUILD_TESTING`-only FetchContent (`GIT_TAG v1.17.0`), used solely by the `jllama_test` C++ unit-test binary — not by the shipped library, and not coupled to the diff --git a/README.md b/README.md index ad932fb64..31a3ab6a0 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ **Build:** ![Java 8+](https://img.shields.io/badge/Java-8%2B-informational) ![Platform](https://img.shields.io/badge/Platform-Linux%20%7C%20macOS%20%7C%20Windows%20%7C%20Android-lightgrey) -[![llama.cpp b10354](https://img.shields.io/badge/llama.cpp-%23b10354-informational)](https://github.com/ggml-org/llama.cpp/releases/tag/b10354) +[![llama.cpp b10355](https://img.shields.io/badge/llama.cpp-%23b10355-informational)](https://github.com/ggml-org/llama.cpp/releases/tag/b10355) [![JPMS](https://img.shields.io/badge/JPMS-modular%20JAR-25A162)](https://openjdk.org/projects/jigsaw/) ![JUnit](https://img.shields.io/badge/tested%20with-JUnit6-25A162) [![JSpecify](https://img.shields.io/badge/JSpecify-1.0.0%20%40NullMarked-25A162)](https://jspecify.dev) diff --git a/llama/CMakeLists.txt b/llama/CMakeLists.txt index c86468ce7..f046389e1 100644 --- a/llama/CMakeLists.txt +++ b/llama/CMakeLists.txt @@ -173,7 +173,7 @@ set(LLAMA_BUILD_APP OFF CACHE BOOL "" FORCE) FetchContent_Declare( llama.cpp GIT_REPOSITORY https://github.com/ggerganov/llama.cpp.git - GIT_TAG b10354 + GIT_TAG b10355 PATCH_COMMAND ${CMAKE_COMMAND} -DPATCH_DIR=${CMAKE_CURRENT_SOURCE_DIR}/patches -DLLAMA_SRC= diff --git a/llama/src/main/java/net/ladenthin/llama/value/LlamaCppVersion.java b/llama/src/main/java/net/ladenthin/llama/value/LlamaCppVersion.java index 1e4fc47ec..29926aa67 100644 --- a/llama/src/main/java/net/ladenthin/llama/value/LlamaCppVersion.java +++ b/llama/src/main/java/net/ladenthin/llama/value/LlamaCppVersion.java @@ -10,13 +10,13 @@ * library was compiled against, exposed as a compile-time constant so callers can render a badge or * emit a startup log line without loading the native library. * - *

{@link #LLAMA_CPP_VERSION} is a pure-Java string ({@code "b10354"}) that mirrors the + *

{@link #LLAMA_CPP_VERSION} is a pure-Java string ({@code "b10355"}) that mirrors the * {@code GIT_TAG} in {@code llama/CMakeLists.txt}. It is available even when {@code libjllama} is * absent (pure-Java checkout, before {@code System.load}), which is what makes it suitable for a * lightweight version badge in Android or other UIs.

* *

For the authoritative value that is baked into the native binary — the build number - * plus the resolved upstream commit, e.g. {@code "b10354-"} — call + * plus the resolved upstream commit, e.g. {@code "b10355-"} — call * {@link net.ladenthin.llama.LlamaModel#getLlamaCppBuildInfo()} instead; that reads llama.cpp's own * {@code build-info} through JNI and therefore cannot drift from the compiled library (but requires * the native library to be loaded).

@@ -24,14 +24,14 @@ public final class LlamaCppVersion { /** - * The pinned llama.cpp release tag this library was built against, e.g. {@code "b10354"}. + * The pinned llama.cpp release tag this library was built against, e.g. {@code "b10355"}. * *

Kept in lockstep with {@code GIT_TAG} in {@code llama/CMakeLists.txt} — see the * "Upgrading/Downgrading llama.cpp Version" checklist in {@code CLAUDE.md}. This is the * compile-time pin; use {@link net.ladenthin.llama.LlamaModel#getLlamaCppBuildInfo()} for the * value actually linked into the native binary.

*/ - public static final String LLAMA_CPP_VERSION = "b10354"; + public static final String LLAMA_CPP_VERSION = "b10355"; // Constants holder — not instantiable. private LlamaCppVersion() {} From 37a5d896e8e4ff91d4347c3a5ec60a1412ecab61 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 11 Aug 2026 12:48:06 +0000 Subject: [PATCH 07/10] Upgrade llama.cpp from b10355 to b10359 (final target) Final chunk of the b10333->b10359 walk (46 KiB, 4 commits). Diff review: include/llama.h loses only two comment lines (llama_sampler_copy signature unchanged); rest is upstream CI workflow files, ggml-opencl flash-attn kernel/internals (compiled but no header API we call directly), and ggml-webgpu (unused backend). No project source changes required. All 6 patches re-verified against a clean b10359 checkout (sequential git apply). Full local verification (mandatory for the final target): fresh cmake -B build + full cmake --build (libjllama.so + jllama_test compile and link, -O3, no undefined references) + ctest 482/482 passing. Closes the b10333->b10359 walk (5 steps: b10333->b10338->b10342->b10344 ->b10353->b10354->b10355->b10359). --- CLAUDE.md | 8 ++++---- README.md | 2 +- llama/CMakeLists.txt | 2 +- .../java/net/ladenthin/llama/value/LlamaCppVersion.java | 8 ++++---- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index d1d33a290..64cf4768f 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -6,7 +6,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co Java bindings for [llama.cpp](https://github.com/ggerganov/llama.cpp) via JNI, providing a high-level API for LLM inference in Java. The Java layer communicates with a native C++ library through JNI. -Current llama.cpp pinned version: **b10355** +Current llama.cpp pinned version: **b10359** ## Upgrading CUDA Version @@ -429,7 +429,7 @@ needs no extra step here, `build-webui` re-reads the tag and rebuilds the matchi ships no UI): ```bash # needs node/npm + network; embed.cpp is plain C++17 (no npm) -git clone --depth 1 --branch b10355 https://github.com/ggml-org/llama.cpp /tmp/lc +git clone --depth 1 --branch b10359 https://github.com/ggml-org/llama.cpp /tmp/lc ( cd /tmp/lc/tools/ui && npm ci && npm run build \ && ( cd dist && find . -type f -not -path './_gzip/*' \ | while read -r f; do mkdir -p "_gzip/$(dirname "$f")"; gzip -9 -c "$f" > "_gzip/$f"; done ) \ @@ -469,7 +469,7 @@ cache lives in **Depot Cache** over sccache's **WebDAV** backend: - `SCCACHE_WEBDAV_TOKEN: ${{ secrets.DEPOT_TOKEN }}` — a Depot **organization** token, stored as the repo secret **`DEPOT_TOKEN`**. -Because `sccache` is **content-addressed** and llama.cpp is pinned (`GIT_TAG b10355`), the +Because `sccache` is **content-addressed** and llama.cpp is pinned (`GIT_TAG b10359`), the ~280 upstream object files are byte-identical every run, so a warm cache recompiles only the *changed* files. Depot's cache is **shared across all branches** (unlike GitHub's per-branch `actions/cache`), so every branch builds incrementally; a `b` version bump @@ -1296,7 +1296,7 @@ ctest --test-dir build --output-on-failure -R "ResultsToJson" #### Upstream source location (in CMake build tree) -llama.cpp is fetched via CMake FetchContent, pinned to `GIT_TAG b10355`. +llama.cpp is fetched via CMake FetchContent, pinned to `GIT_TAG b10359`. **GoogleTest** is a separate `BUILD_TESTING`-only FetchContent (`GIT_TAG v1.17.0`), used solely by the `jllama_test` C++ unit-test binary — not by the shipped library, and not coupled to the diff --git a/README.md b/README.md index 31a3ab6a0..2baead967 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ **Build:** ![Java 8+](https://img.shields.io/badge/Java-8%2B-informational) ![Platform](https://img.shields.io/badge/Platform-Linux%20%7C%20macOS%20%7C%20Windows%20%7C%20Android-lightgrey) -[![llama.cpp b10355](https://img.shields.io/badge/llama.cpp-%23b10355-informational)](https://github.com/ggml-org/llama.cpp/releases/tag/b10355) +[![llama.cpp b10359](https://img.shields.io/badge/llama.cpp-%23b10359-informational)](https://github.com/ggml-org/llama.cpp/releases/tag/b10359) [![JPMS](https://img.shields.io/badge/JPMS-modular%20JAR-25A162)](https://openjdk.org/projects/jigsaw/) ![JUnit](https://img.shields.io/badge/tested%20with-JUnit6-25A162) [![JSpecify](https://img.shields.io/badge/JSpecify-1.0.0%20%40NullMarked-25A162)](https://jspecify.dev) diff --git a/llama/CMakeLists.txt b/llama/CMakeLists.txt index f046389e1..8f2c0cb85 100644 --- a/llama/CMakeLists.txt +++ b/llama/CMakeLists.txt @@ -173,7 +173,7 @@ set(LLAMA_BUILD_APP OFF CACHE BOOL "" FORCE) FetchContent_Declare( llama.cpp GIT_REPOSITORY https://github.com/ggerganov/llama.cpp.git - GIT_TAG b10355 + GIT_TAG b10359 PATCH_COMMAND ${CMAKE_COMMAND} -DPATCH_DIR=${CMAKE_CURRENT_SOURCE_DIR}/patches -DLLAMA_SRC= diff --git a/llama/src/main/java/net/ladenthin/llama/value/LlamaCppVersion.java b/llama/src/main/java/net/ladenthin/llama/value/LlamaCppVersion.java index 29926aa67..e8e5f147f 100644 --- a/llama/src/main/java/net/ladenthin/llama/value/LlamaCppVersion.java +++ b/llama/src/main/java/net/ladenthin/llama/value/LlamaCppVersion.java @@ -10,13 +10,13 @@ * library was compiled against, exposed as a compile-time constant so callers can render a badge or * emit a startup log line without loading the native library. * - *

{@link #LLAMA_CPP_VERSION} is a pure-Java string ({@code "b10355"}) that mirrors the + *

{@link #LLAMA_CPP_VERSION} is a pure-Java string ({@code "b10359"}) that mirrors the * {@code GIT_TAG} in {@code llama/CMakeLists.txt}. It is available even when {@code libjllama} is * absent (pure-Java checkout, before {@code System.load}), which is what makes it suitable for a * lightweight version badge in Android or other UIs.

* *

For the authoritative value that is baked into the native binary — the build number - * plus the resolved upstream commit, e.g. {@code "b10355-"} — call + * plus the resolved upstream commit, e.g. {@code "b10359-"} — call * {@link net.ladenthin.llama.LlamaModel#getLlamaCppBuildInfo()} instead; that reads llama.cpp's own * {@code build-info} through JNI and therefore cannot drift from the compiled library (but requires * the native library to be loaded).

@@ -24,14 +24,14 @@ public final class LlamaCppVersion { /** - * The pinned llama.cpp release tag this library was built against, e.g. {@code "b10355"}. + * The pinned llama.cpp release tag this library was built against, e.g. {@code "b10359"}. * *

Kept in lockstep with {@code GIT_TAG} in {@code llama/CMakeLists.txt} — see the * "Upgrading/Downgrading llama.cpp Version" checklist in {@code CLAUDE.md}. This is the * compile-time pin; use {@link net.ladenthin.llama.LlamaModel#getLlamaCppBuildInfo()} for the * value actually linked into the native binary.

*/ - public static final String LLAMA_CPP_VERSION = "b10355"; + public static final String LLAMA_CPP_VERSION = "b10359"; // Constants holder — not instantiable. private LlamaCppVersion() {} From 7ef1ae42f8c8802631e255700c55ce680a35ada2 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 11 Aug 2026 12:48:56 +0000 Subject: [PATCH 08/10] Document the b10333->b10359 walk in llama-cpp-breaking-changes.md Appends per-step diff-review and patch/build-verification rows for the 6-step chunked walk (b10333->b10338->b10342->b10344->b10353->b10354-> b10355->b10359), per CLAUDE.md's "append a new row covering the upgrade range" instruction. --- docs/history/llama-cpp-breaking-changes.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/docs/history/llama-cpp-breaking-changes.md b/docs/history/llama-cpp-breaking-changes.md index d35d2d083..444af0733 100644 --- a/docs/history/llama-cpp-breaking-changes.md +++ b/docs/history/llama-cpp-breaking-changes.md @@ -585,3 +585,16 @@ Used during `llama.cpp` version bumps: when upgrading, scan this file from the r | b10322–b10327 | upstream verification (sandbox, final target) | Remaining **6** patches re-verified against a clean b10327 checkout (ggml/llama.cpp commit `69bf6437`): fail-loud `PATCH_COMMAND` clean. **Full local verification (mandatory for the final target):** fresh configure + full `cmake --build` (`libjllama.so` + `jllama_test` compile and link, `-O3`, no undefined references) + `ctest` **482/482 passing**. Closes the b10319→b10327 walk (2 steps: b10319→b10322→b10327), on a new branch (`claude/java-llama-cpp-b10327`) following on from the b10310→b10319 walk merged as PR #381. | | b10327–b10333 | `common/{arg.cpp,common.h}` (**purely additive: new `--tools-runtime` CLI flag + `common_params::server_tools_runtime` field**), `tools/server/{server-tools.h,server-tools.cpp,server.cpp}` (**new opt-in Docker-backed runtime for built-in tools**), `ggml/src/ggml-cuda/{ggml-cuda.cu,rope.cu,rope.cuh}` (**GPU backend internals — CUDA rope kernel rework**) | **No project-source change (single-step bump, diff under the 100 KiB chunking threshold).** `common_params::server_tools_runtime` is a new field appended after the existing `server_tools` member — purely additive, no existing field renamed/removed/reordered. `server_tools::setup(...)` gained a third parameter (`const std::string & tools_runtime`) at its one call site in `server.cpp`'s `llama_server()`, which is inside the region `patches/0006` touches only earlier in the function (embedded-mode flag/argv handling) — verified the patch still applies cleanly (see next row). `jllama.cpp`/`jni_helpers.hpp`/`json_helpers.hpp` reference neither `server_tools` nor `server-tools.h` directly (confirmed via grep), so the 584-line `server-tools.cpp` rewrite (adding an opt-in `--tools-runtime docker:` execution backend) is entirely internal to `server.cpp`'s built-in-tools wiring. CUDA rope-kernel changes are internal to `ggml-cuda`; zero diff under `common/chat.h`, `common/speculative.h`, `tools/mtmd/mtmd.h`, `include/llama-cpp.h`, `common/arg.h` (beyond the additive flag above), `include/llama.h`, `common/download.h`, `tools/server/server-schema.h`. | | b10327–b10333 | upstream verification (sandbox, final target) | All **6** patches re-verified against a clean b10333 checkout (ggml/llama.cpp commit `08659901c`): sequential `git apply` (filename order, mirroring the `PATCH_COMMAND` applier) succeeded for every patch, including `0006`/`0007` across the touched `server.cpp` region. **Full local verification (mandatory for the final target):** fresh configure + full `cmake --build` (`libjllama.so` + `jllama_test` compile and link, `-O3`, no undefined references) + `ctest` **482/482 passing**. Single-step bump (76 KiB / 71 KiB excl. WebUI, 6 commits — under the 100 KiB chunking threshold), on branch `claude/cuda-toolkit-action-update-0675dk` (continuing the CUDA-toolkit-action-bump branch). | +| b10333–b10338 | `ggml/src/ggml-webgpu/**` (**WebGPU backend internals — not built, `GGML_WEBGPU` never referenced in `CMakeLists.txt`**), `src/llama-model-saver.cpp` (**KV-key clobber fix, #26693 — `llama_model_saver` not called by project source**) | **No project-source change.** Confirmed via grep that no project source references `llama_model_saver`. Intermediate chunk (61 KiB / 5 commits). | +| b10333–b10338 | upstream verification (sandbox, checkpoint) | All **6** patches re-verified against a clean b10338 checkout (ggml/llama.cpp commit `0377426ce`): fail-loud `PATCH_COMMAND` clean (fresh `cmake -B build` succeeded). **Configure-only verification per this step's process** (full build deferred to a later checkpoint). | +| b10338–b10342 | `src/models/granite-switch.cpp` + `src/llama-{arch,hparams,model,kv-cache,context,model-loader}.{cpp,h}` (**new Granite-Switch model architecture, #25107**), `conversion/granite.py` + `gguf-py/**` (**Python, not built**) | **No project-source change.** Entirely internal model-implementation additions; `include/llama.h` has zero diff. | +| b10338–b10342 | upstream verification (sandbox, checkpoint) | All **6** patches re-verified against a clean b10342 checkout (ggml/llama.cpp commit `157b81fe6`): fail-loud `PATCH_COMMAND` clean. **Configure-only verification per this step's process.** | +| b10342–b10344 | `vendor/cpp-httplib/{httplib.h,httplib.cpp}` (**0.52.0 → 0.53.0**), `src/models/nemotron-h{,-moe}.cpp` (**Nemotron-H-MoE model work**) | **No project-source change.** The entire httplib diff (105/761 lines) is additive `WebSocketClient` (outbound websocket client) API — `connect()` return-type change, new `Result` type, `set_ca_cert_path` signature change — confirmed via grep that neither `server-http.cpp` (upstream, `httplib::Server` side) nor any project source references `WebSocketClient`; `httplib::Server` itself has zero diff. Nemotron-H-MoE is internal to `src/models/` + `src/llama-model.cpp`, not `include/llama.h`. | +| b10342–b10344 | upstream verification (sandbox, checkpoint) | All **6** patches re-verified against a clean b10344 checkout (ggml/llama.cpp commit `7a20b417f`): fail-loud `PATCH_COMMAND` clean. **Full local verification (compiled vendor dependency bump warranted it):** fresh configure + full `cmake --build` (`libjllama.so` + `jllama_test` compile and link against the real bumped httplib, `-O3`, no undefined references) + `ctest` **482/482 passing**. | +| b10344–b10353 | `common/chat.cpp` (**new Muse-Glimmer chat-template parser**), `tools/mtmd/{clip-impl.h,clip-model.h,mtmd-image.h,mtmd.cpp}` (**new Muse-Glimmer vision projector type/preprocessor**), `vendor/sheredom/subprocess.h` (**`SUBPROCESS_SPAWN_REPORTS_EXEC_ERRORS` pre-glibc-2.24 guard, upstream PR #106**), `tools/server/{server-tools.h,server-tools.cpp,server.cpp}` (**internal `docker_runtime`→`runtime` rename, now covers podman/ssh**), `common/{arg.cpp,speculative.cpp}` (**help-text/internal-logic only**) | **No project-source change.** All Muse-Glimmer additions are new enum values / struct fields with defaults / new classes — `tools/mtmd/mtmd.h` itself has zero diff. The `subprocess.h` change is exactly the upstream PR #106 fix CLAUDE.md's `0009`-patch-drop note already anticipated ("neither affects this project") — purely additive, old-glibc manylinux2014 unaffected. `server_tools::setup(...)` signature unchanged; `jllama.cpp` doesn't reference `server-tools.h`. Unavoidable single-commit-sized step (159 KiB full / 135 KiB excl. WebUI, 9 commits). | +| b10344–b10353 | upstream verification (sandbox, checkpoint) | All **6** patches re-verified against a clean b10353 checkout (ggml/llama.cpp commit `f8def7fe1`): fail-loud `PATCH_COMMAND` clean. **Full local verification (step size warranted it):** fresh configure + full `cmake --build` (`libjllama.so` + `jllama_test` compile and link, `-O3`, no undefined references) + `ctest` **482/482 passing**. | +| b10353–b10354 | `ggml/src/ggml-cpu/ggml-cpu.c` (**1-line Android CPU-affinity fix, #26838**) | **No project-source change.** Trivial internal fix, irrelevant to the x86_64 CI targets that build this file. | +| b10354–b10355 | `include/llama.h` (**`llama_context_params` gains `n_outputs_max_per_seq`, mid-struct; `llama_sampler_i` gains `backend_reset`/`copy_state` + `llama_sampler_copy()`**), `common/speculative.h` (**purely additive `common_speculative_output_limits`/`common_speculative_get_output_limits`**), `common/sampling.h` (**on CLAUDE.md's "safe to skip" list**) — PR #25532 "multi-output backend sampling" | **No project-source change.** The new `llama_context_params` field is inserted mid-struct (ABI-breaking but this project always rebuilds from source) and is source-compatible — confirmed via grep that `jllama.cpp` never constructs `llama_context_params` directly, only through upstream's own `common_init_from_params`. `common_speculative_init`/`_draft`/`_accept` signatures unchanged, and no project source calls any `common_speculative_*` function directly. Unavoidable single-commit-sized step (113 KiB). | +| b10354–b10355 | upstream verification (sandbox, checkpoint) | All **6** patches re-verified against a clean b10355 checkout (ggml/llama.cpp commit `dd1ea5243`): fail-loud `PATCH_COMMAND` clean. **Full local verification (`include/llama.h` touched, warrants it):** fresh configure + full `cmake --build` (`libjllama.so` + `jllama_test` compile and link, `-O3`, no undefined references) + `ctest` **482/482 passing**. | +| b10355–b10359 | `include/llama.h` (**two comment lines removed only, `llama_sampler_copy` signature unchanged**), `ggml/src/ggml-opencl/**` (**flash-attn kernel work — compiled but no header API called directly**), `ggml/src/ggml-webgpu/**` (**unused backend**) | **No project-source change (final step of the b10333→b10359 walk).** Rest of the range is upstream CI workflow files, no C++ surface this project touches. | +| b10355–b10359 | upstream verification (sandbox, final target) | All **6** patches re-verified against a clean b10359 checkout (ggml/llama.cpp commit `84f712946`): fail-loud `PATCH_COMMAND` clean. **Full local verification (mandatory for the final target):** fresh configure + full `cmake --build` (`libjllama.so` + `jllama_test` compile and link, `-O3`, no undefined references) + `ctest` **482/482 passing**. Closes the b10333→b10359 walk (5 steps: b10333→b10338→b10342→b10344→b10353→b10354→b10355→b10359), on branch `claude/java-llama-cpp-b10359`. | From 60f94a3ab484757332ebef10a2fc47603ad3e55c Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 11 Aug 2026 15:26:26 +0000 Subject: [PATCH 09/10] Upgrade llama.cpp from b10359 to b10360 Single-step bump (3 KiB, 1 commit, under the 100 KiB threshold). Diff review: common/peg-parser.cpp only (#26780, suppress incomplete escape sequences in the JSON PEG grammar) - internal bugfix, peg-parser.h itself unchanged (also on CLAUDE.md's "safe to skip" list). No project source changes required. All 6 patches re-verified against a clean b10360 checkout (sequential git apply). Full local verification (mandatory for the final target): fresh cmake -B build + full cmake --build (libjllama.so + jllama_test compile and link, -O3, no undefined references) + ctest 482/482 passing. --- CLAUDE.md | 8 ++++---- README.md | 2 +- llama/CMakeLists.txt | 2 +- .../java/net/ladenthin/llama/value/LlamaCppVersion.java | 8 ++++---- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 64cf4768f..4c57fed0c 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -6,7 +6,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co Java bindings for [llama.cpp](https://github.com/ggerganov/llama.cpp) via JNI, providing a high-level API for LLM inference in Java. The Java layer communicates with a native C++ library through JNI. -Current llama.cpp pinned version: **b10359** +Current llama.cpp pinned version: **b10360** ## Upgrading CUDA Version @@ -429,7 +429,7 @@ needs no extra step here, `build-webui` re-reads the tag and rebuilds the matchi ships no UI): ```bash # needs node/npm + network; embed.cpp is plain C++17 (no npm) -git clone --depth 1 --branch b10359 https://github.com/ggml-org/llama.cpp /tmp/lc +git clone --depth 1 --branch b10360 https://github.com/ggml-org/llama.cpp /tmp/lc ( cd /tmp/lc/tools/ui && npm ci && npm run build \ && ( cd dist && find . -type f -not -path './_gzip/*' \ | while read -r f; do mkdir -p "_gzip/$(dirname "$f")"; gzip -9 -c "$f" > "_gzip/$f"; done ) \ @@ -469,7 +469,7 @@ cache lives in **Depot Cache** over sccache's **WebDAV** backend: - `SCCACHE_WEBDAV_TOKEN: ${{ secrets.DEPOT_TOKEN }}` — a Depot **organization** token, stored as the repo secret **`DEPOT_TOKEN`**. -Because `sccache` is **content-addressed** and llama.cpp is pinned (`GIT_TAG b10359`), the +Because `sccache` is **content-addressed** and llama.cpp is pinned (`GIT_TAG b10360`), the ~280 upstream object files are byte-identical every run, so a warm cache recompiles only the *changed* files. Depot's cache is **shared across all branches** (unlike GitHub's per-branch `actions/cache`), so every branch builds incrementally; a `b` version bump @@ -1296,7 +1296,7 @@ ctest --test-dir build --output-on-failure -R "ResultsToJson" #### Upstream source location (in CMake build tree) -llama.cpp is fetched via CMake FetchContent, pinned to `GIT_TAG b10359`. +llama.cpp is fetched via CMake FetchContent, pinned to `GIT_TAG b10360`. **GoogleTest** is a separate `BUILD_TESTING`-only FetchContent (`GIT_TAG v1.17.0`), used solely by the `jllama_test` C++ unit-test binary — not by the shipped library, and not coupled to the diff --git a/README.md b/README.md index 2baead967..32428f4c1 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ **Build:** ![Java 8+](https://img.shields.io/badge/Java-8%2B-informational) ![Platform](https://img.shields.io/badge/Platform-Linux%20%7C%20macOS%20%7C%20Windows%20%7C%20Android-lightgrey) -[![llama.cpp b10359](https://img.shields.io/badge/llama.cpp-%23b10359-informational)](https://github.com/ggml-org/llama.cpp/releases/tag/b10359) +[![llama.cpp b10360](https://img.shields.io/badge/llama.cpp-%23b10360-informational)](https://github.com/ggml-org/llama.cpp/releases/tag/b10360) [![JPMS](https://img.shields.io/badge/JPMS-modular%20JAR-25A162)](https://openjdk.org/projects/jigsaw/) ![JUnit](https://img.shields.io/badge/tested%20with-JUnit6-25A162) [![JSpecify](https://img.shields.io/badge/JSpecify-1.0.0%20%40NullMarked-25A162)](https://jspecify.dev) diff --git a/llama/CMakeLists.txt b/llama/CMakeLists.txt index 8f2c0cb85..8ecef4fe6 100644 --- a/llama/CMakeLists.txt +++ b/llama/CMakeLists.txt @@ -173,7 +173,7 @@ set(LLAMA_BUILD_APP OFF CACHE BOOL "" FORCE) FetchContent_Declare( llama.cpp GIT_REPOSITORY https://github.com/ggerganov/llama.cpp.git - GIT_TAG b10359 + GIT_TAG b10360 PATCH_COMMAND ${CMAKE_COMMAND} -DPATCH_DIR=${CMAKE_CURRENT_SOURCE_DIR}/patches -DLLAMA_SRC= diff --git a/llama/src/main/java/net/ladenthin/llama/value/LlamaCppVersion.java b/llama/src/main/java/net/ladenthin/llama/value/LlamaCppVersion.java index e8e5f147f..f231da462 100644 --- a/llama/src/main/java/net/ladenthin/llama/value/LlamaCppVersion.java +++ b/llama/src/main/java/net/ladenthin/llama/value/LlamaCppVersion.java @@ -10,13 +10,13 @@ * library was compiled against, exposed as a compile-time constant so callers can render a badge or * emit a startup log line without loading the native library. * - *

{@link #LLAMA_CPP_VERSION} is a pure-Java string ({@code "b10359"}) that mirrors the + *

{@link #LLAMA_CPP_VERSION} is a pure-Java string ({@code "b10360"}) that mirrors the * {@code GIT_TAG} in {@code llama/CMakeLists.txt}. It is available even when {@code libjllama} is * absent (pure-Java checkout, before {@code System.load}), which is what makes it suitable for a * lightweight version badge in Android or other UIs.

* *

For the authoritative value that is baked into the native binary — the build number - * plus the resolved upstream commit, e.g. {@code "b10359-"} — call + * plus the resolved upstream commit, e.g. {@code "b10360-"} — call * {@link net.ladenthin.llama.LlamaModel#getLlamaCppBuildInfo()} instead; that reads llama.cpp's own * {@code build-info} through JNI and therefore cannot drift from the compiled library (but requires * the native library to be loaded).

@@ -24,14 +24,14 @@ public final class LlamaCppVersion { /** - * The pinned llama.cpp release tag this library was built against, e.g. {@code "b10359"}. + * The pinned llama.cpp release tag this library was built against, e.g. {@code "b10360"}. * *

Kept in lockstep with {@code GIT_TAG} in {@code llama/CMakeLists.txt} — see the * "Upgrading/Downgrading llama.cpp Version" checklist in {@code CLAUDE.md}. This is the * compile-time pin; use {@link net.ladenthin.llama.LlamaModel#getLlamaCppBuildInfo()} for the * value actually linked into the native binary.

*/ - public static final String LLAMA_CPP_VERSION = "b10359"; + public static final String LLAMA_CPP_VERSION = "b10360"; // Constants holder — not instantiable. private LlamaCppVersion() {} From 2a1c3ea36ca720c67513f34c2ad0c418c8cf0526 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 11 Aug 2026 15:26:42 +0000 Subject: [PATCH 10/10] Document the b10359->b10360 bump in llama-cpp-breaking-changes.md --- docs/history/llama-cpp-breaking-changes.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/history/llama-cpp-breaking-changes.md b/docs/history/llama-cpp-breaking-changes.md index 444af0733..4fa8ac39b 100644 --- a/docs/history/llama-cpp-breaking-changes.md +++ b/docs/history/llama-cpp-breaking-changes.md @@ -598,3 +598,4 @@ Used during `llama.cpp` version bumps: when upgrading, scan this file from the r | b10354–b10355 | upstream verification (sandbox, checkpoint) | All **6** patches re-verified against a clean b10355 checkout (ggml/llama.cpp commit `dd1ea5243`): fail-loud `PATCH_COMMAND` clean. **Full local verification (`include/llama.h` touched, warrants it):** fresh configure + full `cmake --build` (`libjllama.so` + `jllama_test` compile and link, `-O3`, no undefined references) + `ctest` **482/482 passing**. | | b10355–b10359 | `include/llama.h` (**two comment lines removed only, `llama_sampler_copy` signature unchanged**), `ggml/src/ggml-opencl/**` (**flash-attn kernel work — compiled but no header API called directly**), `ggml/src/ggml-webgpu/**` (**unused backend**) | **No project-source change (final step of the b10333→b10359 walk).** Rest of the range is upstream CI workflow files, no C++ surface this project touches. | | b10355–b10359 | upstream verification (sandbox, final target) | All **6** patches re-verified against a clean b10359 checkout (ggml/llama.cpp commit `84f712946`): fail-loud `PATCH_COMMAND` clean. **Full local verification (mandatory for the final target):** fresh configure + full `cmake --build` (`libjllama.so` + `jllama_test` compile and link, `-O3`, no undefined references) + `ctest` **482/482 passing**. Closes the b10333→b10359 walk (5 steps: b10333→b10338→b10342→b10344→b10353→b10354→b10355→b10359), on branch `claude/java-llama-cpp-b10359`. | +| b10359–b10360 | `common/peg-parser.cpp` (**suppress incomplete escape sequences in the JSON PEG grammar, #26780**) | **No project-source change (single-step, final target).** Internal bugfix; `common/peg-parser.h` itself has zero diff (also on the "safe to skip" list). All **6** patches re-verified against a clean b10360 checkout (ggml/llama.cpp commit `48d22e295`): fail-loud `PATCH_COMMAND` clean. **Full local verification (mandatory for the final target):** fresh configure + full `cmake --build` (`libjllama.so` + `jllama_test` compile and link, `-O3`, no undefined references) + `ctest` **482/482 passing**. Same branch as the b10333→b10359 walk (`claude/java-llama-cpp-b10359`). |