docs(guide): Cover feature-unification#16108
Conversation
|
CC @Kobzol |
Kobzol
left a comment
There was a problem hiding this comment.
One nit, otherwise looks good.
|
|
||
| When invoking `cargo`, | ||
| [features get activated][resolver-features] based on which workspace members you have selected. | ||
| However, when contributing to an application, |
There was a problem hiding this comment.
I find the word "application" here a bit confusing, I'd expect it to simply say "workspace".
There was a problem hiding this comment.
That is very intentional wording. Some people use cargo-hakari as a "build accelerator" by forcing feature sharing, including between host and target. RFC 3692 was taking a more limited scope of providing an easy way to approximate "build library X as if I was building it for application Y".
| - ✅ Fewer rebuilds when building different packages in a workspace | ||
| - ❌ **Requires using nightly Rust and an [unstable Cargo feature][feature-unification]** | ||
| - ❌ A package activating a feature can mask bugs in other packages that should activate it but don't | ||
| - ❌ If the feature unification from `--workspace` doesn't work for you, then this won't either |
There was a problem hiding this comment.
This is not stable (yet), do we want to call out it requires nightly Cargo? I've seem some other recommendations here did
There was a problem hiding this comment.
I was probably doing something in parallel and overlooked the second item already pointed it out
| - ✅ Fewer rebuilds when building different packages in a workspace | ||
| - ❌ **Requires using nightly Rust and an [unstable Cargo feature][feature-unification]** | ||
| - ❌ A package activating a feature can mask bugs in other packages that should activate it but don't | ||
| - ❌ If the feature unification from `--workspace` doesn't work for you, then this won't either |
There was a problem hiding this comment.
I was probably doing something in parallel and overlooked the second item already pointed it out
Update cargo 17 commits in 81c3f77a467359c8be6bc747dc93ec66a6e4ce11..367fd9f213750cd40317803dd0a5a3ce3f0c676d 2025-10-10 18:41:02 +0000 to 2025-10-15 15:01:32 +0000 - test: Don't look for a specfic ANSI color (rust-lang/cargo#16118) - docs(guide): Clarify where to set config (rust-lang/cargo#16107) - test(rustfix): re-enable disabled test due to unused variables (rust-lang/cargo#16114) - Convert the "manifest has no things" warning to annotate_snippets. (rust-lang/cargo#16113) - doc: make it clearer that `target.<cfg>.linker` is supported (rust-lang/cargo#16112) - docs(guide): Cover feature-unification (rust-lang/cargo#16108) - fix(gctx): types are unsupported not unknown (rust-lang/cargo#16109) - fix(script): Tweak cargo script build-dir / target-dir (rust-lang/cargo#16086) - docs(gctx): explain Value deserialization step-by-step (rust-lang/cargo#16105) - docs(guide): Talk about removing unused features (rust-lang/cargo#16085) - test(config): exercise unsupported TOML types (rust-lang/cargo#16100) - docs(gctx): a bit more of how config deserialization works (rust-lang/cargo#16094) - Refactor `Layout` into `BuildDirLayout` and `ArtifactDirLayout` (rust-lang/cargo#16092) - Add alternative linker to the build performance guide (rust-lang/cargo#15991) - refactor(gctx): extract error to a module (rust-lang/cargo#16091) - fix: Fixed nightly tests failing due to unused_variables lint (rust-lang/cargo#16098) - fix(script): Store cargo script lockfiles in build-dir (rust-lang/cargo#16087) r? ghost
Update cargo 17 commits in 81c3f77a467359c8be6bc747dc93ec66a6e4ce11..367fd9f213750cd40317803dd0a5a3ce3f0c676d 2025-10-10 18:41:02 +0000 to 2025-10-15 15:01:32 +0000 - test: Don't look for a specfic ANSI color (rust-lang/cargo#16118) - docs(guide): Clarify where to set config (rust-lang/cargo#16107) - test(rustfix): re-enable disabled test due to unused variables (rust-lang/cargo#16114) - Convert the "manifest has no things" warning to annotate_snippets. (rust-lang/cargo#16113) - doc: make it clearer that `target.<cfg>.linker` is supported (rust-lang/cargo#16112) - docs(guide): Cover feature-unification (rust-lang/cargo#16108) - fix(gctx): types are unsupported not unknown (rust-lang/cargo#16109) - fix(script): Tweak cargo script build-dir / target-dir (rust-lang/cargo#16086) - docs(gctx): explain Value deserialization step-by-step (rust-lang/cargo#16105) - docs(guide): Talk about removing unused features (rust-lang/cargo#16085) - test(config): exercise unsupported TOML types (rust-lang/cargo#16100) - docs(gctx): a bit more of how config deserialization works (rust-lang/cargo#16094) - Refactor `Layout` into `BuildDirLayout` and `ArtifactDirLayout` (rust-lang/cargo#16092) - Add alternative linker to the build performance guide (rust-lang/cargo#15991) - refactor(gctx): extract error to a module (rust-lang/cargo#16091) - fix: Fixed nightly tests failing due to unused_variables lint (rust-lang/cargo#16098) - fix(script): Store cargo script lockfiles in build-dir (rust-lang/cargo#16087) r? ghost
Update cargo 17 commits in 81c3f77a467359c8be6bc747dc93ec66a6e4ce11..367fd9f213750cd40317803dd0a5a3ce3f0c676d 2025-10-10 18:41:02 +0000 to 2025-10-15 15:01:32 +0000 - test: Don't look for a specfic ANSI color (rust-lang/cargo#16118) - docs(guide): Clarify where to set config (rust-lang/cargo#16107) - test(rustfix): re-enable disabled test due to unused variables (rust-lang/cargo#16114) - Convert the "manifest has no things" warning to annotate_snippets. (rust-lang/cargo#16113) - doc: make it clearer that `target.<cfg>.linker` is supported (rust-lang/cargo#16112) - docs(guide): Cover feature-unification (rust-lang/cargo#16108) - fix(gctx): types are unsupported not unknown (rust-lang/cargo#16109) - fix(script): Tweak cargo script build-dir / target-dir (rust-lang/cargo#16086) - docs(gctx): explain Value deserialization step-by-step (rust-lang/cargo#16105) - docs(guide): Talk about removing unused features (rust-lang/cargo#16085) - test(config): exercise unsupported TOML types (rust-lang/cargo#16100) - docs(gctx): a bit more of how config deserialization works (rust-lang/cargo#16094) - Refactor `Layout` into `BuildDirLayout` and `ArtifactDirLayout` (rust-lang/cargo#16092) - Add alternative linker to the build performance guide (rust-lang/cargo#15991) - refactor(gctx): extract error to a module (rust-lang/cargo#16091) - fix: Fixed nightly tests failing due to unused_variables lint (rust-lang/cargo#16098) - fix(script): Store cargo script lockfiles in build-dir (rust-lang/cargo#16087) r? ghost
Update cargo 17 commits in 81c3f77a467359c8be6bc747dc93ec66a6e4ce11..367fd9f213750cd40317803dd0a5a3ce3f0c676d 2025-10-10 18:41:02 +0000 to 2025-10-15 15:01:32 +0000 - test: Don't look for a specfic ANSI color (rust-lang/cargo#16118) - docs(guide): Clarify where to set config (rust-lang/cargo#16107) - test(rustfix): re-enable disabled test due to unused variables (rust-lang/cargo#16114) - Convert the "manifest has no things" warning to annotate_snippets. (rust-lang/cargo#16113) - doc: make it clearer that `target.<cfg>.linker` is supported (rust-lang/cargo#16112) - docs(guide): Cover feature-unification (rust-lang/cargo#16108) - fix(gctx): types are unsupported not unknown (rust-lang/cargo#16109) - fix(script): Tweak cargo script build-dir / target-dir (rust-lang/cargo#16086) - docs(gctx): explain Value deserialization step-by-step (rust-lang/cargo#16105) - docs(guide): Talk about removing unused features (rust-lang/cargo#16085) - test(config): exercise unsupported TOML types (rust-lang/cargo#16100) - docs(gctx): a bit more of how config deserialization works (rust-lang/cargo#16094) - Refactor `Layout` into `BuildDirLayout` and `ArtifactDirLayout` (rust-lang/cargo#16092) - Add alternative linker to the build performance guide (rust-lang/cargo#15991) - refactor(gctx): extract error to a module (rust-lang/cargo#16091) - fix: Fixed nightly tests failing due to unused_variables lint (rust-lang/cargo#16098) - fix(script): Store cargo script lockfiles in build-dir (rust-lang/cargo#16087) r? ghost
Update cargo 17 commits in 81c3f77a467359c8be6bc747dc93ec66a6e4ce11..367fd9f213750cd40317803dd0a5a3ce3f0c676d 2025-10-10 18:41:02 +0000 to 2025-10-15 15:01:32 +0000 - test: Don't look for a specfic ANSI color (rust-lang/cargo#16118) - docs(guide): Clarify where to set config (rust-lang/cargo#16107) - test(rustfix): re-enable disabled test due to unused variables (rust-lang/cargo#16114) - Convert the "manifest has no things" warning to annotate_snippets. (rust-lang/cargo#16113) - doc: make it clearer that `target.<cfg>.linker` is supported (rust-lang/cargo#16112) - docs(guide): Cover feature-unification (rust-lang/cargo#16108) - fix(gctx): types are unsupported not unknown (rust-lang/cargo#16109) - fix(script): Tweak cargo script build-dir / target-dir (rust-lang/cargo#16086) - docs(gctx): explain Value deserialization step-by-step (rust-lang/cargo#16105) - docs(guide): Talk about removing unused features (rust-lang/cargo#16085) - test(config): exercise unsupported TOML types (rust-lang/cargo#16100) - docs(gctx): a bit more of how config deserialization works (rust-lang/cargo#16094) - Refactor `Layout` into `BuildDirLayout` and `ArtifactDirLayout` (rust-lang/cargo#16092) - Add alternative linker to the build performance guide (rust-lang/cargo#15991) - refactor(gctx): extract error to a module (rust-lang/cargo#16091) - fix: Fixed nightly tests failing due to unused_variables lint (rust-lang/cargo#16098) - fix(script): Store cargo script lockfiles in build-dir (rust-lang/cargo#16087) r? ghost
What does this PR try to resolve?
Incorporates the cargo-workspace-hack build performance strategy into our guide.
How to test and review this PR?