git
cli route, that gitoxide should be enough.
git
cli could be a good fallback.
git
cli option.workspace.dependencies
should only contain sourcedefault-features
can sometimes require putting default-features = false
in workspace.dependencies
which requires some packages to do default-features = true
(https://github.com/rust-lang/cargo/issues/12162)cargo add
is likely broken wrt when adding an inherited dependency and adding to workspace.dependencies
(https://github.com/rust-lang/cargo/issues/10608) will make this problem more visibledefault-features
default-features
not specified to be "unset", and then allow dependencies to set it.features
at the workspace level. But you would need to explicitly say "default" in the features list.
default-features=true
to force the current behavior.
default-features=false
in the package.
default-features
in a workspace is Option<bool>
. In the None
, state, the package gets to decide the default-features
setting.default-features=true
if they are both built at the same time. If built separately, then they get whatever they specify. (The same as normal feature unification.)features
are being used (possibly particularly in closed source/larger projects).workspace.dependencies
deviates from dependencies
workspace.dependencies
as workspace-hack
features
project
vs package
project
is used, warns this may become an error in the futurebuild_dependencies
vs build-dependencies
dev_dependencies
vs dev-dependencies
default_features
vs default-features
proc_macro
vs proc-macro
crate_type
vs crate-type
_
use_
variants?1 1 Updating `dummy-registry` index
2 + Locked packages
2 + Adding dependency baz v0.0.1
2 3 Downloading crates ...
3 4 Downloaded baz v0.0.1 (registry `dummy-registry`)
4 5 Checking baz v0.0.1
5 6 Checking foo v0.0.1 [..]
6 7 Finished [..]
cargo yank
(post api), work out whether API is human readable or machine readablehttp.insesure
config once and for all
cargo.ics
includes the three other ics files.rust-lang/calendar
has timezones setup to deal with daylight savings timeignore
to handle .gitignore
processing instead of libgit2.ignore
handle global ignores?gitignore
, it does staging checks as well.cargo doc
always has to do a full scan because rustdoc
does not provide dep-info files.git
cli have a command to list file status within a subdirectory?
cargo fix
also scans for git status.
git
cli, are there other cirucumstances.
git gc
runs automatically.net.git-fetch-with-cli
config option.--verbose
.cargo:libscret
hard-fails if it isn't installed.--verbose
?cargo-audit
.
cargo yank
and the API. crates.io can display that if they want on the web UI. We'll need future discussions about how to display that in other cargo
commands (like cargo install
gives a warning). We could potentially have a new API endpoint for fetching the reason, but we'll need to consider back-compat with other registries (likely just ignore if the endpoint does not work).
cargo new
setting "auto" the default.
cargo new
.--ignore-rust-version-auto
.cargo new
is a UX command, and don't need RFC to change it. Very light two-way door.rust-version = "auto"
is essentially no change in the behavior of cargo. In the absence of "auto", would want to reconsider the default resolver behavior, but that would lose much of the value of the RFC (allowing the ecosystem to move forward while letting people who care about old MSRV just get od crates.)cargo new
change.
rust-version
, and doesn't think that will necessarily be the outcome.
cargo new
will inherit if used in a workspace.publish
.rust-version
..crate
via Cargo.toml.orig
. Can backfill the index if necessary.cfg!(...)
.cargo test --doc
doesn't load shared libs
rustdoc --test
does two things: compile and run tests.
cargo doc
, proc-macro already has bug when loading shared libs, so this use case is perhaps unlikely to happenCI
CI
should cover 90% of downloads.CI
).edition
.rust-version
.rustc
behavior is not our problem.rustc
directly, and a warning would be annoying.
rustc
directly are people who know what their doing, or not.edition
is not set in Cargo.toml
. (and also always pass --edition
to rustc in all cases)Config
to GlobalContext
cargo clippy
the linter for Cargo.toml
? Should we merge it into cargo
for access to all of our existing logic?
cargo
or cargo clippy
): https://github.com/rust-lang/cargo/issues/12235cargo fmt
for formatting Cargo.toml
.cargo clippy
as a way to do "more".cargo::
).
cargo clippy
, and moving cargo-clippy
into the cargo repo.cargo clippy
being a way to get nursery-style lints for cargo. Primarily an interface for running some lints.--check-cfg
--cfg docsrs
problem (solved)-vv
), but probably notRUSTFLAGS="--cfg tokio_unstable"
was changed so the lint doesn't check the command line..crate
tracking.
.crate.
.Config
as a global context.
ctx
seems fine, used elsewhere.Cargo.toml
style guide to style team?
cargo fmt
versus rustfmt
works). Rustfmt team has an expectation that they have the expectation they will do it, would be good to reach out to them to discuss.cargo fmt
, cargo-fmt
(the subcommand) would need to move to the cargo repo.cargo fmt
and cargo clippy
in the cargo repo, the cargo team can then implement cargo-specific behaviors within the subcommand.cargo add
or cargo update
, which may need to do canonical formatting, too.cargo-fmt
in the cargo repo a lower priority, doesn't feel like pushing for that.cargo clippy
subcommand in cargo repo does make more sense since there are more actions that could be done by cargo (cargo-specific lints, avoiding duplicate work, etc.)Cargo.toml
, what is the process to get the style guide updated with the style team?
cargo fmt
?cargo add
handle that), for most it shouldn't be a major change.package.workspace
to be up towards the top.package.rust-version = "auto"
auto
or current
or toolchain
cargo new
.
cargo new
, but requiring it in cargo publish
.
cargo publish
could display a warning if you are doing something odd.
rust-version
on cargo new
could easily go stale.cargo new
has a high bar.
cargo new
is low it is an interactive workflow, and we expect the user to modify it to publish.--ignore-rust-version
on build commands
cargo check --ignore-rust-version
, it ignores both rust-version errors, and gets latest dependencies.
Cargo.toml
is modified?
cargo update
cargo update
will also get --ignore-rust-version
--incompatible
alias?
cargo fix
, and editing Cargo.toml
, would it fix the rust-version?
--ignore-rust-version
could have a scope of what it should ignore (ignore compilation versus resolution).cargo fix
would apply it without respecting msrv?--ignore-rust-version
.cargo update
and check if anything is out of date.
--ignore-rust-version
on build commands, since it won't be needed as much.home()
function in the standard library to undeprecate it. djc said they would get to it soon, but it has been a long while.home
crate is used by a lot of people.home
is not tied to cargo's release process. Maybe we could do something more special to it.cargo update --precise
.public
is used on stable?
public=true
generates an error because it is unstable.lints
and package.rust-version
.public
ignored on stable.cargo publish
's verify step
Cargo.lock
if bins/examples presentCargo.lock
as a statement of what was verified, fixing this is a side effectcargo publish
(which we'll need to distinguish from cargo install
as they are both ephemeral)Cargo.lock
will be a mostly meaningless file in the .crate
file. A larger impact is the cargo publish
verify step using a different set of dependencies.cargo install
something that has a toolchain file, what should cargo do?path
toolchains still require something locally installed, but still can impact the security considerations.cargo install
will limit config loading to $CAGO_HOME (except with --path
).--path
, seems less scary since you already have it local, and it wouldn't be any different from running cargo install --path .
.cargo info
has something like a JSON output, it could embed the full response from the endpoint.
cargo information
..crate
file to just get the Cargo.toml
. This is a problem for PyPi right now. How in the future, can we extend the download endpoint to support that?
.crate
file is needed for things like implied bin paths.Cargo.toml
could help with Docker caching issue, too.crates-io
crate?
--bin
.
cargo install
does, does it require specifying the specific binaries to enable?cargo add
-like command that would make it easier to transition to a workspace and create a new package.foo
+ foo-cli
and cargo install
pain with it
cmd
directory. Main files are in different directories. go build
to the path of the binary to build. Utilities for removing unused dependencies. Example is Kuburnetes, which has ~20 binaries, and you can just specify which ones to build.cargo run
or cargo install
, and not cargo test
, then that could cover a lot of the cases people want.cargo install foo
where they want "foo" to be a well-known name for their package, which is used for both the lib and bin.
cargo install foo-cli
is annoying.cargo install
, and there is a required feature?
cargo::
syntax without a similar compatibility fix for target config?error
(who would set it?), but could block other directives.cargo:
, in an edition. But the config doesn't have an edition equivalent. Not obvious how we migrate config to allow introducing new directives that might conflict in config. Can do design asynchronously though.resolver = "3"
?
[package]
. Still isn't global.
resolver="3"
sounds good, and changing that default in 2024 also sounds good.flate2
wanting miniz_oxide
if and only if another zlib is not enabled.)
flate2
, if there are two backends enabled, like zlib-ng
and miniz_oxide
, it just picks zlib-ng
, and miniz_oxide
is built but ignored, which is the problem.cfg
syntax that can address a narrower set of issues?
cfg()
syntax, can be used for things like polyfills. Would be nice to support that in dependency declarations. cfg-accessible wouldn't have the same support at the cargo level.