cargo-release
Clippy
cargo-release | Clippy | |
---|---|---|
11 | 121 | |
1,371 | 11,655 | |
1.3% | 1.4% | |
9.0 | 10.0 | |
17 days ago | 4 days ago | |
Rust | Rust | |
Apache License 2.0 | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
cargo-release
-
Changelog-Driven Releases
My problem with maintaining a changelog during development is it can serve as a source of merge conflicts. Instead, I follow Covnentional Commit style and manually write my changelog entries based on the commits. I have a tool [0] that can show me the relevant commits for a package in my repo and automates the entire release process, including doing sanity checks.
I also feel like releasing from CI is hard, especially if you have multiple packages in a repo [1], including
- You can't as easily introspect the process
- You can't as easily recover from failure
- Getting a lot of the nuance right, like handling releases concurrent to merging of PRs, is difficult
- When the workflow is an ever-present "release PR" that you merge when ready has issues with selecting which packages to release and at what version
I have been considering making a tool to generate changelogs from fragments. Been keeping notes at https://github.com/epage/epage.github.io/issues/23
[0]: https://github.com/crate-ci/cargo-release
[1]: https://github.com/MarcoIeni/release-plz/discussions/1019
-
Oxlint – written in Rust – 50-100 Times Faster than ESLint
You should combine step 1 and 2 with CI. Just tag a version in your git, push to remote and have CI auto build a release for you.
Use github actions or other setup for other backends.
Or go nuts with cargo-release.
https://github.com/crate-ci/cargo-release
https://github.com/cargo-bins/release-pr
-
Rust 2030 Christmas list: Subcrate dependencies
tools like cargo-release
-
`toml` vs `toml_edit` (ie `toml` 0.6 is out)
Just to check, are you aware of cargo-edit's cargo-set-version or cargo-release?
-
What's everyone working on this week (45/2022)?
I released my first crate that provides a derive macro to easily obtain a name of a current variant in an enum as a string. I did it mostly to learn about procedural macros and the process of releasing a crate. I then found out there is strum which does this and much more. Nonetheless, I learned a lot and I found couple of nice tools like ```cargo-release and git-cliff.
- cargo-release v0.22 is out!
-
A GitHub Action for creating "Release PRs" for Cargo projects.
I'll note there is an issue in the cargo-release repo where this kind of workflow is wanted. https://github.com/crate-ci/cargo-release/issues/119
-
[Gitoxide December Update]: a new object database and upcoming multi-pack index support
cargo-release is on about the same level of features used
-
cargo-release v0.19
cargo-release automates the release process for your crate. For example, with clap, all I do is add entries to the CHANGELOG and run cargo release patch and cargo-release takes care of updating files, publishing to crates.io, tagging, and pushing.
-
Introducing `cargo smart-release` - the new way to release workspace crates
Yes, developers from all three tools were sharing ideas with each other recently
Clippy
-
Automated Testing and Dev Containers
Firstly, I added a section to run the code formatter rustfmt and the linter clippy:
-
More than you've ever wanted to know about errors in Rust
I couldn't find it in the API guidelines either. From what I understand, the idea is that any trait bounds, which includes generic type parameter bounds and lifetime bound on a type (struct or enum) would be repeated back in the impl block
there is a nice discussion on this issue here: https://github.com/rust-lang/rust-clippy/issues/1689
-
New clippy lint: detecting `&mut` which could be `&` in function arguments
You should not blindly follow clippy lints. They are sometimes wrong. Another example https://github.com/rust-lang/rust-clippy/issues/9782 .
- Let else will finally be formatted by rustfmt soon
-
My deduplication solution written in Rust beats everything else: casync, borg...
I often write () = f() to assert that f() is unit. Unfortunately clippy warns on such code ( https://github.com/rust-lang/rust-clippy/issues/9048 ). There are very recent pull requests for this bug, so hopefully this bug will be fixed very soon. But meanwhile I invented this workaround: [()] = [f()] :)
-
Any open source projects willing to take in juniors?
Apart from running clippy on many projects being essential, clippy is also an exceptionally welcoming project, no matter your prior knowledge.
-
Any new Opensource projects in (rust) looking for contributors. I want to start my journey as an OSS contributor.
clippy is a great place to get started :) though it isn't exactly new.
-
I want to contribute in a big project
clippy is also pretty compiler-adjacent and unlike rust-analyzer uses rustc's internal APIs. Don't let the size of the code base scare you off! It's actually feasible for a newcomer to contribute even such a substantial change as a new lint, and we have issues labeled as "good first issue" that come with mentorship, so you don't need to go it alone.
-
rustc-plugin: A framework for writing plugins that integrate with the Rust compiler
Yes, you could use it to write a lint. Although you might find it easier to just fork Clippy and add your own lints to their existing framework.
-
Reading Rust
Check out the readme for more information.
What are some alternatives?
cargo-make - Rust task runner and build tool.
rustfmt - Format Rust code
just - 🤖 Just a command runner
rust-analyzer - A Rust compiler front-end for IDEs [Moved to: https://github.com/rust-lang/rust-analyzer]
Rustup - The Rust toolchain installer
rust.vim - Vim configuration for Rust.
cargo-modules - Visualize/analyze a Rust crate's internal structure
vscode-rust
cargo-find
Rust for Visual Studio Code
cargo-ebuild - cargo extension that can generate ebuilds using the in-tree eclasses
CodeLLDB - A native debugger extension for VSCode based on LLDB