chore: configure crates.io publishing, CI, and Codecov - #15
Merged
Conversation
Set the crate up for release to crates.io and continuous integration, mirroring the paradedb/decimal-bytes setup and adapting it to this crate's BLAS feature model. - Cargo.toml: add publishing metadata (authors, repository, homepage, readme, categories, keywords, rust-version/MSRV 1.85). - README.md: overview, usage, BLAS-backend matrix, and status badges (crates.io, Codecov, CI, docs.rs, license). - LICENSE (MIT) and CONTRIBUTING.md. - .github/workflows/ci.yml: test matrix (default / openblas on Linux, accelerate on macOS), clippy, rustfmt, docs, MSRV check, and Codecov coverage upload. Avoids --all-features because accelerate and openblas are mutually exclusive and platform-specific. - .github/workflows/release.yml: tag-driven validate -> cargo publish -> GitHub release. - .github/dependabot.yml: monthly cargo and github-actions updates. Also make the tree pass the new CI gates: rustfmt normalization, a couple of Clippy autofixes (div_ceil / is_multiple_of), a doc-comment fix in build.rs, and crate-wide allows for the stylistic lints the numeric kernels intentionally trip. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CfJLL9FP9VGyuWmsW6wttH
The pruning kernels use AVX512 intrinsics (e.g. `_mm512_mask_compressstoreu_epi32`) and `u*::is_multiple_of`, both stable since Rust 1.89. The initial `rust-version = "1.85"` was wrong: it broke the MSRV compile check and tripped Clippy's `incompatible_msrv` lint. Bump the declared MSRV (and its CI toolchain, README, and CONTRIBUTING references) to 1.89. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CfJLL9FP9VGyuWmsW6wttH
Welcome to Codecov 🎉Once you merge this PR into your default branch, you're all set! Codecov will compare coverage reports and display results in all future pull requests. Thanks for integrating Codecov - We've got you covered ☂️ |
walter-woodall
approved these changes
Jul 22, 2026
philippemnoel
marked this pull request as ready for review
July 22, 2026 19:16
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Sets
superkmeans-rsup for release to crates.io and continuous integration, mirroring theparadedb/decimal-bytessetup and adapting it to this crate's BLAS feature model.What's included
Packaging & docs
Cargo.toml: publishing metadata —authors,repository,homepage,readme,categories,keywords, andrust-version = "1.85"(MSRV, matching edition 2024).README.md: overview, quick-start usage, BLAS-backend matrix, and status badges (crates.io, Codecov, CI, docs.rs, license).LICENSE(MIT) andCONTRIBUTING.md.CI —
.github/workflows/ci.ymltest: matrix of default features (Linux),openblas(Linux, installslibopenblas-dev), andaccelerate(macOS).clippy(default +openblas),fmt,docs(RUSTDOCFLAGS=-D warnings),msrv(checks against Rust 1.85), andcoverage(uploads lcov to Codecov, slugparadedb/superkmeans-rs).--all-features.accelerate(a macOS-only framework) andopenblas(a system lib) are mutually exclusive and platform-specific, so enabling both at once fails to link. The matrix exercises each backend on a platform where it works.Release —
.github/workflows/release.ymlv*): validate (tag ==Cargo.tomlversion, tests, clippy) →cargo publish→ GitHub release.Dependabot —
.github/dependabot.ymlcargoandgithub-actionsupdates.Source changes to satisfy the new CI gates
src/pdxearch.rssignature wrapping).div_ceil(src/utils.rs),is_multiple_of(src/layout.rs) — both semantics-preserving.build.rs.#[allow(...)]insrc/lib.rsfor the stylistic lints the numeric kernels intentionally trip (needless_range_loop,too_many_arguments,manual_memcpy,field_reassign_with_default,doc_lazy_continuation) — rather than reshaping the ports of the C++ kernels.Verified locally (Rust 1.94)
cargo fmt --check,cargo clippy -- -D warnings(default and--features openblas),cargo doc,cargo test(16 pass), andcargo publish --dry-run(packages 27 files) all pass.Required before release / green coverage
Two repo secrets must be configured in Settings → Secrets and variables → Actions:
CARGO_REGISTRY_TOKEN— crates.io publish token (release workflow).CODECOV_TOKEN— Codecov upload token (coverage job; it currently runs withfail_ci_if_error: true).Also confirm the crate name
superkmeans-rsis available/owned on crates.io before the firstv0.1.0tag.🤖 Generated with Claude Code
Generated by Claude Code