Skip to content

fix: update deprecated GitHub Actions runners#3

Merged
bernardladenthin merged 1 commit into
masterfrom
claude/fix-ci-runners-8PsbZ
Mar 22, 2026
Merged

fix: update deprecated GitHub Actions runners#3
bernardladenthin merged 1 commit into
masterfrom
claude/fix-ci-runners-8PsbZ

Conversation

@bernardladenthin

Copy link
Copy Markdown
Owner

Summary

This PR adds comprehensive unit test coverage for the Pair generic utility class and updates CI/CD workflows to use newer runner versions for better compatibility and security.

Key Changes

Source Code

  • Added PairTest.java: New test suite with 18 test cases covering:
    • Basic getter functionality (getKey(), getValue())
    • Null value handling for both key and value
    • Equality comparison (same pairs, different keys/values, null comparisons, different types)
    • Hash code consistency and null safety
    • String representation with various input types
    • Generic type support with different type combinations (primitives, arrays, complex types)

CI/CD Updates

  • Updated macOS runner from macos-13 to macos-15 in both CI and release workflows
  • Updated Windows runner from windows-2019 to windows-2022 in both CI and release workflows
  • Updated Visual Studio generator from "Visual Studio 16 2019" to "Visual Studio 17 2022" for Windows builds

Documentation

  • Added CLAUDE.md: Comprehensive guide for Claude Code covering:
    • Project overview and architecture
    • Build commands for Java and native libraries
    • Two-layer design explanation (Java/Native)
    • Parameter flow and native library resolution
    • Testing requirements and constraints

Implementation Details

The PairTest class uses JUnit 4 assertions and covers edge cases including null handling, type safety with generics, and proper equals() and hashCode() contract compliance. Tests verify that the Pair class correctly implements value semantics and works with various generic type combinations.

https://claude.ai/code/session_017C9kqtVWUdnfMqosKJchiG

Replace removed runners:
- windows-2019 → windows-2022 (with VS generator 16 2019 → 17 2022)
- macos-13 → macos-15 (Intel macOS runners retired; macos-15 is ARM64)

https://claude.ai/code/session_017C9kqtVWUdnfMqosKJchiG
@bernardladenthin
bernardladenthin merged commit 232c859 into master Mar 22, 2026
3 of 4 checks passed
@bernardladenthin
bernardladenthin deleted the claude/fix-ci-runners-8PsbZ branch March 23, 2026 10:05
vaiju1981 pushed a commit to vaiju1981/java-llama.cpp that referenced this pull request Jun 25, 2026
Re-checked all six findings raised after PR bernardladenthin#268 against the pinned upstream
tts.cpp @ b9739. Two were false alarms; four were genuine.

Verified upstream-faithful (NOT divergences) — added provenance comments only:
- bernardladenthin#1 llama_model_n_embd_out: upstream tts.cpp:1042 uses the exact same call.
  Comment now notes it reads the vocoder OUTPUT embedding width, matching upstream.
- bernardladenthin#2 0.25 s silence lead-in: upstream tts.cpp:1077-1080 zeroes the first 0.25 s
  identically. Comment notes it mirrors upstream and that our `i < audio.size()`
  bound is an added safety guard over upstream's fixed 24000/4.

Genuine findings fixed:
- bernardladenthin#3 heavy include in shared header: tts_upstream.h now includes
  <nlohmann/json_fwd.hpp> (forward-declares ordered_json) instead of the full
  <nlohmann/json.hpp>, and drops the json default argument. The single caller,
  tts_engine.cpp, includes the full json and passes an explicit empty object.
  Future includers of the shared interface no longer pull in ~25k lines of json.
- bernardladenthin#4 unasserted duplicate enum: generate-tts-upstream.cmake now captures the
  upstream `outetts_version` enum body and pins its enumerators + order against
  the hand-written copy in tts_upstream.h, so a reorder/rename fails the configure
  instead of silently assigning different integer values across the two TUs.
- bernardladenthin#5 prompt_add overload coverage: the bare `void prompt_add(` prefix de-statics
  all three upstream overloads but only proved >=1 existed. The generator now
  pins (whitespace-tolerant) both overloads the header declares, turning a future
  cryptic link error into a clear configure-time failure.
- bernardladenthin#6 weak WAV assertion: TtsIntegrationTest now parses the RIFF/WAVE header
  (PCM format, mono, 24 kHz, 16-bit), checks chunk-size self-consistency, and
  scans the PCM payload for non-zero samples — so a near-empty or all-silent
  result no longer passes the way `length > 44` did.

Generator regexes validated against the real b9739 source via `cmake -P`
(including a negative drift control); Java test compiles; clang-format 22.1.5
and Spotless both clean. Native build not run here (sandbox proxy blocks the
dependency FetchContent clones) — exercised in CI.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QTQ8mBM9tyKkHbXVBpGwET
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