4972: Gzip artifacts r=Veetaha a=Veetaha
[Here is the test release](https://github.com/Veetaha/rust-analyzer/releases/tag/2020-06-21)
Change in size: `~ 25 MB -> ~ 8 MB (gzipped)`
The time to gzip during the dist build takes a somewhat considerable amount of time tho.
Having already compiled artifacts this takes in debug mode:
```
~/dev/rust-analyzer (feat/gzip-binaries) $ time cargo xtask dist
Finished dev [unoptimized] target(s) in 0.06s
Running `target/debug/xtask dist`
> cargo build --manifest-path ./crates/rust-analyzer/Cargo.toml --bin rust-analyzer --release
Finished release [optimized] target(s) in 0.05s
> strip ./target/release/rust-analyzer
real 0m34.331s
user 0m34.245s
sys 0m0.078s
```
In release mode this is much faster:
```
~/dev/rust-analyzer (feat/gzip-binaries) $ time cargo run -p xtask --release -- dist
Finished release [optimized] target(s) in 0.04s
Running `target/release/xtask dist`
> cargo build --manifest-path ./crates/rust-analyzer/Cargo.toml --bin rust-analyzer --release
Finished release [optimized] target(s) in 0.06s
> strip ./target/release/rust-analyzer
real 0m2.401s
```
**[UPD]** adding a profile override for `miniz_oxide` does the thing to ensure good performrance
We might need to notify all other ra plugins' maintainers about the change in our GH releases if we merge this PR, or we could leave uncompressed files along with gzipped for a while until everyone migrates.
Co-authored-by: Veetaha <veetaha2@gmail.com>
Co-authored-by: bjorn3 <bjorn3@users.noreply.github.com>
Override miniz_oxide to build it with optimizations
Building this crate with optimizations decreases the gzipping
part of `cargo xtask dist` from `30-40s` down to `3s`,
the overhead for `rustc` to apply optimizations is miserable on this background
5252: Fix symbol search in salsa r=matklad a=matklad
Previous solution for binning paths into disjoint directories was
simple and fast -- just a single binary search.
Unfortunatelly, it wasn't coorrect: if the ditr are
/d
/d/a
/d/c
then partitioning the file /d/b/lib.rs won't pick /d as a correct
directory.
The correct solution here is a trie, but it requires exposing path
components.
So, we use a poor man's substitution -- a *vector* of sorted paths,
such that each bucket is prefix-free
closes#5246
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>