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

Reply via email to