Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
5967 commits
Select commit Hold shift + click to select a range
e5f1622
Add some more comments on add_error_format.
ehuss May 20, 2019
fe663eb
cargo package: detect new empty directories
ExpHP May 21, 2019
6755ad5
Fix typo
pickfire May 21, 2019
e71cbc0
Auto merge of #6974 - pickfire:patch-1, r=ehuss
bors May 21, 2019
65981eb
Import the cargo-vendor subcommand into Cargo
alexcrichton Apr 23, 2019
00f58a8
Auto merge of #6933 - ehuss:cache-output, r=alexcrichton
bors May 21, 2019
0318a46
use varisat to verify the resolver
Eh2406 May 20, 2019
d80a3bb
make n smaller in the O(n^2) parts
Eh2406 May 20, 2019
118180a
use a better encoding
Eh2406 May 20, 2019
a47eeed
amortize constructing the SAT solver
Eh2406 May 21, 2019
ca0384b
maintain almost the same interface
Eh2406 May 21, 2019
9c994d9
support public & private deps
Eh2406 May 22, 2019
938c27e
use a topological_order to only make a var where needed
Eh2406 May 22, 2019
18f992e
Think of `publicly_exports` as being in terms of a set of `activation…
Eh2406 May 22, 2019
4dd0530
Bump to 0.38.0
ehuss May 23, 2019
7e21554
Auto merge of #6973 - exphp-forks:check-directory, r=ehuss
bors May 23, 2019
6862a74
Auto merge of #6979 - ehuss:version-bump, r=alexcrichton
bors May 23, 2019
8b6cc73
Work around accidentally quadratic debug_assert in varisat
Eh2406 May 23, 2019
8ee245c
make sure the complicated cases are at the end
Eh2406 May 23, 2019
e3406f1
remove a redundant clause
Eh2406 May 23, 2019
f1f9444
reuse vars where publicly_exports implies can_see
Eh2406 May 24, 2019
50991e8
add a helper function
Eh2406 May 24, 2019
0f84415
Fix typo
zkonge May 26, 2019
68398c6
Auto merge of #6982 - zkonge:master, r=ehuss
bors May 26, 2019
dd4a996
Update changelog.
ehuss May 27, 2019
299e320
zsh: Add --all-targets option to cargo-check and cargo-build
tesuji May 27, 2019
39cd09c
Update cache-messages tracking issue.
ehuss May 27, 2019
5f8b74d
Auto merge of #6985 - lzutao:zsh-cargo-check, r=ehuss
bors May 27, 2019
e07d227
Add some hints to the docs for `cfg()` targets
notriddle May 27, 2019
c38a908
Link to changelog in README.
ehuss May 27, 2019
1f3fde3
Auto merge of #6987 - ehuss:update-cache-tracking, r=alexcrichton
bors May 28, 2019
ed8b986
Auto merge of #6984 - ehuss:update-changelog-1.36, r=alexcrichton
bors May 28, 2019
a14a006
Auto merge of #6980 - Eh2406:varisat, r=alexcrichton
bors May 28, 2019
bdad125
Update specifying-dependencies.md
notriddle May 28, 2019
1613240
Link cfg, remove old note, fix link.
ehuss May 28, 2019
552edbc
Auto merge of #6990 - notriddle:patch-1, r=ehuss
bors May 28, 2019
bf9269a
The topological sort in the SAT solver was messed up by a refactor
Eh2406 May 29, 2019
bf4b2a4
Revert most of #84586611 to get test to pass
Eh2406 May 29, 2019
f8caf32
Auto merge of #6995 - Eh2406:new-test-is-worng, r=@alexcrichton
bors May 30, 2019
e6fd78f
Catch filename output collisions in rustdoc.
ehuss May 31, 2019
838b955
Clean up how doc tests are treated.
ehuss May 31, 2019
72625fe
Remove hard-coded index.html in fingerprint function.
ehuss May 31, 2019
a9bb993
Remove unnecessary outlives bounds
matthewjasper Jun 1, 2019
7972368
Auto merge of #6998 - ehuss:doc-duplicate-tracking, r=alexcrichton
bors Jun 3, 2019
baef104
Auto merge of #7000 - matthewjasper:remove-unnecessary-outlives-bound…
bors Jun 3, 2019
6cfda67
Auto merge of #6869 - alexcrichton:vendor, r=ehuss
bors Jun 3, 2019
e3c9c74
Handle pipelined tests of libraries
alexcrichton Jun 4, 2019
2ea9b60
Don't synthesize feature diretives for non-optional deps
alexcrichton Jun 5, 2019
ac9f649
Auto merge of #7008 - alexcrichton:less-pipelining, r=ehuss
bors Jun 5, 2019
911b636
Auto merge of #7010 - alexcrichton:less-features, r=ehuss
bors Jun 5, 2019
f2d6881
Auto merge of #6966 - ehuss:reamp-path-prefix-hash, r=@alexcrichton
bors Jun 6, 2019
9dbc5d0
Update git2 crates for libgit2 0.28
cuviper Jun 7, 2019
5be6a87
fix a bunch of clippy warnings
matthiaskrgr Jun 7, 2019
3848a20
run rustfmt
matthiaskrgr Jun 7, 2019
96f496c
Auto merge of #7019 - matthiaskrgr:clippy_v5, r=Eh2406
bors Jun 7, 2019
c99afac
Make git auth script Windows/bash compatible
alexcrichton Jun 7, 2019
9f1a8fa
Auto merge of #7018 - cuviper:libgit2-0.28, r=alexcrichton
bors Jun 7, 2019
48ae3bb
Fix tests when running with RUST_TEST_THREADS=1
May 2, 2019
ece8c7f
Fix intermittent test failure due to interleaved stdout
May 2, 2019
f98a6b2
Don't rely on a thread local to uniquely create test roots
May 2, 2019
5e96453
Update #[test] attribute on all tests in the testsuite
Jun 5, 2019
98a5a8b
Update reamp_path_prefix_ignored to `cargo_test`.
ehuss Jun 7, 2019
9f9bd20
Update to allow publishing cargo-test-macro.
ehuss Jun 7, 2019
860e5b2
Auto merge of #6900 - jethrogb:nonconcurrent-tests, r=ehuss
bors Jun 7, 2019
c83db26
Fix documenting an example.
ehuss Jun 8, 2019
6d5701b
Auto merge of #7023 - ehuss:doc-example, r=alexcrichton
bors Jun 10, 2019
5d4f1ce
Stabilize publish-lockfile.
ehuss Jun 10, 2019
2a16f3a
remove unused lifetime
matthiaskrgr Jun 11, 2019
c140b3f
tweak lock message
matthiaskrgr Jun 11, 2019
41a8c7a
Auto merge of #7029 - matthiaskrgr:lock, r=Eh2406
bors Jun 11, 2019
64e94f6
Auto merge of #7026 - ehuss:publish-lockfile-stabilize, r=alexcrichton
bors Jun 11, 2019
0b48d21
Use Once::new instead of ONCE_INIT
tesuji Jun 13, 2019
69ae33c
Auto merge of #7031 - lzutao:deprecated-once-init, r=ehuss
bors Jun 13, 2019
0af072c
ci: Run cargo fmt on all workspaces
tesuji Jun 13, 2019
63ce0be
Auto merge of #7033 - lzutao:fmt-workspace, r=alexcrichton
bors Jun 13, 2019
98e7132
Support rustc emitting dep-info for binary dependencies
Mark-Simulacrum Jun 12, 2019
529564b
Auto merge of #7030 - Mark-Simulacrum:support-new-dep-info, r=alexcri…
bors Jun 14, 2019
517c098
ci: Do not install addons on rustfmt build jobs
tesuji Jun 17, 2019
fc8146c
Auto merge of #7038 - lzutao:ci-fmt, r=alexcrichton
bors Jun 17, 2019
dee782e
Move the `crates-io` crate to a `crates` directory
alexcrichton Jun 5, 2019
8e7fb3e
Extract resolver tests to their own crate
alexcrichton Jun 5, 2019
7bcf573
Auto merge of #7011 - alexcrichton:resolver-extract, r=Eh2406
bors Jun 18, 2019
12ed256
cargo book /reference/manifest: fix typo
michaellass Jun 18, 2019
fef700c
Revert test directory cleaning change.
ehuss Jun 18, 2019
230510e
Auto merge of #7041 - michaellass:patch-1, r=ehuss
bors Jun 18, 2019
e3eaaac
`cur` is not as helpful as `age` when debugging
Eh2406 Jun 18, 2019
3c48b5e
`conflicting_activations` should always apply to `cx`
Eh2406 Jun 19, 2019
0607cdb
dont have arg if it is all ways `pkg_id("root")`
Eh2406 Jun 19, 2019
c9664fa
Auto merge of #7042 - ehuss:no-global-rm-rf, r=alexcrichton
bors Jun 19, 2019
a6adc0a
optimize `conflict_store` for looking up only older matches
Eh2406 Jun 19, 2019
db17316
check that the SAT solver exempts the result from the resolver
Eh2406 Jun 19, 2019
3901e21
Remove needless lifetimes
jeremystucki Jun 20, 2019
2e9bb53
Indicate anonymous lifetime
jeremystucki Jun 20, 2019
298cb91
Rename to_url -> into_url
jeremystucki Jun 20, 2019
d88ea99
Auto merge of #7047 - jeremystucki:needless-lifetimes, r=Eh2406
bors Jun 20, 2019
05d81b6
Make rustfmt happy
jeremystucki Jun 20, 2019
3658392
Auto merge of #7048 - jeremystucki:into_url, r=Eh2406
bors Jun 20, 2019
903c0f5
check is_public vs Kind more carefully
Eh2406 Jun 20, 2019
984dcf8
Auto merge of #7045 - Eh2406:resolver-test/debug-cleanup, r=alexcrichton
bors Jun 21, 2019
9ca8450
test(freshness): check that updating dependency mtime does not rebuild
schomatis Jun 21, 2019
c266483
fix(fingerpring): do not touch intermediate artifacts
schomatis Jun 17, 2019
344a3e6
test(freshness): remove `simple_deps_cleaner_does_not_rebuild`
schomatis Jun 21, 2019
66f2360
fix(fingerprint): rustfmt
schomatis Jun 21, 2019
54ee342
Auto merge of #7050 - schomatis:fix/fingerprint/dont-update-intermedi…
bors Jun 21, 2019
9d8dc70
Fix typo in comment
nmattia Jun 21, 2019
4462625
Auto merge of #7054 - nmattia:nm/fix-typo, r=Eh2406
bors Jun 21, 2019
b8103d7
Stabilize default-run
ehuss Jun 21, 2019
0a6f3db
Auto merge of #7056 - ehuss:default-run-stabilize, r=alexcrichton
bors Jun 21, 2019
41c88d2
Fix overwriting binary .d file for dSYM target on apple targets.
hugwijst Jun 21, 2019
3c71064
_cargo: Make function style consistent
tesuji Jun 22, 2019
093474e
Update some fix comments.
ehuss Jun 22, 2019
7b7d3ad
Auto merge of #7061 - ehuss:update-fix-comments, r=alexcrichton
bors Jun 22, 2019
92c5124
_cargo: Fix some warnings caught by shellcheck
tesuji Jun 22, 2019
382c2e6
_cargo: Explain how _cargo_cmds works
tesuji Jun 22, 2019
93b0110
Auto merge of #7060 - lzutao:zsh-complete-package, r=ehuss
bors Jun 22, 2019
3570de1
travis: run cargo fmt on subcrates as well
matthiaskrgr Jun 22, 2019
76424df
format crates-io and cargo-test-macro subcrates
matthiaskrgr Jun 22, 2019
33c3f4f
Auto merge of #7063 - matthiaskrgr:travis_fmt, r=alexcrichton
bors Jun 23, 2019
d4ea8e0
Fix typo in comment
nmattia Jun 24, 2019
ba0ec2b
Auto merge of #7066 - nmattia:nm/fix-typo-2, r=alexcrichton
bors Jun 24, 2019
656a127
Fix exponentiality in depend_on_deps_of_deps.
goffrie Jun 22, 2019
5230945
Add a test for build pipelining with a complex build graph.
goffrie Jun 24, 2019
d6fe073
initial working version of cargo fix --clippy
yaahc Jun 24, 2019
f7b4395
initial attempt at argument passthrough
yaahc Jun 25, 2019
66b78bc
nailed it
yaahc Jun 25, 2019
0f78098
appease cargo fmt
yaahc Jun 25, 2019
28abbe1
rename passthru arg to make it clearer
yaahc Jun 25, 2019
b22ccaf
initial clippy tests
yaahc Jun 25, 2019
54f9471
use json instead of shitty hack
yaahc Jun 25, 2019
8fecee7
Auto merge of #7062 - goffrie:master, r=alexcrichton
bors Jun 25, 2019
c58fc97
add warning to cargo incase clippy is missing
yaahc Jun 25, 2019
8aa363f
allow clippy path override via env variable
yaahc Jun 25, 2019
9f75e1e
Update src/bin/cargo/commands/fix.rs
yaahc Jun 26, 2019
d00efe0
Update src/cargo/util/config.rs
yaahc Jun 26, 2019
8e67b9f
some changes, ill clean this up in a hot sec
yaahc Jun 26, 2019
fd65423
back in tip top shape
yaahc Jun 26, 2019
a4ad8a6
it was still a little broken
yaahc Jun 26, 2019
5c49e2c
Clean environment when git-fetch-with-cli is used.
ehuss Jun 29, 2019
f0ebf81
Auto merge of #7082 - ehuss:git-fetch-with-cli-env-clean, r=Eh2406
bors Jun 29, 2019
23e028b
improve uncommitted changes cargo-package message
sekhat Jul 1, 2019
ebcf13f
Auto merge of #7083 - sekhat:issue/7003-allow-dirty, r=alexcrichton
bors Jul 1, 2019
b2f92af
Add support for multiple --features options
Jul 1, 2019
1f630c9
Fix misleading comment in testsuite
nmattia Jul 3, 2019
3a980ad
Auto merge of #7090 - nmattia:nm-misleading-comment, r=Eh2406
bors Jul 3, 2019
c81822f
Fix 'getting started' internal links
tcharding Jul 3, 2019
8926431
Auto merge of #7093 - tcharding:getting-started-links, r=alexcrichton
bors Jul 4, 2019
799d6c7
Typo
shepmaster Jul 5, 2019
4ee5377
Auto merge of #7097 - shepmaster:patch-2, r=Eh2406
bors Jul 5, 2019
75c7b1c
Update dependency.rs
lukaslueg Jul 5, 2019
a416640
Auto merge of #7098 - lukaslueg:patch-1, r=ehuss
bors Jul 5, 2019
e54a422
Revert "Fix 'getting started' internal links"
ehuss Jul 5, 2019
423187f
Bump to 0.39.0
ehuss Jul 5, 2019
fa5cb2b
Auto merge of #7100 - ehuss:version-bump, r=alexcrichton
bors Jul 5, 2019
7a3ed26
Auto merge of #7099 - ehuss:revert-7093, r=alexcrichton
bors Jul 5, 2019
34e0cbd
Update changelog.
ehuss Jul 5, 2019
e91d98c
Auto merge of #7102 - ehuss:update-changelog, r=Eh2406
bors Jul 5, 2019
b162e74
Auto merge of #7057 - hugwijst:apple-depinfo, r=ehuss
bors Jul 6, 2019
af9a436
Remove byteorder-dependency
lukaslueg Jul 7, 2019
cf85c98
Auto merge of #7106 - lukaslueg:master, r=ehuss
bors Jul 8, 2019
db0b484
Fix --clippy arg for fix
yaahc Jul 10, 2019
b6a171b
Fix changelog date
ehuss Jul 10, 2019
30934c0
Auto merge of #7115 - rust-lang:ehuss-patch-1, r=alexcrichton
bors Jul 10, 2019
d895e18
Don't suppress error messages with `-q`
alexcrichton Jul 10, 2019
73e9618
Auto merge of #7116 - alexcrichton:print-errs, r=Eh2406
bors Jul 10, 2019
c6c27d2
Handle activation conflicts for `[patch]` sources
alexcrichton Jul 10, 2019
0e2993c
Add Cirrus CI badge to manifest
jonhoo Jul 11, 2019
64aee98
Remove MyFnOnce
Mark-Simulacrum Jul 12, 2019
ec23912
Auto merge of #7125 - Mark-Simulacrum:remove-myfnonce, r=alexcrichton
bors Jul 12, 2019
6e42b7c
[BETA] Fix `cargo new` in root directory.
ehuss Jul 12, 2019
5616dcc
Auto merge of #7126 - ehuss:beta-git-new-root, r=alexcrichton
bors Jul 12, 2019
bcf8e3e
Auto merge of #7118 - alexcrichton:patch-bug, r=Eh2406
bors Jul 12, 2019
47b4bfa
Fix some formatting for some strings.
ehuss Jul 13, 2019
938dc18
Auto merge of #7129 - ehuss:string-reformat, r=Eh2406
bors Jul 14, 2019
66fc40b
Remove unused feature filter.
ehuss Jul 14, 2019
475f9a7
Also ignore remap-path-prefix in metadata for `cargo rustc`.
ehuss Jul 14, 2019
176de86
Auto merge of #7134 - ehuss:remap-rustc, r=Eh2406
bors Jul 14, 2019
4f98a0b
Fix some clippy warnings.
ehuss Jul 14, 2019
079b6f9
Auto merge of #7135 - ehuss:clippy-fixes, r=Eh2406
bors Jul 15, 2019
339dd4d
Remove now-unused `WorkspaceResolve`
alexcrichton Jul 12, 2019
2388ef9
Auto merge of #7127 - alexcrichton:less-params, r=Eh2406
bors Jul 15, 2019
e45031f
Auto merge of #7131 - ehuss:remove-unused-opt-feature, r=alexcrichton
bors Jul 15, 2019
6d39c7e
Update mdbook to 0.3.
ehuss Jul 15, 2019
af616d7
Auto merge of #7140 - ehuss:update-mdbook, r=alexcrichton
bors Jul 16, 2019
ce0bab4
centralize diagnostic server stuff
yaahc Jul 16, 2019
d063e20
implement primary unit rustc
yaahc Jul 16, 2019
dc64d7e
deduplicate code
yaahc Jul 16, 2019
2e1ea45
missing wiring
yaahc Jul 16, 2019
b895498
Auto merge of #7119 - jonhoo:cirrus-ci-badge, r=Eh2406
bors Jul 16, 2019
870c0ea
Add a way to disable all nightly tests
alexcrichton Jul 17, 2019
2c668a2
Auto merge of #7142 - alexcrichton:disable-nightly, r=Eh2406
bors Jul 17, 2019
29f2e18
Fix a typo in an env var name
alexcrichton Jul 18, 2019
aae9d4d
Auto merge of #7145 - alexcrichton:fix-typo, r=alexcrichton
bors Jul 18, 2019
8995d32
minor fixes
yaahc Jul 18, 2019
d5670ef
apply the correct changes
yaahc Jul 18, 2019
a5eec98
Auto merge of #7084 - scruffystuffs:invoke-feature-multi, r=alexcrichton
bors Jul 19, 2019
52eeca6
Don't fail if we can't acquire readonly lock
alexcrichton Jul 19, 2019
b9f36e3
Auto merge of #7149 - alexcrichton:maybe-no-lock, r=ehuss
bors Jul 19, 2019
8fe1bfd
dont overuse the wrapper
yaahc Jul 19, 2019
84b9c97
Optimize runtime of `#[cargo_test_macro]`
alexcrichton Jul 18, 2019
1caa3b3
Auto merge of #7146 - alexcrichton:faster-proc-macro, r=Eh2406
bors Jul 19, 2019
7753ac8
Auto merge of #7069 - yaahallo:master, r=ehuss
bors Jul 19, 2019
bc10482
Force clippy to run.
ehuss Jul 20, 2019
64d00b2
Work around rust-lang/rust#61440
infinity0 Jul 20, 2019
093ccde
Auto merge of #7158 - infinity0:master, r=alexcrichton
bors Jul 23, 2019
6ce9685
Optimize lock file format for git merge conflicts
alexcrichton Jun 19, 2019
1c6c758
Auto merge of #7157 - ehuss:force-clippy, r=alexcrichton
bors Jul 23, 2019
d62592c
Setup CI with Azure Pipelines
alexcrichton Jul 18, 2019
0c617b1
Auto merge of #7139 - rust-lang:azure-pipelines, r=alexcrichton
bors Jul 23, 2019
0d7bf67
Auto merge of #7070 - alexcrichton:smaller-cargo-lock, r=ehuss
bors Jul 23, 2019
69ab331
Remove include/exclude glob warning.
ehuss Jul 23, 2019
734bc81
Auto merge of #7170 - ehuss:no-more-glob, r=alexcrichton
bors Jul 23, 2019
b7de764
Fix detection of cyclic dependencies through `[patch]`
alexcrichton Jul 24, 2019
a04989e
Auto merge of #7174 - alexcrichton:fix-cycle-check, r=Eh2406
bors Jul 24, 2019
cea9887
Update the `url` crate to 2.0
alexcrichton Jul 24, 2019
adf3b76
Tighten requirements for git2 crates
alexcrichton Jul 24, 2019
d8e8672
Fix a deadlocking test with master libgit2
alexcrichton Jul 25, 2019
2161801
Auto merge of #7179 - alexcrichton:fix-tests, r=ehuss
bors Jul 25, 2019
edc86f3
Auto merge of #7176 - alexcrichton:update-git2, r=ehuss
bors Jul 25, 2019
a295277
Auto merge of #7175 - alexcrichton:update-url, r=ehuss
bors Jul 25, 2019
58d4f47
Fix some issues with absolute paths in dep-info files.
ehuss Jul 14, 2019
b7aef23
Track dep-info for all dependencies.
ehuss Jul 15, 2019
6ac4d35
Handle Windows extended-length path in dep-info.
ehuss Jul 16, 2019
404561f
Clarify comment on `allow_package`.
ehuss Jul 16, 2019
83979a2
Use canonical paths when parsing dep-info.
ehuss Jul 25, 2019
2b85e93
Be more consistent about detecting CI.
ehuss Jul 25, 2019
36fe228
Platform features reimplemented
snuk182 Jul 25, 2019
df1dd4f
Get back `features_sorted()` for cmd/rustdoc construction
snuk182 Jul 26, 2019
3de9e2f
Resolver tests fix for new FeatureMap type
snuk182 Jul 26, 2019
8937f3e
Build fix
snuk182 Jul 26, 2019
1bd99c6
Add -Z binary-dep-depinfo
ehuss Jul 26, 2019
4e02d30
Auto merge of #7137 - ehuss:dep-info-absolute-paths, r=alexcrichton
bors Jul 26, 2019
4b8eefb
Clean up TargetInfo
ehuss Jul 26, 2019
b30c063
Auto merge of #7185 - ehuss:targetinfo-error, r=alexcrichton
bors Jul 26, 2019
7b7713f
Refactor resolve `Method`
ehuss Jul 27, 2019
a437398
Merge remote-tracking branch 'upstream/master'
snuk182 Jul 28, 2019
f49157d
Get back `features_sorted()` for cmd/rustdoc construction
snuk182 Jul 26, 2019
cc3e2f5
Resolver tests fix for new FeatureMap type
snuk182 Jul 26, 2019
e334715
Build fix
snuk182 Jul 26, 2019
0d5a89a
Merge upstream/master
snuk182 Jul 28, 2019
c043755
Merge upstream/master
snuk182 Jul 28, 2019
fdeead6
Update `cargo_compile` module doc.
ehuss Jul 28, 2019
9a5b432
Auto merge of #7187 - ehuss:cargo-compile-doc, r=Eh2406
bors Jul 28, 2019
fbe6414
Further explain unused_patches.
ehuss Jul 29, 2019
9793d48
Auto merge of #7186 - ehuss:resolve-method, r=alexcrichton
bors Jul 29, 2019
e1daea2
Merge upstream/master
snuk182 Jul 30, 2019
03dd34e
Get back `features_sorted()` for cmd/rustdoc construction
snuk182 Jul 26, 2019
61bf464
Resolver tests fix for new FeatureMap type
snuk182 Jul 26, 2019
0ae6b6d
Build fix
snuk182 Jul 26, 2019
30603ed
Get back `features_sorted()` for cmd/rustdoc construction
snuk182 Jul 26, 2019
6e87a57
Merge fix
snuk182 Jul 30, 2019
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
28 changes: 28 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
---
name: Bug report
about: Create a report to help us improve
labels: C-bug
---

