Cargo alternative registries experiences?

It's been a while since this feature was introduced. Is anyone really using it in anger yet? Would like to get some feedback from the field.

Was the MVP too M?

I'm not using it, because Cargo has other features that made it unnecessary for me.

  • For my private and work crates, git dependencies and git monorepos with path dependencies work fine. I already have all the necessary infrastructure to manage git repos, so managing them as packages seems redundant.

  • For my "LTS" alternative registry experiment I've used .cargo/config [source.crates-io] replace-with = url feature. This has a property desired in this case that I can control what is published in my registry fork, but it's transparently compatible with all existing crates and projects.

  • I've decided not to run a registry at https://lib.rs, because crates.io crates can't use dependencies from alternative registries (for a good reason), so an another registry wouldn't work like federation/decentralization, but only cause annoying fragmentation. Crates.io database dumps are good enough to run lib.rs as merely an alternative front-end to crates-io registry.

1 Like

We use Cloudsmith's crate registry for some of our private stuff, and works well.

Esp. as they recently added support for deeper integration so one can publish simply with cargo publish --registry our-registry instead of using their own tool.

The crates we publish there has this in their Cargo.toml:

[package]
publish = ["our-registry"]

And where we reference and use it from other crates you specify version as normal in [dependencies] but also simply add registry = "our-registry".

Mostly we use just path dependencies within our Rust git monorepo, but we do have some other repos also so use this private registry as a path of publishing and sharing between them. And also as a bit of a staging ground for some crates that later will become public and go out on crates.io registry instead.

2 Likes

I guess Microsoft and Google are not going through cargo when they're dealing with a lot of crates so they have a different set of fun (E.g. basel integration).

I didn't realise that things with local registries had moved on so much! https://github.com/rust-lang/cargo/pull/2857 has landed and https://github.com/ChrisGreenaway/cargo-local-registry is taking full advantage of this. Hmm that could be all I need.

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.