]> git.proxmox.com Git - cargo.git/log
cargo.git
6 years agoadd build-from-source info to Tests architecture docs
Dale Wijnand [Wed, 18 Apr 2018 00:27:44 +0000 (01:27 +0100)]
add build-from-source info to Tests architecture docs

it's mentioned in the README, but it's worth mentioning again in the
Tests section of the architecture doc.

6 years agoAuto merge of #5372 - alexcrichton:bump, r=matklad
bors [Tue, 17 Apr 2018 20:49:43 +0000 (20:49 +0000)]
Auto merge of #5372 - alexcrichton:bump, r=matklad

Bump to 0.28.0

Looks like we've forgotten to do this so far on nightly!

6 years agoAuto merge of #5374 - matklad:simplify, r=alexcrichton
bors [Tue, 17 Apr 2018 16:00:32 +0000 (16:00 +0000)]
Auto merge of #5374 - matklad:simplify, r=alexcrichton

Simplify RegistryPackage deserialization

Just mapping dependencies seems so much simpler than thread locals / deserializers with default. Am I missing something, or this indeed will work? :-)

cc @Mark-Simulacrum

6 years agoAuto merge of #5361 - derekdreery:issue_5345, r=matklad
bors [Tue, 17 Apr 2018 13:39:04 +0000 (13:39 +0000)]
Auto merge of #5361 - derekdreery:issue_5345, r=matklad

Fix issue 5345

Fixes #5345.

Also adds some docs and Debug impls.

6 years agoAdd fix and some docs
Richard Dodd [Tue, 17 Apr 2018 13:16:58 +0000 (14:16 +0100)]
Add fix and some docs

6 years agoSimplify RegistryPackage deserialization
Aleksey Kladov [Tue, 17 Apr 2018 07:48:15 +0000 (10:48 +0300)]
Simplify RegistryPackage deserialization

6 years agoBump to 0.28.0
Alex Crichton [Tue, 17 Apr 2018 03:29:41 +0000 (20:29 -0700)]
Bump to 0.28.0

Looks like we've forgotten to do this so far on nightly!

6 years agoAuto merge of #5272 - Phlosioneer:5211-missing-size-hints, r=matklad
bors [Mon, 16 Apr 2018 21:10:56 +0000 (21:10 +0000)]
Auto merge of #5272 - Phlosioneer:5211-missing-size-hints, r=matklad

Implement size_hint for some iterators

This PR implements size_hints for `Deps`, `DepsNotReplaced`, and `Members`.
These size_hints are used extensively by cargo to allocate Vecs.

`Deps`, `DepsNotReplaced`, and `RcVecIter` also now implement `ExactSizeIterator`.

Closes #5211

6 years agoAdd compile-time check for ExactSizeIterator
Phlosioneer [Mon, 16 Apr 2018 20:59:22 +0000 (16:59 -0400)]
Add compile-time check for ExactSizeIterator

6 years agoAuto merge of #5359 - matklad:rustc-cache, r=alexcrichton
bors [Mon, 16 Apr 2018 17:23:53 +0000 (17:23 +0000)]
Auto merge of #5359 - matklad:rustc-cache, r=alexcrichton

Rustc cache

This implements rustc caching, to speed-up no-op builds.

The cache is per-project, and stored in `target` directory. To implement this, I had to move `rustc` from `Config` down to `BuildConfig`.

closes https://github.com/rust-lang/cargo/issues/5315

6 years agorustc is rustc.exe on windows
Aleksey Kladov [Mon, 16 Apr 2018 16:22:53 +0000 (19:22 +0300)]
rustc is rustc.exe on windows

6 years agoSimplify
Aleksey Kladov [Mon, 16 Apr 2018 15:53:12 +0000 (18:53 +0300)]
Simplify

6 years agoMake rustc_info a hidden file
Aleksey Kladov [Mon, 16 Apr 2018 15:52:35 +0000 (18:52 +0300)]
Make rustc_info a hidden file

