Help with choosing the loosest [compat] bounds in Project.toml?

I’m in the situation that I just made a new package and since I needed to put [compat] bounds on all my dependencies to get registered, and since I haven’t been following closely the development of all these dependencies, I just put them to the versions which I currently had installed (which are probably quite up to date and tighter than they need to be).

But it turns out that by doing this I made my package uninstallable on e.g. the latest the JuliaPro, which pins the versions of a few things.

So I’m wondering if there’s any strategies people might suggest or even tools for picking more relaxed package versions? Ultimately it would be super cool if some tool just existed that programatically searched for the lowest bounds I could put that still allow me to pass tests. Does anything like this exist?

A quick one is to use ^ in front of the lowest bound which works with your package. That will tell compat that all versions until the next major version are going to work well.

I’ve also been struggling with this. It is the biggest problem in the default environment because then you are fighting with every other packages compatability requirements as well. And it is difficult to test. Just a mess sometimes.

Be careful here. This is not true in general, since caret specifiers are used by default (see 6. Compatibility · Pkg.jl), so “1.2.3” == “^1.2.3”.

Regarding testing lower compatibility bounds: I also do not have a good solution for this apart from lowering the version manually and testing locally or on Travis (e.g. by temporarily committing the Manifest.toml). Of course this becomes extremely tedious as soon if you have more than just a few dependencies, where you want to test …

2 Likes