Skip to content

feat: link against prebuilt llama.cpp binary releases#37

Merged
SnowCheetos merged 5 commits into
devfrom
feat/prebuilt-linking
Jun 29, 2026
Merged

feat: link against prebuilt llama.cpp binary releases#37
SnowCheetos merged 5 commits into
devfrom
feat/prebuilt-linking

Conversation

@SnowCheetos

Copy link
Copy Markdown
Contributor

Summary

Replaces the source-build requirement for llama.cpp with a hybrid approach that downloads official prebuilt binary releases for supported target triples, falling back to source build when no prebuilt archive exists.

Changes

  • build.rs: Target→archive mapping covering all 6 published binary archives (macOS arm64/x64, Linux x64/arm64 with optional Vulkan), with source-build fallback for CUDA/SYCL/ROCm
  • CI/CD: Removed cmake/openblas/submodules:recursive from standard jobs; bundles .dylib/.so in release artifacts
  • Bridge (C++): autocommit_init wrapper encapsulating model loading + param fitting; autocommit_llama_params_fit stub for prebuilt mode
  • Bridge header/Rust FFI: Updated declarations for new init API

Performance

Full workspace compiles in ~10s (vs minutes) with prebuilt path on aarch64-apple-darwin. All 129 tests pass.

Supported targets

Triple Archive
aarch64-apple-darwin macos-arm64
x86_64-apple-darwin macos-x64
x86_64-unknown-linux-gnu ubuntu-x64 / vulkan-x64
aarch64-unknown-linux-gnu ubuntu-arm64 / vulkan-arm64
other source build fallback

Closes #36

…ding from source

Adds hybrid prebuilt/source dispatch to build.rs that downloads official
llama.cpp binary releases for supported target triples (macOS arm64/x64,
Linux x64/arm64 with optional Vulkan), with automatic source-build
fallback for CUDA, SYCL, and other unsupported backends.

- Prebuilt archives are cached locally for fast rebuilds (~10s vs minutes)
- CI/CD workflows updated: removed cmake/openblas/submodules:recursive
  for standard jobs, bundles .dylib/.so in release artifacts
- Bridge updated for b9837 API changes with autocommit_init wrapper
  encapsulating model loading and param fitting
@SnowCheetos
SnowCheetos merged commit 18ecfa2 into dev Jun 29, 2026
7 of 8 checks passed
SnowCheetos added a commit that referenced this pull request Jun 29, 2026
* fix(llama-runtime): context initialization fallback

Fix context initialization fallback across 1 file.

### Changes
- [`crates/llama-runtime/src/context_handle.rs`] Fix context initialization fallback: Correct null handling and fallback logic

### Version Bumps
- [`crates/llama-runtime/Cargo.toml`] Rust / Cargo: 0.10.1 -> 0.10.2 (patch); code changes detected; suggest a patch project version bump

### Risk
- Level: low

* modified:   README.md
	modified:   third_party/llama.cpp

* feat: add SYCL GPU backend support for llama-sys

Implement SYCL GPU backend support in `llama-sys` to enable GPU acceleration for inference.

### Changes
- [`.github/workflows/ci.yml`] Add Clippy formatting checks: Implement Clippy formatting checks for various platforms, improving code style and catching potential issues
- [`Cargo.toml`] Optimize release builds
- [`README.md`] Add installation and usage examples: Provide users with clear instructions on how to install and use `autocommit`

### Version Bumps
- [`crates/cli/Cargo.toml`] Rust / Cargo: 0.16.4 -> 0.17.0 (minor); manifest changed without an explicit project version bump; suggest minor bump
- [`crates/core/Cargo.toml`] Rust / Cargo: 0.10.1 -> 0.11.0 (minor); manifest changed without an explicit project version bump; suggest minor bump
- [`crates/llama-runtime/Cargo.toml`] Rust / Cargo: 0.10.2 -> 0.11.0 (minor); manifest changed without an explicit project version bump; suggest minor bump
- [`crates/llama-sys/Cargo.toml`] Rust / Cargo: 0.9.3 -> 0.10.0 (minor); manifest changed without an explicit project version bump; suggest minor bump

### Risk
- Level: low
- No major security risks associated with SYCL GPU backend.
- Testing will be required to ensure proper functionality and performance on GPU hardware.

* fix(autocommit): doc comment and improve classify_path error handling

Resolved doc comment and error handling in classify_path function

### Changes
- [`crates/core/src/diff/importance.rs`] Fix doc comment and improve `classify_path` error handling

### Risk
- Level: low
- No critical issues identified

* refactor(autocommit): cLI quantization logic and simplify path extraction in llama-runtime

The changes simplify path extraction logic and update quantization handling for unknown repositories, improving code clarity and maintainability.

