v0.5.0
v0.5 chunker wave: 5 new languages — Kotlin, SQL, Terraform (HCL), C, C++ — bringing pluck to 16 languages and formats total. First release with Homebrew.
Performance (gated on benchmarks/baseline.json)
| Metric | Value | What it gates |
|---|---|---|
chunker_medium_ms_p50 |
1.05 ms | tree-sitter parse + chunk extraction on a 500-line file |
indexer_files_per_sec_medium |
2 747 files/s | cold-start indexing throughput |
warm_search_p50_ms_medium |
0.07 ms | warm BM25F + RRF hybrid search |
freshness_p50_ms_medium |
171 ms | save → re-indexed → visible to next query |
session_dedup_session_savings_pct |
23 % | re-shown chunks replaced with a 1-token placeholder |
digest_savings_pct |
71 % | pluck.digest compression of CI / test / build logs |
Every release proves these on a real bench; every PR is gated against them. The frozen values are floor invariants, not aspirations.
16 languages / formats supported
Programming: Rust · TypeScript · TSX · JavaScript · Python · Go · Java · Kotlin · C · C++
Data / config: SQL · Terraform (HCL) · YAML · JSON · TOML
Docs / scripts: Markdown / MDX · HTML · CSS / SCSS · Dockerfile · Shell
Highlights
- 5 new chunkers (Kotlin, SQL, Terraform / HCL, C, C++) — each shipped with a smoke test AND a real-world fixture in the same PR. Notable design choices:
- HCL emits dotted symbols matching HCL's own reference syntax (
resource.aws_s3_bucket.main,variable.region) so agents grep either the block type or the address and land. - C++ captures
= delete/= defaultspecial members, qualified out-of-class member impls, reference-return variants, and templated class / function with both outer + inner surface for grep-by-either. - SQL emits a module chunk per
ALTER TABLEso migration files surface the touched object even when the originalCREATE TABLElives elsewhere.
- HCL emits dotted symbols matching HCL's own reference syntax (
- 7 repo-format chunkers from the unreleased v0.4 train ride along — HTML, CSS / SCSS, Markdown / MDX, YAML / JSON / TOML, Dockerfile, Shell, Java.
- Prompt-first agent install — a single copy-pastable prompt installs pluck, registers the MCP server, and applies the strongest pluck-first retrieval layer the agent officially supports (Claude Code / Codex / Cursor + universal fallback for any MCP-capable agent).
pluck initwrites.mcp.json/~/.codex/config.toml/.cursor/mcp.jsonfor one-command install-time replacement of the retrieval channel.- Release infra —
workflow_dispatchre-runs the release workflow on a specific tag without re-pushing; version-management gate enforces Cargo.toml / Cargo.lock / CHANGELOG consistency on PRs;scripts/bump-version.pykeeps internalpluck-coredeps + Cargo.lock in lockstep.
Fixed
PLUCK_MCP_PROTOCOL_VERSIONletspluckdpin the advertised MCP protocol for clients that have not caught up to2025-11-25.- TSX files now parse with tree-sitter's TSX grammar; parse warnings include the repo-relative path; index summaries count parse-error files.
pluck.grepis literal-by-default (--fixed-stringsunless an explicit mode flag is passed). Identifiers with regex metacharacters likeFoo(no longer fail with an unclosed-group error.pluck.greppre-validatescwdand surfaces a clear "cwd does not exist" diagnostic instead of a misleading "isrgon PATH?" spawn error.- Release workflow ownership split:
release.ymlowns GitHub Release + binaries,scripts/release.showns crates.io publish.
Install
# Cargo
cargo install pluck-cli pluck-mcp
# Homebrew (NEW in 0.5.0)
brew tap hunhee98/pluck
brew install pluck
# Or pre-built binaries — see assets below
# • x86_64-apple-darwin
# • aarch64-apple-darwin
# • x86_64-unknown-linux-gnuThen register pluckd with your AI agent using the agent install prompt.
Known limitations
aarch64-unknown-linux-gnubinary is NOT in this release. Azure-hosted Ubuntu runners cannot fetch arm64 apt indexes through their default mirror, breakinglibssl-dev:arm64install. Tracked for v0.5.1 (ports.ubuntu.com sources orcross-rs/crossDocker container). Workaround on ARM Linux today:cargo install pluck-cli pluck-mcp(builds from source, no binary needed).CREATE PROCEDUREis not indexed in SQL files — tree-sitter-sequel grammar limitation. Functions, triggers, views, and ALTER TABLE migrations are fully supported. Waits on upstream grammar fix or parser swap.
Full changelog
See CHANGELOG.md for the complete entry list and the v0.3.0…v0.5.0 PR list for every merged change.