6 years agoHandle non-rustup cargo + rustup rustc in rustc cache
Aleksey Kladov [Mon, 16 Apr 2018 15:50:25 +0000 (18:50 +0300)]
Handle non-rustup cargo + rustup rustc in rustc cache

6 years agoAuto merge of #5360 - euclio:metadata, r=alexcrichton
bors [Mon, 16 Apr 2018 15:36:50 +0000 (15:36 +0000)]
Auto merge of #5360 - euclio:metadata, r=alexcrichton

include package metadata in `cargo metadata`

Fixes #4819.

All-in-all a pretty small change. I'm a little concerned about threading the `toml::Value` all the way through however, should I make another type? Also, cloning the metadata value initially is maybe not ideal, since it's technically accessible through the original manifest. I figured this way was cleaner.

6 years agoRemove `internal` from error handling
Aleksey Kladov [Mon, 16 Apr 2018 14:57:25 +0000 (17:57 +0300)]
Remove `internal` from error handling

6 years agoAuto merge of #5357 - matklad:even-rust-has-format-string-bugs, r=alexcrichton
bors [Mon, 16 Apr 2018 04:48:29 +0000 (04:48 +0000)]
Auto merge of #5357 - matklad:even-rust-has-format-string-bugs, r=alexcrichton

Correctly print fractional part of a second

So my experiments with `rustc -vV` caching bring no-op build times to around 50ms, and this actually exposes a bug in our time-printing code :-)

6 years agoBetter test description
Richard Dodd [Sun, 15 Apr 2018 13:00:36 +0000 (14:00 +0100)]
Better test description

6 years ago[Wip] fix issue 5345
Richard Dodd [Sun, 15 Apr 2018 12:56:22 +0000 (13:56 +0100)]
[Wip] fix issue 5345

6 years agoinclude package metadata in `cargo metadata`
Andy Russell [Sat, 14 Apr 2018 19:07:23 +0000 (15:07 -0400)]
include package metadata in `cargo metadata`

Fixes #4819.

6 years agoCorrectly resolve executables in paths on windows
Aleksey Kladov [Sat, 14 Apr 2018 14:06:05 +0000 (17:06 +0300)]
Correctly resolve executables in paths on windows

6 years agoAdd env-var to suppress rustc caching
Aleksey Kladov [Sat, 14 Apr 2018 11:09:23 +0000 (14:09 +0300)]
Add env-var to suppress rustc caching

6 years agoSpeedup no-op builds by caching rustc invocations
Aleksey Kladov [Sat, 14 Apr 2018 10:39:59 +0000 (13:39 +0300)]
Speedup no-op builds by caching rustc invocations

6 years agoHide BuildConfig.host_triple behind a getter
Aleksey Kladov [Sat, 14 Apr 2018 08:54:33 +0000 (11:54 +0300)]
Hide BuildConfig.host_triple behind a getter

6 years agoAssociated Rustc with a build config
Aleksey Kladov [Sat, 14 Apr 2018 08:49:13 +0000 (11:49 +0300)]
Associated Rustc with a build config

We want to create `rustc` only when we already have workspace, so that
we could use the `target` dir to store cached info about the compiler.

6 years agoExtract mtime calculation
Aleksey Kladov [Fri, 13 Apr 2018 18:11:41 +0000 (21:11 +0300)]
Extract mtime calculation

6 years agoCorrectly print fractional part of a second
Aleksey Kladov [Fri, 13 Apr 2018 22:06:21 +0000 (01:06 +0300)]
Correctly print fractional part of a second

6 years agoAuto merge of #5355 - djc:target-info-no-context, r=matklad
bors [Fri, 13 Apr 2018 18:55:35 +0000 (18:55 +0000)]
Auto merge of #5355 - djc:target-info-no-context, r=matklad

Make it possible to construct TargetInfo without Context

This should make stuff like #5349 easier.

6 years agoAuto merge of #5354 - djc:config-initialization, r=matklad
bors [Fri, 13 Apr 2018 18:23:10 +0000 (18:23 +0000)]
Auto merge of #5354 - djc:config-initialization, r=matklad

Move initialization of BuildConfig, TargetConfig into new() methods

