From 344e9b6c8bc14b024e54252e61454006fe15f945 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 6 Jul 2026 13:08:36 +0000 Subject: [PATCH] Docs: refresh stale README/pom notes after the PR #298 merge MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Post-merge documentation audit found three spots that no longer matched reality: - README "Features" closing bullet still described the pre-classifier era ("CUDA, Metal, and Vulkan supported via local build") and an incomplete platform list. Now lists the actual default-JAR platform set (Linux x86-64/aarch64/s390x, macOS incl. Metal, Windows x86-64/x86/arm64, Android arm64/x86-64), points at the classifier table for the six GPU backends, and mentions the llama-android AAR + llama-kotlin facade. Also adds the missing headline bullets for conversation checkpoints, GGUF metadata inspection, and router/attach server modes (their dedicated sections already existed). - README "TODO" section claimed PIT targetClasses was "narrowed to a single class (Pair)" — it has long covered value.*/exception.*/args.* plus four json parsers (295 mutations, 100% killed, hermetic). Now states the actual scope and links TODO.md as the canonical open list. - llama/pom.xml PIT comment still carried the obsolete "audioFile mutants only killed with the audio fixture present" note; the gate is hermetic via ContentPartTest's @TempDir tests. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01XVMuGj2shABrHWJ9sNqLqX --- README.md | 9 +++++++-- llama/pom.xml | 4 ++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index df67388d..823b679e 100644 --- a/README.md +++ b/README.md @@ -111,7 +111,10 @@ Inference of Meta's LLaMA model (and others) in pure C/C++. - **Raw JSON endpoint handlers** mirroring the upstream llama.cpp HTTP server (`/completions`, `/v1/completions`, `/embeddings`, `/infill`, `/tokenize`, `/detokenize`). - **Two runnable HTTP server modes, one fat-jar entry.** The fat jar's `Main-Class` is `ServerLauncher`, which dispatches on the `--jllama-openai-compat` flag. Without it, `java -jar …-jar-with-dependencies.jar -m model.gguf --port 8080` runs the full upstream llama.cpp server (embedded **WebUI**, every llama-server flag forwarded) hosted inside `libjllama` over JNI — no separate `llama-server.exe`. With it, `java -jar … --jllama-openai-compat --model model.gguf --port 8080` runs the Java-transport, zero-extra-dependency **OpenAI-compatible** server (`OpenAiCompatServer`, streaming SSE) instead. Both are also runnable directly by class name via `java -cp … net.ladenthin.llama.server.{NativeServer,OpenAiCompatServer}`. - **Model metadata** access (`getModelMeta()`) and **server management** (metrics, slot save/restore, runtime thread reconfiguration). -- Pre-built native binaries for Linux (x86-64, aarch64), macOS (x86-64, arm64), and Windows (x86-64, x86); CUDA, Metal, and Vulkan supported via local build. +- **Conversation checkpoints** — `Session.checkpoint(...)` / `rewind(...)` / `fork(...)` branch and roll back a chat (KV-cache slot save/restore + transcript snapshot) without re-prefilling. +- **GGUF metadata inspection** without loading the model (`GgufInspector` — pure Java, reads header + key/value table only, big-endian aware). +- **Multi-model router mode** (`--models-dir` + per-request model selection, managed via the typed `RouterClient`) and **attach mode** (`NativeServer(LlamaModel, ...)` serves an already-loaded model over the full upstream HTTP frontend — one copy of the weights). +- Pre-built native binaries in the default JAR for Linux (x86-64, aarch64, s390x), macOS (x86-64, arm64 — Metal included), Windows (x86-64, x86, arm64) and Android (arm64, x86-64); GPU backends (CUDA, Vulkan, OpenCL, ROCm/HIP, SYCL, OpenVINO) ship as Maven classifiers — see [Choosing the right classifier](#choosing-the-right-classifier). Android additionally ships as the [`llama-android` AAR](#importing-in-android) with the optional `llama-kotlin` coroutines façade. ## Quick Start @@ -1132,7 +1135,9 @@ keep class net.ladenthin.llama.** { *; } ## TODO -- **Expand PIT mutation-testing scope.** PIT is wired in `pom.xml` and runs on every CI build (in the `test-java-linux-x86_64` job) with `100`, but `` is currently narrowed to a single class (`Pair`). The intent is to exercise the wiring and gate against regressions on that single class today; widen `` incrementally as additional classes reach mutation-test parity. Final target: `net.ladenthin.llama.*` matching the streambuffer pattern. +Open work items live in [`TODO.md`](TODO.md). + +- **Expand PIT mutation-testing scope.** PIT is wired in `pom.xml` and runs on every CI build (in the `test-java-linux-x86_64` job) with `100`. `` currently covers `net.ladenthin.llama.value.*`, `exception.*`, `args.*` and four `json` parsers (295 mutations, 100% killed, hermetic — no model or fixture needed); widen it incrementally as additional classes reach mutation-test parity. Final target: `net.ladenthin.llama.*` matching the streambuffer pattern. ## Feature Ideas diff --git a/llama/pom.xml b/llama/pom.xml index a070b508..3a7ac5f7 100644 --- a/llama/pom.xml +++ b/llama/pom.xml @@ -694,8 +694,8 @@ SPDX-License-Identifier: MIT see ../workspace/policies/pit-mutation-testing.md. Repo-specific: the gated value/exception/args/json classes are pure-Java (no native libjllama or model file needed); targetClasses/targetTests are - kept in lock-step. NOTE: value.ContentPart.audioFile(Path) mutants are only - killed with the audio fixture present — see TODO.md and policy §4. + kept in lock-step. The gate is hermetic: ContentPartTest's @TempDir tests + cover value.ContentPart.audioFile(Path), so no fixture is required. --> org.pitest pitest-maven