Skip to content

Releases: ultralytics/template-rust

v0.0.6 - Improve README accuracy and links (#54)

10 Jun 23:37
83fd8c4

Choose a tag to compare

🌟 Summary

🛠️ v0.0.6 is a maintenance-focused release that improves release accuracy, CI security, and package quality, with the latest PR from @glenn-jocher making the README clearer so users install the correct crate version.

📊 Key Changes

  • 📘 README accuracy improved

    • The latest PR by @glenn-jocher updates the dependency example to point to the latest published crate version instead of an outdated one.
    • Existing badges, links, and community references were preserved.
    • This helps users copy the right install example from the start.
  • 📦 Crate version bumped to 0.0.6

    • The package version was updated from 0.0.5 to 0.0.6.
  • 🔒 CI and release workflows were hardened

    • GitHub Actions were upgraded and pinned to exact commit SHAs instead of floating tags.
    • This affects checkout, caching, Python setup, coverage upload, publishing, and SBOM generation.
    • Key workflow tools were updated, including:
      • actions/checkout
      • codecov/codecov-action
      • Swatinem/rust-cache
      • astral-sh/setup-uv
      • anchore/sbom-action
      • taiki-e/install-action
  • 🧪 Coverage and benchmarking tooling updated

    • criterion was upgraded from 0.5 to 0.8.
    • Benchmark code was slightly modernized to use std::hint::black_box.
  • 🧾 Package metadata was expanded

    • Added explicit authors
    • Cleaned up Rust package settings
    • Added an include list so published crate contents are more controlled and predictable
  • 🛡️ New project quality configs added

    • Added clippy.toml for stricter linting guidance
    • Added deny.toml for dependency, license, and source checks
  • 🔗 Documentation links were cleaned up

    • Fixed redirected or outdated links, including the AGPL license URL and YouTube link formatting.

🎯 Purpose & Impact

  • Less confusion for new users

    • The README now better reflects the published crate version, so users are less likely to install an outdated dependency.
  • 🔐 More secure and reproducible automation

    • Pinning GitHub Actions to exact versions reduces supply-chain risk and makes CI behavior more consistent over time.
  • 🚀 Better release and publishing hygiene

    • Improved metadata and controlled package contents help make releases cleaner and more professional.
  • 🧹 Higher project quality with little user-facing disruption

    • This release does not introduce major new features or model changes, but it strengthens the template’s reliability, maintainability, and trustworthiness.
  • 👩‍💻 Better for maintainers and contributors

    • Updated linting, dependency checks, and CI tooling make development smoother and help catch issues earlier.

In short: v0.0.6 is a polish-and-stability release ✨—small on visible features, but important for making the Rust template easier to use, safer to maintain, and more accurate for everyone.

What's Changed

New Contributors

Full Changelog: v0.0.5...v0.0.6

v0.0.5 - ci: 👷 Update Rust toolchain to nightly in format workflow (#12)

27 Nov 11:35
d6de697

Choose a tag to compare

🌟 Summary

v0.0.5 is a tooling-focused release 🎛️ that standardizes the Rust toolchain on nightly, tightens formatting/linting in CI, and refreshes crate metadata—making development smoother and more consistent for contributors.


📊 Key Changes

  • 🛠️ Rust toolchain upgraded to nightly everywhere

    • CI formatting workflow now uses dtolnay/rust-toolchain@nightly instead of @stable.
    • CI publish workflow also switched to @nightly and explicitly installs:
      • rustfmt for formatting checks
      • clippy for linting
  • 📦 Crate version bump

    • Cargo.toml version updated from 0.0.40.0.5.
  • 📚 Improved crate metadata

  • 🧩 Project-wide toolchain configuration

    • New rust-toolchain.toml file added to define a consistent nightly toolchain, components, and targets for all developers:
      • Channel: nightly
      • Components: rustfmt, clippy, rust-src, rust-analyzer
      • Targets: major Linux, macOS (Intel & Apple Silicon), and Windows architectures.
  • Enhanced formatting config

    • rustfmt.toml now enables unstable_features = true to support nightly-only formatting options.

🎯 Purpose & Impact

  • Consistent formatting & linting across environments
    Ensures cargo fmt and cargo clippy behave the same for everyone—locally and in CI—reducing “works on my machine” issues and noisy diffs.

  • 🚀 Enables advanced nightly-only formatting features
    By opting into nightly and unstable rustfmt features, the project can use more powerful, stricter, or more expressive formatting rules.

  • 🧱 Stronger, more predictable CI
    CI now explicitly installs and runs rustfmt and clippy, catching style and correctness issues earlier, before they hit main branches.

  • 🌐 Better discoverability & documentation linkage
    Adding the docs URL to Cargo.toml makes it easier for users to jump from the crate to Ultralytics documentation via crates.io or IDE integrations.

  • 📌 Patch release reflecting tooling upgrades
    Version 0.0.5 cleanly marks this as a tooling/infra-focused update—no breaking API changes, but a more polished developer experience.

What's Changed

  • ci: 👷 Update Rust toolchain to nightly in format workflow by @onuralpszr in #12

Full Changelog: v0.0.4...v0.0.5

v0.0.4 - Add MSRV badge to README and create rustfmt configuration file (#9)

27 Nov 10:42
bcb6387

Choose a tag to compare

🌟 Summary

v0.0.4 turns the Ultralytics Rust template into a more reliable, performance‑aware, and contributor‑friendly project by standardizing tooling (MSRV, formatting), adding benchmark infrastructure, and improving crate discoverability. 🚀


📊 Key Changes

  • 🦀 Explicit Rust MSRV & Tooling (PR #9 – primary change)

    • Added .clippy.toml with msrv = "1.91" to lock in the minimum supported Rust version.
    • Introduced rustfmt.toml with consistent, opinionated formatting (2024 edition, wrapped comments, normalized docs, grouped imports).
    • Updated README.md with an MSRV badge that links directly to Cargo.toml.
    • Bumped crate version from 0.0.30.0.4.
  • 🏎️ Criterion.rs Benchmarking Support (PR #10)

    • Added criterion as a dev dependency with HTML report support.
    • Registered a new example_bench target and implemented benches/example_bench.rs benchmarking the add_numbers function.
    • Created benches/README.md with clear instructions for running, viewing, and extending benchmarks.
    • Updated .gitignore to exclude /target/criterion/ (benchmark output) and .cargo-deny/.
  • 🔍 Improved Crate Metadata & Discoverability (PR #11)

    • Updated keywords to emphasize ultralytics, ml, ai, and yolo.
    • Expanded categories to include science and computer-vision alongside development-tools.

🎯 Purpose & Impact

  • Clear compatibility expectations

    • The explicit MSRV (Rust 1.91) and badge make it easy for users and CI systems to know which Rust version is required, avoiding build surprises and version mismatches.
  • Consistent, clean code for all contributors

    • Project-wide rustfmt settings and Clippy MSRV alignment ensure everyone formats code the same way, reducing “style-only” diffs and speeding up reviews.
  • 📈 Built-in performance benchmarking

    • Criterion-based benchmarks let you measure how fast your code runs and how it changes over time, with HTML reports that are easy to explore.
    • The included example_bench and benches/README.md serve as a template so you can quickly add your own benchmarks.
  • 🤝 Easier discovery in the Rust + AI ecosystem

    • Improved keywords and categories help developers on crates.io quickly recognize this as an Ultralytics-style AI/ML and computer vision template, making it more likely to be found and adopted.
  • 🚀 Stronger foundation for future AI/ML Rust projects

    • With standard tooling, performance tracking, and clearer positioning, v0.0.4 is a more robust starting point for building production-grade Rust integrations in the Ultralytics ecosystem.

What's Changed

  • Update Cargo.toml keywords and categories by @glenn-jocher in #11
  • feat :🏎️ Add benchmarking support with Criterion.rs and example benchmarks by @onuralpszr in #10
  • Add MSRV badge to README and create rustfmt configuration file by @onuralpszr in #9

Full Changelog: v0.0.3...v0.0.4

v0.0.3 - Update Cargo.toml to v0.0.3 (#8)

27 Nov 09:37
7270aeb

Choose a tag to compare

🌟 Summary

v0.0.3 is a small but important housekeeping release that bumps the Rust template crate version, making it clear which iteration of the template is current and ready for use. 🚀


📊 Key Changes

  • 🔢 Version bump: Updated the ultralytics-template-rust crate version in Cargo.toml from 0.0.20.0.3.
  • 📦 No functional changes: All other package metadata (edition, license, description) and project structure remain the same.

🎯 Purpose & Impact

  • Signals a new template iteration: Clearly marks this as the latest published version of the Rust project template for users and downstream tooling.
  • 🧭 Easier version tracking: Helps developers distinguish projects based on v0.0.3 from those created with earlier template versions.
  • 🔄 Aligned with release workflow: Keeps crate metadata in sync with the repository’s release process and any surrounding automation (like CI, publishing, or Actions).

What's Changed

Full Changelog: v0.0.2...v0.0.3

v0.0.2 - Fix publish.yml (#7)

27 Nov 09:35
0e2510d

Choose a tag to compare

🌟 Summary

v0.0.2 makes the Rust template’s release process much smarter and safer 🎛️—automating version/tag handling, AI-powered release notes, secure crate publishing, and SBOM generation, with strong quality gates on every release.


📊 Key Changes

  • ♻️ Stronger, simpler publish workflow (publish.yml)

    • Renamed workflow to “Publish to crates.io” and tightened triggers to main branch pushes and manual runs.
    • Removed confusing dry_run logic in favor of a cleaner, version-based flow.
    • Restricts automated publishing to the official repo and a specific actor for extra safety.
  • 🧠 Automatic version & tag detection from Cargo.toml

    • New Python-based check_version step reads the crate version directly from Cargo.toml.
    • Derives the matching Git tag (vX.Y.Z), checks both local and remote tags, and decides if this is a new version (increment flag).
    • Avoids accidental re-publishing of the same version to crates.io.
  • 🏷️ Automatic tagging + AI-generated release summaries

    • On a new version, the workflow now:
      • Creates and pushes an annotated Git tag (e.g. v0.0.2) using the latest commit message.
      • Runs ultralytics-actions-summarize-release to auto-generate release notes using AI (OpenAI) and GitHub metadata.
    • Keeps release notes consistent and easier to read for users.
  • 🧪 Full Rust checks before any publish

    • New dedicated build job runs on new versions only:
      • cargo fmt --all -- --check
      • cargo clippy --all-targets --all-features -- -D warnings
      • cargo test --all --all-features
    • Publishing to crates.io only happens if formatting, linting, and tests all pass ✅.
  • 📦 Controlled crate publishing step

    • publish job depends on both check and build and only runs when a new version is detected.
    • Publishes to crates.io with cargo publish using CARGO_REGISTRY_TOKEN.
    • Publishes into a named environment (“Release - crates.io”) with a direct link to the crate.
  • 🧯 SBOM generation and attachment to releases

    • New sbom job runs after publish and build:
      • Generates Cargo.lock (if missing).
      • Uses anchore/sbom-action to produce an SPDX JSON SBOM (sbom.spdx.json).
      • Uploads the SBOM to the corresponding GitHub release via gh release upload.
    • Improves supply chain transparency and helps with security/compliance.
  • 🤖 AI release notes wired into CI (from PR #6)

    • publish.yml installs ultralytics-actions and calls ultralytics-actions-summarize-release.
    • Uses OPENAI_API_KEY, GITHUB_TOKEN/GH_TOKEN plus CURRENT_TAG and PREVIOUS_TAG to generate release summaries.
    • Clearly documents the release process and required secrets in README.md.
  • 📈 Crate version bump

    • Cargo.toml updated from 0.0.10.0.2 to mark this as the next published version.
    • README gains a “🧾 Releases” section explaining how publishing works, the crate name, tag format, required secrets, and workflow guards.

🎯 Purpose & Impact

  • 🔒 Safer, more reliable releases

    • Version and tag detection from Cargo.toml plus tag existence checks prevent double publishes and mis-tagged releases.
    • Only new versions trigger full build, publish, and SBOM steps.
  • 🧹 Cleaner, easier-to-understand CI

    • Removing dry_run complexity and splitting check / build / publish / sbom jobs makes the workflow easier to reason about and debug.
    • Triggers and permissions are explicit, reducing accidental runs.
  • 📚 Better communication with users

    • AI-generated release notes give clear, consistent summaries of changes with minimal manual effort.
    • README documentation helps both Ultralytics contributors and external users understand how and when releases happen.
  • 🛡️ Improved security & compliance posture

    • SBOM attached to GitHub releases supports dependency auditing, vulnerability scanning, and organizational compliance needs.
    • Guardrails (fmt, clippy, tests) ensure that only healthy builds reach crates.io.
  • ⚙️ Ready-to-use release template for other Rust projects

    • This template now ships with a production-grade publish pipeline: auto-tagging, crates.io publishing, AI notes, and SBOMs.
    • Teams can adopt this workflow with minimal changes, accelerating setup for new Rust crates.

What's Changed

Full Changelog: v0.0.1...v0.0.2

v0.0.1

27 Nov 08:42
a88fe20

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: https://github.com/ultralytics/template-rust/commits/v0.0.1