6 years agoInline creation of TargetInfos in Context::new()
Dirkjan Ochtman [Fri, 13 Apr 2018 18:09:50 +0000 (20:09 +0200)]
Inline creation of TargetInfos in Context::new()

6 years agoDon't require full Context to build a TargetInfo
Dirkjan Ochtman [Fri, 13 Apr 2018 17:58:00 +0000 (19:58 +0200)]
Don't require full Context to build a TargetInfo

6 years agoRemove target_triple() method from Context
Dirkjan Ochtman [Fri, 13 Apr 2018 17:54:05 +0000 (19:54 +0200)]
Remove target_triple() method from Context

Favor accessing cx.build_config directly.

6 years agoRemove host_triple() method from Context
Dirkjan Ochtman [Fri, 13 Apr 2018 17:48:16 +0000 (19:48 +0200)]
Remove host_triple() method from Context

Favor accessing cx.build_config directly.

6 years agoRemove requested_target() method from Context
Dirkjan Ochtman [Fri, 13 Apr 2018 17:43:35 +0000 (19:43 +0200)]
Remove requested_target() method from Context

Favor accessing cx.build_config directly.

6 years agoCorrect formatting with cargo fmt
Dirkjan Ochtman [Fri, 13 Apr 2018 17:59:55 +0000 (19:59 +0200)]
Correct formatting with cargo fmt

6 years agoAuto merge of #5353 - matklad:features, r=alexcrichton
bors [Fri, 13 Apr 2018 16:28:23 +0000 (16:28 +0000)]
Auto merge of #5353 - matklad:features, r=alexcrichton

New semantics for `--features` flag

Historically, feature-related flags like `--all-features`,
`--no-default-features` and `--features` operated on the *current*
package. That is, `cargo --package foo --feature feat` would activate
`feat` for the package at the current working directory, and not for the
`foo` package. `-Z package-features` flag implements the more obvious
semantics for this combination of flags. This changes behavior, and that
is why we want to start with an unstable opt-in. The changes are:

* `--feature` flag affects the selected package. It is an error to
  specify `--feature` with more than a single `-p`, or with `-p` outside
  workspace (the latter could work in theory, but would be hard to
  implement).

* `--all-features` and `--no-default-features` affect all selected
  packages, and not the one at cwd.

* The package in `cwd` is not implicitly enabled when doing feature
  selection. That is, `cargo build -Z package-features -p foo` could
  select *less* features for various packages than `cargo build -p foo`.

r? @alexcrichton

6 years agoNew semantics for `--features` flag
Aleksey Kladov [Fri, 13 Apr 2018 14:36:09 +0000 (17:36 +0300)]
New semantics for `--features` flag

Historically, feature-related flags like `--all-features`,
`--no-default-features` and `--features` operated on the *current*
package. That is, `cargo --package foo --feature feat` would activate
`feat` for the package at the current working directory, and not for the
`foo` package. `-Z package-features` flag implements the more obvious
semantics for this combination of flags. This changes behavior, and that
is why we want to start with an unstable opt-in. The changes are:

* `--feature` flag affects the selected package. It is an error to
  specify `--feature` with more than a single `-p`, or with `-p` outside
  workspace (the latter could work in theory, but would be hard to
  implement).

* `--all-features` and `--no-default-features` affect all selected
  packages, and not the one at cwd.

* The package in `cwd` is not implicitly enabled when doing feature
  selection. That is, `cargo build -Z package-features -p foo` could
  select *less* features for various packages than `cargo build -p foo`.

6 years agoMove BuildConfig initialization into new() method
Dirkjan Ochtman [Thu, 12 Apr 2018 14:12:14 +0000 (16:12 +0200)]
Move BuildConfig initialization into new() method

6 years agoMove creation of TargetConfig into new() method
Dirkjan Ochtman [Thu, 12 Apr 2018 13:58:12 +0000 (15:58 +0200)]
Move creation of TargetConfig into new() method

6 years agoAuto merge of #5350 - matklad:simplify-install, r=djc
bors [Thu, 12 Apr 2018 11:16:51 +0000 (11:16 +0000)]
Auto merge of #5350 - matklad:simplify-install, r=djc

