forked from rust-lang/cargo
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCHANGELOG.md
6155 lines (5643 loc) · 323 KB
/
CHANGELOG.md
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
# Changelog
## Cargo 1.86 (2025-04-03)
[d73d2caf...HEAD](https://github.com/rust-lang/cargo/compare/d73d2caf...HEAD)
### Added
### Changed
### Fixed
- The `rerun-if-env-changed` build script instruction can now correctly detect
changes in the `[env]` configuration table.
[#14756](https://github.com/rust-lang/cargo/pull/14756)
- cargo-package: Verify the VCS status of symlinks
when they point to paths outside the current package root.
[#14981](https://github.com/rust-lang/cargo/pull/14981)
### Nightly only
- cargo-util-schemas: Correct and update the JSON Schema
[#15000](https://github.com/rust-lang/cargo/pull/15000)
### Documentation
### Internal
- cargo-test-macro: Remove condition on `RUSTUP_WINDOWS_PATH_ADD_BIN`
[#15017](https://github.com/rust-lang/cargo/pull/15017)
- test: Clean up shallow fetch tests
[#15002](https://github.com/rust-lang/cargo/pull/15002)
- test: Fix `https::self_signed_should_fail` for macos
[#15016](https://github.com/rust-lang/cargo/pull/15016)
- Update to libgit2 1.9.
[#15018](https://github.com/rust-lang/cargo/pull/15018)
- Update dependencies: update rust crate itertools to 0.14.0
[#14996](https://github.com/rust-lang/cargo/pull/14996)
[#14998](https://github.com/rust-lang/cargo/pull/14998)
[#15012](https://github.com/rust-lang/cargo/pull/15012)
## Cargo 1.85 (2025-02-20)
[66221abd...rust-1.85.0](https://github.com/rust-lang/cargo/compare/66221abd...rust-1.85.0)
### Added
- 🎉 Cargo now supports the 2024 edition.
More information is available in the [edition guide](https://doc.rust-lang.org/nightly/edition-guide/rust-2024/index.html).
[#14828](https://github.com/rust-lang/cargo/pull/14828)
- cargo-tree: The `--depth` flag now accepts `workspace`,
which shows only dependencies that are members of the current workspace.
[#14928](https://github.com/rust-lang/cargo/pull/14928)
- Build scripts now receive a new environment variable, `CARGO_CFG_FEATURE`,
which contains each activated feature of the package being built.
[#14902](https://github.com/rust-lang/cargo/pull/14902)
- perf: Dependency resolution is now faster due to a more efficient hash for `ActivationsKey`
[#14915](https://github.com/rust-lang/cargo/pull/14915)
### Changed
- ❗️ cargo-rustc: Trailing flags now have higher precedence.
This behavior was nightly-only since 1.83 and is now stabilized.
[#14900](https://github.com/rust-lang/cargo/pull/14900)
- ❗️ Cargo now uses a cross-platform hash algorithm from `rustc-stable-hash`.
As a result, the hash part of paths to dependency caches
(e.g., `$CARGO_HOME/registry/index/index.crates.io-<hash>`) will change.
This will trigger re-downloads of registry indices and `.crate` tarballs,
as well as re-cloning of Git dependencies.
[#14917](https://github.com/rust-lang/cargo/pull/14917)
- Added a future-incompatibility warning for keywords in `cfg`s in Cargo.toml
and Cargo configuration. `cfg`s with keywords like `cfg(true)` and `cfg(false)`
were incorrectly accepted. For backward compatibility, support for raw
identifiers has been introduced; for example, use `cfg(r#true)` instead.
[#14671](https://github.com/rust-lang/cargo/pull/14671)
- Dependency resolution now provides richer error messages explaining why some versions were rejected, unmatched, or invalid.
[#14897](https://github.com/rust-lang/cargo/pull/14897)
[#14921](https://github.com/rust-lang/cargo/pull/14921)
[#14923](https://github.com/rust-lang/cargo/pull/14923)
[#14927](https://github.com/rust-lang/cargo/pull/14927)
- cargo-doc: improve the error message when `--open`ing a doc while no doc generated.
[#14969](https://github.com/rust-lang/cargo/pull/14969)
- cargo-package: warn if symlinks checked out as plain text files
[#14994](https://github.com/rust-lang/cargo/pull/14994)
- cargo-package: Shows dirty file paths relative to the Git working directory.
[#14968](https://github.com/rust-lang/cargo/pull/14968)
[#14970](https://github.com/rust-lang/cargo/pull/14970)
### Fixed
- Set `GIT_DIR` to ensure compatibility with bare repositories
for `net.git-fetch-with-cli=true`.
[#14860](https://github.com/rust-lang/cargo/pull/14860)
- Fixed workspace Cargo.toml modification didn't invalidate build cache.
[#14973](https://github.com/rust-lang/cargo/pull/14973)
- Prevented build caches from being discarded after changes to `RUSTFLAGS`.
[#14830](https://github.com/rust-lang/cargo/pull/14830)
[#14898](https://github.com/rust-lang/cargo/pull/14898)
- cargo-add: Don't select yanked versions when normalizing names.
[#14895](https://github.com/rust-lang/cargo/pull/14895)
- cargo-fix: Migrate workspace dependencies to the 2024 edition also for virtual manifests.
[#14890](https://github.com/rust-lang/cargo/pull/14890)
- cargo-package: Verify the VCS status of `package.readme` and `package.license-file`
when they point to paths outside the current package root.
[#14966](https://github.com/rust-lang/cargo/pull/14966)
- cargo-package: assure possibly blocking non-files (like FIFOs) won't be
picked up for publishing.
[#14977](https://github.com/rust-lang/cargo/pull/14977)
### Nightly only
- `path-bases`: Support bases in `[patch]`es in virtual manifests
[#14931](https://github.com/rust-lang/cargo/pull/14931)
- `unit-graph`: Use the configured shell to print output.
[#14926](https://github.com/rust-lang/cargo/pull/14926)
- `-Zbuild-std`: Check if the build target supports `std`
by probing the `metadata.std` field in the target spec JSON.
[#14183](https://github.com/rust-lang/cargo/pull/14183)
[#14938](https://github.com/rust-lang/cargo/pull/14938)
[#14899](https://github.com/rust-lang/cargo/pull/14899)
- `-Zbuild-std`: always link to std when testing proc-macros.
[#14850](https://github.com/rust-lang/cargo/pull/14850)
[#14861](https://github.com/rust-lang/cargo/pull/14861)
- `-Zbuild-std`: clean up build-std tests
[#14943](https://github.com/rust-lang/cargo/pull/14943)
[#14933](https://github.com/rust-lang/cargo/pull/14933)
[#14896](https://github.com/rust-lang/cargo/pull/14896)
- `-Zbuild-std`: Hash relative paths to std workspace instead of absolute paths.
[#14951](https://github.com/rust-lang/cargo/pull/14951)
- `-Zpackage-workspace`: Allow dry-run of a non-bumped workspace.
[#14847](https://github.com/rust-lang/cargo/pull/14847)
- `-Zscript`: Allow adding/removing dependencies from cargo scripts
[#14857](https://github.com/rust-lang/cargo/pull/14857)
- `-Zscript`: Migrate cargo script manifests across editions
[#14864](https://github.com/rust-lang/cargo/pull/14864)
- `-Zscript`: Don't override the release profile.
[#14925](https://github.com/rust-lang/cargo/pull/14925)
- `-Ztrim-paths`: Use `Path::push` to construct the `remap-path-prefix` flag.
[#14908](https://github.com/rust-lang/cargo/pull/14908)
### Documentation
- Clarify how `cargo::metadata` env var is selected.
[#14842](https://github.com/rust-lang/cargo/pull/14842)
- cargo-info: Remove references to the default registry in `cargo-info` docs
[#14880](https://github.com/rust-lang/cargo/pull/14880)
- contrib: add missing argument to Rustup Cargo workaround
[#14954](https://github.com/rust-lang/cargo/pull/14954)
- SemVer: Add section on RPIT capturing
[#14849](https://github.com/rust-lang/cargo/pull/14849)
### Internal
- Add the `test` cfg as a well known cfg before of compiler change.
[#14963](https://github.com/rust-lang/cargo/pull/14963)
- Enable triagebot merge conflict notifications
[#14972](https://github.com/rust-lang/cargo/pull/14972)
- Limit release trigger to `0.*` tags
[#14940](https://github.com/rust-lang/cargo/pull/14940)
- Simplify `SourceID` Hash.
[#14800](https://github.com/rust-lang/cargo/pull/14800)
- build-rs: Automatically emits `rerun-if-env-changed`
when accessing environment variables Cargo sets for build script executions.
[#14911](https://github.com/rust-lang/cargo/pull/14911)
- build-rs: Correctly refer to the item in assert
[#14913](https://github.com/rust-lang/cargo/pull/14913)
- build-rs: Add the 'error' directive
[#14910](https://github.com/rust-lang/cargo/pull/14910)
- build-rs: Remove meaningless 'cargo_cfg_debug_assertions'
[#14901](https://github.com/rust-lang/cargo/pull/14901)
- cargo-package: split `cargo_package` to modules
[#14959](https://github.com/rust-lang/cargo/pull/14959)
[#14982](https://github.com/rust-lang/cargo/pull/14982)
- cargo-test-support: `requires` attribute accepts string literals for cmds
[#14875](https://github.com/rust-lang/cargo/pull/14875)
- cargo-test-support: Switch from 'exec_with_output' to 'run'
[#14848](https://github.com/rust-lang/cargo/pull/14848)
- cargo-test-support: track caller for `.crate` file publish verification
[#14992](https://github.com/rust-lang/cargo/pull/14992)
- test: Verify `-Cmetadata` directly, not through `-Cextra-filename`
[#14846](https://github.com/rust-lang/cargo/pull/14846)
- test: ensure PGO works
[#14859](https://github.com/rust-lang/cargo/pull/14859)
[#14874](https://github.com/rust-lang/cargo/pull/14874)
[#14887](https://github.com/rust-lang/cargo/pull/14887)
- Update dependencies.
[#14867](https://github.com/rust-lang/cargo/pull/14867)
[#14871](https://github.com/rust-lang/cargo/pull/14871)
[#14878](https://github.com/rust-lang/cargo/pull/14878)
[#14879](https://github.com/rust-lang/cargo/pull/14879)
[#14975](https://github.com/rust-lang/cargo/pull/14975)
## Cargo 1.84 (2025-01-09)
[15fbd2f6...rust-1.84.0](https://github.com/rust-lang/cargo/compare/15fbd2f6...rust-1.84.0)
### Added
- 🎉 Stabilize resolver v3, a.k.a the MSRV-aware dependency resolver.
The stabilization includes `package.resolver = "3"` in Cargo.toml,
and the `[resolver]` table in Cargo configuration.
([RFC 3537](https://github.com/rust-lang/rfcs/blob/master/text/3537-msrv-resolver.md))
([manifest docs](https://doc.rust-lang.org/nightly/cargo/reference/resolver.html#resolver-versions))
([config docs](https://doc.rust-lang.org/nightly/cargo/reference/config.html#resolver))
[#14639](https://github.com/rust-lang/cargo/pull/14639)
[#14662](https://github.com/rust-lang/cargo/pull/14662)
[#14711](https://github.com/rust-lang/cargo/pull/14711)
[#14725](https://github.com/rust-lang/cargo/pull/14725)
[#14748](https://github.com/rust-lang/cargo/pull/14748)
[#14753](https://github.com/rust-lang/cargo/pull/14753)
[#14754](https://github.com/rust-lang/cargo/pull/14754)
- Added a new build script invocation `cargo::error=MESSAGE` to report error messages.
([docs](https://doc.rust-lang.org/nightly/cargo/reference/build-scripts.html#cargo-error))
[#14743](https://github.com/rust-lang/cargo/pull/14743)
### Changed
- ❗️ cargo-publish: Always include Cargo.lock in published crates.
Originally it was only included for packages that have executables or examples
for use with `cargo install`.
[#14815](https://github.com/rust-lang/cargo/pull/14815)
- Dependency resolver performance improvements, including shared caching,
reduced iteration overhead, and removing redundant fetches and clones.
[#14663](https://github.com/rust-lang/cargo/pull/14663)
[#14690](https://github.com/rust-lang/cargo/pull/14690)
[#14692](https://github.com/rust-lang/cargo/pull/14692)
[#14694](https://github.com/rust-lang/cargo/pull/14694)
- Deprecate `cargo verify-project`.
[#14736](https://github.com/rust-lang/cargo/pull/14736)
- Add source replacement info when no matching package found during dependency resolving.
[#14715](https://github.com/rust-lang/cargo/pull/14715)
- Hint for using `crates-io` when `[patch.crates.io]` found.
[#14700](https://github.com/rust-lang/cargo/pull/14700)
- Normalize source paths of Cargo targets for better diagnostics.
[#14497](https://github.com/rust-lang/cargo/pull/14497)
[#14750](https://github.com/rust-lang/cargo/pull/14750)
- Allow registries to omit empty/default fields in index metadata JSON.
Due to backward compatibility, crates.io continues to emit them.
[#14838](https://github.com/rust-lang/cargo/pull/14838)
[#14839](https://github.com/rust-lang/cargo/pull/14839)
- cargo-doc: display env vars in extra verbose mode.
[#14812](https://github.com/rust-lang/cargo/pull/14812)
- cargo-fix: replace special-case handling of duplicate insert-only replacement.
[#14765](https://github.com/rust-lang/cargo/pull/14765)
[#14782](https://github.com/rust-lang/cargo/pull/14782)
- cargo-remove: when a dependency is not found, try suggesting other dependencies
with similar names.
[#14818](https://github.com/rust-lang/cargo/pull/14818)
- git: skip unnecessary submodule validations for fresh checkouts on Git dependencies.
[#14605](https://github.com/rust-lang/cargo/pull/14605)
- git: Enhanced the error message for fetching Git dependencies when refspec not found.
[#14806](https://github.com/rust-lang/cargo/pull/14806)
- git: Pass `--no-tags` by default to git CLI when `net.git-fetch-with-cli = true`.
[#14688](https://github.com/rust-lang/cargo/pull/14688)
### Fixed
- Fixed old Cargos failing to read the newer format of dep-info in build caches.
[#14751](https://github.com/rust-lang/cargo/pull/14751)
[#14745](https://github.com/rust-lang/cargo/pull/14745)
- Fixed rebuild detection not respecting changes in the `[env]` table.
[#14701](https://github.com/rust-lang/cargo/pull/14701)
[#14730](https://github.com/rust-lang/cargo/pull/14730)
- cargo-fix: Added transactional semantics to `rustfix` to keep code fix in a
valid state when multiple suggestions contain overlapping spans.
[#14747](https://github.com/rust-lang/cargo/pull/14747)
### Nightly only
- The unstable environment variable `CARGO_RUSTC_CURRENT_DIR` has been removed.
[#14799](https://github.com/rust-lang/cargo/pull/14799)
- 🔥 Cargo now includes an experimental JSON Schema file for `Cargo.toml` in the source code.
It helps external tools validate or auto-complete the schema of the manifest.
([manifest.schema.json](https://github.com/rust-lang/cargo/blob/master/crates/cargo-util-schemas/manifest.schema.json))
[#14683](https://github.com/rust-lang/cargo/pull/14683)
- 🔥 `Zroot-dir`: A new unstable `-Zroot-dir` flag to configure the path from
which rustc should be invoked.
([docs](https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#root-dir))
[#14752](https://github.com/rust-lang/cargo/pull/14752)
- 🔥 `-Zwarnings`: A new unstable feature to control how Cargo handles warnings
via the `build.warnings` configuration field.
([docs](https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#warnings))
[#14388](https://github.com/rust-lang/cargo/pull/14388)
[#14827](https://github.com/rust-lang/cargo/pull/14827)
[#14836](https://github.com/rust-lang/cargo/pull/14836)
- `edition2024`: Verify 2024 edition / resolver=3 doesn't affect resolution
[#14724](https://github.com/rust-lang/cargo/pull/14724)
- `native-completions`: Include descriptions in zsh
[#14726](https://github.com/rust-lang/cargo/pull/14726)
- `-Zbindeps`: Fix panic when running cargo tree on a package with a cross compiled bindep
[#14593](https://github.com/rust-lang/cargo/pull/14593)
- `-Zbindeps`: download targeted transitive deps of with artifact deps' target platform
[#14723](https://github.com/rust-lang/cargo/pull/14723)
- `-Zbuild-std`: Remove the requirement for `--target`.
[#14317](https://github.com/rust-lang/cargo/pull/14317)
- `-Zpackage-workspace`: Support package selection options, such as `--exclude`,
in `cargo publish`
[#14659](https://github.com/rust-lang/cargo/pull/14659)
- `-Zscript`: Remove support for accepting `Cargo.toml`.
[#14670](https://github.com/rust-lang/cargo/pull/14670)
- `-Zscript`: Change config paths to only check `CARGO_HOME`
[#14749](https://github.com/rust-lang/cargo/pull/14749)
- `-Zscript`: Update the frontmatter parser for RFC 3503.
[#14792](https://github.com/rust-lang/cargo/pull/14792)
### Documentation
- Clarify the meaning of `--tests` and `--benches` flags.
[#14675](https://github.com/rust-lang/cargo/pull/14675)
- Clarify tools should only interpret messages with a line starting with `{` as JSON.
[#14677](https://github.com/rust-lang/cargo/pull/14677)
- Clarify what is and isn't included by `cargo package`
[#14684](https://github.com/rust-lang/cargo/pull/14684)
- Document official external commands: `cargo-clippy`, `cargo-fmt`, and `cargo-miri`.
[#14669](https://github.com/rust-lang/cargo/pull/14669)
[#14805](https://github.com/rust-lang/cargo/pull/14805)
- Enhance documentation on environment variables
[#14676](https://github.com/rust-lang/cargo/pull/14676)
- Simplify English used in documentations.
[#14825](https://github.com/rust-lang/cargo/pull/14825)
[#14829](https://github.com/rust-lang/cargo/pull/14829)
- A new doc page for deprecated and removed commands.
[#14739](https://github.com/rust-lang/cargo/pull/14739)
- cargo-test-support: Document `Execs` assertions based on port effort
[#14793](https://github.com/rust-lang/cargo/pull/14793)
### Internal
- 🎉 Migrate `build-rs` crate to the `rust-lang/cargo` repository as an
intentional artifact of the Cargo team.
[#14786](https://github.com/rust-lang/cargo/pull/14786)
[#14817](https://github.com/rust-lang/cargo/pull/14817)
- Enable transfer feature in triagebot
[#14777](https://github.com/rust-lang/cargo/pull/14777)
- clone-on-write when needed for InternedString
[#14808](https://github.com/rust-lang/cargo/pull/14808)
- ci: Switch CI from bors to merge queue
[#14718](https://github.com/rust-lang/cargo/pull/14718)
- ci: make the `lint-docs` job required
[#14797](https://github.com/rust-lang/cargo/pull/14797)
- ci: Check for clippy `correctness`
[#14796](https://github.com/rust-lang/cargo/pull/14796)
- ci: Switch matchPackageNames to matchDepNames for renovate
[#14704](https://github.com/rust-lang/cargo/pull/14704)
- fingerprint: Track the intent for each use of `UnitHash`
[#14826](https://github.com/rust-lang/cargo/pull/14826)
- fingerprint: Add more metadata to `rustc_fingerprint`.
[#14761](https://github.com/rust-lang/cargo/pull/14761)
- test: Migrate remaining snapshotting to snapbox
[#14642](https://github.com/rust-lang/cargo/pull/14642)
[#14760](https://github.com/rust-lang/cargo/pull/14760)
[#14781](https://github.com/rust-lang/cargo/pull/14781)
[#14785](https://github.com/rust-lang/cargo/pull/14785)
[#14790](https://github.com/rust-lang/cargo/pull/14790)
- Update dependencies.
[#14668](https://github.com/rust-lang/cargo/pull/14668)
[#14705](https://github.com/rust-lang/cargo/pull/14705)
[#14762](https://github.com/rust-lang/cargo/pull/14762)
[#14766](https://github.com/rust-lang/cargo/pull/14766)
[#14772](https://github.com/rust-lang/cargo/pull/14772)
## Cargo 1.83 (2024-11-28)
[8f40fc59...rust-1.83.0](https://github.com/rust-lang/cargo/compare/8f40fc59...rust-1.83.0)
### Added
- `--timings` HTML output can now auto-switch between light and dark color
schemes based on browser preference.
[#14588](https://github.com/rust-lang/cargo/pull/14588)
- Introduced a new `CARGO_MANIFEST_PATH` environment variable,
similar to `CARGO_MANIFEST_DIR` but pointing directly to the manifest file.
[#14404](https://github.com/rust-lang/cargo/pull/14404)
- manifest: Added `package.autolib`, allowing `[lib]` auto-discovery to be disabled.
[#14591](https://github.com/rust-lang/cargo/pull/14591)
### Changed
- ❗️ Lockfile format v4 is now the default for creating/updating a lockfile.
Rust toolchains 1.78+ support lockfile v4.
For compatibility with earlier MSRV,
consdier setting the `package.rust-version` to 1.82 or earlier.
[#14595](https://github.com/rust-lang/cargo/pull/14595)
- ❗️ cargo-package: When using the `--package` flag, only the specified
packages are packaged. Previously, the package in the current working
directory was automatically selected for packaging.
[#14488](https://github.com/rust-lang/cargo/pull/14488)
- cargo-publish: Now fails fast if the package version is already published.
[#14448](https://github.com/rust-lang/cargo/pull/14448)
- Improved error messages for missing features.
[#14436](https://github.com/rust-lang/cargo/pull/14436)
- Log details of `rustc` invocation failure if no errors are seen
[#14453](https://github.com/rust-lang/cargo/pull/14453)
- Uplifted `windows-gnullvm` import libraries, aligning them with `windows-gnu`.
[#14451](https://github.com/rust-lang/cargo/pull/14451)
- Suggest `cargo info` command in the `cargo search` result
[#14537](https://github.com/rust-lang/cargo/pull/14537)
- Enhanced dependency update status messages, now displaying updates
(compatible, incompatible, direct-dep) in different colors,
along with messages and MSRVs.
[#14440](https://github.com/rust-lang/cargo/pull/14440)
[#14457](https://github.com/rust-lang/cargo/pull/14457)
[#14459](https://github.com/rust-lang/cargo/pull/14459)
[#14461](https://github.com/rust-lang/cargo/pull/14461)
[#14471](https://github.com/rust-lang/cargo/pull/14471)
[#14568](https://github.com/rust-lang/cargo/pull/14568)
- The `Locking` status message no longer displays workspace members.
[#14445](https://github.com/rust-lang/cargo/pull/14445)
### Fixed
- Prevented duplicate library search environment variables when calling `cargo` recursively.
[#14464](https://github.com/rust-lang/cargo/pull/14464)
- Don't double-warn about `$CARGO_HOME/config` not having `.toml` extension.
[#14579](https://github.com/rust-lang/cargo/pull/14579)
- Correct diagnostic count message when using `--message-format json`.
[#14598](https://github.com/rust-lang/cargo/pull/14598)
- cargo-add: Perform fuzzy searches when translating package names
[#13765](https://github.com/rust-lang/cargo/pull/13765)
- cargo-new: only auto-add new packages to the workspace relative to the manifest,
rather than the current directory.
[#14505](https://github.com/rust-lang/cargo/pull/14505)
- cargo-rustc: Fixed parsing of comma-separated values in the `--crate-type` flag.
[#14499](https://github.com/rust-lang/cargo/pull/14499)
- cargo-vendor: trusts the crate version only when it originates from registries.
This causes git dependencies to be re-vendored even if they haven't changed.
[#14530](https://github.com/rust-lang/cargo/pull/14530)
- cargo-publish: Downgrade version-exists error to warning on dry-run
[#14742](https://github.com/rust-lang/cargo/pull/14742)
[#14744](https://github.com/rust-lang/cargo/pull/14744)
### Nightly only
- ❗️ cargo-rustc: give trailing flags higher precedence on nightly.
The nightly gate will be removed after a few releases.
Please give feedback if it breaks any workflow.
A temporary environment variable `__CARGO_RUSTC_ORIG_ARGS_PRIO=1` is provided
to opt-out of the behavior.
[#14587](https://github.com/rust-lang/cargo/pull/14587)
- 🔥 cargo-install: a new `--dry-run` flag without actually installing binaries.
[#14280](https://github.com/rust-lang/cargo/pull/14280)
- 🔥 `native-completions`: moves the handwritten shell completion scripts to
Rust native, making it easier for us to add, extend, and test new completions.
([docs](https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#native-completions))
[#14493](https://github.com/rust-lang/cargo/pull/14493)
[#14531](https://github.com/rust-lang/cargo/pull/14531)
[#14532](https://github.com/rust-lang/cargo/pull/14532)
[#14533](https://github.com/rust-lang/cargo/pull/14533)
[#14534](https://github.com/rust-lang/cargo/pull/14534)
[#14535](https://github.com/rust-lang/cargo/pull/14535)
[#14536](https://github.com/rust-lang/cargo/pull/14536)
[#14546](https://github.com/rust-lang/cargo/pull/14546)
[#14547](https://github.com/rust-lang/cargo/pull/14547)
[#14548](https://github.com/rust-lang/cargo/pull/14548)
[#14552](https://github.com/rust-lang/cargo/pull/14552)
[#14557](https://github.com/rust-lang/cargo/pull/14557)
[#14558](https://github.com/rust-lang/cargo/pull/14558)
[#14563](https://github.com/rust-lang/cargo/pull/14563)
[#14564](https://github.com/rust-lang/cargo/pull/14564)
[#14573](https://github.com/rust-lang/cargo/pull/14573)
[#14590](https://github.com/rust-lang/cargo/pull/14590)
[#14592](https://github.com/rust-lang/cargo/pull/14592)
[#14653](https://github.com/rust-lang/cargo/pull/14653)
[#14656](https://github.com/rust-lang/cargo/pull/14656)
- 🔥 `-Zchecksum-freshness`: replace the use of file mtimes in cargo’s rebuild
detection with a file checksum algorithm. This is most useful on systems with
a poor mtime implementation, or in CI/CD.
([docs](https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#checksum-freshness))
[#14137](https://github.com/rust-lang/cargo/pull/14137)
- cargo-update: Add `matches_prerelease` semantic
[#14305](https://github.com/rust-lang/cargo/pull/14305)
- `build-plan`: document it as being deprecated.
[#14657](https://github.com/rust-lang/cargo/pull/14657)
- `edition2024`: Remove implicit feature removal from 2024 edition.
[#14630](https://github.com/rust-lang/cargo/pull/14630)
- `lockfile-path`: implies `--locked` on `cargo install`.
[#14556](https://github.com/rust-lang/cargo/pull/14556)
- `open-namespaces`: Allow open namespaces in `PackageIdSpec`s
[#14467](https://github.com/rust-lang/cargo/pull/14467)
- `path-bases`: `cargo [add|remove|update]` support
[#14427](https://github.com/rust-lang/cargo/pull/14427)
- `-Zmsrv-policy`: determine the workspace's MSRV by the most number of MSRVs within it.
[#14569](https://github.com/rust-lang/cargo/pull/14569)
- `-Zpackage-workspace`: allows to publish multiple crates in a workspace,
even if they have inter-dependencies.
([docs](https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#package-workspace))
[#14433](https://github.com/rust-lang/cargo/pull/14433)
[#14496](https://github.com/rust-lang/cargo/pull/14496)
- `-Zpublic-dependency`: Include public/private dependency status in `cargo metadata`
[#14504](https://github.com/rust-lang/cargo/pull/14504)
- `-Zpublic-dependency`: Don't require MSRV bump
[#14507](https://github.com/rust-lang/cargo/pull/14507)
### Documentation
- 🎉 New chapter about the uses, support expectations, and management of
`package.rust-version` a.k.a MSRV.
([docs](https://doc.rust-lang.org/nightly/cargo/reference/rust-version.html))
[#14619](https://github.com/rust-lang/cargo/pull/14619)
[#14636](https://github.com/rust-lang/cargo/pull/14636)
- Clarify `target.'cfg(...)'` doesn't respect cfg from build script
[#14312](https://github.com/rust-lang/cargo/pull/14312)
- Clarify `[[bin]]` target auto-discovery can be `src/main.rs` and/or in `src/bin/`
[#14515](https://github.com/rust-lang/cargo/pull/14515)
- Disambiguate the use of 'target' in the feature resolver v2 doc.
[#14540](https://github.com/rust-lang/cargo/pull/14540)
- Make `--config <PATH>` more prominent
[#14631](https://github.com/rust-lang/cargo/pull/14631)
- Minor re-grouping of pages.
[#14620](https://github.com/rust-lang/cargo/pull/14620)
- contrib: Update docs for how cargo is published
[#14539](https://github.com/rust-lang/cargo/pull/14539)
- contrib: Declare support level for each crate in Cargo's Charter / crate docs
[#14600](https://github.com/rust-lang/cargo/pull/14600)
- contrib: Declare new Intentional Artifacts as 'small' changes
[#14599](https://github.com/rust-lang/cargo/pull/14599)
### Internal
- Cleanup duplicated check-cfg lint logic
[#14567](https://github.com/rust-lang/cargo/pull/14567)
- Fix elided lifetime due to nightly rustc changes
[#14487](https://github.com/rust-lang/cargo/pull/14487)
- Improved error reporting when a feature is not found in `activated_features`.
[#14647](https://github.com/rust-lang/cargo/pull/14647)
- cargo-info: Use the `shell.note` to print the note
[#14554](https://github.com/rust-lang/cargo/pull/14554)
- ci: bump CI tools
[#14503](https://github.com/rust-lang/cargo/pull/14503)
[#14628](https://github.com/rust-lang/cargo/pull/14628)
- perf: zero-copy deserialization for compiler messages when possible
[#14608](https://github.com/rust-lang/cargo/pull/14608)
- resolver: Add more SAT resolver tests
[#14583](https://github.com/rust-lang/cargo/pull/14583)
[#14614](https://github.com/rust-lang/cargo/pull/14614)
- test: Migrated more tests to snapbox
[#14576](https://github.com/rust-lang/cargo/pull/14576)
[#14577](https://github.com/rust-lang/cargo/pull/14577)
- Update dependencies.
[#14475](https://github.com/rust-lang/cargo/pull/14475)
[#14478](https://github.com/rust-lang/cargo/pull/14478)
[#14489](https://github.com/rust-lang/cargo/pull/14489)
[#14607](https://github.com/rust-lang/cargo/pull/14607)
[#14624](https://github.com/rust-lang/cargo/pull/14624)
[#14632](https://github.com/rust-lang/cargo/pull/14632)
## Cargo 1.82 (2024-10-17)
[a2b58c3d...rust-1.82.0](https://github.com/rust-lang/cargo/compare/a2b58c3d...rust-1.82.0)
### Added
- 🎉 Added `cargo info` command for displaying information about a package.
[docs](https://doc.rust-lang.org/nightly/cargo/commands/cargo-info.html)
[#14141](https://github.com/rust-lang/cargo/pull/14141)
[#14418](https://github.com/rust-lang/cargo/pull/14418)
[#14430](https://github.com/rust-lang/cargo/pull/14430)
### Changed
- ❗️ Doctest respects Cargo's color options by passing `--color` to rustdoc invocations.
[#14425](https://github.com/rust-lang/cargo/pull/14425)
- Improved error message for missing both `[package]` and `[workspace]` in Cargo.toml.
[#14261](https://github.com/rust-lang/cargo/pull/14261)
- Enumerate all possible values of `profile.*.debug` for the error message.
[#14413](https://github.com/rust-lang/cargo/pull/14413)
### Fixed
- Use longhand gitoxide path-spec patterns. Previously the implementation used
shorthand pathspecs, which could produce invalid syntax, for example, if the
path to the manifest file contained a leading `_` underscore
[#14380](https://github.com/rust-lang/cargo/pull/14380)
- cargo-package: fix failures on bare commit git repo.
[#14359](https://github.com/rust-lang/cargo/pull/14359)
- cargo-publish: Don't strip non-dev features for renamed dependencies from the
HTTP JSON body sent to the registry.
The bug only affected third-party registries.
[#14325](https://github.com/rust-lang/cargo/pull/14325)
[#14327](https://github.com/rust-lang/cargo/pull/14327)
- cargo-vendor: don't copy source files of excluded Cargo targets when vendoring.
[#14367](https://github.com/rust-lang/cargo/pull/14367)
### Nightly only
- 🔥 `lockfile-path`: Added `--lockfile-path` flag that allows specifying a path
to the lockfile other than the default path `<workspace_root>/Cargo.lock`.
([docs](https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#lockfile-path))
[#14326](https://github.com/rust-lang/cargo/pull/14326)
[#14417](https://github.com/rust-lang/cargo/pull/14417)
[#14423](https://github.com/rust-lang/cargo/pull/14423)
[#14424](https://github.com/rust-lang/cargo/pull/14424)
- 🔥 `path-bases`: Introduced a table of path "bases" in Cargo configuration files
that can be used to prefix the paths of path dependencies and patch entries.
([RFC 3529](https://github.com/rust-lang/rfcs/blob/master/text/3529-cargo-path-bases.md))
([docs](https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#path-bases))
[#14360](https://github.com/rust-lang/cargo/pull/14360)
- 🔥 `-Zpackage-workspace`: Enhanced the experience of `cargo package --workspace`
when there are dependencies between crates in the workspace.
Crates in a workspace are no longer required to publish to actual registries.
This is a step toward supporting `cargo publish --workspace`.
[#13947](https://github.com/rust-lang/cargo/pull/13947)
[#14408](https://github.com/rust-lang/cargo/pull/14408)
[#14340](https://github.com/rust-lang/cargo/pull/14340)
- cargo-update: Limit pre-release match semantics to use only on `OptVersionReq::Req`
[#14412](https://github.com/rust-lang/cargo/pull/14412)
- `edition2024`: Revert "fix: Ensure dep/feature activates the dependency on 2024".
[#14295](https://github.com/rust-lang/cargo/pull/14295)
- `update-breaking`: Improved error message when `update --breaking` has an invalid spec
[#14279](https://github.com/rust-lang/cargo/pull/14279)
- `update-breaking`: Don’t downgrade on prerelease `VersionReq` when updating with `--breaking`
[#14250](https://github.com/rust-lang/cargo/pull/14250)
- `-Zbuild-std`: remove hack on creating virtual std workspace
[#14358](https://github.com/rust-lang/cargo/pull/14358)
[#14370](https://github.com/rust-lang/cargo/pull/14370)
- `-Zmsrv-policy`: Adjust MSRV resolve config field name / values.
The previous placeholder `resolver.something-like-precedence`
is now renamed to `resolver.incompatible-rust-versions`.
[#14296](https://github.com/rust-lang/cargo/pull/14296)
- `-Zmsrv-policy`: : Report when incompatible-rust-version packages are selected
[#14401](https://github.com/rust-lang/cargo/pull/14401)
- `-Ztarget-applies-to-host`: Fixed passing of links-overrides with
target-applies-to-host and an implicit target
[#14205](https://github.com/rust-lang/cargo/pull/14205)
- `-Ztarget-applies-to-host`: `-Cmetadata` includes whether extra rustflags is same as host
[#14432](https://github.com/rust-lang/cargo/pull/14432)
- `-Ztrim-paths`: rustdoc supports trim-paths for diagnostics
[#14389](https://github.com/rust-lang/cargo/pull/14389)
### Documentation
- Convert comments to doc comments for `Workspace`.
[#14397](https://github.com/rust-lang/cargo/pull/14397)
- Fix MSRV indicator for `workspace.package` and `workspace.dependencies`.
[#14400](https://github.com/rust-lang/cargo/pull/14400)
- FAQ: remove outdated Cargo offline usage section.
[#14336](https://github.com/rust-lang/cargo/pull/14336)
### Internal
- Enhanced `cargo-test-support` usability and documentation.
[#14266](https://github.com/rust-lang/cargo/pull/14266)
[#14268](https://github.com/rust-lang/cargo/pull/14268)
[#14269](https://github.com/rust-lang/cargo/pull/14269)
[#14270](https://github.com/rust-lang/cargo/pull/14270)
[#14272](https://github.com/rust-lang/cargo/pull/14272)
- Made summary sync by using Arc instead of Rc
[#14260](https://github.com/rust-lang/cargo/pull/14260)
- Used `Rc` instead of `Arc` for storing rustflags
[#14273](https://github.com/rust-lang/cargo/pull/14273)
- Removed rustc probe for `--check-cfg` support
[#14302](https://github.com/rust-lang/cargo/pull/14302)
- Renamed 'resolved' to 'normalized' for all manifest normalization related items.
[#14342](https://github.com/rust-lang/cargo/pull/14342)
- cargo-util-schemas: Added `TomlPackage::new`, `Default` for `TomlWorkspace`
[#14271](https://github.com/rust-lang/cargo/pull/14271)
- ci: Switch macos aarch64 to nightly
[#14382](https://github.com/rust-lang/cargo/pull/14382)
- mdman: Normalize newlines when rendering options
[#14428](https://github.com/rust-lang/cargo/pull/14428)
- perf: dont call wrap in a no-op `source_id::with*`
[#14318](https://github.com/rust-lang/cargo/pull/14318)
- test: Migrated more tests to snapbox
[#14242](https://github.com/rust-lang/cargo/pull/14242)
[#14244](https://github.com/rust-lang/cargo/pull/14244)
[#14293](https://github.com/rust-lang/cargo/pull/14293)
[#14297](https://github.com/rust-lang/cargo/pull/14297)
[#14319](https://github.com/rust-lang/cargo/pull/14319)
[#14402](https://github.com/rust-lang/cargo/pull/14402)
[#14410](https://github.com/rust-lang/cargo/pull/14410)
- test: don't rely on absence of `RUST_BACKTRACE`
[#14441](https://github.com/rust-lang/cargo/pull/14441)
- test: Use gmake on AIX
[#14323](https://github.com/rust-lang/cargo/pull/14323)
- Updated to `gix` 0.64.0
[#14332](https://github.com/rust-lang/cargo/pull/14332)
- Updated to `rusqlite` 0.32.0
[#14334](https://github.com/rust-lang/cargo/pull/14334)
- Updated to `windows-sys` 0.59
[#14335](https://github.com/rust-lang/cargo/pull/14335)
- Update dependencies.
[#14299](https://github.com/rust-lang/cargo/pull/14299)
[#14303](https://github.com/rust-lang/cargo/pull/14303)
[#14324](https://github.com/rust-lang/cargo/pull/14324)
[#14329](https://github.com/rust-lang/cargo/pull/14329)
[#14331](https://github.com/rust-lang/cargo/pull/14331)
[#14391](https://github.com/rust-lang/cargo/pull/14391)
## Cargo 1.81 (2024-09-05)
[34a6a87d...rust-1.81.0](https://github.com/rust-lang/cargo/compare/34a6a87d...rust-1.81.0)
### Added
### Changed
- ❗️ cargo-package: Disallow `package.license-file` and `package.readme` pointing
to non-existent files during packaging.
[#13921](https://github.com/rust-lang/cargo/pull/13921)
- ❗️ cargo-package: generated `.cargo_vcs_info.json` is always included,
even when `--allow-dirty` is passed.
[#13960](https://github.com/rust-lang/cargo/pull/13960)
- ❗️ Disallow passing `--release`/`--debug` flag along with the `--profile` flag.
[#13971](https://github.com/rust-lang/cargo/pull/13971)
- ❗️ Remove `lib.plugin` key support in Cargo.toml.
Rust plugin support has been deprecated for four years and was removed in 1.75.0.
[#13902](https://github.com/rust-lang/cargo/pull/13902)
[#14038](https://github.com/rust-lang/cargo/pull/14038)
- Make the calculation of `-Cmetadata` for rustc consistent across platforms.
[#14107](https://github.com/rust-lang/cargo/pull/14107)
- Emit a warning when `edition` is unset, even when MSRV is unset.
[#14110](https://github.com/rust-lang/cargo/pull/14110)
### Fixed
- Fix a proc-macro example from a dependency affecting feature resolution.
[#13892](https://github.com/rust-lang/cargo/pull/13892)
- Don't warn on duplicate packages from using '..'.
[#14234](https://github.com/rust-lang/cargo/pull/14234)
- Don't `du` on every git source load.
[#14252](https://github.com/rust-lang/cargo/pull/14252)
- Don't warn about unreferenced duplicate packages
[#14239](https://github.com/rust-lang/cargo/pull/14239)
- cargo-publish: Don't strip non-dev features for renamed dependencies from the
HTTP JSON body sent to the registry.
The bug only affected third-party registries.
[#14328](https://github.com/rust-lang/cargo/pull/14328)
- cargo-vendor: don't copy source files of excluded Cargo targets when vendoring.
[#14368](https://github.com/rust-lang/cargo/pull/14368)
### Nightly only
- 🔥 `update-breaking`: Add `--breaking` to `cargo update`,
allowing upgrading dependencies to breaking versions.
[docs](https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#update-breaking)
[#13979](https://github.com/rust-lang/cargo/pull/13979)
[#14047](https://github.com/rust-lang/cargo/pull/14047)
[#14049](https://github.com/rust-lang/cargo/pull/14049)
- `--artifact-dir`: Rename `--out-dir` to `--artifact-dir`.
The `--out-dir` flag is kept for compatibility
and may be removed when the feature gets stabilized.
[#13809](https://github.com/rust-lang/cargo/pull/13809)
- `edition2024`: Ensure unused optional dependencies fire for shadowed dependencies.
[#14028](https://github.com/rust-lang/cargo/pull/14028)
- `edition2024`: Address problems with implicit -> explicit feature migration
[#14018](https://github.com/rust-lang/cargo/pull/14018)
- `-Zcargo-lints`: Add `unknown_lints` to lints list.
[#14024](https://github.com/rust-lang/cargo/pull/14024)
- `-Zcargo-lints`: Add tooling to document lints.
[#14025](https://github.com/rust-lang/cargo/pull/14025)
- `-Zcargo-lints`: Keep lints updated and sorted.
[#14030](https://github.com/rust-lang/cargo/pull/14030)
- `-Zconfig-include`: Allow enabling `config-include` feature in config.
[#14196](https://github.com/rust-lang/cargo/pull/14196)
- `-Zpublic-dependency`: remove some legacy public dependency code from the resolver
[#14090](https://github.com/rust-lang/cargo/pull/14090)
- `-Ztarget-applies-to-host`: Pass rustflags to artifacts built with implicit targets when using target-applies-to-host
[#13900](https://github.com/rust-lang/cargo/pull/13900)
[#14201](https://github.com/rust-lang/cargo/pull/14201)
- cargo-update: Track the behavior of `--precise <prerelease>`.
[#14013](https://github.com/rust-lang/cargo/pull/14013)
### Documentation
- Clarify `CARGO_CFG_TARGET_FAMILY` is multi-valued.
[#14165](https://github.com/rust-lang/cargo/pull/14165)
- Document `CARGO_CFG_TARGET_ABI`
[#14164](https://github.com/rust-lang/cargo/pull/14164)
- Document MSRV for each manifest field and build script invocations.
[#14224](https://github.com/rust-lang/cargo/pull/14224)
- Remove duplicate `strip` section.
[#14146](https://github.com/rust-lang/cargo/pull/14146)
- Update summary of Cargo configuration to include missing keys.
[#14145](https://github.com/rust-lang/cargo/pull/14145)
- Update index of Cargo documentation.
[#14228](https://github.com/rust-lang/cargo/pull/14228)
- Don't mention non-existent `workspace.badges` field.
[#14042](https://github.com/rust-lang/cargo/pull/14042)
- contrib: Suggest atomic commits with separate test commits.
[#14014](https://github.com/rust-lang/cargo/pull/14014)
- contrib: Document how to write an RFC for Cargo.
[#14222](https://github.com/rust-lang/cargo/pull/14222)
- contrib: Improve triage instructions
[#14052](https://github.com/rust-lang/cargo/pull/14052)
### Internal
- cargo-package: Change verification order during packaging.
[#14074](https://github.com/rust-lang/cargo/pull/14074)
- ci: Add workflow to publish Cargo automatically
[#14202](https://github.com/rust-lang/cargo/pull/14202)
- ci: bump CI tools
[#14062](https://github.com/rust-lang/cargo/pull/14062)
[#14257](https://github.com/rust-lang/cargo/pull/14257)
- registry: Add local registry overlays.
[#13926](https://github.com/rust-lang/cargo/pull/13926)
- registry: move `get_source_id` out of registry
[#14218](https://github.com/rust-lang/cargo/pull/14218)
- resolver: Simplify checking for dependency cycles
[#14089](https://github.com/rust-lang/cargo/pull/14089)
- rustfix: Add `CodeFix::apply_solution` and impl `Clone`
[#14092](https://github.com/rust-lang/cargo/pull/14092)
- source: Clean up after `PathSource`/`RecursivePathSource` split
[#14169](https://github.com/rust-lang/cargo/pull/14169)
[#14231](https://github.com/rust-lang/cargo/pull/14231)
- Remove the temporary `__CARGO_GITOXIDE_DISABLE_LIST_FILES` environment variable.
[#14036](https://github.com/rust-lang/cargo/pull/14036)
- Simplify checking feature syntax
[#14106](https://github.com/rust-lang/cargo/pull/14106)
- Dont make new constant `InternedString` in hot path
[#14211](https://github.com/rust-lang/cargo/pull/14211)
- Use `std::fs::absolute` instead of reimplementing it
[#14075](https://github.com/rust-lang/cargo/pull/14075)
- Remove unecessary feature activations from cargo.
[#14122](https://github.com/rust-lang/cargo/pull/14122)
[#14160](https://github.com/rust-lang/cargo/pull/14160)
- Revert #13630 as rustc ignores `-C strip` on MSVC.
[#14061](https://github.com/rust-lang/cargo/pull/14061)
- test: Allow `unexpected_builtin_cfgs` lint in `user_specific_cfgs` test
[#14153](https://github.com/rust-lang/cargo/pull/14153)
- test: Add cargo_test to test-support prelude
[#14243](https://github.com/rust-lang/cargo/pull/14243)
- test: migrate Cargo testsuite to `snapbox`.
For the complete list of migration pull requests,
see [#14039](https://github.com/rust-lang/cargo/issues/14039#issuecomment-2158974033)
- Updated to `gix` 0.64.0
[#14431](https://github.com/rust-lang/cargo/pull/14431)
- Update dependencies.
[#13995](https://github.com/rust-lang/cargo/pull/13995)
[#13998](https://github.com/rust-lang/cargo/pull/13998)
[#14037](https://github.com/rust-lang/cargo/pull/14037)
[#14063](https://github.com/rust-lang/cargo/pull/14063)
[#14067](https://github.com/rust-lang/cargo/pull/14067)
[#14174](https://github.com/rust-lang/cargo/pull/14174)
[#14186](https://github.com/rust-lang/cargo/pull/14186)
[#14254](https://github.com/rust-lang/cargo/pull/14254)
## Cargo 1.80 (2024-07-25)
[b60a1555...rust-1.80.0](https://github.com/rust-lang/cargo/compare/b60a1555...rust-1.80.0)
### Added
- 🎉 Stabilize `-Zcheck-cfg`! This by default enables rustc's checking of
conditional compilation at compile time, which verifies that the crate is
correctly handling conditional compilation for different target platforms or
features. Internally, cargo will be passing a new command line option
`--check-cfg` to all rustc and rustdoc invocations.
A new build script invocation
[`cargo::rustc-check-cfg=CHECK_CFG`](https://doc.rust-lang.org/nightly/cargo/reference/build-scripts.html#rustc-check-cfg)
is added along with this stabilization, as a way to add custom cfgs to the
list of expected cfg names and values.
If a build script is not an option for your package, Cargo provides a config
[`[lints.rust.unexpected_cfgs.check-cfg]`](https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html#check-cfg-in-lintsrust-table)
to add known custom cfgs statically.
([RFC 3013](https://github.com/rust-lang/rfcs/blob/master/text/3013-conditional-compilation-checking.md))
([docs](https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html))
[#13571](https://github.com/rust-lang/cargo/pull/13571)
[#13865](https://github.com/rust-lang/cargo/pull/13865)
[#13869](https://github.com/rust-lang/cargo/pull/13869)
[#13884](https://github.com/rust-lang/cargo/pull/13884)
[#13913](https://github.com/rust-lang/cargo/pull/13913)
[#13937](https://github.com/rust-lang/cargo/pull/13937)
[#13958](https://github.com/rust-lang/cargo/pull/13958)
- 🎉 cargo-update: Allows `--precise` to specify a yanked version of a package,
and will update the lockfile accordingly.
[#13974](https://github.com/rust-lang/cargo/pull/13974)
### Changed
- ❗️ manifest: Disallow `[badges]` to inherit from `[workspace.package.badges]`.
This was considered a bug.
Keep in mind that `[badges]` is effectively deprecated.
[#13788](https://github.com/rust-lang/cargo/pull/13788)
- build-script: Suggest old syntax based on MSRV.
[#13874](https://github.com/rust-lang/cargo/pull/13874)
- cargo-add: Avoid escaping double quotes by using string literals.
[#14006](https://github.com/rust-lang/cargo/pull/14006)
- cargo-clean: Performance improvements for cleaning specific packages via `-p` flag.
[#13818](https://github.com/rust-lang/cargo/pull/13818)
- cargo-new: Use `i32` rather than `usize` as the "default integer" in library template.
[#13939](https://github.com/rust-lang/cargo/pull/13939)
- cargo-package: Warn, rather than fail, if a Cargo target is excluded during packaging.
[#13713](https://github.com/rust-lang/cargo/pull/13713)
- manifest: Warn, not error, on unsupported lint tool in the `[lints]` table.
[#13833](https://github.com/rust-lang/cargo/pull/13833)
- perf: Avoid inferring when Cargo targets are known.
[#13849](https://github.com/rust-lang/cargo/pull/13849)
- Populate git information when building Cargo from Rust's source tarball.
[#13832](https://github.com/rust-lang/cargo/pull/13832)
- Improve the error message when deserializing Cargo configuration from partial environment variables.
[#13956](https://github.com/rust-lang/cargo/pull/13956)
### Fixed
- resolver: Make path dependencies with the same name stay locked.
[#13572](https://github.com/rust-lang/cargo/pull/13572)
- cargo-add: Preserve file permissions on Unix during `write_atomic`.
[#13898](https://github.com/rust-lang/cargo/pull/13898)
- cargo-clean: Remove symlink directory on Windows.
[#13910](https://github.com/rust-lang/cargo/pull/13910)
- cargo-fix: Don't fix into the standard library.
[#13792](https://github.com/rust-lang/cargo/pull/13792)
- cargo-fix: Support IPv6-only networks.
[#13907](https://github.com/rust-lang/cargo/pull/13907)
- cargo-new: Don't say we're adding to a workspace when a regular package is in the root.
[#13987](https://github.com/rust-lang/cargo/pull/13987)
- cargo-vendor: Silence the warning about forgetting the vendoring.
[#13886](https://github.com/rust-lang/cargo/pull/13886)
- cargo-publish/cargo-vendor: Ensure targets in generated Cargo.toml are in a deterministic order.
[#13989](https://github.com/rust-lang/cargo/pull/13989)
[#14004](https://github.com/rust-lang/cargo/pull/14004)
- cargo-credential-libsecret: Load `libsecret` by its `SONAME`, `libsecret-1.so.0`.
[#13927](https://github.com/rust-lang/cargo/pull/13927)
- Don't panic when an alias doesn't include a subcommand.
[#13819](https://github.com/rust-lang/cargo/pull/13819)
- Workaround copying file returning EAGAIN on ZFS on macOS.
[#13845](https://github.com/rust-lang/cargo/pull/13845)
- Fetch specific commits even if the GitHub fast path fails.
[#13946](https://github.com/rust-lang/cargo/pull/13946)
[#13969](https://github.com/rust-lang/cargo/pull/13969)
- Distinguish Cargo config from different environment variables that share the same prefix.
[#14000](https://github.com/rust-lang/cargo/pull/14000)
### Nightly only
- `-Zcargo-lints`: Don't always inherit workspace lints.
[#13812](https://github.com/rust-lang/cargo/pull/13812)
- `-Zcargo-lints`: Add a test to ensure cap-lints works.
[#13829](https://github.com/rust-lang/cargo/pull/13829)
- `-Zcargo-lints`: Error when unstable lints are specified but not enabled.
[#13805](https://github.com/rust-lang/cargo/pull/13805)
- `-Zcargo-lints`: Add cargo-lints to unstable docs.
[#13881](https://github.com/rust-lang/cargo/pull/13881)
- `-Zcargo-lints`: Refactor cargo lint tests.
[#13880](https://github.com/rust-lang/cargo/pull/13880)
- `-Zcargo-lints`: Remove ability to specify `-` in lint name.
[#13837](https://github.com/rust-lang/cargo/pull/13837)
- `-Zscript`: Remove unstable rejected frontmatter syntax for cargo script.
The only allowed frontmatter syntax now is `---`.
[#13861](https://github.com/rust-lang/cargo/pull/13861)
[#13893](https://github.com/rust-lang/cargo/pull/13893)
- `-Zbindeps`: Build only the specified artifact library when multiple types are available.
[#13842](https://github.com/rust-lang/cargo/pull/13842)
- `-Zmsrv-policy`: Treat unset MSRV as compatible.
[#13791](https://github.com/rust-lang/cargo/pull/13791)
- `-Zgit`/`-Zgitoxide`: Default configuration to be obtained from both environment variables and Cargo configuration.
[#13687](https://github.com/rust-lang/cargo/pull/13687)
- `-Zpublic-dependency`: Don't lose 'public' when inheriting a dependency.
[#13836](https://github.com/rust-lang/cargo/pull/13836)
- `edition2024`: Disallow ignored `default-features` when inheriting.
[#13839](https://github.com/rust-lang/cargo/pull/13839)
- `edition2024`: Validate crate-types/proc-macro for bin like other Cargo targets.
[#13841](https://github.com/rust-lang/cargo/pull/13841)
### Documentation
- cargo-package: Clarify no guarantee of VCS provenance.
[#13984](https://github.com/rust-lang/cargo/pull/13984)
- cargo-metadata: Clarify dash replacement rule in Cargo target names.
[#13887](https://github.com/rust-lang/cargo/pull/13887)
- config: Fix wrong type of `rustc-flags` in build script overrides.
[#13957](https://github.com/rust-lang/cargo/pull/13957)
- resolver: Add README for `resolver-tests`.
[#13977](https://github.com/rust-lang/cargo/pull/13977)
- contrib: Update UI example code in contributor guide.
[#13864](https://github.com/rust-lang/cargo/pull/13864)
- Fix libcurl proxy documentation link.
[#13990](https://github.com/rust-lang/cargo/pull/13990)
- Add missing `CARGO_MAKEFLAGS` env for plugins.
[#13872](https://github.com/rust-lang/cargo/pull/13872)
- Include CircleCI reference in the Continuous Integration chapter.
[#13850](https://github.com/rust-lang/cargo/pull/13850)
### Internal
- ci: Don't check `cargo` against beta channel.
[#13827](https://github.com/rust-lang/cargo/pull/13827)
- test: Set safe.directory for git repo in apache container.
[#13920](https://github.com/rust-lang/cargo/pull/13920)
- test: Silence warnings running embedded unittests.
[#13929](https://github.com/rust-lang/cargo/pull/13929)
- test: Update test formatting due to nightly rustc changes.
[#13890](https://github.com/rust-lang/cargo/pull/13890)
[#13901](https://github.com/rust-lang/cargo/pull/13901)
[#13964](https://github.com/rust-lang/cargo/pull/13964)
- test: Make `git::use_the_cli` test truly locale independent.
[#13935](https://github.com/rust-lang/cargo/pull/13935)
- cargo-test-support: Transition direct assertions from cargo-test-support to snapbox.
[#13980](https://github.com/rust-lang/cargo/pull/13980)
- cargo-test-support: Auto-redact elapsed time.
[#13973](https://github.com/rust-lang/cargo/pull/13973)
- cargo-test-support: Clean up unnecessary uses of `match_exact`.
[#13879](https://github.com/rust-lang/cargo/pull/13879)
- Split `RecursivePathSource` out of `PathSource`.
[#13993](https://github.com/rust-lang/cargo/pull/13993)
- Adjust custom errors from cert-check due to libgit2 1.8 change.
[#13970](https://github.com/rust-lang/cargo/pull/13970)
- Move diagnostic printing to Shell.
[#13813](https://github.com/rust-lang/cargo/pull/13813)
- Update dependencies.
[#13834](https://github.com/rust-lang/cargo/pull/13834)
[#13840](https://github.com/rust-lang/cargo/pull/13840)