I have a separate concern with tags when using sub-packages heavily.
As you know, sub-packages might currently reference each other by ~branch (and ~master is appropriate for this for reasons we will see below).
If I understand correctly, I will need to transition to version tags on next dub release, for good reasons. Sub-package sharing the same repositery will mean: fixing subpackage A:subA implies releasing a new subpackage A:subB even if not changed, but this is my problem as I choose to use the same repositery.
My concern is that when I make a new release, I will need to update the dub.json package each time, so that sub-packages references refers to the good (non existing yet!) version version tag. To that end, ~master was good since it also means "same version than me".
I need a macro (eg: "=self" instead of ">=x.y.z") to mean than the dependency should use the same version as the dependent package. That will keep sub-packages as practical as they are now.
Eventually the syntax might be ">={self|number}.{self|number}.{self|number}" so that sub-package versionning stays possible and flexible.