Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ self_named_module_files = "warn"

[package]
name = "cargo"
version = "0.94.0"
version = "0.95.0"
edition.workspace = true
license.workspace = true
rust-version = "1.92" # MSRV:1
Expand Down
249 changes: 246 additions & 3 deletions src/doc/src/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,49 +1,292 @@
# Changelog

## Cargo 1.94 (2026-03-05)

[2c283a9a...HEAD](https://github.com/rust-lang/cargo/compare/2c283a9a...HEAD)

### Added

- 🎉 Stabilize the config `include` key.
The top-level `include` config key allows loading additional config files,
enabling better organization, sharing, and management of Cargo configurations
across projects and environments.
[docs](https://doc.rust-lang.org/nightly/cargo/reference/config.html#including-extra-configuration-files)
[#16284](https://github.com/rust-lang/cargo/pull/16284)
- perf: Optimize `cargo clean` with multiple `--package` specifiers.
[#16264](https://github.com/rust-lang/cargo/pull/16264)

### Changed

- Improve error message when Cargo build target source files are missing.
[#16338](https://github.com/rust-lang/cargo/pull/16338)

### Fixed

- Don't read config file twice when `$CARGO_HOME` is a symlinked directory
[#16325](https://github.com/rust-lang/cargo/pull/16325)
- cargo-info: default to inspecting local package when no registry is explicitly specified
[#16358](https://github.com/rust-lang/cargo/pull/16358)
- cargo-package: skip registry verification when using `--list`
[#16341](https://github.com/rust-lang/cargo/pull/16341)

### Nightly only

- `pubtime`: harden index `pubtime` implementation by treating parse errors as
invalid and limiting the time format more strictly.
[#16369](https://github.com/rust-lang/cargo/pull/16369)
- 🔥 `-Zbuild-analysis`: new `cargo report timings` command for HTML replay
[#16377](https://github.com/rust-lang/cargo/pull/16377)
[#16378](https://github.com/rust-lang/cargo/pull/16378)
[#16382](https://github.com/rust-lang/cargo/pull/16382)
[#16352](https://github.com/rust-lang/cargo/pull/16352)
[#16350](https://github.com/rust-lang/cargo/pull/16350)
[#16346](https://github.com/rust-lang/cargo/pull/16346)
- `-Zbuild-dir-new-layout`: Remove hashes from bins in new layout
[#16351](https://github.com/rust-lang/cargo/pull/16351)
- `-Zbuild-dir-new-layout`: Use unit_id, not pkg hash, for bin/lib pkg_dirs for new layout
[#16345](https://github.com/rust-lang/cargo/pull/16345)
- `-Zbuild-dir-new-layout`: Include all search paths with new build layout
[#16348](https://github.com/rust-lang/cargo/pull/16348)
- 🔥 `-Zcargo-lints`: new `implicit_minimum_version_req` lint
[#16321](https://github.com/rust-lang/cargo/pull/16321)
- `-Zcargo-lints`: move lints to separate modules
[#16392](https://github.com/rust-lang/cargo/pull/16392)
[#16364](https://github.com/rust-lang/cargo/pull/16364)
- `-Zcargo-lints`: handle lints separately at ws pkg level
[#16367](https://github.com/rust-lang/cargo/pull/16367)

### Documentation

- FAQ: Include an entry on disk space
[#16349](https://github.com/rust-lang/cargo/pull/16349)

### Internal

- Remove `[no-mentions]` handler in our triagebot config
[#16361](https://github.com/rust-lang/cargo/pull/16361)
- test: update to `proc_macro::tracked::path`
[#16380](https://github.com/rust-lang/cargo/pull/16380)
- test: Remove unused build script
[#16344](https://github.com/rust-lang/cargo/pull/16344)
- Update dependencies.
[#16379](https://github.com/rust-lang/cargo/pull/16379)
[#16381](https://github.com/rust-lang/cargo/pull/16381)

## Cargo 1.93 (2026-01-22)
[344c4567...HEAD](https://github.com/rust-lang/cargo/compare/344c4567...HEAD)
[344c4567...rust-1.93.0](https://github.com/rust-lang/cargo/compare/344c4567...rust-1.93.0)

### Added

- Enable `CARGO_CFG_DEBUG_ASSERTIONS` environment variable in build scripts based on profile settings.
[#16160](https://github.com/rust-lang/cargo/pull/16160)
- Add support for completing `--config` values in Bash
[#16245](https://github.com/rust-lang/cargo/pull/16245)
- cargo-clean: Add `--workspace` flag to clean artifacts of the workspace members.
[#16263](https://github.com/rust-lang/cargo/pull/16263)
- cargo-tree: Support long forms for `--format` variables
[#16204](https://github.com/rust-lang/cargo/pull/16204)

### Changed

- ❗️ `cargo publish` no longer keeps `.crate` tarballs as final build artifacts
even when the `build.build-dir` config is unset.
[#15915](https://github.com/rust-lang/cargo/pull/15915)
- Migrate more diagnostic formatting to rustc-like style (annotate-snippets style)
[#16143](https://github.com/rust-lang/cargo/pull/16143)
- Point out when a key belongs to Cargo configuration when seeing an unused field in Cargo manifest.
[#16256](https://github.com/rust-lang/cargo/pull/16256)
- When failing to update or create lockfile, provide clearer context and suggested
user actions to help resolve it.
[#16233](https://github.com/rust-lang/cargo/pull/16233)
[#16227](https://github.com/rust-lang/cargo/pull/16227)
- Emit helpful error messages when GitHub pull request URLs are used as dependencies
in the manifest.
[#16207](https://github.com/rust-lang/cargo/pull/16207)
- Avoid unnecessary artifact directory locking for `check` builds.
[#16230](https://github.com/rust-lang/cargo/pull/16230)
[#16299](https://github.com/rust-lang/cargo/pull/16299)
[#16307](https://github.com/rust-lang/cargo/pull/16307)
[#16385](https://github.com/rust-lang/cargo/pull/16385)
[#16386](https://github.com/rust-lang/cargo/pull/16386)
- Refer to commands, not subcommands in CLI help text.
[#16226](https://github.com/rust-lang/cargo/pull/16226)
- cargo-install: Cargo treated a relative path in `install.root` without a
trailing slash as relative path to the current working directory. This case
will now get a deprecation warning. It was an oversight and will be changed
to config-relative path like other config fields in the future.
[#16125](https://github.com/rust-lang/cargo/pull/16125)
- cargo-package: Suppress missing metadata warnings for non-crates.io publishable packages
[#16241](https://github.com/rust-lang/cargo/pull/16241)
- cargo-publish: emit a warning when both `package.publish` and `--index` are specified
[#16268](https://github.com/rust-lang/cargo/pull/16268)
- cargo-run: in help text, teach how to escape arguments to be forwarded
literally to an underlying program
[#16225](https://github.com/rust-lang/cargo/pull/16225)

### Fixed

- Shell completion variables no longer leak into user's environment
- Zsh shell completion variables no longer leak into user's environment
[#16144](https://github.com/rust-lang/cargo/pull/16144)
- Fixed Cargo generating dep-info file with invalid trailing backslashes on Windows.
[#16223](https://github.com/rust-lang/cargo/pull/16223)
- Fixed non-mergeable list from `--config` CLI being overridden by environment variables.
[#16220](https://github.com/rust-lang/cargo/pull/16220)
- Fixed nested non-mergeable list from `--config` CLI got merged with other configurations.
[#16219](https://github.com/rust-lang/cargo/pull/16219)
- Cargo now updates mtime for files generated by `cargo package`
after unpacking `.crate` source tarballs.
This ensures files do not have overly old mtime that some zip tools can't handle.
[#16250](https://github.com/rust-lang/cargo/pull/16250)
- Shift mtime for `cargo check` artifacts (.rmeta files).
This addresses a regression in rustc incremental compilation skipping
unnecessary rmeta generation but didn't update mtime for existing rmeta files.
[#16262](https://github.com/rust-lang/cargo/pull/16262)
- cargo-doc: clean generated doc directories for only requested targets.
Previously when rustc version mismatches, Cargo removes all generated doc
directories including target platforms that are not part of the build.
[#16331](https://github.com/rust-lang/cargo/pull/16331)
- cargo-install: fix out-of-bound error in crate name validation
[#16314](https://github.com/rust-lang/cargo/pull/16314)
- cargo-package: generated files in tarball should have deterministic timestamp.
[#16242](https://github.com/rust-lang/cargo/pull/16242)
- cargo-package: exclude `target/package` directory from backups via `CACHEDIR.TAG`.
[#16272](https://github.com/rust-lang/cargo/pull/16272)
- cargo-vendor: fix panic on Windows caused by fallback of `fs::rename`.
[#16214](https://github.com/rust-lang/cargo/pull/16214)

### Nightly only

- 🔥 `-Zrustc-unicode` enables `rustc`'s unicode error format in Cargo's error messages.
[#16243](https://github.com/rust-lang/cargo/pull/16243)
- 🔥 `-Zrustdoc-mergeable-info` leverages rustdoc's mergeable crate info, so
`cargo doc` can merge cross-crate information (like the search index, source
files index) from separate output directories, and run `rustdoc` in parallel.
[docs](https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#rustdoc-mergeable-info)
[#16309](https://github.com/rust-lang/cargo/pull/16309)
- 🔥 `cargo generate-lockfile` now has an unstable `--publish-time` flag that
package resolution will not consider any package newer than the specified time.
_This is not useful until registry index starts including the `pubtime` field._
[#16265](https://github.com/rust-lang/cargo/pull/16265)
- `build-plan`: Remove the unstable feature `build-plan` entirely.
The Cargo team are looking forward to other alternatives like
[plumbing commands](https://github.com/crate-ci/cargo-plumbing),
[`--unit-graph](https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#unit-graph),
and [structured logging](https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#build-analysis)
helping to fill the gap.
[#16212](https://github.com/rust-lang/cargo/pull/16212)
- `native-completions`: Put host-tuple before actual tuples
[#16327](https://github.com/rust-lang/cargo/pull/16327)
- `native-completions`: include `all` in `cargo tree --target` candidates
[#16322](https://github.com/rust-lang/cargo/pull/16322)
- `native-completions`: don't wrap completion item help in parenthesis
[#16215](https://github.com/rust-lang/cargo/pull/16215)
- `native-completions`: Add more native completions for `cargo tree`
[#16296](https://github.com/rust-lang/cargo/pull/16296)
- `native-completions`: `--package` on various commands
[#16210](https://github.com/rust-lang/cargo/pull/16210)
- `update-breaking`: silent failure on non-matching package specs with --breaking
[#16276](https://github.com/rust-lang/cargo/pull/16276)
- `-Zbindeps`: do not propagate artifact dependency to proc macro or build deps
[#15788](https://github.com/rust-lang/cargo/pull/15788)
- `-Zbuild-analysis`: Emit timing-info logs with JSONL-based logging
infrastructure. Logs are stored in `~/.cargo/log/` with unique files
per cargo invocation.
[#16150](https://github.com/rust-lang/cargo/pull/16150)
[#16179](https://github.com/rust-lang/cargo/pull/16179)
[#16303](https://github.com/rust-lang/cargo/pull/16303)
[#16337](https://github.com/rust-lang/cargo/pull/16337)
- `-Zbuild-analysis`: emit rebuild reason log entry.
[#16203](https://github.com/rust-lang/cargo/pull/16203)
- `-Zbuild-build`: Add test for LTO
[#16277](https://github.com/rust-lang/cargo/pull/16277)
- `-Zbuild-dir-new-layout`: Better divide old / new layout
[#16304](https://github.com/rust-lang/cargo/pull/16304)
- `-Zbuild-dir-new-layout`: Clean hosts builds with new layout
[#16300](https://github.com/rust-lang/cargo/pull/16300)
- `-Zbuild-dir-new-layout`: Put examples in their unit dir in new layout
[#16335](https://github.com/rust-lang/cargo/pull/16335)
- `-Zcargo-lints`: show lint error number
[#16320](https://github.com/rust-lang/cargo/pull/16320)
[#16324](https://github.com/rust-lang/cargo/pull/16324)
- `-Zconfig-include`: Allow using `optional = true` to silently skip
missing config files.
[#16103](https://github.com/rust-lang/cargo/pull/16103)
[#16174](https://github.com/rust-lang/cargo/pull/16174)
[#16180](https://github.com/rust-lang/cargo/pull/16180)
- `-Zconfig-include`: disallow glob and template syntax in `include.path`
[#16285](https://github.com/rust-lang/cargo/pull/16285)
- `-Zconfig-include`: remove support of single string shorthand
[#16298](https://github.com/rust-lang/cargo/pull/16298)
- `-Zgit`: Support shallow fetch for Git CLI backend (`net.git-fetch-with-cli`)
[#16156](https://github.com/rust-lang/cargo/pull/16156)
- `-Zgit`: Add more git fetch-index backend interop tests
[#16162](https://github.com/rust-lang/cargo/pull/16162)
- `-Zscript`: Update script tests from rustc's test suite
[#16169](https://github.com/rust-lang/cargo/pull/16169)
[#16334](https://github.com/rust-lang/cargo/pull/16334)
- `-Zscript`: Fallback to non-canonical path for workspace-path-hash.
This ensure script paths that cannot be canonicalized, like `memfd`,
still work.
[#16248](https://github.com/rust-lang/cargo/pull/16248)
- `-Zwarnings`: build.warnings=deny shouldn't block hard warnings
[#16213](https://github.com/rust-lang/cargo/pull/16213)


### Documentation

- Move `compile-time-deps` out of Stabilized section
[#16211](https://github.com/rust-lang/cargo/pull/16211)
- Rename `DEP_NAME_KEY` to `DEP_LINKS_KEY` to make the association of the
`package.links` field clearer
[#16205](https://github.com/rust-lang/cargo/pull/16205)
- Clarify `cargo yank` only affects Cargo's dependency resolution,
not crate availability
[#16274](https://github.com/rust-lang/cargo/pull/16274)
- In build performance guide, when suggesting alt dev profile, link to related issue.
[#16275](https://github.com/rust-lang/cargo/pull/16275)
- cargo-metadata: document the `"host-tuple"` literal is also supported for `-filter-platform`.
[#16312](https://github.com/rust-lang/cargo/pull/16312)
- contrib: Link out to rustc diagnostic style guide
[#16216](https://github.com/rust-lang/cargo/pull/16216)
- resolver: fix compile errors in pseudocode
[#16333](https://github.com/rust-lang/cargo/pull/16333)

### Internal

- Fix mdman to not incorrectly strip `<p>` tags
- Make disabling locking on NFS mounts explicit
[#16177](https://github.com/rust-lang/cargo/pull/16177)
- Extract ConfigValue and config schemas to their own separate modules
[#16222](https://github.com/rust-lang/cargo/pull/16222)
[#16195](https://github.com/rust-lang/cargo/pull/16195)
- Embed deserialize validation logic in `ProgressConfig`
[#16194](https://github.com/rust-lang/cargo/pull/16194)
- Separate Cargo timings data collection and presentation
[#16282](https://github.com/rust-lang/cargo/pull/16282)
- cargo-util-schemas: add into_value utility function for inheritableField
[#16234](https://github.com/rust-lang/cargo/pull/16234)
- ci: Add a typos/spellcheck CI job
[#16122](https://github.com/rust-lang/cargo/pull/16122)
- ci: Run clippy CI on more targets
[#16340](https://github.com/rust-lang/cargo/pull/16340)
- mdman: Fix mdman to not incorrectly strip `<p>` tags
[#16158](https://github.com/rust-lang/cargo/pull/16158)
[#16172](https://github.com/rust-lang/cargo/pull/16172)
- test: re-enable Windows reserved name test since not flaky anymore
[#16287](https://github.com/rust-lang/cargo/pull/16287)
- test: Remove legacy tmpdir support
[#16342](https://github.com/rust-lang/cargo/pull/16342)
- Update to mdbook 0.5.
[#16292](https://github.com/rust-lang/cargo/pull/16292)
- Update dependencies.
[#16137](https://github.com/rust-lang/cargo/pull/16137)
[#16140](https://github.com/rust-lang/cargo/pull/16140)
[#16178](https://github.com/rust-lang/cargo/pull/16178)
[#16186](https://github.com/rust-lang/cargo/pull/16186)
[#16190](https://github.com/rust-lang/cargo/pull/16190)
[#16200](https://github.com/rust-lang/cargo/pull/16200)
[#16224](https://github.com/rust-lang/cargo/pull/16224)
[#16316](https://github.com/rust-lang/cargo/pull/16316)
[#16318](https://github.com/rust-lang/cargo/pull/16318)

## Cargo 1.92 (2025-12-11)
[24bb93c3...rust-1.92.0](https://github.com/rust-lang/cargo/compare/24bb93c3...rust-1.92.0)
Expand Down