Conversation

Jarkko Sakkinen

Edited 4 hours ago
Through dependency graph GItoxide has a RSVM requirement of 1.88.

For me that means exactly to never use Gitoxide and stick using libgit2 bindings because they retain software ubiquitos across environment and toolchains.

This also thought me an important lesson: using well established C-library throught bindings is 9/10 times a better choice than using equivalent "pure Rust" implementation. This does not mean that the Rust implementation would be somehow"worse", generally it just seems that Rust developers are completely ignorant of optimizing things like RSVM.

That leaves you two options.

1. Use a really old version of "pure Rust" library in order to maintain RSVM of your choice. Usually this means using a version, which never will be updated.
2. Use Rust-bindings of a C-library and have always up to date version of the dependency while retaining RSVM of your choice.

The crazy RSVM requirement of Gitoxide zeros down its applicability for anything production. I will never touch it again.

#rustlang
1
0
0

@jarkko Most of this might be obvious to you but for some readers, they may walk away with the wrong impression.

`gix`s MSRV (the acronym generally used in the ecosystem) for the latest version is 1.82. As you mentioned, the latest version of some dependencies may be higher. The MSRV-aware resolver can help select versions compatible with your tool chain. You don't have to update your MSRV to use it, just your development version.

Whether those transitive deps is a problem or not is dependent on which dependencies they are and their role in your application. Presumably, you'll eventually update your MSRV and get those newer versions, so it is not likey you'll never see them. And updating your toolchain is one mitigation option. An important question in all of this is your motivation for your MSRV as that will dictate your willingness to update your toolchain to get newer features, either from Rust or your dependencies.

When contemplating not getting updates when using an old toolchain, remember you are using an old, unsupported dependency, your toolchain.

0
0
0