Simplify install

Just a mechanical simplification.

6 years agoAuto merge of #5352 - surma-dump:what-is-a-manifest, r=matklad
bors [Thu, 12 Apr 2018 10:44:05 +0000 (10:44 +0000)]
Auto merge of #5352 - surma-dump:what-is-a-manifest, r=matklad

Mention Cargo.toml in manifest help description

I was looking for a CLI flag to pass a different TOML to cargo, but didn’t realize it’s called “manifest” from reading the help.

6 years agoRemove parens
Surma [Thu, 12 Apr 2018 10:42:19 +0000 (12:42 +0200)]
Remove parens

6 years agoMention Cargo.toml in manifest help description
Surma [Thu, 12 Apr 2018 10:30:42 +0000 (12:30 +0200)]
Mention Cargo.toml in manifest help description

6 years agoAuto merge of #5346 - derekdreery:package_id_docs, r=matklad
bors [Thu, 12 Apr 2018 08:00:38 +0000 (08:00 +0000)]
Auto merge of #5346 - derekdreery:package_id_docs, r=matklad

Add docs

Just adds some docs matching what @matklad told me on irc :)

6 years agoremove getter/setter docs
Richard Dodd (dodj) [Thu, 12 Apr 2018 07:32:53 +0000 (08:32 +0100)]
remove getter/setter docs

6 years agoCleanup formatting
Aleksey Kladov [Thu, 12 Apr 2018 06:06:09 +0000 (09:06 +0300)]
Cleanup formatting

6 years agoMinor simplification
Aleksey Kladov [Thu, 12 Apr 2018 06:04:46 +0000 (09:04 +0300)]
Minor simplification

6 years agoAuto merge of #5348 - djc:resolve-target-specific, r=alexcrichton
bors [Thu, 12 Apr 2018 00:03:59 +0000 (00:03 +0000)]
Auto merge of #5348 - djc:resolve-target-specific, r=alexcrichton

Have compilation context info available earlier in the build process

Eventually, I hope this will allow us to ignore platform-specific dependencies when irrelevant for the current build earlier in the process. This should save on extraneous errors. As is, this seems like it already decreases coupling in the code base.

6 years agoMove compiler driver code from ops into core
Dirkjan Ochtman [Wed, 11 Apr 2018 23:08:01 +0000 (01:08 +0200)]
Move compiler driver code from ops into core

6 years agoUse relative dependencies inside cargo_rustc module
Dirkjan Ochtman [Wed, 11 Apr 2018 22:49:56 +0000 (00:49 +0200)]
Use relative dependencies inside cargo_rustc module

6 years agoUse Unit type as interface to compilation
Dirkjan Ochtman [Wed, 11 Apr 2018 22:37:30 +0000 (00:37 +0200)]
Use Unit type as interface to compilation

6 years agoMove cargo_rustc::compile_targets() to Context::compile()
Dirkjan Ochtman [Wed, 11 Apr 2018 22:29:24 +0000 (00:29 +0200)]
Move cargo_rustc::compile_targets() to Context::compile()

6 years agoHoist Context creation out of compile_targets()
Dirkjan Ochtman [Wed, 11 Apr 2018 20:50:07 +0000 (22:50 +0200)]
Hoist Context creation out of compile_targets()

6 years agoDeliver units to compilation Context after initialization
Dirkjan Ochtman [Wed, 11 Apr 2018 20:25:05 +0000 (22:25 +0200)]
Deliver units to compilation Context after initialization

6 years agoError out early on empty targets
Dirkjan Ochtman [Wed, 11 Apr 2018 22:04:58 +0000 (00:04 +0200)]
Error out early on empty targets

6 years agoInitialize BuildConfig in a single place
Dirkjan Ochtman [Wed, 11 Apr 2018 21:55:01 +0000 (23:55 +0200)]
Initialize BuildConfig in a single place

6 years agoInline single use variable binding
Dirkjan Ochtman [Wed, 11 Apr 2018 21:44:58 +0000 (23:44 +0200)]
Inline single use variable binding

