---
robots: noindex, nofollow
tags: meetings
---
# Cargo team meeting notes 2021
## 2021-12-14
- Schedule
- Skipping for 21 and 28
- Checkboxes for term.quiet
- [https://github.com/rust-lang/cargo/pull/10152#issuecomment-987409914](https://github.com/rust-lang/cargo/pull/10152#issuecomment-987409914)
- PR Queue
- Transitioning PRs to draft state, closing if no progress over N months
- List of things for responses
- Should we post something talking about how we have limited bandwidth
- PR Template
- Contribution guidelines
- What will make it more likely for success
- Emphasize that the issue is not primarily code review (though huge PRs are hard to review), it’s design review, and clear descriptions of problems.
## 2021-12-07
- Provide Cargo messages as JSON messages
- https://github.com/rust-lang/cargo/issues/8283
- Passing compile mode to build scripts.
- [https://github.com/rust-lang/cargo/pull/10126](https://github.com/rust-lang/cargo/pull/10126)
- https://github.com/rust-lang/cargo/issues/4001#issuecomment-983752706
- The cost of re-running a build script on every command (test/doc/check/bench/build/etc.)
- Some kind of incremental support, where the cache isn’t thrown away. (Would require the build script to be more sandboxed.)
- Add --counts for tests
- [https://github.com/rust-lang/cargo/pull/10174](https://github.com/rust-lang/cargo/pull/10174)
- Counting time of first run, to give an approximation of how long it will run.
- Will ask to move this to libtest.
- Add `cargo:error` to build scripts
- [https://github.com/rust-lang/cargo/issues/10159](https://github.com/rust-lang/cargo/issues/10159)
- Last discussed about "info" messages in [https://github.com/rust-lang/cargo/issues/7037](https://github.com/rust-lang/cargo/issues/7037), which wanted an RFC. But do simple error messages need something similar?
- no real objections
- josh will respond
- Publish cargo test lib
- [https://github.com/rust-lang/cargo/issues/10147](https://github.com/rust-lang/cargo/issues/10147)
- eric will respond to ask for more feedback (maybe as a git dependency)
- Support DEBIAN_FRONTEND
- [https://github.com/rust-lang/cargo/issues/10087](https://github.com/rust-lang/cargo/issues/10087)
- josh to comment and close
- Installing from a vendored dependency
- [https://github.com/rust-lang/cargo/issues/10156](https://github.com/rust-lang/cargo/issues/10156)
- https://github.com/rust-lang/rfcs/pull/3168 — Being able to run binaries for dependencies
- eric to respond
## 2021-11-30
- Follow up on [https://github.com/rust-lang/cargo/issues/10111](https://github.com/rust-lang/cargo/issues/10111) about RUSTFLAGS not being set
- [https://github.com/rust-lang/cargo/pull/9601](https://github.com/rust-lang/cargo/pull/9601)
- Change was in 1.55
- Affecting several projects
- [https://github.com/dtolnay/proc-macro2/pull/294](https://github.com/dtolnay/proc-macro2/pull/294)
- [https://github.com/hermitcore/rusty-hermit/pull/159](https://github.com/hermitcore/rusty-hermit/pull/159)
- anyhow-1.0.44 (FIXED)
- cargo-asm-0.1.16
- cargo-bpf-2.0.1
- cargo-compiler-interrupts-3.2.1
- cargo-contract-0.14.0
- cargo-src-0.1.8
- const_fn-0.4.8
- flutter-engine-sys-0.3.5
- foo-cargo-filename-test-0.3.0
- hdf5-sys-0.7.1
- hermit-sys-0.1.24
- luajit2-sys-0.0.2
- mozjs_sys-0.67.1
- oasis-chain-0.0.2
- oasis-cli-0.1.6
- proc-macro2-1.0.29 (FIXED)
- proc-macro2-impersonated-0.1.1
- proc-macro2-next-1.0.0-rc4
- reed-solomon-erasure-4.0.2
- rftrace-0.1.0
- rhdxmr-publish-test-0.2.7
- safe-proc-macro2-1.0.24
- tectonic_bridge_graphite2-0.2.0
- threescalers-0.8.0
- Set RUSTFLAGS if it safe to do
- Release note or somehow alerting people about this change
[x] Include in cargo’s 1.57 notes
- toml-edit requirements
- https://github.com/rust-lang/cargo/pull/10086
- Needs to pass the cargo testsuite
- Error messages don’t need to match verbatim, but they should not be any worse
- should have an in-depth review of the entire crate
- author commit to being available for some time (3 months?) for relatively quick turnaround
- Span handling
- Low-level tokenization (--config https://github.com/rust-lang/cargo/issues/7722)
- Equivalent parsing of crates.io and benchmarking. There’s some threshold (15%? some close)
- Comparing the cargo’s benchmarks are probably the most important.
- Error messages should roughly be on par (same amount of semantic information, like the key, etc)
- We can meet with epage in person if it would be useful
- publish-dir
- [https://github.com/rust-lang/cargo/pull/10100](https://github.com/rust-lang/cargo/pull/10100)
- Very similar to out-dir https://github.com/rust-lang/cargo/issues/6790
- Would out-dir solve this
- Concern that out-dir may not be on track to ever be stabilized due to its similarity to `--target` and that it is “just” a cp. If you are doing anything non-trivial, you already have some script or build tool orchestrating things, which can easily run cp itself.
[x] eric will check on out-dir, and maybe recommend that instead.
- doctest-xcompile: Any thoughts on what would block stabilization?
- [https://github.com/rust-lang/rust/issues/64245](https://github.com/rust-lang/rust/issues/64245)
- [https://github.com/rust-lang/cargo/issues/7040](https://github.com/rust-lang/cargo/issues/7040)
- The roll-out will be the important part
- Make it opt-in (or easy to opt-out)
- Stabilize off by default, will be turned on in the future
- config option, cli option, environment variable, cargo.toml?
- config option is probably most flexible and easiest
- Allow setting --quiet from config
- [https://github.com/rust-lang/cargo/issues/10128](https://github.com/rust-lang/cargo/issues/10128)
- Is there a way to say —no-quiet?
[x] eric will respond
- Adding color to output of `cargo search`
- [https://github.com/rust-lang/cargo/pull/10116](https://github.com/rust-lang/cargo/pull/10116)
- `foo = "0.0.0" # This is a description.`
- npm highlights the search term in a normal green
- Highlighting the search term
- Might be difficult to match crates.io’s fuzzy checking
- Shared locking implementation
- [https://github.com/rust-lang/rust/pull/88310](https://github.com/rust-lang/rust/pull/88310)
- Every use case has slightly different requirements. Could spiral into a huge slew of options. And an endless discussion of exactly how locks should work.
- cargo, rustc (for incremental), rustdoc (for shared files like javascript), x.py (concurrent builds)
## 2021-11-23
- Welcome Weihang Lo!
- User wanting `cargo rustc` args in a build script (via Zulip)
- https://rust-lang.zulipchat.com/#narrow/stream/246057-t-cargo/topic/Add.20CARGO_CFG_EMIT/near/261458011
- [https://github.com/rust-lang/cargo/issues/10094](https://github.com/rust-lang/cargo/issues/10094)
- custom env in custom subcommands
- question about setting PATH which could cause it to pick a different subcommand
- [https://github.com/rust-lang/cargo/issues/10111](https://github.com/rust-lang/cargo/issues/10111)
- RUSTFLAGS not set in build script
- https://github.com/rust-lang/cargo/pull/9601 CARGO_ENCODED_RUSTFLAGS
- Will follow up with why RUSTFLAGS was unset
- Natvis rfc
- https://github.com/rust-lang/rfcs/pull/3191
- toml-edit requirements
- performance is quantifiable
- difficult to express requirements, such as being able to make quick fixes if there is a critical bug
- Or general “code quality”
- Compare parsing of all crates.io
- Status update on artifact dependencies
- https://github.com/rust-lang/cargo/pull/9992
- https://github.com/rust-lang/cargo/pull/10061
- https://github.com/rust-lang/cargo/pull/10108 - getting build-std working with per-package targets.
- eric will look if there is a hack that can work
- Benchmarking the resolver
- Trying to find good examples that don’t use git dependencies which are harder to benchmark
- Partial compilation of dependencies (initial brainstorm)
## 2021-11-16
- [https://github.com/rust-lang/cargo/pull/10082](https://github.com/rust-lang/cargo/pull/10082)
- Warn on 3rd party aliases.
- Triple check, yes, this is what we want to do.
- [https://github.com/rust-lang/cargo/pull/10052](https://github.com/rust-lang/cargo/pull/10052)
- parallel tests
- alex to post something
- [https://github.com/rust-lang/cargo/pull/10084](https://github.com/rust-lang/cargo/pull/10084)
- per-package-target with build-std
- per-package-target doesn’t support dependencies, it is just unfinished right now
- alex is ok to review
- https://github.com/rust-lang/cargo/pull/10064
- Registry functions return Poll to enable parallel fetching of index data
- checking with jacob to review
- alex to post a comment
- [https://github.com/rust-lang/cargo/pull/10070](https://github.com/rust-lang/cargo/pull/10070)
- `cargo clean` `--``with-downloads`
- Discussed ideas for automated cleaning, and a UI for forcefully cleaning.
- `cargo gc/cache/sweep` vs stuffing everything in `cargo clean`
- eric has been working on prototypes for automated cache cleaning, has been thinking about the UI
- Jon’s use case seems a little highly specific to some hack/bug he is working on.
- eric to ask for more information
## 2021-11-09
- [https://github.com/rust-lang/cargo/issues/10023](https://github.com/rust-lang/cargo/issues/10023)
- Support Mecurial detection in `cargo publish` for dirty checks.
- Seems reasonable, prefer to call `hg`, but may be tricky to plumb into cargo.
- [https://github.com/rust-lang/cargo/issues/10039](https://github.com/rust-lang/cargo/issues/10039)
- Have `cargo new` automatically commit the base template.
[x] Move to close.
- [https://github.com/rust-lang/cargo/issues/10049](https://github.com/rust-lang/cargo/issues/10049)
- Wants to prevent aliases from shadowing third-party subcommands.
- Concern about breaking existing aliases (like an alias for `clippy` or `fmt`).
- Would be reasonable, but probably need a warning for a long while to tell people it is shadowing, and then prevent it long in the future.
- [https://github.com/rust-lang/cargo/issues/10053](https://github.com/rust-lang/cargo/issues/10053)
- Supporting non-dependency unification between different target dependencies
[x] move to close
- pub/priv might eventually help with this case.
- [https://github.com/rust-lang/cargo/pull/9974](https://github.com/rust-lang/cargo/pull/9974)
- PR to support binary dependencies in `cargo metadata`
- Adds `--binary-deps` to `cargo metadata`
- Cargo specifically does not allow binary dependencies, it will generate warnings.
- Wait for RFC 3028 binary artifact dependencies dust to settle.
- Josh: don’t want to support binary dependencies on Rust crates like this; perhaps precompiled/cached dependencies in the future, but not binaries built externally and handed to cargo.
[x] Move to close
- https://github.com/rust-lang/rfcs/blob/master/text/3028-cargo-binary-dependencies.md
- https://github.com/rust-lang/rfcs/blob/master/text/3176-cargo-multi-dep-artifacts.md
```json
"resolve": {
"nodes": [
{
"id": "my-package 0.1.0 (path+file:///path/to/my-package)",
// The old format.
// Contains all dependencies, no filtering.
"dependencies": [
"bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)"
],
"deps": [
{
"pkg": "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
// extern crate name of library target.
// If you rename it, this is the renamed name.
// ***PROBLEM IS HERE***
"name": "lib_foo", // Deprecate this or something.
// The different ways it depends on it.
"dep_kinds": [
{
"artifact": "cdylib", // ADD THIS
"extern_name": "my_library", // ADD THIS
"kind": null, // dev, build, or null
"compile_target": "x86_64-unknown-none", // ADD THIS
"target": null,
},
{
"artifact": "bin", // ADD THIS
"bin-name": "my-binary", // ADD THIS
"extern_name": "my_binary", // ADD THIS
"compile_target": "aarch64-unknown-linux-musl", // ADD THIS
"kind": "build", // dev, build, or null
"target": null,
},
{
// normal Rust library - no "artifact" field
"extern_name": "my_rustdep", // ADD THIS
"kind": "dev", // dev, build, or null
"target": "cfg(windows)",
}]
}
],
// Features enabled on this package (old resolve)
"features": [
"foobar"
]
}
]
}
```
## 2021-11-02
- libgit2 vendoring
- Changing the default likely won’t help with various linux distributions which will just undo that change.
- It may be worth doing for people building from source, etc.
- May want to let the libgit2 folks know about the breakage we observed with force push and refspecs
- Translation PR
- https://github.com/rust-lang/cargo/pull/10028
- thanks alex for responding! Discussed translation status of rust-lang in general.
- checkboxes for future-incompat
- [https://github.com/rust-lang/rust/issues/71249](https://github.com/rust-lang/rust/issues/71249)
- checkboxes to postpone platform directories
- [https://github.com/rust-lang/rfcs/pull/1615](https://github.com/rust-lang/rfcs/pull/1615)
- checking doctests
- https://github.com/rust-lang/cargo/pull/10026
- Both `cargo check` `--``doc` and `cargo rustdoc` `--``check` sounds reasonable
- rfc 3180: setting crate-type
- https://github.com/rust-lang/rfcs/pull/3180
- `cargo rustc` `--``crate-type` would probably be +1
## 2021-10-26
- libgit2 issues with distributions
- Testing 32-bit
- We should test in Cargo CI so that we find out sooner than if rust-lang/rust CI has to catch it and report it back to us
- [https://github.com/rust-lang/cargo/pull/9925](https://github.com/rust-lang/cargo/pull/9925)
- network backoff
- question about linear vs exponential
- exponential seems like a good simplification
[x] Josh to comment
- https://github.com/rust-lang/cargo/pull/9959
- Adding the executable name to `cargo test` `--``no-run`
- Waiting on checkboxes
- cargo metadata stuff
- https://github.com/rust-lang/cargo/pull/9974
- https://github.com/rust-lang/cargo/pull/9982
- Current state of weak dependency features (where would help help?)
- https://github.com/rust-lang/crates.io/pull/3867#discussion_r701850083
- rustdoc scraping - https://github.com/rust-lang/cargo/pull/9525
- instrument-coverage and tooling - running tests and collecting coverage data
- `cargo test` `--``coverage` might be welcome
- dead code handling, or generics that aren’t monomorphized don’t show up?
- `-``C` `instrument-coverage=except-unused-generics`
- `-C` `instrument-coverage=except-unused-functions`
- Can be hard to use reliably, especially if the user doesn’t have deep low-level understanding of how it works.
## 2021-10-19
- https://github.com/rust-lang/rfcs/pull/3180
- --crate-type
- left some comments on the RFC for better understanding the cases
- Josh stabilizing rustc support for `-C strip`.
- Avoiding cycle errors in dependency for exclusive target dependencies
- https://github.com/rust-lang/cargo/issues/9738
- https://github.com/rust-lang/cargo/issues/8734
- eric working on a smaller reproduction to better illustrate how the cycle error is a false positive
- Discussion about tokens and extensibility via “credential providers”
## 2021-10-12
skipped
## 2021-10-05
<https://github.com/rust-lang/rfcs/pull/3177>
patching source
alex to comment
<https://github.com/rust-lang/rfcs/pull/3146>
feature migrations (tying default features to versions)
eric to postpone
[rust-lang/rfcs#3139](https://github.com/rust-lang/rfcs/pull/3139)
registry auth
[rust-lang/rfcs#2719](https://github.com/rust-lang/rfcs/pull/2719)
registry auth for more endpoints
jacob to close in preference for 3139
[rust-lang/rfcs#3074](https://github.com/rust-lang/rfcs/pull/3074)
relative name based path dependencies
Mostly resolved with patch-in-config for jonhoo
Shared workspace dependencies could also help in smaller situations
maybe leave open for now, low priority
[rust-lang/rfcs#3035](https://github.com/rust-lang/rfcs/pull/3035)
artifacts for build.rs
[rust-lang/rfcs#2887](https://github.com/rust-lang/rfcs/pull/2887)
per-cargo-target dependencies
leaning towards using 3020 instead for now
[rust-lang/rfcs#2801](https://github.com/rust-lang/rfcs/pull/2801)
embedded dependency information
eric to postpone
[rust-lang/rfcs#1615](https://github.com/rust-lang/rfcs/pull/1615)
platform-specific xdg layout
eric to postpone
<https://github.com/rust-lang/rfcs/pull/3020>
eric to ping
## 2021-09-28
- Cargo auth: The author brought up some questions, would like more feedback.
- https://github.com/rust-lang/rfcs/pull/3139
- Registry → registry, doesn’t tell how to use authentication for that URL.
- If there are multiple entries for the same URL.
- Stabilizing future-incompat reporting?
- https://github.com/rust-lang/rust/issues/71249
- Benchmarking
- Talking about using criterion
- Workspace rfc
- Will ping author
## 2021-09-21
- license and license-file
- It is not clear when you specify both. Need some way to explain how they are related.
- mappings
- One option is to always have a license expression, with a way to better specify how a custom license.
- MIT license with a copyright statement, or the name or whatever
- notices list could include all legal notices, which could be separate
- REUSE spec https://reuse.software/spec/
- josh to follow up
- libcurl in beta, roughly 3 week testing window
- Lean towards backporting if there aren’t major issues
- Multiple artifact dependencies on the same crate with different names, for different targets: https://github.com/rust-lang/rfcs/pull/3176 . (Previously discussed in 2021-08-10 meeting; the RFC takes the approach recommended in that meeting.)
- Would like to avoid starting FCP immediately after posting.
- Will start FCP after a reasonable wait.
- [https://github.com/rust-lang/cargo/pull/9867](https://github.com/rust-lang/cargo/pull/9867)
- Reject multiple names for `cargo new`
- Benchmarking resolver
- proptest harness
[x] eric to open an issue on exploring what to do here
https://github.com/rust-lang/cargo/issues/9935
## 2021-09-14
- https://github.com/rust-lang/rfcs/pull/3168 (run binaries from deps) Eager possible contributor, so what is our feedback?
[x] eric will try to respond on getting better
- Restricting new feature syntax to 2021
- https://github.com/rust-lang/crates.io/pull/3867#pullrequestreview-746049959
- Will probably push back, I don’t think it will actually work since it won’t parse on the older versions.
- Also, the number of people it will affect should be very small.
- Cross-checking new feature syntax with rust-version
[ ] eric might look to see if that could work
- Make it part of the feature-gate macro?
- [https://github.com/rust-lang/cargo/issues/9908](https://github.com/rust-lang/cargo/issues/9908)
- license/license-file
- https://github.com/rust-lang/cargo/issues/8537 - setting license-file without license is ill-advised
- Main concern is if `license` and `license-file` are different
[x] Will ask josh, investigate what crates.io would do if both are set.
- https://github.com/rust-lang/cargo/issues/9885#issuecomment-918981412 no version dependencies
[x] eric to revert
- eric would like to see this go through future-incompatible report system for warning ahead of time for dependencies
- named custom profiles
- write up known issues and regressions and ways to work around them
- posting to internals or blog for testing?
## 2021-09-07
skipped
## 2021-08-31
- Stabilize patch-in-config waiting on fcp checkboxes:
- https://github.com/rust-lang/cargo/pull/9839
- To `rev` or to `ref`, what is git even?
- https://github.com/rust-lang/cargo/pull/9859
- Sticking with the PR as-is seems good (`rev`), alex to ask for adding some docs, but should otherwise be good to go.
## 2021-08-24
- `cargo doc` `--``examples`
- https://github.com/rust-lang/cargo/pull/9808
- eric to finish review
- patch-in-config feedback https://github.com/rust-lang/cargo/issues/9269#issuecomment-902292735
- How does it interact with published packages?
- If `.cargo/config` is inside the published package, does it use it?
- If `[patch]` is in `~/.cargo/config`, does the verification step of `cargo publish` use it?
- Precedence of config vs Cargo.toml. It can be inconsistent.
- Documentation about concerns/hazards about how your project/Cargo.lock is dependent on this configuration. Should not be depended on for published packages.
- registry authentication
- https://github.com/rust-lang/rfcs/pull/3139
- Discussion about future possibilities for building Cargo atop a pure-Rust HTTP backend built on rustls
- Consensus: OK to try an incremental experiment, as long as people understand it’s an incremental experiment. Add a compile-team feature for building the non-default backend, get people to test, eventually make it the default, distant future remove the curl backend.
- Can do git2 in a second pass, modeled after git2-curl.
## 2021-08-17
- libssh2-rs maintenance
- https://github.com/alexcrichton/ssh2-rs/pull/214
- Alex will cast for maintainers
- `tmp` directory name
- [https://github.com/rust-lang/cargo/issues/9783](https://github.com/rust-lang/cargo/issues/9783)
- move to `target/tmp` ?
- make that a reserved profile name
- unique names
[x] eric to move it
- Networking broken in beta for Windows 8.
- [https://github.com/rust-lang/cargo/issues/9788](https://github.com/rust-lang/cargo/issues/9788)
- Support for static OpenSSL is not available yet: https://github.com/alexcrichton/curl-rust/pull/284
- Needs more investigation, perhaps a simple flag change could work around the issue.
- Otherwise, need to canvas for someone to help
- May be fixed in 7.78
- Aliases overriding commands.
- [https://github.com/rust-lang/cargo/pull/9768#issuecomment-896271219](https://github.com/rust-lang/cargo/pull/9768#issuecomment-896271219)
- move to close, since having inconsistent standards on built-in vs third-party doesn’t seem right
- Someone is wanting to help with target-specific features.
- [https://github.com/rust-lang/cargo/issues/1197#issuecomment-898713495](https://github.com/rust-lang/cargo/issues/1197#issuecomment-898713495)
[x] Eric to ask for use cases
- build-std test on rust-lang
[ ] Eric to look at feasibility of testing in Cargo’s CI for now
## 2021-08-10
Skipped
2021-08-03
- Artifact dependencies - future compatibility for building a dependency for multiple targets
- Multiple dependencies on the same crate with one target each (would work with the RFC as submitted), or one dependency with multiple targets (would require some RFC tweaks to the environment variables)
- RFC 3028: https://github.com/rust-lang/rfcs/blob/master/text/3028-cargo-binary-dependencies.md
[x] Josh to submit short RFC clarifying multiple dependencies on the same crate
- Already allowed if they’re semver-incompatible
- RFC would explicitly allow if they’re the exact same version
- Still unified as normal if they’re not artifact dependencies
- If they’re artifact dependencies, they can have different targets
- People interested in Cargo hacking and participation
- Feature request issues that are open-ended or not really actionable
- PR triage
- **Unknown**
- 1 day https://github.com/rust-lang/cargo/pull/9753 — Stabilize target-applies-to-host feature.
- 21 days https://github.com/rust-lang/cargo/pull/9634 — Use cross compile style target/host isolation for all builds.
- 45 days https://github.com/rust-lang/cargo/pull/9603 — support generic target tables and env variables
- 36 days https://github.com/rust-lang/cargo/pull/9532 — Add env variable to indicate the build type.
- 171 days https://github.com/rust-lang/cargo/pull/9118 — Add a profile option to select the codegen backend
[x] 210 days https://github.com/rust-lang/cargo/pull/9027 — NatVis support in Cargo
- **Stuck, unknown path forward**
- 14 days https://github.com/rust-lang/cargo/pull/9701 — Remove cit directories to conserve space.
[x] 89 days https://github.com/rust-lang/cargo/pull/9458 — add total work to timings
[x] 118 days https://github.com/rust-lang/cargo/pull/9318 — mention RUSTFLAGS in -Z unknown error
[x] 187 days https://github.com/rust-lang/cargo/pull/9071 — Add option to only run build scripts and compile proc macros
- 210 days https://github.com/rust-lang/cargo/pull/9024 — Make cargo metadata --no-deps print all path deps (including other workspaces)
- 100 days https://github.com/rust-lang/cargo/pull/8890 — Implement experimental registry HTTP API from RFC
[x] 189 days https://github.com/rust-lang/cargo/pull/8789 — Add a --crate-type override to build and check.
[x] 463 days https://github.com/rust-lang/cargo/pull/7873 — Ignore the host in rustc.verbose_version for metadata
- **WIP**
- 62 days https://github.com/rust-lang/cargo/pull/9525 — Scrape code examples from examples/ directory for Rustdoc
- 1 day https://github.com/rust-lang/cargo/pull/9752 — WIP: Capture dep info with Spanned
[x] 167 days https://github.com/rust-lang/cargo/pull/9178 — Use platform-defined directories for cargo state
[x] 176 days https://github.com/rust-lang/cargo/pull/9144 — Add config-based path shorthands
- Now in RFC 3074 https://github.com/rust-lang/rfcs/pull/3074
[x] 203 days https://github.com/rust-lang/cargo/pull/9001 — Draft: allow patching Git source dependencies with patch files
- 181 days https://github.com/rust-lang/cargo/pull/8985 — Source::{fuzzy_}query{_vec} can say "try again"
- 5 days https://github.com/rust-lang/cargo/pull/8623 — [WIP] mtime+content tracking
[x] 121 days https://github.com/rust-lang/cargo/pull/8437 — [WIP] Add flag to warn about unused dependencies
- **Waiting on author**
- 15 days https://github.com/rust-lang/cargo/pull/9705 — Rustdoc nocapture
- 15 days https://github.com/rust-lang/cargo/pull/9702 — A project can not depend on itself as a path dependency
- 15 days https://github.com/rust-lang/cargo/pull/9684 — Packages can inherit fields from their root workspace (RFC 2906)
- 43 days https://github.com/rust-lang/cargo/pull/9592 — Add support for relative git submodule paths
- 50 days https://github.com/rust-lang/cargo/pull/9576 — install fails earlier when no binaries can be found
- 76 days https://github.com/rust-lang/cargo/pull/9466 — Remote index branch configuration
[x] 96 days https://github.com/rust-lang/cargo/pull/9416 — extra-link-arg: support all link types
[x] 91 days https://github.com/rust-lang/cargo/pull/9407 — Add trim-path cargo manifest option
[x] 105 days https://github.com/rust-lang/cargo/pull/9382 — Change precedence of build-override
- 34 days (ping) https://github.com/rust-lang/cargo/pull/9221 — Added support for negative --jobs parameter, counting backwards from max CPUs.
[x] 171 days https://github.com/rust-lang/cargo/pull/9116 — Improve error messages for wrong target paths
[x] 232 days https://github.com/rust-lang/cargo/pull/8974 — Mark $CARGO_HOME/{registry,git} as cache directories
[x] 202 days (ping) https://github.com/rust-lang/cargo/pull/8859 — Add --check for rustdoc
- **Waiting on review**
- 3 days https://github.com/rust-lang/cargo/pull/9627 — Ability to specify the output name for a bin target different from the crate name
- Clippy PRs
[x] 13 days https://github.com/rust-lang/cargo/pull/9618 — add default implementations
[x] 13 days https://github.com/rust-lang/cargo/pull/9617 — remove useless conversions
[x] 13 days https://github.com/rust-lang/cargo/pull/9613 — collapse nested if blocks
- **Windows path issues**
[x] 236 days https://github.com/rust-lang/cargo/pull/8964 — Another fix for workspace path joining
[x] 253 days https://github.com/rust-lang/cargo/pull/8881 — Fix --manifest-path for verbatim paths
[x] 237 days https://github.com/rust-lang/cargo/pull/8874 — Append workspace paths using components
- **Config loading**
[x] 336 days https://github.com/rust-lang/cargo/pull/7894 — Implement CARGO_CONFIG_PATH config file search override
## 2021-07-27
- Cargo auth RFC
- https://github.com/rust-lang/rfcs/pull/3139
- Rust is known for finding Goldilocks solutions that are better than either extreme. In this case compatibility vs required security.
| What do we care about? | RFC,<br>Hand back the token | client certs | [SRP](https://github.com/simbo1905/thinbus-srp-npm) | Signed OR Hashed tokens [paseto](https://github.com/paragonie/paseto) or<br>[SIGv4](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html) | FIDO U2F | Something I have not looked into yet? |
| ---------------------------------------------------- | --------------------------- | --------------- | --------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ------------------------------------- |
| Not too much complexity? | Yes | Mild | No | No | NO! | |
| Similar to other Package managers? | Yes | No | No | No | NO | |
| Compatible with approach of cross-lang Registries? | Yes | Maybe with work | No | Maybe with work | no | |
| Hard to impl insecurely? | No | Yes | Probably | Mild | Yes | |
| Not inventing our own crypto? | Yes | Yes | Mild | No | Yes | |
| Hard for a user to compromise secret material? | No | Yes | Mild | Mild | Yes | |
| Hard for someone on the wire to get secret material? | No | Yes | 1 Use | 1 Use | Yes | |
| Can upgrade crypto | Sever can | Yes | No | No | Yes | |
| Are there other things that should be on this list? | | | | | | |
## 2021-07-20
- Curl issue https://github.com/curl/curl/issues/7400
- retry seems to help
- backpressure
- migrating to something else like reqwest or ureq
- Reaching out before moving forward
- Long-term, we may want to switch to async, but short-term, switching to a simpler pure-Rust download library seems preferable.
- https://github.com/curl/curl/issues/5611
- Alex and josh did some digging, Alex distilled the reproduction to a simple CLI example.
- Will continue to monitor if people report problems, otherwise this will stay at a Medium level. Probably won’t revert libcurl for now. If lucky, will hear some response on the curl issue tracker.
- PRs
- https://github.com/rust-lang/cargo/pull/9685 — Named profile updates
- Ready to go?
- Josh noted one preference, but doesn’t want to block this
[x] merged
- https://github.com/rust-lang/cargo/pull/9653 — Change use of filename hashes
- Needs review
[x] Alex to help take a look
- https://github.com/rust-lang/cargo/pull/9601 — Build script information
- Delimiter and env var name
[x] merged
- https://github.com/rust-lang/cargo/pull/9627 — Adding bin filename override
- field name (filename? filestem? file_stem? output_stem?)
- Use `name` for the new name, and if that is not a valid identifier, require specifying `crate-name`
- Could break things
- Use `name_nonident` for new names that aren’t valid identifiers, and require `name` to be set if you use that?
[x] Eric will do review
-
## 2021-07-13
- Weak/namespaced features rfcs
- https://github.com/rust-lang/rfcs/pull/3143
[x] eric to move to fcp
- Brain-dump on cross-compilation, target, and internal design
- https://github.com/rust-lang/cargo/pull/9634
- alex will look at talking with them
- Preliminary conversation about policy question: non-Rust compilers
- gcc-rs, mrustc, etc.
- Want to organize policy conversation across lang/libs/cargo/foundation
- Josh to represent to wider group
- Things to consider: Ruby and Python and NPM alternative impls, “who does the work” and interaction with architectures/tiers
## 2021-07-06
- Continue named profiles discussion
- https://hackmd.io/RK62RYuNSSO5RVQYpOUonQ
## 2021-06-29
- alex: rustflags and build scripts - https://github.com/rust-lang/cargo/pull/9601
- There is a lot of information that build scripts are lacking in order to call rustc or cargo or whatever.
- Encoding of space-separate rustflags.
- binary encoding can be tricky
- another option is numerically indexed var names
bikeshedding of names
- should a build script be invoking rust?
- `autocfg` does feature detection by calling rust
- jonhoo’s use-case is allow-features, but build-scripts don’t know about that
- how to handle host vs target
- Make distinction in the var names?
- Tell build script `rustc` is a special shim that does all the right things.
- Just to keep the scope constrained, focus on running `rustc` (and not `cargo`)
- alex will continue on PR review
- issue comments
- https://github.com/rust-lang/cargo/issues/1734#issuecomment-870155080
[x] eric to ping mods
- custom named profiles
- https://hackmd.io/RK62RYuNSSO5RVQYpOUonQ
## 2021-06-22
- namespaced/weak feature RFC
- guidelines for how quickly to adopt in various projects
- For Cargo, as soon as it hits stable, then it can start being used.
[x] eric will post RFC soon
- `link-arg`
- https://github.com/rust-lang/cargo/pull/9563 — cdylib warning (want for beta)
[x] alex will review
- https://github.com/rust-lang/cargo/pull/9557 — stabilization
[x] Eric will take a look after 9563 has landed, probably not anything blocking it
- Auth RFC, any questions for security?
- Jacob working on it, reviewing internally in Amazon
- https://github.com/rust-lang/rfcs/pull/3139
- Is this at least as secure as other projects.
- https://internals.rust-lang.org/t/pre-rfc-cargo-alternative-registry-authentication/14794/11
- Asking people to help review the RFC is a small step towards helping.
- OpenSSL 3.0 release candidate, 3.0 hopefully soon, will include migration to Apache 2.0 license
- PR Triage
- Fair number left open over a year.
[x] Eric will categorize them, and will review ~~next week.~~ later
- Cargo help/projects?
- What areas would be good for people to help with.
- Accepted RFCs that haven’t been implemented yet
- Hashing file contents:
- https://github.com/rust-lang/cargo/pull/8623
- https://github.com/rust-lang/rust/pull/75594
- We should check more things (mtime/inode/filesystem/etc) and then use the hash as a fallback to avoid rebuilding too much.
- Parallelizing download and extraction
- git repositories being downloaded multiple times if we’re checking out a different branch
- Don’t worry to much about prioritizing https://blog.m-ou.se/rust-is-not-a-company/
## 2021-06-15
- https://github.com/rust-lang/rfcs/pull/3139 — registry auth
- Could potentially pass header to git when using `https://` URLs. May or may not want that. That should be discussed in the RFC though.
[x] Josh provided this feedback on GitHub.
- Should not allow this for `http://` URLs at all.
[x] Josh provided this feedback on GitHub.
- https://github.com/rust-lang/cargo/pull/9532 — `CARGO_BUILD_TYPE`
- Need to better understand the use cases.
- How will this interact with future designs where cargo doesn’t treat lack of `--target` different from `--target $HOST`?
[x] Alex: follow up
- future-incompat testing system
- `-Z` flag could tell rustc to fake it with an existing lint
- Or, define a custom, hidden lint. That could be tricky to integrate (since rustc doesn’t have this).
[x] Resolved: https://github.com/rust-lang/rust/pull/86478
- sqlite/dbs
- is sqlite an option at all?
- Keep the interface abstracted so that SQL and the SQLite api isn’t used throughout cargo. Keep it contained behind a vaguely key-value trait.
- Will there be any use cases that are beyond simple key-value? Concern about complex sql being used which makes it harder to switch backends.
- sled, berkeley db
[ ] Eric: Will do some more testing/investigation @Eric H
- Virtual filesystem for source code; LLVM/clang supports this.
- Getting more help on Cargo
## 2021-06-08
- weak-features/namespaced features
- `dep-name?/feat` and `dep:serde`
- will likely be used often enough that some short-form is desirable
[x] Moving forward with an RFC @Eric H
- strip profile option
- https://github.com/rust-lang/rust/pull/82037
- This will be pending someone to propose stabilization for t-compiler
- [https://github.com/rust-lang/cargo/issues/9554](https://github.com/rust-lang/cargo/issues/9554) — change in rustc-cdylib-link-arg behavior with dependencies
- It looks like it was ignored previously. Perhaps the author was confused?
- If it was silently ignored, switch to a future-incompat warning for now before making an error.
[x] Resolved: https://github.com/rust-lang/cargo/pull/9563 @Eric H
- config-relative paths for rustc/rustdoc/wrappers/etc
- https://github.com/rust-lang/cargo/issues/8202
- relative paths are essentially broken because cargo chdir when building dependencies
- can probably just change, ehuss to double check
[x] Resolved: https://github.com/rust-lang/cargo/pull/9566 @Eric H
## 2021-06-01
- [https://github.com/rust-lang/rfcs/pull/3127](https://github.com/rust-lang/rfcs/pull/3127)
- trim-path RFC
- discuss the purpose, of reproducible builds or privacy. It doesn’t fully address either, so it might be concerning to frame it that way. This does seem like a necessary low-level component of both, though, and probably is useful to be controllable as such.
- Cargo doesn’t know which linker is in use, so things like the msvc pdb switch can’t be used. That is something rustc would need to handle.
- out-dir needs to be remapped
- would like to see more clearly exactly what gets mapped to what
- Probably don’t want /rustc/<version>
[x] Alex responded
- target vs host: https://github.com/rust-lang/cargo/pull/9322
- Want to understand the current issue
- Would be happy to stabilize the whole thing as a unit, and just defer changing the default
- Would also be happy to merge as-is and just stabilize the two gates together
- https://github.com/rust-lang/cargo/pull/9322#issuecomment-829753446
[x] resolved: merged
- Increasing capacity
- lang/compiler libs/libs-impl
- cargo/cargo-impl
- Can we openly invite help via cargo-impl?
## 2021-05-25
- [https://github.com/rust-lang/cargo/issues/9491](https://github.com/rust-lang/cargo/issues/9491)
- Add `--no-run` to `cargo run` (or something similar)
- `cargo metadata` or `cargo build --something` would be fine
- Adding to metadata would be easiest
- [https://github.com/rust-lang/cargo/issues/9497](https://github.com/rust-lang/cargo/issues/9497)
- Add `default_run` to `cargo metadata`
[x] Josh responded, but author closed the issue?
- [https://github.com/rust-lang/cargo/issues/9490](https://github.com/rust-lang/cargo/issues/9490)
- https://github.com/rust-lang/cargo/issues/7178 — command to run build script
- Running build.rs independently
- eric to respond
[x] Resolved: closed
- [https://github.com/rust-lang/cargo/issues/9489](https://github.com/rust-lang/cargo/issues/9489)
- Warning on same file for multiple targets
- This catches copy-paste errors, and common misconfigurations (such as pointing a test to `src/lib.rs`).
[x] eric to close (resolved)
- [https://github.com/rust-lang/cargo/issues/9426](https://github.com/rust-lang/cargo/issues/9426)
- Stabilize extra link arg (asked on zulip)
- eric to double-check if there is a validation pass on the names
- better understand how it works with dependencies
- This is a very low-level interface that is not a great interface for anyone. But provides an option for those that need it.
- backwards-compatibility hazard (similar to RUSTFLAGS, where if Cargo/rustc starts issuing flags that interfere with flags the user passes in).
- documentation could mention this. mention the low-level nature, and the instability of how it interacts with future versions, different targets, different linker flavors, etc.
[x] stabilization PR: https://github.com/rust-lang/cargo/pull/9557
- [https://github.com/rust-lang/cargo/issues/9450](https://github.com/rust-lang/cargo/issues/9450)
- https://internals.rust-lang.org/t/concerns-about-making-resolver-2-the-default-in-2021-edition/14684
- issue with new resolver + diesel
- edition guide could describe this
- An opt-out option in the resolver to force unification
[x] https://github.com/rust-lang/cargo/pull/9602
## 2021-05-18
- GitHub Actions not working due to rustup, ehuss to investigate a temporary fix until GitHub deploys a new image
[x] https://github.com/rust-lang/cargo/pull/9498
- Global lint configuration
- Silencing warnings in cargo (like future-incompatible)
- a mechanism to control cargo makes sense
- not ideal if people use those for future-incompatible
- Could we feed ignored ones into the report future incompat mechanism?
- josh still prefers for rustc to have something built-in (like a macro that can pull in a common file)
- Every tool would need to handle reading the cargo config, which would be a pain.
- concern about having different lint systems and controls.
- names for cargo warnings
- `Cargo.toml` and `.cargo/config.toml`
- Global settings could be dangerous, especially if it is in $CARGO_HOME
- prefer against proliferating more settings in `.cargo/config.toml`
- future-incompat: alex’s impression is that all upstream crates will have new versions published that fix the problem *before* unleashing the forced warning. That means everyone should be able to run `cargo update` to silence the warning.
- concern is that some people will be using older semver releases that someone may not be able to update.
- Alex: prefer to move forward with what we have now, and then figure out how things go
[x] Eric: Would like to switch to force-warns, to simplify the interface. @Eric H
[x] Testing support: https://github.com/rust-lang/rust/pull/86478
[x] Minor usability updates: https://github.com/rust-lang/cargo/pull/9606
- PRs:
- [https://github.com/rust-lang/cargo/pull/9466](https://github.com/rust-lang/cargo/pull/9466)
- Add `branch` to registry config.
- Including the branch in SourceId (and in Cargo.lock). https://example.com/registry?branch=foo
- nightly only 👍
- Eric responded, waiting on author
- [https://github.com/rust-lang/cargo/pull/9473](https://github.com/rust-lang/cargo/pull/9473)
- add `doc.browser`,
[x] waiting on fcp checkboxes
- Issues:
- [https://github.com/rust-lang/cargo/issues/9487](https://github.com/rust-lang/cargo/issues/9487)
- license handling
[x] josh to respond
## 2021-05-11
- Transferring issues
- Eric may ask infra about it
- Use cases of `cargo install`
- Where do we stop?
- Josh: Bright line: no “maintainer scripts”, no code running at install time. We Might let a crate stage files for installation (e.g. maintainer scripts, completions, resource files), but we should never let crate-custom code install them.
- RFC review [https://github.com/rust-lang/rfcs/pull/3020](https://github.com/rust-lang/rfcs/pull/3020) — implicit lib features
[x] ehuss will do some review to see if this can move forward.
- Investigate the original motivations for required-features (https://github.com/rust-lang/cargo/pull/3667, https://github.com/rust-lang/cargo/issues/1570)
- Talked about concerns of bikeshed names, where it can be confusing which is which (systemd “requires” vs “wants”). It would be nice to try to avoid that, but may be inevitable.
- Could also consider more detailed syntax in required-features (like inline tables, or prefixes in the strings), but that may be unwieldy and complicated.
- There may be little need for required-features if force-enabled features exists. Will need to look at the use cases more closely.
- RFC https://github.com/rust-lang/rfcs/pull/2887
- team charter
- https://hackmd.io/@ehuss/ryLWyDdu_
## 2021-05-04
- cache, .git repositories, and storing files in git
- Handle submodules internally (Eric to point to issues about doing this https://github.com/rust-lang/cargo/issues/7987)
- Then handle git checkouts without checking out (or eliminate .git directory, or name it something else)
- team charter
- https://github.com/rust-lang/cargo/pull/9375 CARGO_TARGET_DIR double check
- Concern about runtime vs compiletime (using debuggers, code coverage, etc.)
- It is a gotcha when something works in an integration test, but then you move the code to a library and it stops working.
- Only set for workspace members?
- Probably start with tests to start, and then see where it goes.
- Can `set_env(env!(…))`
- concern about using top-level
- A separate directory gives freedom to move it.
- target/profile/tmp (automatically handles parallel builds/tests)
- target/tmp (would require care to avoid stepping on parallel builds/tests)
- whatever
[x] ehuss: respond / reviewed / merged
- https://github.com/rust-lang/cargo/issues/9398 what to do? (`publish --allow-dirty` publishes dirty files)
- Probably don’t want to complicate the interface. Generally you shouldn’t publish with `--allow-dirty`, so this should be a discouraged or rare use case.
- Changing the messaging to make it blatently clear that it will include untracked and dirty files.
- `--include-foo` is definitely clearer what it means.
[x] Josh to respond.
- https://github.com/rust-lang/cargo/issues/9399 User wants guidance on implementing path trimming
- https://github.com/rust-lang/cargo/pull/9407 (adds `trim-path`)
[x] Alex already working with them.
- This only covers one use case, but there are others that need to use remap-path-prefix in different ways (like remapping to a specific prefix)
- Can this just be driven by debuginfo?
- In the future, need to think about the different use cases and workflows.
- https://github.com/rust-lang/cargo/pull/9322
- Alex: would like to vent
- Josh: next steps
- hesitation to stabilize `target-applies-to-host`
- `cargo build` without `--target` is broken?
- `target-applies-to-host=false`, `cargo build`, it still loads the `[target]` table for host. (Maybe, not clear.)
- Eventual goal is to get `cargo build` and `cargo build --target=$host` be more equivalent. It would be nice to have optimistic sharing of shared dependencies, but performance may get a hit in some cases.
- eric will look for the weird behavior
- wasmtime pr template
- tldr of contributing, for pr’s in particular
[x] PR merged
## 2021-04-27
- Discussion about `target.<target>.env`
- Seems reasonable. Target-specific should override general `env`.
- edition override for `cargo fix --edition` to override `allow`
- https://gist.github.com/nikomatsakis/9e3e1b9117839aa80a803b1faf320ef9
- https://github.com/rust-lang/rust/pull/83213
[x] Implemented: https://github.com/rust-lang/rust/pull/85788
[x] Cargo side: https://github.com/rust-lang/cargo/pull/9588
- `cargo report future-incompatibilities`?
- Having a generic `report` subcommand that can be extended later.
[x] Implemented: https://github.com/rust-lang/cargo/pull/9438
- https://github.com/rust-lang/rust/issues/65262 — min rustc version
- path to stabilize?
- https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#rust-version
- concern about forcing everyone to manage this, for an extremely tiny percentage of users who don’t use latest stable.
- concern that this will be widely recommended, which in a sense complicates the manifest
[x] eric: responded
- Making the src cache readonly?
- Some users run into problems where the cache files get modified (for example from an error message in an editor that opens up the cache file)
- Probably should be read-only.
[x] Opened issue to track https://github.com/rust-lang/cargo/issues/9455
- patch table: why doesn't the resolver ignore all other (semver-compatible) versions? That is, if I patch 1.1.3, it should ignore all other 1.x versions on the index.
- It is good to know that there is a new version published.
- If patches blocked newer versions, it could also cause some bad error messages when something requires a newer version that what is patched (patch is 1.3, something requires 1.4, it should not get an error “can’t find 1.4”)
- context: crater breaks when it rebuilds lockfiles with patches
- Another issue: if you have a Cargo.lock, and you add a patch, it doesn’t always pick it up properly.
[x] Opened issue to track https://github.com/rust-lang/cargo/issues/9535
## 2021-04-20
- Team Charter
- [https://github.com/rust-lang/rfcs/blob/master/text/3037-roadmap-2021.md#chartering-work-in-the-rust-project](https://github.com/rust-lang/rfcs/blob/master/text/3037-roadmap-2021.md#chartering-work-in-the-rust-project)
- Beta/nightly fix/revert summary:
- eric to investigate rustdoc fingerprinting, but will probably need to be reverted in 1.53 (nightly) after the branch (was already reverted in 1.52)… (hmm, need to revert *before* the branch so beta bump isn’t affected)
[x] resolved: https://github.com/rust-lang/cargo/pull/9404
- RUSTC_BOOTSTRAP: Eric will work with jyn to see if it can be fixed within the next week.
[x] resolved: https://github.com/rust-lang/cargo/pull/9365
[x] beta resolved: https://github.com/rust-lang/cargo/pull/9385
- git HEAD/Cargo.lock: alex will revert on 1.52 beta, will investigate fixes in 1.53 (may need backports)
[x] reverted: https://github.com/rust-lang/cargo/pull/9383
[x] fixed: https://github.com/rust-lang/cargo/pull/9384, https://github.com/rust-lang/cargo/pull/9392
- split-debuginfo: eric to look at filename hashing issues. Will likely not get finished before beta branch, so will need backporting afterwards.
[x] fixed: https://github.com/rust-lang/cargo/pull/9418
- RUSTC_BOOTSTRAP restriction [https://github.com/rust-lang/cargo/pull/9365](https://github.com/rust-lang/cargo/pull/9365)
- Problem: for a local package, what should the error tell you?
- RUSTC_BOOTSTRAP=lib_name will fail for other binaries, tests, benches, examples, etc.
- Proposal:
- The suggestion in the error message should say:
- RUSTC_BOOTSTRAP=1 for local packages
- RUSTC_BOOTSTRAP=lib_name for non-workspace members
[x] Fixed and backported
- fallout of git and HEAD
- https://github.com/rust-lang/cargo/pull/9133
- https://github.com/rust-lang/cargo/issues/9334#issuecomment-820754603 — Order in Cargo.lock changed
- How hard is this to change? May be easy?
- alex to investigate
- https://github.com/rust-lang/cargo/issues/9286 — user didn’t see warnings, and it broke on nightly
- https://github.com/rust-lang/cargo/issues/9352 — Cargo.lock got rewritten due to `[patch]`
- This causes a problem with crater because it runs with `--locked`, and if that fails it rebuilds Cargo.lock from scratch (not sure why) which brings in new git versions that aren’t working.
- Alex to look a little closer
- alex to look at reverting beta
- split-debuginfo issues high priority?
- https://github.com/rust-lang/cargo/issues/9353 — switching toolchains causes linking errors
- Eric to look at this. If the fix is too risky, will consider reverting the default change in 1.53
- https://github.com/rust-lang/rust/issues/83730 — dylib backtrace and debugging don’t work
- Alex will look into this, the priority is not as high since this will only affect people debugging with dylibs (like rustc)
- Debugging with a dependency is pretty non-functional
- ehuss will see if there is an issue already filed
- Weak dependency features, next steps for handling cargo < 1.19
- https://github.com/rust-lang/cargo/issues/8832
- index v2 support is already in 1.51. The only concern was `cargo update` in an older version may pull in new dependencies that have weak-dependencies, which may end up being broken. But that is true of any new Cargo/rustc feature so probably not a big deal.
- eric would like to consider the syntax before stabilizing (like using a more elaborate table with keys or something)
- Stabilization is also blocked on updating crates.io to accept the new fields and syntax.
- no testing has been done other by eric. Testing can be done with path dependencies, but since crates.io doesn’t support the syntax it is hard to test (and most people don’t want to publish nightly-only versions anyways).
[x] eric: to investigate more, lead up to rfc
- rustdoc fingerprinting
- https://github.com/rust-lang/cargo/issues/9336
- environment variable to disable the delete behavior
- ehuss to revert on beta
-
## 2021-04-06
- what should Jacob work on in 20% time.
- clippy
- https://github.com/rust-lang/cargo/issues/9306 have a conversation so that Revantus can get started helping with something.
- will check if this is something specific they are interested in, or if they are just interested in something
- will need more upfront design on config loading in general
- ehuss will follow up
- [https://github.com/rust-lang/cargo/issues/7037](https://github.com/rust-lang/cargo/issues/7037)
- build script notes and errors
- probably restricted to -v
- progress messages instead as % information
- Josh to take action item to suggest design work and RFC for progress messages
- Take into account that it’ll mostly be done by infrastructure crates (e.g. cc, cmake, downloader helpers)
- [https://github.com/rust-lang/cargo/pull/9322](https://github.com/rust-lang/cargo/pull/9322)
- host configuration table
- “unsetting” linker for host
- `host.linker = 'unset'`
- or `[host]` empty table
- `linker = {path="…", host=false}`
- How often do people actually want the host to be overridden?
- separate table that is only for cross-compilation?
- `[host.{triple}]` maybe?
- `[target.{triple}]`
`host = false`
- This doesn’t fix the issue with `cargo build` picking up RUSTFLAGS for build scripts.
- It *should* ignore RUSTFLAGS for build scripts (behave as-if `--target`)
- HOSTCFLAGS (not really standardized) HOST_triple_RUSTFLAGS or HOST_RUSTFLAGS
- `CARGO_HOST_target_RUSTFLAGS=…`
- and change `RUSTFLAGS` to stop being used for host maybe?
## 2021-03-30
- https://github.com/rust-lang/cargo/issues/9286 — Lockfile error with git dependencies.
- Can’t reproduce with the steps, will ask for more details.
- It might be good to have a warning about this scenario.
- no branch and branch=”master”
- no branch and branch=”main”???
- Warn in general for a mismatch between HEAD and the branch HEAD points to
- branch=”devel” and branch=”main”, should that detect if they have the same sha. probably not since they are explicitly intended as being separate.
- https://github.com/rust-lang/cargo/pull/9288 — add shell completions
[x] ehuss will follow up
## 2021-03-23
- PR https://github.com/rust-lang/cargo/pull/9283 — `-Zallow-features`
- Seems reasonable.
[x] ehuss will follow up
## 2021-03-16
- cargo testsuite dev-dependency cycle, will try to remove if possible
- Should rerun-if remember if a file is missing?
- https://github.com/rust-lang/cargo/issues/6003#issuecomment-797878892
- Backwards compat hazard: someone could be using this to force a rebuild every time (rerun-if=phony)
- Could have a warning if it detects this scenario.
- PR: https://github.com/rust-lang/cargo/pull/9237
- Slight drop in error quality, but a big boost in code clarity
- PR: https://github.com/rust-lang/cargo/pull/9275
- another beta candidate
- How to handle `--features foo/feature` where `foo` is not a workspace member.
- https://github.com/rust-lang/cargo/issues/3629
- V2 currently rejects it. V1 allows it, with the problem that optional dependencies can be enabled that aren’t in `Cargo.lock`
- Will try to improve the V2 error messages, and see how many people complain about it.
- Issue: Allowing `foo/feature` where `feature` is not an optional dependency *now*, but may be in the future can be a hazzard. However, this requires taking the step of updating a dependency, and is also probably unlikely to happen often.
- Issue: It is a hard question to answer if `foo/feature` would pull in an optional dependency.
- `cargo new` default to v2 resolver sometime soon?
- 2021 will default at the end of the year.
- Will want to see how many issues people have before opening this up to more people.
- How to make it easier to test nightly features?
- Using nightly features without nightly.
- Concern about the stability of nightly cargo in production.
- Make a more targeted way to enable experimental features on stable. RUSTC_BOOTSTRAP is too coarse (it enables everything in both cargo and rustc).
- CARGO_BOOTSTRAP or CARGO_EXPERIMENTAL or something
- Hmm… Not sure where to go with this.
## 2021-03-09
- Discussed issue with environment variables and `cargo config`.
- Will probably not handle lazily captured environment variables, or show them in comments or something.
- Discussed status of build-std and potential ways forward.
## 2021-03-02
- Proposal for handling `RUSTC_BOOTSTRAP`: https://github.com/rust-lang/cargo/pull/9181
- Consensus to merge after Eric reviews the code
- doc confusion about `edition`:
- https://github.com/rust-lang/cargo/pull/9228
- Alex to drop a comment trying to understand more
- Make `--jobs` relative with negative CPU
- https://github.com/rust-lang/cargo/pull/9221
- assigned to alex
- Discussing progress-bar support on non-tty: https://github.com/rust-lang/cargo/issues/9155
- Discussing storage approaches for high-update on-disk data (index cache, last-use-data, fingerprints, etc.)
- sqlite seems like a good plan
## 2021-02-23
- Chatting about some open PRs and RFCs, and how the team is coping with these.
## 2021-02-16
- Thin Local LTO
- https://github.com/rust-lang/cargo/issues/9171
- lto=”off” isn’t working as expected, just a bug
- 2021 edition
- Making it easier to test 2021 during the unstable period
cargo-features = ["edition2021"]
-
- https://github.com/rust-lang/cargo/pull/9144 — config-based path shorthands
- https://github.com/rust-lang/rfcs/pull/3074
- Thoughts on improving default-features - Josh
- Splitting out new features, or making features non-default, can be a source of breakage for dependencies
- This is especially true when you depend on a crate with `default-features = false`; you’re exposed to potential breakage every time a new feature is introduced to cover functionality that previously wasn’t controlled by a feature flag
- This is also true if you leave default features enabled, if the crate makes a feature no longer enabled by default (though that’s less common, due to this kind of breakage)
- Having to bump major version just to split out features doesn’t seem ideal; I don’t think we should expect people to do that.
- Could we support declaring feature defaults in `Cargo.toml` by version, so that a dependency on a crate enables some features by default if it depends on an old version?
- Or, should we record the set of available features in the lockfile in a “sticky” manner?
- Or could we make `cargo upgrade` better?
- Should we add a subtractive mechanism (“disable this feature” rather than “disable all default features”)?
- Or, do we consider this “acceptable breakage” in crates?
- Summary from the meeting: interesting problem, not urgent, no desire to make major changes to index/lock formats for this, some willingness to do minor changes to make this better.
## 2021-02-09
- https://github.com/rust-lang/cargo/pull/9133 — switch to v3 lock
- 👍
- should this be announced?
- alex will make a post about this (and split-debuginfo)
- `cargo config`: https://github.com/rust-lang/cargo/issues/2362 (https://hackmd.io/@ehuss/rkjp32Fg_)
- Shorthand for `cargo config KEY` or `cargo config KEY=VALUE` to be more like `git`?
- Maybe keep the “action” (get/set), and could make it optional?
- Some way to “append”
- https://github.com/rust-lang/cargo/pull/9118 — `codegen-backed` profile option
- Concerns about the interface, this is probably not the way we would like to see codegen backend options expressed (particularly passing absolute paths in `Cargo.toml` could be a problem).
- No way to do target-specific profiles.
- Alex to respond, maybe consider switching to `rustcflags` (or whatever), some lower-level way to pass flags in per-profile.
- https://github.com/rust-lang/cargo/pull/9154 — cargo home redirect
- Why does anyone want this?
- Concerns about the recursive search behavior
- performance
- searching too far (`.cargo/config` searching is already problematic)
- This is related to XDG home stuff (which I think may need to have some configurability, and this is a primitive form of that)
- Discussion of CI caching. How could Cargo have higher-level semantics for better caching?
## 2021-02-02
- [rust-lang/cargo#9124](https://github.com/rust-lang/cargo/issues/9124) serde regation fix for cargo as a library?
- We should do a point release
- Discussion about whether `--locked` should be the default for `cargo install`. No consensus to change that. But we have consensus to add a message when `cargo install` fails to build, and a lockfile exists, to suggest `--locked`.
- Change split-debuginfo defaults for macOS on stable (and eventually Linux) https://github.com/rust-lang/cargo/pull/9112
- Considering adding profile option, but not change default right away. Consider changing default in ~2 versions?
- Cargo should ignore .cargo/config for cross-compiling since it is probing rustc if it supports the flag.
- alex will change so it doesn’t default right away.
- https://github.com/rust-lang/cargo/pull/9111 registry format changes
- move *all* features to `features2` field. eric to test
- Alternative approach:
- update crates.io to support the new format, and don’t worry about other registries, because they don’t support these old cargo verisons.
- Don’t change anything in cargo, `features` contains the new syntax. crates.io will have logic to move things to `features2` (to support 1.18 and older), but other registries don’t need to bother (since they don’t support 1.18).
- schema field is still desirable
## 2021-01-26
- https://github.com/rust-lang/cargo/pull/9071 do we want this?
- ehuss: to ask for more information about the exact use case. This implementation is not feasible.
- Try to find a less-fragile solution of wrapping RUSTC to accomplish the same. rla can use its own process.
- https://github.com/rust-lang/rfcs/pull/3052 — Deprecate `authors`
- Warning:
- one option is to rename it, to make it clear to existing crate authors that it can be removed, but still allow some metadata for tooling.
- The warning could be less about “this is deprecated” and more “you don’t need this anymore”.
- commit to a future evaluation, but not force a deprecation now
- ehuss to comment
- Windows path support
- ehuss: proposal to strip `\\?\` (and maybe `\\.\`), do not support long paths
## 2021-01-19
- https://github.com/rust-lang/cargo/issues/4353 do we want this help?
- Alex to leave comment, needs a little more discussion on what it will look like, but otherwise might not be bad as an unstable option
- Index compatibility
- Versions of Cargo older than 1.19 can’t handle new syntax in features.
- Options:
- Break older cargos (even with Cargo.lock existing)
- Add a new field to the index that the older cargo’s will ignore
- Switch to HTTP registries and stop listing packages in the git registry (or update the git registry with only compatible packages)
- TODO: check the behavior for directory registries with the new syntax
- If you have a crate in the directory registry that uses new syntax, can one-rev-older Cargo still build crate that…
- …don’t depend on the crate using new syntax?
- …depend on an older version of that crate (which is also in the directory registry)?
- dep-info parsing: https://github.com/rust-lang/cargo/issues/9087
- eric will follow up
- Weak dependency features - http-rs ecosystem planning experience report
- PRs:
- https://github.com/rust-lang/cargo/pull/8825
- Alex to review
- https://github.com/rust-lang/cargo/pull/8686
- macOS Spotlight handling
- Would like to see this making a *minimal* change, on macOS only, to add `.noindex` suffixes if that addresses this problem.
- Need to avoid breaking external references to these directories. Symlinks like `deps -> deps.noindex` may address that, but may lead to some other unexpected breakage.
- More substantial changes to temporary file placement should occur in a separate PR, and not as part of this change, though the prototype is appreciated.
- Node and Yarn reached the same conclusions that it is not really possible except for `.noindex` renaming:
- https://github.com/npm/npm/issues/15346
- https://github.com/yarnpkg/yarn/issues/6453
## 2021-01-12
- RFCs:
- 3052: Deprecating authors: [https://github.com/rust-lang/rfcs/pull/3052](https://github.com/rust-lang/rfcs/pull/3052)
- Everyone seems mostly on board except for the hard-warning/deprecation aspect, which we will probably want to be something deferred for a future decision.
- 3028: Artifact dependencies: https://github.com/rust-lang/rfcs/pull/3028
- Issues seem resolved, Alex to propose FCP
- https://github.com/rust-lang/cargo/issues/5644
- Discussed PR queue
- Eric will be closing old PRs and pinging authors where appropriate.
- Will investigate a PR template to help inform authors what they need to do before opening a PR, we can trial it and see how it goes
- Would be good to have a better handle on our bandwidth to review versus team size versus volume of incoming PRs
- https://github.com/rust-lang/cargo/issues/9060: Error with condition foo/bar dev-dependency
- eric to look at this
- https://github.com/rust-lang/cargo/issues/9064: panic with `cargo doc` on new resolver
- eric working on fix, a mess with how rustdoc and cargo integrate
## 2021-01-05
- PRs
- paths and local dependencies in metadata - https://github.com/rust-lang/cargo/pull/8994
- versus: https://github.com/rust-lang/cargo/pull/9024
- ehuss to merge 8994, will delay 9024 for now, and see how cargo fmt performs
- https://github.com/rust-lang/cargo/pull/8997 stabilize -Zfeatures
- Alex to take a final look
- Edition 2021 and `fix --edition`
- https://github.com/rust-lang/cargo/issues/9047
- `cargo fix --edition` when already on the current “stable” edition should just print a warning and a message explaining you are already on the edition
- `cargo fix --edition` means “go to the next edition”, no multiple steps or jumping
- `cargo fix --edition -Zunstable-options` when on 2018 could allow you to go to 2021
- Fixing 2015 to 2018 to 2021
- Jumping over multiple editions has a high risk of causing problems.
- Maybe have `--edition` take the edition as an argument.
- That would help with experimenting with 2021 until it is stable.
- Makes it more explicit.
- Meh, probably not worth it.
- 2021 edition for cargo
- Default `resolver = "2"`
- How `cargo fix` should work:
- `cargo fix --edition` should use whatever `resolver` value is currently set.
- If you haven’t specified a resolver, print a warning that you should set `resolver = "…"` (along with the note to update `edition = "2021"`.
- It would be nice if Cargo could tell you what has changed in terms of features.
- `pkg/feature` syntax still up in the air. may not change for 2021, but still need to decide how it will be handled.
- major topics
- cargo-edit
- more target-aware
- automatically downloading or getting std
- named profiles and build-std
- Minor things:
- avoid-dev-deps
- strip
- macOS doesn’t support any linker option to strip
- Consensus from the meeting: knowing how to strip binaries is rustc’s job, not cargo’s, and cargo should just pass the appropriate rustc option.