### Changes
- [`crates/cli/src/cmd/config.rs`] Update quantization logic for unknown repos: Provide default quantization settings when repository not recognized
- [`crates/core/src/pipeline/reduce.rs`] Simplify path extraction logic: Eliminate redundant variable assignments to improve readability
- [`crates/llama-runtime/src/context_handle.rs`] Simplify function signatures and collect symbols: Fix formatting issues in two source files

### Version Bumps
- [`crates/core/Cargo.toml`] Rust / Cargo: 0.11.0 -> 0.11.1 (patch); code changes detected; suggest a patch project version bump

### Risk
- Level: low
- No critical issues identified in the refactoring efforts
- Changes are localized and focused on specific modules

* test: update README with GitHub release badge

### Changes
- [`README.md`] Update README with GitHub release badge: Include latest release information in README

### Risk
- Level: low

* feat: link against prebuilt llama.cpp binary releases (#37)

* feat: link against prebuilt llama.cpp binary releases instead of building from source

Adds hybrid prebuilt/source dispatch to build.rs that downloads official
llama.cpp binary releases for supported target triples (macOS arm64/x64,
Linux x64/arm64 with optional Vulkan), with automatic source-build
fallback for CUDA, SYCL, and other unsupported backends.

- Prebuilt archives are cached locally for fast rebuilds (~10s vs minutes)
- CI/CD workflows updated: removed cmake/openblas/submodules:recursive
  for standard jobs, bundles .dylib/.so in release artifacts
- Bridge updated for b9837 API changes with autocommit_init wrapper
  encapsulating model loading and param fitting

* fix: remove mparams.embedding (removed from b9837 llama_model_params)

* chore: add .vscode/ to gitignore

* fix: address clippy needless_borrows_for_generic_args lint in build.rs

* fix: skip ggml-metal on macOS < 15 and update test error message

* feat: enrich commit body with LLM-generated bullet points (#38)

* feat: enrich commit body with LLM-generated bullet points

Add an optional `body` field to AnalysisReport that carries 1-3
concrete bullet points produced by the reduce model. When present,
compose_commit_body prefers this body over the mechanical per-item
changes section, yielding a more coherent and contextual commit
message body.

- Add body field to ReduceModelOutput (String, serde default)
- Add body field to AnalysisReport (Option<String>, serde default)
- Update REDUCE_GBNF grammar to require body in reduce output
- Update build_reduce_prompt with body instructions + examples
- salvage_reduce_output returns empty body fallback
- All struct literal constructors pass body: None

* test: add LLM body-aware test cases for compose_commit_body

- compose_commit_message_uses_llm_body_when_present: verifies LLM
  body replaces changes section and summary
- compose_commit_message_falls_back_when_llm_body_is_empty: verifies
  empty body falls through to summary + changes section

* fix: add missing body fields and fix formatting

- Add body: String::new() to 4 test ReduceModelOutput constructors
  that were missing the field (caught by CI with --features llama-native)
- Run cargo fmt --all to fix formatting issue in model.rs
- Add 2 new tests for LLM body path in compose_commit_body

* feat(pr): interactive GitHub issue linking and PR metadata flags (#39)

* feat(pr): add interactive GitHub issue linking and PR metadata flags

- Extracted GhHelper subprocess wrapper for reusable gh invocations
- Added issue reference types (IssueRef, ClosingKeyword)
- Extended PrArgs with --issue, --closes/--fixes/--resolves, --no-verify-issue,
  --reviewer, --assignee, --label, --milestone, --web
- Added parse_issue_identifier for #N, N, and URL-form issue references
- Added verify_issue via gh issue view --json number,title,url
- Added render_linked_issues_block to produce ### Linked issues section
- Added append_or_replace_issue_block to manage in-body issue references
- Added resolve_issue_ids for flag-based verification with dedup
- Added prompt_issue_linking for interactive issue search/select/keyword
- Updated create_pr and update_pr to forward metadata flags to gh
- Updated render_dry_run to show issues and metadata
- 15 new tests covering parsing, rendering, dedup, dry-run

* fix(ci): address clippy warnings and macOS 14 Metal dylib test failure

- Add #[allow(clippy::too_many_arguments)] to render_dry_run and create_pr
- Fix collapsible_if in parse_issue_identifier (use nested Option destructuring)
- Fix let_and_return x2 in prompt_issue_linking (inline expression)
- Switch Test and Clippy CI runners from macos-14 to macos-latest
  (prebuilt libllama.dylib transitively depends on ggml-metal.dylib,
  which requires macOS 15+; macos-14 runners crash at runtime)

---------

Signed-off-by: Cass Sheng <86272122+SnowCheetos@users.noreply.github.com>
@SnowCheetos
SnowCheetos deleted the feat/prebuilt-linking branch July 6, 2026 08:06
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.

Link against official llama.cpp binary releases for supported backends

1 participant