6 years agoProcess build configuration before resolving dependencies
Dirkjan Ochtman [Wed, 11 Apr 2018 14:05:28 +0000 (16:05 +0200)]
Process build configuration before resolving dependencies

6 years agoCorrect formatting with cargo fmt
Dirkjan Ochtman [Wed, 11 Apr 2018 21:16:17 +0000 (23:16 +0200)]
Correct formatting with cargo fmt

6 years agoAdd docs
Richard Dodd [Wed, 11 Apr 2018 16:42:52 +0000 (17:42 +0100)]
Add docs

6 years agoAuto merge of #5341 - dwijnand:test-help, r=alexcrichton
bors [Wed, 11 Apr 2018 14:08:13 +0000 (14:08 +0000)]
Auto merge of #5341 - dwijnand:test-help, r=alexcrichton

tweak test/bench's help around filtering & libtest

Attempt to bring more clarity about test/bench's filtering arg by
detailing the distinction and integration between cargo's test/bench and
libtest.

Also make sure to mention how to see libtest's help/usage message.

Fixes #5337

Feedback welcome.  Also, how do I auto-generate the man pages in
src/etc/man/?  I'm wasn't sure about the escaping to attempt manually
editing.

6 years agoAuto merge of #5343 - dwijnand:contributing-fmt, r=matklad
bors [Wed, 11 Apr 2018 11:44:20 +0000 (11:44 +0000)]
Auto merge of #5343 - dwijnand:contributing-fmt, r=matklad

add a rustfmt detail to CONTRIBUTING.md

stealing from the info in https://github.com/rust-lang/cargo/pull/5301#issuecomment-380389555

6 years agoadd a rustfmt detail to CONTRIBUTING.md
Dale Wijnand [Wed, 11 Apr 2018 11:39:08 +0000 (12:39 +0100)]
add a rustfmt detail to CONTRIBUTING.md

6 years agotweak test/bench's help around filtering & libtest
Dale Wijnand [Wed, 11 Apr 2018 06:39:13 +0000 (07:39 +0100)]
tweak test/bench's help around filtering & libtest

Attempt to bring more clarity about test/bench's filtering arg by
detailing the distinction and integration between cargo's test/bench and
libtest.

Also make sure to mention how to see libtest's help/usage message.

Fixes #5337

6 years agoAuto merge of #5333 - dwijnand:warn-install-2018, r=matklad
bors [Wed, 11 Apr 2018 05:04:28 +0000 (05:04 +0000)]
Auto merge of #5333 - dwijnand:warn-install-2018, r=matklad

Warn/error when cargo installing the cwd in 2015/2018

Fixes #5327

submitted for early review. feedback very welcome, I'm happy to iterate (and learn).

6 years agomore cargo install usage adaptations in the same tests
Dale Wijnand [Tue, 10 Apr 2018 15:34:41 +0000 (16:34 +0100)]
more cargo install usage adaptations in the same tests

6 years agoadapt legitimate cargo install usage to avoid the new warning/error
Dale Wijnand [Tue, 10 Apr 2018 15:05:18 +0000 (16:05 +0100)]
adapt legitimate cargo install usage to avoid the new warning/error

6 years agoadd the inverse `is_not has_installed_exe` assertion
Dale Wijnand [Tue, 10 Apr 2018 14:13:26 +0000 (15:13 +0100)]
add the inverse `is_not has_installed_exe` assertion

6 years agowarn in 2015, error in 2018
Dale Wijnand [Tue, 10 Apr 2018 14:10:38 +0000 (15:10 +0100)]
warn in 2015, error in 2018

6 years agore-implement by adding a few from_cwd args
Dale Wijnand [Tue, 10 Apr 2018 12:32:40 +0000 (13:32 +0100)]
re-implement by adding a few from_cwd args

6 years agofound a way to reuse SourceId::for_path in SourceId::from_cwd
Dale Wijnand [Tue, 10 Apr 2018 07:16:57 +0000 (08:16 +0100)]
found a way to reuse SourceId::for_path in SourceId::from_cwd

6 years agodocument SourceId::from_cwd
Dale Wijnand [Tue, 10 Apr 2018 05:48:00 +0000 (06:48 +0100)]
document SourceId::from_cwd

6 years agoenable cargo edition feature & bump to 2018
Dale Wijnand [Tue, 10 Apr 2018 05:44:59 +0000 (06:44 +0100)]
enable cargo edition feature & bump to 2018

6 years agoWarn about cargo installing the cwd in 2018 edition
Dale Wijnand [Tue, 10 Apr 2018 00:37:12 +0000 (01:37 +0100)]
Warn about cargo installing the cwd in 2018 edition

Fixes #5327

6 years agoAuto merge of #5331 - dwijnand:contributing-fmt, r=matklad
bors [Mon, 9 Apr 2018 22:04:05 +0000 (22:04 +0000)]
Auto merge of #5331 - dwijnand:contributing-fmt, r=matklad

Tweak rustfmt details in CONTRIBUTING.md

Closes #5329

6 years agoTweak rustfmt details in CONTRIBUTING.md
Dale Wijnand [Mon, 9 Apr 2018 21:59:31 +0000 (22:59 +0100)]
Tweak rustfmt details in CONTRIBUTING.md

Closes #5329

6 years agoAuto merge of #5328 - dwijnand:doc-links-key, r=matklad
bors [Mon, 9 Apr 2018 20:30:49 +0000 (20:30 +0000)]
Auto merge of #5328 - dwijnand:doc-links-key, r=matklad

Add a reference to the links key in the manifest docs

Fixes #4975

6 years agoAdd a references to the links key in the manifest docs
Dale Wijnand [Mon, 9 Apr 2018 20:27:34 +0000 (21:27 +0100)]
Add a references to the links key in the manifest docs

Fixes #4975

6 years agoAuto merge of #5325 - dwijnand:patch-1, r=matklad
bors [Mon, 9 Apr 2018 18:41:15 +0000 (18:41 +0000)]
Auto merge of #5325 - dwijnand:patch-1, r=matklad

Fix link to I-nominated in CONTRIBUTING.md

6 years agoFix link to I-nominated in CONTRIBUTING.md
Dale Wijnand [Mon, 9 Apr 2018 18:38:58 +0000 (19:38 +0100)]
Fix link to I-nominated in CONTRIBUTING.md

6 years agoAuto merge of #5323 - matklad:document-good-stuff, r=alexcrichton
bors [Mon, 9 Apr 2018 13:19:05 +0000 (13:19 +0000)]
Auto merge of #5323 - matklad:document-good-stuff, r=alexcrichton

Document how to use Cargo's internal logging

I always forget the syntax for filtering by module, and I've learned about `CARGO_PROFILE` yesterday, so let's document these for other contributors as well :-)

6 years agoAuto merge of #5318 - ehuss:unstable-docs, r=matklad
bors [Sun, 8 Apr 2018 22:02:15 +0000 (22:02 +0000)]
Auto merge of #5318 - ehuss:unstable-docs, r=matklad

Add unstable documentation.

I kept most of these relatively brief with the intent that more complete
documentation would be added when a feature is stabilized.  I did my best to be
accurate, but I am unfamiliar with most of these features, so please let me know
if anything should change.

@matklad: I didn't fully understand the use case for `minimal-versions`, so I
didn't say much about it.  In particular, I didn't understand why one wouldn't
just use `~` or `=` semver requirements if you wanted to be careful about not
pulling in a newer version.  When someone says "1.0", aren't they explicitly
saying they want a newer version (up to 2.0) if it's available?  The example
in the RFC of switching a dependency to "=1.0" sounds like a breaking change
(essentially downgrading a dependency).

6 years agoUpdate out-dir option for #5322.
Eric Huss [Sun, 8 Apr 2018 17:52:57 +0000 (10:52 -0700)]
Update out-dir option for #5322.

6 years agoClarify -Z minimal-versions.
Eric Huss [Sun, 8 Apr 2018 17:40:50 +0000 (10:40 -0700)]
Clarify -Z minimal-versions.

