Skip to content

Upgrade llama.cpp from b10333 to b10360 - #387

Merged
bernardladenthin merged 10 commits into
mainfrom
claude/java-llama-cpp-b10359
Aug 11, 2026
Merged

Upgrade llama.cpp from b10333 to b10360#387
bernardladenthin merged 10 commits into
mainfrom
claude/java-llama-cpp-b10359

Conversation

@bernardladenthin

Copy link
Copy Markdown
Owner

Summary

  • Upgrade pinned llama.cpp version from b10333 to b10360, walked in 7 chunked steps per the diff-size chunking runbook (docs/upgrade/llama-cpp-version-bump.md): b10333→b10338→b10342→b10344→b10353→b10354→b10355→b10359→b10360
  • Update all references in llama/CMakeLists.txt, README.md, CLAUDE.md, and LlamaCppVersion.java to the final pin
  • Append per-step diff-review and verification rows to docs/history/llama-cpp-breaking-changes.md

Notable upstream changes reviewed (none required project source changes)

  • cpp-httplib 0.52.0 → 0.53.0 (compiled into jllama via server-http.cpp): entirely additive WebSocketClient (outbound websocket client) API surface, not used by httplib::Server (the side this project uses) or any project source
  • include/llama.h: llama_context_params gains n_outputs_max_per_seq (multi-output backend sampling, PR #25532) — inserted mid-struct but source-compatible, since jllama.cpp never constructs this struct directly (only via upstream's common_init_from_params)
  • vendor/sheredom/subprocess.h: gains the pre-glibc-2.24 posix_spawn exec-error-reporting guard — exactly the upstream PR Claude/document build artifacts ls8 xc #106 fix CLAUDE.md's 0009-patch-drop note already anticipated as not affecting this project
  • New model architectures (Granite-Switch, Nemotron-H-MoE, Muse-Glimmer) and OpenCL/CUDA/WebGPU backend-internal work — all self-contained, no header this project includes directly

Test plan

  • All 6 downstream patches re-verified against every intermediate + final tag (sequential git apply, matching the PATCH_COMMAND applier order)
  • Full local build + ctest at every checkpoint where the diff touched compiled/vendored code (httplib bump, Muse-Glimmer step, llama.h sampling step) and at the final target — 482/482 C++ tests passing throughout
  • Configure-only verification at trivial/internal-only intermediate steps
  • CI is green on this branch

Related issues / PRs

Follow-up to #386 (CUDA 13.3 fixes merged on the same branch history)

Checklist

  • I have read CONTRIBUTING.md and CODE_OF_CONDUCT.md
  • My commits follow Conventional Commits
  • No security-sensitive changes

https://claude.ai/code/session_01CtT7KLNmC8gEoDS1EiGGwD


Generated by Claude Code

claude added 10 commits August 11, 2026 12:21
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).
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).
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.
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.
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).
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.
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).
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.
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

claude Bot commented Aug 11, 2026

Copy link
Copy Markdown

PR Review: llama.cpp b10333 → b10360

Summary: Well-executed version bump with thorough upstream analysis and comprehensive local verification.

Strengths:

  • All 6 downstream patches re-verified at every checkpoint
  • 482/482 C++ tests passing with full builds at code-change checkpoints
  • Version constant updated in all 4 required locations
  • Excellent documentation with 12 rows in breaking-changes.md
  • Configuration-only changes, zero source code risk

Verification complete:

  • Upstream API review thorough (cpp-httplib, llama.h, subprocess.h, model architectures all analyzed)
  • NativeLibraryLoadSmokeTest will validate constant ↔ binary sync at runtime

Status: Ready for CI validation. No blockers identified.

@bernardladenthin
bernardladenthin merged commit 7d71485 into main Aug 11, 2026
10 of 16 checks passed
@bernardladenthin
bernardladenthin deleted the claude/java-llama-cpp-b10359 branch August 11, 2026 15:30
@sonarqubecloud

Copy link
Copy Markdown

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants