On Tue, 06 May 2014 01:57:35 GMT, Mike Parker wrote:

On Fri, 02 May 2014 10:08:38 GMT, Sönke Ludwig wrote:

(...)

My problem is that SDL 2.0.1 adds new functions and 2.0.2 adds new functions. Derelict loads functions dynamically, so if anyone is using a version of Derelict implemented against 2.0.2, then they will get exceptions when trying to load earlier versions of SDL. That means that if I tag Derelict bug fixes on the same branch, anyone requiring older versions of SDL will not be able to take advantage of it (unless they use Derelict's selective loading mechanism, but that can really get out of hand and was not intended for this sort of thing).

But this bit "breaking changes, could be maintained in parallel on a separate '2.1.x' branch" has me curious. Are you saying that dub can pick up tags across multiple branches? Given the existing 2.0.0 and 2.0.1 branches, let's say I start tagging the former with 1.x.x and the latter with 2.x.x. Will dub pick up all the 1.x and 2.x tags?

Exactly, tags are picked up regardless of the branch they are on. And as long as each branch uses a unique major (or minor) version, the natural version selector ~> will make sure that people will automatically stay on that branch.