6 years agoAdd unstable documentation.
Eric Huss [Sat, 7 Apr 2018 21:11:07 +0000 (14:11 -0700)]
Add unstable documentation.

I kept most of these relatively brief with the intent that more complete
documentation would be added when a feature is stabilized.  I did my best to be
accurate, but I am unfamiliar with most of these features, so please let me know
if anything should change.

@matklad: I didn't fully understand the use case for `minimal-versions`, so I
didn't say much about it.  In particular, I didn't understand why one wouldn't
just use `~` or `=` semver requirements if you wanted to be careful about not
pulling in a newer version.  When someone says "1.0", aren't they explicitly
saying they want a newer version (up to 2.0) if it's available?  The example
in the RFC of switching a dependency to "=1.0" sounds like a breaking change
(essentially downgrading a dependency).

6 years agoAuto merge of #5322 - matklad:correctly-use-unstable-options, r=alexcrichton
bors [Sun, 8 Apr 2018 17:11:32 +0000 (17:11 +0000)]
Auto merge of #5322 - matklad:correctly-use-unstable-options, r=alexcrichton

Properly use unstable options for out-dir

@alexcrichton how exactly are unstable CLI options supposed to be handled?

One can do `-Z unstable-options my-opt` (this is done for `registry`, and this pr uses the same approach for `out-dir`). Once can also do `-Z my-opt`. Doc comments say that `-Z my-opt=val` is also possible, but in reality it does not work.

This infra was inherited from `rustc`, which is a slightly different use-case, because it does not have subcommands. That is, if you do `-Z my-opt`, it is available for all subcommands, but does not show up in the help...

What do you think about having only `-Z unstable-options` to unlock all cli options? Or do we require a finer-graind granularity?

Somewhat related, we have a bunch of unstable options already... Do we have tracking issues for them, to know when the time comes to graduate them to stable?

6 years agoDocument how to use Cargo's internal logging
Aleksey Kladov [Sun, 8 Apr 2018 15:28:27 +0000 (18:28 +0300)]
Document how to use Cargo's internal logging

6 years agoAuto merge of #5319 - matklad:fix-profiler, r=Eh2406
bors [Sun, 8 Apr 2018 15:21:20 +0000 (15:21 +0000)]
Auto merge of #5319 - matklad:fix-profiler, r=Eh2406

Don't print profiling information twice

It's important to `.clear` the messages so that we don't print them
again for the next "profiling session". It might be argued that really
we should have a single "profiling session" for Cargo, but we don't at
the moment.

And, while we are at it, let's lock stdout as well, so that we won't
get confused when Cargo becomes multi-threaded and prints profiling info
from several threads simultaneously.

6 years agoProperly use unstable options for out-dir
Aleksey Kladov [Sun, 8 Apr 2018 11:47:35 +0000 (14:47 +0300)]
Properly use unstable options for out-dir

6 years agoDon't print profiling information twice
Aleksey Kladov [Sun, 8 Apr 2018 08:37:05 +0000 (11:37 +0300)]
Don't print profiling information twice

It's important to `.clear` the messages so that we don't print them
again for the next "profiling session". It might be argued that really
we should have a single "profiling session" for Cargo, but we don't at
the moment.

And, while we are at it, let's lock stdout as well, so that we won't
get confused when Cargo becomes multi-threaded and prints profiling info
from several threads simultaneously.

6 years agoAuto merge of #5317 - konstin:patch-1, r=matklad
bors [Sat, 7 Apr 2018 18:58:39 +0000 (18:58 +0000)]
Auto merge of #5317 - konstin:patch-1, r=matklad

Add link to the sources of the book

It's quite hard to find the folder with the sources of the book, so I added the link to the introduction.

6 years agoAdd link to the sources of the book
konstin [Sat, 7 Apr 2018 18:42:33 +0000 (20:42 +0200)]
Add link to the sources of the book

It's quite hard to find the folder with the sources of the book, so I added the link to the introduction.

