rustup
rustup copied to clipboard
Tracking: Simplify download and/or TLS backends
Part of https://github.com/rust-lang/rustup/issues/1611.
Motivation
The direct motivation of this change is to simplify Rustup's building process in order to make Rustup more cross-build friendly and prevent surprise stable-only CI build errors like the ones we've encountered while bumping OpenSSL to v3, i.e. https://github.com/rust-lang/rustup/pull/3478, https://github.com/rust-lang/rustup/pull/3668, etc.
Status quo
- The default currently is to use reqwest with native-tls (OpenSSL on Linux, native stacks on macOS and Windows)
- If
RUSTUP_USE_CURLis set, we use the curl backend, which defaults to openssl- If
RUSTUP_USE_RUSTLSis set, we use reqwest with rustls
https://github.com/rust-lang/rustup/pull/3788#issuecomment-2076819462
Goal
The eventual goal would be removing RUSTUP_USE_CURL and/or RUSTUP_USE_RUSTLS, leaving a single stack "in favor of maximally-Rust solutions", while "making sure we minimize the risk of getting users stuck".
To minimize frictions during this change, some necessary refactoring patches will be developed in the meantime, with a primary focus on improving Rustup's observability by interfacing with the tracing ecosystem.
https://github.com/rust-lang/rustup/pull/3788#issuecomment-2076679922
Tasks
- https://github.com/rust-lang/rustup/pull/3793
- https://github.com/rust-lang/rustup/pull/3868
- https://github.com/rust-lang/rustup/pull/3803
- https://github.com/rust-lang/rustup/pull/3879
- https://github.com/rust-lang/rustup/pull/3873
- https://github.com/rust-lang/rustup/pull/3871
- https://github.com/rust-lang/rustup/pull/3877
- https://github.com/rust-lang/rustup/pull/3891
- https://github.com/rust-lang/rustup/pull/3798
- https://github.com/rust-lang/rustup/pull/3903
- https://github.com/rust-lang/rustup/pull/3815
- https://github.com/rust-lang/rustup/pull/3788
- #4277
Also, many benefits from rustls just being more secure by default than OpenSSL.