Cargo recently gained the ability for the top-level crate (e.g. servo) to override any crate in the dependency tree. This is similar to the "paths" key in .cargo/config, but designed for longer-term shared use (rather than just for local development):
https://github.com/rust-lang/cargo/pull/2385 This means that if we need to fork a crate for any reason, we don't need to rename it or modify all of the crates that depend on it. Instead we can just add one new `[replace]` entry in the top-level Cargo.toml, pointing to our forked repo. For example, we currently have a fork of glutin. This required us to publish a new package on crates.io and modify our skia crate to depend on `servo-glutin` instead of `glutin`. This is a problem for anyone who wants to use our skia crate with regular glutin. With top-level overrides, our servo-skia could depend on regular glutin, but servo could replace that dependency with our forked glutin. Then both Servo and non-Servo projects could share the same skia bindings easily. _______________________________________________ dev-servo mailing list dev-servo@lists.mozilla.org https://lists.mozilla.org/listinfo/dev-servo