6 years agoAuto merge of #5316 - matklad:profile-important-things, r=alexcrichton
bors [Sat, 7 Apr 2018 16:44:28 +0000 (16:44 +0000)]
Auto merge of #5316 - matklad:profile-important-things, r=alexcrichton

Add profiling calls to stuff which is actually slow

So these two functions is what makes no-op build slow, so let's profile them to be able to track regressions better in the future.

6 years agoAdd profiling calls to stuff which is actually slow
Aleksey Kladov [Sat, 7 Apr 2018 15:43:23 +0000 (18:43 +0300)]
Add profiling calls to stuff which is actually slow

6 years agoAuto merge of #5314 - matklad:need-more-time, r=alexcrichton
bors [Sat, 7 Apr 2018 14:30:47 +0000 (14:30 +0000)]
Auto merge of #5314 - matklad:need-more-time, r=alexcrichton

Try to measure all time it takes to compile code

As @killercup noticed on IRC, no-op build by Cargo takes as much as 300 ms (on stable, beta and nightly), which seems unreasonable. However, Cargo wrongly reports ` Finished dev [unoptimized + debuginfo] target(s) in 0.0 secs`, and this might be the reason why we haven't noticed this before.

So let's try to measure time slightly better:

```
~/projects/rustraytracer master*
λ time cargo +stable build
    Finished dev [unoptimized + debuginfo] target(s) in 0.0 secs
cargo +stable build  0.16s user 0.02s system 94% cpu 0.195 total

~/projects/rustraytracer master*
λ time $c build # Cargo with this patch applied
    Finished dev [unoptimized + debuginfo] target(s) in 0.31 secs
$c build  0.30s user 0.02s system 96% cpu 0.330 total
```

r? @alexcrichton

6 years agoTry to measure all time it takes to compile code
Aleksey Kladov [Sat, 7 Apr 2018 14:12:14 +0000 (17:12 +0300)]
Try to measure all time it takes to compile code

6 years agoAuto merge of #5307 - alexcrichton:another-fix, r=matklad
bors [Fri, 6 Apr 2018 19:45:16 +0000 (19:45 +0000)]
Auto merge of #5307 - alexcrichton:another-fix, r=matklad

Fix another issue of poisoning too eagerly

This commit extends the fix in #5288 by moving the logic added farther up in the
loop over package dependencies. This means that we won't recursively look at
optional/dev path dependencies which aren't members of the workspace. This
should fix the new issue that came up in #5257

Closes #5257

6 years agoFix another issue of poisoning too eagerly
Alex Crichton [Fri, 6 Apr 2018 19:35:37 +0000 (12:35 -0700)]
Fix another issue of poisoning too eagerly

This commit extends the fix in #5288 by moving the logic added farther up in the
loop over package dependencies. This means that we won't recursively look at
optional/dev path dependencies which aren't members of the workspace. This
should fix the new issue that came up in #5257

Closes #5257

6 years agoAuto merge of #5302 - Eh2406:MoreRc, r=alexcrichton
bors [Fri, 6 Apr 2018 18:52:22 +0000 (18:52 +0000)]
Auto merge of #5302 - Eh2406:MoreRc, r=alexcrichton

use more Rc in the part of resolver that gets cloned a lot 2

This is the same idea as https://github.com/rust-lang/cargo/pull/5118, I was looking at a profile and noted that ~5% of our time was sent dropping `HashMap<PackageId, HashSet<InternedString>>`. A quick rg and I found the culprit, we are cloning the set of features for every new `Context`. With some Rc we are now just cloning for each time we insert.

To benchmark I commented out line https://github.com/rust-lang/cargo/blob/b9aa315158fe4d8d63672a49200401922ef7385d/src/cargo/core/resolver/mod.rs#L453
the smallest change to get https://github.com/rust-lang/cargo/issues/4810#issuecomment-357553286 not to solve instantly.
Before 17000000 ticks, 90s, 188.889 ticks/ms
After 17000000 ticks, 73s, 232.877 ticks/ms

6 years agouse make_mut for cleaner code
Eh2406 [Fri, 6 Apr 2018 16:38:41 +0000 (12:38 -0400)]
use make_mut for cleaner code