Sunset RLS

This commit is contained in:
Eric Huss
2022-08-20 21:19:43 -07:00
parent 1e978a3627
commit 4a7e2fbb7b
27 changed files with 162 additions and 593 deletions

View File

@@ -24,6 +24,7 @@ features = [
"errhandlingapi",
"evntrace",
"fibersapi",
"handleapi",
"in6addr",
"inaddr",
"ioapiset",
@@ -72,11 +73,8 @@ features = [
[dependencies]
bstr = { version = "0.2.17", features = ["default"] }
byteorder = { version = "1", features = ['default', 'std'] }
clap = { version = "3.1.1", features = ["derive", "clap_derive"]}
curl-sys = { version = "0.4.13", features = ["http2", "libnghttp2-sys"], optional = true }
crossbeam-utils = { version = "0.8.0", features = ["nightly"] }
libc = { version = "0.2.79", features = ["align"] }
# Ensure default features of libz-sys, which are disabled in some scenarios.
libz-sys = { version = "1.1.2" }
# The only user of memchr's deprecated `use_std` feature is `combine`, so this can be
@@ -84,13 +82,8 @@ libz-sys = { version = "1.1.2" }
memchr = { version = "2.5", features = ["std", "use_std"] }
# Ensure default features of regex, which are disabled in some scenarios.
regex = { version = "1.5.6" }
proc-macro2 = { version = "1", features = ["default"] }
quote = { version = "1", features = ["default"] }
rand_core_0_5 = { package = "rand_core", version = "0.5.1", features = ["getrandom", "alloc", "std"] }
serde = { version = "1.0.82", features = ['derive'] }
serde_json = { version = "1.0.31", features = ["raw_value", "unbounded_depth"] }
smallvec = { version = "1.8.1", features = ['union', 'may_dangle'] }
syn = { version = "1", features = ['fold', 'full', 'extra-traits', 'visit', 'visit-mut'] }
syn = { version = "1", features = ['full', 'visit'] }
url = { version = "2.0", features = ['serde'] }
[target.'cfg(not(windows))'.dependencies]

View File

@@ -2,18 +2,18 @@
This crate is a bit of a hack to make workspaces in rustc work a bit better.
The rationale for this existence is a bit subtle, but the general idea is that
we want commands like `./x.py build src/tools/{rls,clippy,cargo}` to share as
we want commands like `./x.py build src/tools/{clippy,cargo}` to share as
many dependencies as possible.
Each invocation is a different invocation of Cargo, however. Each time Cargo
runs a build it will re-resolve the dependency graph, notably selecting
different features sometimes for each build.
For example, let's say there's a very deep dependency like `num-traits` in each
of these builds. For Cargo the `num-traits`'s `default` feature is turned off.
In RLS, however, the `default` feature is turned. This means that building Cargo
and then the RLS will actually build Cargo twice (as a transitive dependency
changed). This is bad!
For example, let's say there's a very deep dependency like `winapi` in each of
these builds. For Cargo, `winapi` has 33 features enabled. In Clippy, however,
`winapi` has 22 features enabled. This means that building Cargo and then the
Clippy will actually build winapi twice, which in turn will build duplicates
of everything that depends on `winapi`. This is bad!
The goal of this crate is to solve this problem and ensure that the resolved
dependency graph for all of these tools is the same in the various subsets of