<!-- Thanks for filing a 🐛 bug report 😄! -->

**Problem**
<!-- A clear and concise description of what the bug is. -->
<!-- including what currently happens and what you expected to happen. -->

**Steps**
<!-- The steps to reproduce the bug. -->
1.
2.
3.

**Possible Solution(s)**
<!-- Not obligatory, but suggest a fix/reason for the bug, -->
<!-- or ideas how to implement the addition or change -->

**Notes**

Output of `cargo version`:

<!-- Also, any additional context or information you feel may be relevant to the issue. -->
<!-- (e.g rust version, OS platform/distribution/version, target toolchain(s), release channel.. -->
16 changes: 16 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
---
name: Feature request
about: Suggest an idea for this project
labels: C-feature-request
---

<!-- Thanks for filing a 🙋 feature request 😄! -->

**Describe the problem you are trying to solve**
<!-- A clear and concise description of the problem this feature request is trying to solve. -->

**Describe the solution you'd like**
<!-- A clear and concise description of what you want to happen. -->

**Notes**
<!-- Any additional context or information you feel may be relevant to the issue. -->
8 changes: 6 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
/target
target
Cargo.lock
.cargo
/config.stamp
/Makefile
/config.mk
src/doc/build
src/etc/*.pyc
src/registry/target
src/registry/Cargo.lock
rustc
__pycache__
.idea/
*.iml
*.swp
3 changes: 0 additions & 3 deletions .gitmodules

This file was deleted.

5 changes: 0 additions & 5 deletions .travis.install.deps.sh

This file was deleted.

41 changes: 0 additions & 41 deletions .travis.yml

This file was deleted.

150 changes: 150 additions & 0 deletions ARCHITECTURE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,150 @@
# Cargo Architecture

This document gives a high level overview of Cargo internals. You may
find it useful if you want to contribute to Cargo or if you are
interested in the inner workings of Cargo.

The purpose of Cargo is to formalize a canonical Rust workflow, by automating
the standard tasks associated with distributing software. Cargo simplifies
structuring a new project, adding dependencies, writing and running unit tests,
and more.


## Subcommands

Cargo is a single binary composed of a set of [`clap`] subcommands. All subcommands live in
`src/bin/cargo/commands` directory. `src/bin/cargo/main.rs` is the entry point.

Each subcommand, such as [`src/bin/cargo/commands/build.rs`], has its own API
interface, similarly to Git's, parsing command line options, reading the
configuration files, discovering the Cargo project in the current directory and
delegating the actual implementation to one
of the functions in [`src/cargo/ops/mod.rs`]. This short file is a good
place to find out about most of the things that Cargo can do.
Subcommands are designed to pipe to one another, and custom subcommands make
Cargo easy to extend and attach tools to.

[`clap`]: https://clap.rs/
[`src/bin/cargo/commands/build.rs`]: src/bin/cargo/commands/build.rs
[`src/cargo/ops/mod.rs`]: src/cargo/ops/mod.rs


## Important Data Structures

There are some important data structures which are used throughout
Cargo.

[`Config`] is available almost everywhere and holds "global"
information, such as `CARGO_HOME` or configuration from
`.cargo/config` files. The [`shell`] method of [`Config`] is the entry
point for printing status messages and other info to the console.

[`Workspace`] is the description of the workspace for the current
working directory. Each workspace contains at least one
[`Package`]. Each package corresponds to a single `Cargo.toml`, and may
define several [`Target`]s, such as the library, binaries, integration
test or examples. Targets are crates (each target defines a crate
root, like `src/lib.rs` or `examples/foo.rs`) and are what is actually
compiled by `rustc`.

A typical package defines the single library target and several
auxiliary ones. Packages are a unit of dependency in Cargo, and when
package `foo` depends on package `bar`, that means that each target
from `foo` needs the library target from `bar`.

[`PackageId`] is the unique identifier of a (possibly remote)
package. It consist of three components: name, version and source
id. Source is the place where the source code for package comes
from. Typical sources are crates.io, a git repository or a folder on
the local hard drive.

[`Resolve`] is the representation of a directed acyclic graph of package
dependencies, which uses [`PackageId`]s for nodes. This is the data
structure that is saved to the lock file. If there is no lock file,
Cargo constructs a resolve by finding a graph of packages which
matches declared dependency specification according to semver.

[`Config`]: https://docs.rs/cargo/latest/cargo/util/config/struct.Config.html
[`shell`]: https://docs.rs/cargo/latest/cargo/util/config/struct.Config.html#method.shell
[`Workspace`]: https://docs.rs/cargo/latest/cargo/core/struct.Workspace.html
[`Package`]: https://docs.rs/cargo/latest/cargo/core/package/struct.Package.html
[`Target`]: https://docs.rs/cargo/latest/cargo/core/manifest/struct.Target.html
[`PackageId`]: https://docs.rs/cargo/latest/cargo/core/package_id/struct.PackageId.html
[`Resolve`]: https://docs.rs/cargo/latest/cargo/core/struct.Resolve.html


## Persistence

Cargo is a non-daemon command line application, which means that all
the information used by Cargo must be persisted on the hard drive. The
main sources of information are `Cargo.toml` and `Cargo.lock` files,
`.cargo/config` configuration files and the globally shared registry
of packages downloaded from crates.io, usually located at
`~/.cargo/registry`. See [`src/cargo/sources/registry`] for the specifics of
the registry storage format.

[`src/cargo/sources/registry`]: src/cargo/sources/registry


## Concurrency

Cargo is mostly single threaded. The only concurrency inside a single
instance of Cargo happens during compilation, when several instances
of `rustc` are invoked in parallel to build independent
targets. However there can be several different instances of Cargo
process running concurrently on the system. Cargo guarantees that this
is always safe by using file locks when accessing potentially shared
data like the registry or the target directory.


## Tests

Cargo has an impressive test suite located in the `tests` folder. Most
of the test are integration: a project structure with `Cargo.toml` and
rust source code is created in a temporary directory, `cargo` binary
is invoked via `std::process::Command` and then stdout and stderr are
verified against the expected output. To simplify testing, several
macros of the form `[MACRO]` are used in the expected output. For
example, `[..]` matches any string.

To see stdout and stderr streams of the subordinate process, add `.stream()`
call to the built-up `Execs`:

```rust
// Before
p.cargo("run").run();

// After
p.cargo("run").stream().run();
```

Alternatively to build and run a custom version of cargo simply run `cargo build`
and execute `target/debug/cargo`. Note that `+nightly`/`+stable` (and variants),
being [rustup] features, won't work when executing the locally
built cargo binary directly, you have to instead build with `cargo +nightly build`
and run with `rustup run` (e.g `rustup run nightly
<path-to-cargo>/target/debug/cargo <args>..`) (or set the `RUSTC` env var to point
to nightly rustc).

[rustup]: https://rustup.rs/


## Logging

Cargo uses [`env_logger`], so you can set
`CARGO_LOG` environment variable to get the logs. This is useful both for diagnosing
bugs in stable Cargo and for local development. Cargo also has internal hierarchical
profiling infrastructure, which is activated via `CARGO_PROFILE` variable

```
# Outputs all logs with levels debug and higher
$ CARGO_LOG=debug cargo generate-lockfile

# Don't forget that you can filter by module as well
$ CARGO_LOG=cargo::core::resolver=trace cargo generate-lockfile

# Output first three levels of profiling info
$ CARGO_PROFILE=3 cargo generate-lockfile
```

[`env_logger`]: https://docs.rs/env_logger/*/env_logger/
Loading