I've learned from experience that using ~ versions can be dangerous.

Usually better to keep specific versions if you don't want future builds of past trees to break