|
1 | 1 | # Changelog |
2 | 2 |
|
| 3 | +## Cargo 1.94 (2026-03-05) |
| 4 | + |
| 5 | +[2c283a9a...HEAD](https://github.com/rust-lang/cargo/compare/2c283a9a...HEAD) |
| 6 | + |
| 7 | +### Added |
| 8 | + |
| 9 | +- 🎉 Stabilize the config `include` key. |
| 10 | + The top-level `include` config key allows loading additional config files, |
| 11 | + enabling better organization, sharing, and management of Cargo configurations |
| 12 | + across projects and environments. |
| 13 | + [docs](https://doc.rust-lang.org/nightly/cargo/reference/config.html#including-extra-configuration-files) |
| 14 | + [#16284](https://github.com/rust-lang/cargo/pull/16284) |
| 15 | +- perf: Optimize `cargo clean` with multiple `--package` specifiers. |
| 16 | + [#16264](https://github.com/rust-lang/cargo/pull/16264) |
| 17 | + |
| 18 | +### Changed |
| 19 | + |
| 20 | +- Improve error message when Cargo build target source files are missing. |
| 21 | + [#16338](https://github.com/rust-lang/cargo/pull/16338) |
| 22 | + |
| 23 | +### Fixed |
| 24 | + |
| 25 | +- Don't read config file twice when `$CARGO_HOME` is a symlinked directory |
| 26 | + [#16325](https://github.com/rust-lang/cargo/pull/16325) |
| 27 | +- cargo-info: default to inspecting local package when no registry is explicitly specified |
| 28 | + [#16358](https://github.com/rust-lang/cargo/pull/16358) |
| 29 | +- cargo-package: skip registry verification when using `--list` |
| 30 | + [#16341](https://github.com/rust-lang/cargo/pull/16341) |
| 31 | + |
| 32 | +### Nightly only |
| 33 | + |
| 34 | +- `pubtime`: harden index `pubtime` implementation by treating parse errors as |
| 35 | + invalid and limiting the time format more strictly. |
| 36 | + [#16369](https://github.com/rust-lang/cargo/pull/16369) |
| 37 | +- 🔥 `-Zbuild-analysis`: new `cargo report timings` command for HTML replay |
| 38 | + [#16377](https://github.com/rust-lang/cargo/pull/16377) |
| 39 | + [#16378](https://github.com/rust-lang/cargo/pull/16378) |
| 40 | + [#16382](https://github.com/rust-lang/cargo/pull/16382) |
| 41 | + [#16352](https://github.com/rust-lang/cargo/pull/16352) |
| 42 | + [#16350](https://github.com/rust-lang/cargo/pull/16350) |
| 43 | + [#16346](https://github.com/rust-lang/cargo/pull/16346) |
| 44 | +- `-Zbuild-dir-new-layout`: Remove hashes from bins in new layout |
| 45 | + [#16351](https://github.com/rust-lang/cargo/pull/16351) |
| 46 | +- `-Zbuild-dir-new-layout`: Use unit_id, not pkg hash, for bin/lib pkg_dirs for new layout |
| 47 | + [#16345](https://github.com/rust-lang/cargo/pull/16345) |
| 48 | +- `-Zbuild-dir-new-layout`: Include all search paths with new build layout |
| 49 | + [#16348](https://github.com/rust-lang/cargo/pull/16348) |
| 50 | +- 🔥 `-Zcargo-lints`: new `implicit_minimum_version_req` lint |
| 51 | + [#16321](https://github.com/rust-lang/cargo/pull/16321) |
| 52 | +- `-Zcargo-lints`: move lints to separate modules |
| 53 | + [#16392](https://github.com/rust-lang/cargo/pull/16392) |
| 54 | + [#16364](https://github.com/rust-lang/cargo/pull/16364) |
| 55 | +- `-Zcargo-lints`: handle lints separately at ws pkg level |
| 56 | + [#16367](https://github.com/rust-lang/cargo/pull/16367) |
| 57 | + |
| 58 | +### Documentation |
| 59 | + |
| 60 | +- FAQ: Include an entry on disk space |
| 61 | + [#16349](https://github.com/rust-lang/cargo/pull/16349) |
| 62 | + |
| 63 | +### Internal |
| 64 | + |
| 65 | +- Remove `[no-mentions]` handler in our triagebot config |
| 66 | + [#16361](https://github.com/rust-lang/cargo/pull/16361) |
| 67 | +- test: update to `proc_macro::tracked::path` |
| 68 | + [#16380](https://github.com/rust-lang/cargo/pull/16380) |
| 69 | +- test: Remove unused build script |
| 70 | + [#16344](https://github.com/rust-lang/cargo/pull/16344) |
| 71 | +- Update dependencies. |
| 72 | + [#16379](https://github.com/rust-lang/cargo/pull/16379) |
| 73 | + [#16381](https://github.com/rust-lang/cargo/pull/16381) |
| 74 | + |
3 | 75 | ## Cargo 1.93 (2026-01-22) |
4 | | -[344c4567...HEAD](https://github.com/rust-lang/cargo/compare/344c4567...HEAD) |
| 76 | +[344c4567...rust-1.93.0](https://github.com/rust-lang/cargo/compare/344c4567...rust-1.93.0) |
5 | 77 |
|
6 | 78 | ### Added |
7 | 79 |
|
| 80 | +- Enable `CARGO_CFG_DEBUG_ASSERTIONS` environment variable in build scripts based on profile settings. |
| 81 | + [#16160](https://github.com/rust-lang/cargo/pull/16160) |
| 82 | +- Add support for completing `--config` values in Bash |
| 83 | + [#16245](https://github.com/rust-lang/cargo/pull/16245) |
| 84 | +- cargo-clean: Add `--workspace` flag to clean artifacts of the workspace members. |
| 85 | + [#16263](https://github.com/rust-lang/cargo/pull/16263) |
| 86 | +- cargo-tree: Support long forms for `--format` variables |
| 87 | + [#16204](https://github.com/rust-lang/cargo/pull/16204) |
| 88 | + |
8 | 89 | ### Changed |
9 | 90 |
|
| 91 | +- ❗️ `cargo publish` no longer keeps `.crate` tarballs as final build artifacts |
| 92 | + even when the `build.build-dir` config is unset. |
| 93 | + [#15915](https://github.com/rust-lang/cargo/pull/15915) |
10 | 94 | - Migrate more diagnostic formatting to rustc-like style (annotate-snippets style) |
11 | 95 | [#16143](https://github.com/rust-lang/cargo/pull/16143) |
| 96 | +- Point out when a key belongs to Cargo configuration when seeing an unused field in Cargo manifest. |
| 97 | + [#16256](https://github.com/rust-lang/cargo/pull/16256) |
| 98 | +- When failing to update or create lockfile, provide clearer context and suggested |
| 99 | + user actions to help resolve it. |
| 100 | + [#16233](https://github.com/rust-lang/cargo/pull/16233) |
| 101 | + [#16227](https://github.com/rust-lang/cargo/pull/16227) |
| 102 | +- Emit helpful error messages when GitHub pull request URLs are used as dependencies |
| 103 | + in the manifest. |
| 104 | + [#16207](https://github.com/rust-lang/cargo/pull/16207) |
| 105 | +- Avoid unnecessary artifact directory locking for `check` builds. |
| 106 | + [#16230](https://github.com/rust-lang/cargo/pull/16230) |
| 107 | + [#16299](https://github.com/rust-lang/cargo/pull/16299) |
| 108 | + [#16307](https://github.com/rust-lang/cargo/pull/16307) |
| 109 | + [#16385](https://github.com/rust-lang/cargo/pull/16385) |
| 110 | + [#16386](https://github.com/rust-lang/cargo/pull/16386) |
| 111 | +- Refer to commands, not subcommands in CLI help text. |
| 112 | + [#16226](https://github.com/rust-lang/cargo/pull/16226) |
| 113 | +- cargo-install: Cargo treated a relative path in `install.root` without a |
| 114 | + trailing slash as relative path to the current working directory. This case |
| 115 | + will now get a deprecation warning. It was an oversight and will be changed |
| 116 | + to config-relative path like other config fields in the future. |
| 117 | + [#16125](https://github.com/rust-lang/cargo/pull/16125) |
| 118 | +- cargo-package: Suppress missing metadata warnings for non-crates.io publishable packages |
| 119 | + [#16241](https://github.com/rust-lang/cargo/pull/16241) |
| 120 | +- cargo-publish: emit a warning when both `package.publish` and `--index` are specified |
| 121 | + [#16268](https://github.com/rust-lang/cargo/pull/16268) |
| 122 | +- cargo-run: in help text, teach how to escape arguments to be forwarded |
| 123 | + literally to an underlying program |
| 124 | + [#16225](https://github.com/rust-lang/cargo/pull/16225) |
12 | 125 |
|
13 | 126 | ### Fixed |
14 | 127 |
|
15 | | -- Shell completion variables no longer leak into user's environment |
| 128 | +- Zsh shell completion variables no longer leak into user's environment |
16 | 129 | [#16144](https://github.com/rust-lang/cargo/pull/16144) |
| 130 | +- Fixed Cargo generating dep-info file with invalid trailing backslashes on Windows. |
| 131 | + [#16223](https://github.com/rust-lang/cargo/pull/16223) |
| 132 | +- Fixed non-mergeable list from `--config` CLI being overridden by environment variables. |
| 133 | + [#16220](https://github.com/rust-lang/cargo/pull/16220) |
| 134 | +- Fixed nested non-mergeable list from `--config` CLI got merged with other configurations. |
| 135 | + [#16219](https://github.com/rust-lang/cargo/pull/16219) |
| 136 | +- Cargo now updates mtime for files generated by `cargo package` |
| 137 | + after unpacking `.crate` source tarballs. |
| 138 | + This ensures files do not have overly old mtime that some zip tools can't handle. |
| 139 | + [#16250](https://github.com/rust-lang/cargo/pull/16250) |
| 140 | +- Shift mtime for `cargo check` artifacts (.rmeta files). |
| 141 | + This addresses a regression in rustc incremental compilation skipping |
| 142 | + unnecessary rmeta generation but didn't update mtime for existing rmeta files. |
| 143 | + [#16262](https://github.com/rust-lang/cargo/pull/16262) |
| 144 | +- cargo-doc: clean generated doc directories for only requested targets. |
| 145 | + Previously when rustc version mismatches, Cargo removes all generated doc |
| 146 | + directories including target platforms that are not part of the build. |
| 147 | + [#16331](https://github.com/rust-lang/cargo/pull/16331) |
| 148 | +- cargo-install: fix out-of-bound error in crate name validation |
| 149 | + [#16314](https://github.com/rust-lang/cargo/pull/16314) |
| 150 | +- cargo-package: generated files in tarball should have deterministic timestamp. |
| 151 | + [#16242](https://github.com/rust-lang/cargo/pull/16242) |
| 152 | +- cargo-package: exclude `target/package` directory from backups via `CACHEDIR.TAG`. |
| 153 | + [#16272](https://github.com/rust-lang/cargo/pull/16272) |
| 154 | +- cargo-vendor: fix panic on Windows caused by fallback of `fs::rename`. |
| 155 | + [#16214](https://github.com/rust-lang/cargo/pull/16214) |
17 | 156 |
|
18 | 157 | ### Nightly only |
19 | 158 |
|
| 159 | +- 🔥 `-Zrustc-unicode` enables `rustc`'s unicode error format in Cargo's error messages. |
| 160 | + [#16243](https://github.com/rust-lang/cargo/pull/16243) |
| 161 | +- 🔥 `-Zrustdoc-mergeable-info` leverages rustdoc's mergeable crate info, so |
| 162 | + `cargo doc` can merge cross-crate information (like the search index, source |
| 163 | + files index) from separate output directories, and run `rustdoc` in parallel. |
| 164 | + [docs](https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#rustdoc-mergeable-info) |
| 165 | + [#16309](https://github.com/rust-lang/cargo/pull/16309) |
| 166 | +- 🔥 `cargo generate-lockfile` now has an unstable `--publish-time` flag that |
| 167 | + package resolution will not consider any package newer than the specified time. |
| 168 | + _This is not useful until registry index starts including the `pubtime` field._ |
| 169 | + [#16265](https://github.com/rust-lang/cargo/pull/16265) |
| 170 | +- `build-plan`: Remove the unstable feature `build-plan` entirely. |
| 171 | + The Cargo team are looking forward to other alternatives like |
| 172 | + [plumbing commands](https://github.com/crate-ci/cargo-plumbing), |
| 173 | + [`--unit-graph](https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#unit-graph), |
| 174 | + and [structured logging](https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#build-analysis) |
| 175 | + helping to fill the gap. |
| 176 | + [#16212](https://github.com/rust-lang/cargo/pull/16212) |
| 177 | +- `native-completions`: Put host-tuple before actual tuples |
| 178 | + [#16327](https://github.com/rust-lang/cargo/pull/16327) |
| 179 | +- `native-completions`: include `all` in `cargo tree --target` candidates |
| 180 | + [#16322](https://github.com/rust-lang/cargo/pull/16322) |
| 181 | +- `native-completions`: don't wrap completion item help in parenthesis |
| 182 | + [#16215](https://github.com/rust-lang/cargo/pull/16215) |
| 183 | +- `native-completions`: Add more native completions for `cargo tree` |
| 184 | + [#16296](https://github.com/rust-lang/cargo/pull/16296) |
| 185 | +- `native-completions`: `--package` on various commands |
| 186 | + [#16210](https://github.com/rust-lang/cargo/pull/16210) |
| 187 | +- `update-breaking`: silent failure on non-matching package specs with --breaking |
| 188 | + [#16276](https://github.com/rust-lang/cargo/pull/16276) |
| 189 | +- `-Zbindeps`: do not propagate artifact dependency to proc macro or build deps |
| 190 | + [#15788](https://github.com/rust-lang/cargo/pull/15788) |
20 | 191 | - `-Zbuild-analysis`: Emit timing-info logs with JSONL-based logging |
21 | 192 | infrastructure. Logs are stored in `~/.cargo/log/` with unique files |
22 | 193 | per cargo invocation. |
23 | 194 | [#16150](https://github.com/rust-lang/cargo/pull/16150) |
24 | 195 | [#16179](https://github.com/rust-lang/cargo/pull/16179) |
| 196 | + [#16303](https://github.com/rust-lang/cargo/pull/16303) |
| 197 | + [#16337](https://github.com/rust-lang/cargo/pull/16337) |
| 198 | +- `-Zbuild-analysis`: emit rebuild reason log entry. |
| 199 | + [#16203](https://github.com/rust-lang/cargo/pull/16203) |
| 200 | +- `-Zbuild-build`: Add test for LTO |
| 201 | + [#16277](https://github.com/rust-lang/cargo/pull/16277) |
| 202 | +- `-Zbuild-dir-new-layout`: Better divide old / new layout |
| 203 | + [#16304](https://github.com/rust-lang/cargo/pull/16304) |
| 204 | +- `-Zbuild-dir-new-layout`: Clean hosts builds with new layout |
| 205 | + [#16300](https://github.com/rust-lang/cargo/pull/16300) |
| 206 | +- `-Zbuild-dir-new-layout`: Put examples in their unit dir in new layout |
| 207 | + [#16335](https://github.com/rust-lang/cargo/pull/16335) |
| 208 | +- `-Zcargo-lints`: show lint error number |
| 209 | + [#16320](https://github.com/rust-lang/cargo/pull/16320) |
| 210 | + [#16324](https://github.com/rust-lang/cargo/pull/16324) |
25 | 211 | - `-Zconfig-include`: Allow using `optional = true` to silently skip |
26 | 212 | missing config files. |
27 | 213 | [#16103](https://github.com/rust-lang/cargo/pull/16103) |
28 | 214 | [#16174](https://github.com/rust-lang/cargo/pull/16174) |
29 | 215 | [#16180](https://github.com/rust-lang/cargo/pull/16180) |
| 216 | +- `-Zconfig-include`: disallow glob and template syntax in `include.path` |
| 217 | + [#16285](https://github.com/rust-lang/cargo/pull/16285) |
| 218 | +- `-Zconfig-include`: remove support of single string shorthand |
| 219 | + [#16298](https://github.com/rust-lang/cargo/pull/16298) |
30 | 220 | - `-Zgit`: Support shallow fetch for Git CLI backend (`net.git-fetch-with-cli`) |
31 | 221 | [#16156](https://github.com/rust-lang/cargo/pull/16156) |
32 | 222 | - `-Zgit`: Add more git fetch-index backend interop tests |
33 | 223 | [#16162](https://github.com/rust-lang/cargo/pull/16162) |
34 | 224 | - `-Zscript`: Update script tests from rustc's test suite |
35 | 225 | [#16169](https://github.com/rust-lang/cargo/pull/16169) |
| 226 | + [#16334](https://github.com/rust-lang/cargo/pull/16334) |
| 227 | +- `-Zscript`: Fallback to non-canonical path for workspace-path-hash. |
| 228 | + This ensure script paths that cannot be canonicalized, like `memfd`, |
| 229 | + still work. |
| 230 | + [#16248](https://github.com/rust-lang/cargo/pull/16248) |
| 231 | +- `-Zwarnings`: build.warnings=deny shouldn't block hard warnings |
| 232 | + [#16213](https://github.com/rust-lang/cargo/pull/16213) |
| 233 | + |
36 | 234 |
|
37 | 235 | ### Documentation |
38 | 236 |
|
| 237 | +- Move `compile-time-deps` out of Stabilized section |
| 238 | + [#16211](https://github.com/rust-lang/cargo/pull/16211) |
| 239 | +- Rename `DEP_NAME_KEY` to `DEP_LINKS_KEY` to make the association of the |
| 240 | + `package.links` field clearer |
| 241 | + [#16205](https://github.com/rust-lang/cargo/pull/16205) |
| 242 | +- Clarify `cargo yank` only affects Cargo's dependency resolution, |
| 243 | + not crate availability |
| 244 | + [#16274](https://github.com/rust-lang/cargo/pull/16274) |
| 245 | +- In build performance guide, when suggesting alt dev profile, link to related issue. |
| 246 | + [#16275](https://github.com/rust-lang/cargo/pull/16275) |
| 247 | +- cargo-metadata: document the `"host-tuple"` literal is also supported for `-filter-platform`. |
| 248 | + [#16312](https://github.com/rust-lang/cargo/pull/16312) |
| 249 | +- contrib: Link out to rustc diagnostic style guide |
| 250 | + [#16216](https://github.com/rust-lang/cargo/pull/16216) |
| 251 | +- resolver: fix compile errors in pseudocode |
| 252 | + [#16333](https://github.com/rust-lang/cargo/pull/16333) |
| 253 | + |
39 | 254 | ### Internal |
40 | 255 |
|
41 | | -- Fix mdman to not incorrectly strip `<p>` tags |
| 256 | +- Make disabling locking on NFS mounts explicit |
| 257 | + [#16177](https://github.com/rust-lang/cargo/pull/16177) |
| 258 | +- Extract ConfigValue and config schemas to their own separate modules |
| 259 | + [#16222](https://github.com/rust-lang/cargo/pull/16222) |
| 260 | + [#16195](https://github.com/rust-lang/cargo/pull/16195) |
| 261 | +- Embed deserialize validation logic in `ProgressConfig` |
| 262 | + [#16194](https://github.com/rust-lang/cargo/pull/16194) |
| 263 | +- Separate Cargo timings data collection and presentation |
| 264 | + [#16282](https://github.com/rust-lang/cargo/pull/16282) |
| 265 | +- cargo-util-schemas: add into_value utility function for inheritableField |
| 266 | + [#16234](https://github.com/rust-lang/cargo/pull/16234) |
| 267 | +- ci: Add a typos/spellcheck CI job |
| 268 | + [#16122](https://github.com/rust-lang/cargo/pull/16122) |
| 269 | +- ci: Run clippy CI on more targets |
| 270 | + [#16340](https://github.com/rust-lang/cargo/pull/16340) |
| 271 | +- mdman: Fix mdman to not incorrectly strip `<p>` tags |
42 | 272 | [#16158](https://github.com/rust-lang/cargo/pull/16158) |
43 | 273 | [#16172](https://github.com/rust-lang/cargo/pull/16172) |
| 274 | +- test: re-enable Windows reserved name test since not flaky anymore |
| 275 | + [#16287](https://github.com/rust-lang/cargo/pull/16287) |
| 276 | +- test: Remove legacy tmpdir support |
| 277 | + [#16342](https://github.com/rust-lang/cargo/pull/16342) |
| 278 | +- Update to mdbook 0.5. |
| 279 | + [#16292](https://github.com/rust-lang/cargo/pull/16292) |
44 | 280 | - Update dependencies. |
45 | 281 | [#16137](https://github.com/rust-lang/cargo/pull/16137) |
46 | 282 | [#16140](https://github.com/rust-lang/cargo/pull/16140) |
| 283 | + [#16178](https://github.com/rust-lang/cargo/pull/16178) |
| 284 | + [#16186](https://github.com/rust-lang/cargo/pull/16186) |
| 285 | + [#16190](https://github.com/rust-lang/cargo/pull/16190) |
| 286 | + [#16200](https://github.com/rust-lang/cargo/pull/16200) |
| 287 | + [#16224](https://github.com/rust-lang/cargo/pull/16224) |
| 288 | + [#16316](https://github.com/rust-lang/cargo/pull/16316) |
| 289 | + [#16318](https://github.com/rust-lang/cargo/pull/16318) |
47 | 290 |
|
48 | 291 | ## Cargo 1.92 (2025-12-11) |
49 | 292 | [24bb93c3...rust-1.92.0](https://github.com/rust-lang/cargo/compare/24bb93c3...rust-1.92.0) |
|
0 commit comments