* internal: internal: Spilt app from linkerd2-proxy The `linkerd2-proxy crate currently comprises the entirety of the application logic for the proxy. This unfortunately leads to exceedingly high compile times (35+ minutes to compile the application with tests). Specifically: * Any change to the inbound or outbound proxy configuration necessitated recompiling the other; and this compilation could not be parallelized. * Integration tests depended on the `linkerd2-proxy` executable, adding about 10 minutes to every build. * The tests/support module (which is also extremely costly to build) was compiled _for each integration test_. This change restructures the crates in this repository to allow `cargo` to cache intermediate code that was otherwise being compiled redundantly or serially: * The `linkerd2-proxy` crate now contains _only_ the executable and need not be built during tests. * The `linkerd2-app` crate exposes the app's `Main`, but uses `linkerd2-app-inbound` and `linkerd2-app-outbound` subcrates to improve parellization/cacheability. * The rest of the top-level application code * The `linkerd2-app-integration` crate now contains all of the integration test support code (as well as the tests themselves), so that the tests only need to compile the support library once. All in all, this reduces compile time to under 20 minutes. |
||
|---|---|---|
| .. | ||
| src | ||
| Cargo.toml | ||